module Origami::ResourcesHolder

Public Instance Methods

add_colorspace(colorspace, name = nil) click to toggle source
# File lib/origami/page.rb, line 128
def add_colorspace(colorspace, name = nil)
    add_resource(Resources::COLORSPACE, colorspace, name)
end
add_extgstate(extgstate, name = nil) click to toggle source
# File lib/origami/page.rb, line 125
def add_extgstate(extgstate, name = nil)
    add_resource(Resources::EXTGSTATE, extgstate, name)
end
add_font(font, name = nil) click to toggle source
# File lib/origami/page.rb, line 144
def add_font(font, name = nil)
    add_resource(Resources::FONT, font, name)
end
add_pattern(pattern, name = nil) click to toggle source
# File lib/origami/page.rb, line 132
def add_pattern(pattern, name = nil)
    add_resource(Resources::PATTERN, pattern, name)
end
add_properties(properties, name = nil) click to toggle source
# File lib/origami/page.rb, line 148
def add_properties(properties, name = nil)
    add_resource(Resources::PROPERTIES, properties, name)
end
add_resource(type, rsrc, name = nil) click to toggle source

Adds a resource of the specified type in the current object. If name is not specified, a new name will be automatically generated.

# File lib/origami/page.rb, line 156
def add_resource(type, rsrc, name = nil)
    if name.nil?
        rsrc_name = self.resources(type).key(rsrc)
        return rsrc_name if rsrc_name
    end

    name ||= new_id(type)
    target = self.is_a?(Resources) ? self : (self.Resources ||= Resources.new)

    rsrc_dict = (target[type] and target[type].solve) || (target[type] = Dictionary.new)
    rsrc_dict[name.to_sym] = rsrc

    name
end
add_shading(shading, name = nil) click to toggle source
# File lib/origami/page.rb, line 136
def add_shading(shading, name = nil)
    add_resource(Resources::SHADING, shading, name)
end
add_xobject(xobject, name = nil) click to toggle source
# File lib/origami/page.rb, line 140
def add_xobject(xobject, name = nil)
    add_resource(Resources::XOBJECT, xobject, name)
end
colorspaces() click to toggle source
# File lib/origami/page.rb, line 196
def colorspaces; each_colorspace.to_h end
each_colorspace(&block) click to toggle source
# File lib/origami/page.rb, line 187
def each_colorspace(&block); each_resource(Resources::COLORSPACE, &block) end
each_extgstate(&block) click to toggle source
# File lib/origami/page.rb, line 188
def each_extgstate(&block); each_resource(Resources::EXTGSTATE, &block) end
each_font(&block) click to toggle source
# File lib/origami/page.rb, line 192
def each_font(&block); each_resource(Resources::FONT, &block) end
each_pattern(&block) click to toggle source
# File lib/origami/page.rb, line 189
def each_pattern(&block); each_resource(Resources::PATTERN, &block) end
each_property(&block) click to toggle source
# File lib/origami/page.rb, line 193
def each_property(&block); each_resource(Resources::PROPERTIES, &block) end
each_resource(type) { |value, solve| ... } click to toggle source

Iterates over the resources by type.

# File lib/origami/page.rb, line 174
def each_resource(type)
    target = self.is_a?(Resources) ? self : (self.Resources ||= Resources.new)

    rsrc = (target[type] and target[type].solve)

    return enum_for(__method__, type) { rsrc.is_a?(Dictionary) ? rsrc.length : 0 } unless block_given?
    return unless rsrc.is_a?(Dictionary)

    rsrc.each_pair do |name, obj|
        yield(name.value, obj.solve)
    end
end
each_shading(&block) click to toggle source
# File lib/origami/page.rb, line 190
def each_shading(&block); each_resource(Resources::SHADING, &block) end
each_xobject(&block) click to toggle source
# File lib/origami/page.rb, line 191
def each_xobject(&block); each_resource(Resources::XOBJECT, &block) end
extgstates() click to toggle source
# File lib/origami/page.rb, line 195
def extgstates; each_extgstate.to_h end
fonts() click to toggle source
# File lib/origami/page.rb, line 200
def fonts; each_font.to_h end
patterns() click to toggle source
# File lib/origami/page.rb, line 197
def patterns; each_pattern.to_h end
properties() click to toggle source
# File lib/origami/page.rb, line 201
def properties; each_property.to_h end
resources(type = nil) click to toggle source

Returns a Hash of all resources in the object or only the specified type.

# File lib/origami/page.rb, line 206
def resources(type = nil)
    if type.nil?
        self.extgstates
            .merge self.colorspaces
            .merge self.patterns
            .merge self.shadings
            .merge self.xobjects
            .merge self.fonts
            .merge self.properties
    else
        self.each_resource(type).to_h
    end
end
shadings() click to toggle source
# File lib/origami/page.rb, line 198
def shadings; each_shading.to_h end
xobjects() click to toggle source
# File lib/origami/page.rb, line 199
def xobjects; each_xobject.to_h end