Method: Magick::Image#properties

Defined in:
ext/RMagick/rmimage.c

#propertiesObject

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.

Parameters:

  • self

    this object

Returns:

  • self if block, else hash of attribute keys and values.


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;
    }

}