Module: Magick::RVG::Duplicatable

### Home Classes Methods

### In Files

- lib/rvg/misc.rb

### Methods

- #deep_copy

### Files

- Makefile

### Class/Module Index

Quicksearch

- Magick
- Magick::DestroyedImageError
- Magick::Draw
- Magick::Enum
- Magick::FatalImageMagickError
- Magick::Geometry
- Magick::GeometryValue
- Magick::GradientFill
- Magick::HatchFill
- Magick::IPTC
- Magick::IPTC::Application
- Magick::IPTC::Envelope
- Magick::IPTC::ObjectData
- Magick::IPTC::Post_ObjectData_Descriptor
- Magick::IPTC::Pre_ObjectData_Descriptor
- Magick::Image
- Magick::Image::DrawOptions
- Magick::Image::Info
- Magick::Image::PolaroidOptions
- Magick::Image::View
- Magick::Image::View::Pixels
- Magick::Image::View::Rows
- Magick::ImageList
- Magick::ImageList::Montage
- Magick::ImageMagickError
- Magick::OptionalMethodArguments
- Magick::Pixel
- Magick::RVG
- Magick::RVG::Circle
- Magick::RVG::ClipPath
- Magick::RVG::Describable
- Magick::RVG::Duplicatable
- Magick::RVG::Ellipse
- Magick::RVG::Embellishable
- Magick::RVG::Group
- Magick::RVG::Image
- Magick::RVG::ImageConstructors
- Magick::RVG::Line
- Magick::RVG::Path
- Magick::RVG::PathData
- Magick::RVG::Pattern
- Magick::RVG::PolyShape
- Magick::RVG::Polygon
- Magick::RVG::Polyline
- Magick::RVG::PreserveAspectRatio
- Magick::RVG::Rect
- Magick::RVG::ShapeConstructors
- Magick::RVG::Stretchable
- Magick::RVG::StructureConstructors
- Magick::RVG::Stylable
- Magick::RVG::Text
- Magick::RVG::TextBase
- Magick::RVG::TextConstructors
- Magick::RVG::Transformable
- Magick::RVG::Use
- Magick::RVG::UseConstructors
- Magick::RVG::Utility
- Magick::RVG::Utility::DefaultTextStrategy
- Magick::RVG::Utility::GraphicContext
- Magick::RVG::Utility::LRTextStrategy
- Magick::RVG::Utility::RLTextStrategy
- Magick::RVG::Utility::TBTextStrategy
- Magick::RVG::Utility::TextAttributes
- Magick::RVG::Utility::TextStrategy
- Magick::SolidFill
- Magick::TextureFill
- Object

No matching classes.

# Magick::RVG::Duplicatable

This is a standard deep_copy method that is used in most classes. Thanks to Robert Klemme.

### Public Instance Methods

deep_copy(h = {}) click to toggle source

    # File lib/rvg/misc.rb, line 10
    def deep_copy(h = {})
        # Prevent recursion. If we reach the
        # object we started with, stop copying.
        copy = h[__id__]
        unless copy
            h[__id__] = copy = self.class.allocate
            ivars = instance_variables
            ivars.each do |ivar|
                ivalue = instance_variable_get(ivar)
                cvalue = case
                    when NilClass === ivalue, Symbol === ivalue, Float === ivalue,
                         Fixnum === ivalue, FalseClass === ivalue, TrueClass === ivalue
                        ivalue
                    when ivalue.respond_to?(:deep_copy)
                        ivalue.deep_copy(h)
                    when ivalue.respond_to?(:dup)
                        ivalue.dup
                    else
                        ivalue
                    end
                copy.instance_variable_set(ivar, cvalue)
            end
            copy.freeze if frozen?
        end
        return copy
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.