Method: Magick::Image#properties
- Defined in:
- ext/RMagick/rmimage.c
#properties ⇒ Object
Traverse the attributes and yield to the block. If no block, return a hash of all the attribute keys & values.
Ruby usage:
- @verbatim Image#properties [{ |k,v| block }] @endverbatim
Notes:
- I use the word "properties" to distinguish between these "user-added"
attribute strings and Image object attributes.
11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 |
# File 'ext/RMagick/rmimage.c', line 11699
VALUE
Image_properties(VALUE self)
{
Image *image;
volatile VALUE attr_hash;
volatile VALUE ary;
char *property;
const char *value;
image = rm_check_destroyed(self);
if (rb_block_given_p())
{
ary = rb_ary_new2(2);
ResetImagePropertyIterator(image);
property = GetNextImageProperty(image);
while (property)
{
value = GetImageProperty(image, property);
(void) rb_ary_store(ary, 0, rb_str_new2(property));
(void) rb_ary_store(ary, 1, rb_str_new2(value));
(void) rb_yield(ary);
property = GetNextImageProperty(image);
}
rm_check_image_exception(image, RetainOnError);
return self;
}
// otherwise return properties hash
else
{
attr_hash = rb_hash_new();
ResetImagePropertyIterator(image);
property = GetNextImageProperty(image);
while (property)
{
value = GetImageProperty(image, property);
(void) rb_hash_aset(attr_hash, rb_str_new2(property), rb_str_new2(value));
property = GetNextImageProperty(image);
}
rm_check_image_exception(image, RetainOnError);
return attr_hash;
}
}
|