Module: Origami::ResourcesHolder

Included in:
Graphics::FormXObject, Graphics::Pattern::Tiling, Page, Resources
Defined in:
lib/origami/page.rb

Instance Method Summary collapse

Instance Method Details

#add_colorspace(colorspace, name = nil) ⇒ Object



121
122
123
# File 'lib/origami/page.rb', line 121

def add_colorspace(colorspace, name = nil)
  add_resource(Resources::COLORSPACE, colorspace, name)
end

#add_extgstate(extgstate, name = nil) ⇒ Object



117
118
119
# File 'lib/origami/page.rb', line 117

def add_extgstate(extgstate, name = nil)
  add_resource(Resources::EXTGSTATE, extgstate, name)
end

#add_font(font, name = nil) ⇒ Object



137
138
139
# File 'lib/origami/page.rb', line 137

def add_font(font, name = nil)
  add_resource(Resources::FONT, font, name)
end

#add_pattern(pattern, name = nil) ⇒ Object



125
126
127
# File 'lib/origami/page.rb', line 125

def add_pattern(pattern, name = nil)
  add_resource(Resources::PATTERN, pattern, name)
end

#add_properties(properties, name = nil) ⇒ Object



141
142
143
# File 'lib/origami/page.rb', line 141

def add_properties(properties, name = nil)
  add_resource(Resources::PROPERTIES, properties, name)
end

#add_resource(type, rsrc, name = nil) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
# File 'lib/origami/page.rb', line 145

def add_resource(type, rsrc, name = nil)
  return existing if not name and existing = ls_resources(type).key(rsrc)

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

  rsrc_dict = target.send(type) || (target[type] = Dictionary.new)
  rsrc_dict[name] = rsrc

  name
end

#add_shading(shading, name = nil) ⇒ Object



129
130
131
# File 'lib/origami/page.rb', line 129

def add_shading(shading, name = nil)
  add_resource(Resources::SHADING, shading, name)
end

#add_xobject(xobject, name = nil) ⇒ Object



133
134
135
# File 'lib/origami/page.rb', line 133

def add_xobject(xobject, name = nil)
  add_resource(Resources::XOBJECT, xobject, name)
end

#colorspacesObject



169
# File 'lib/origami/page.rb', line 169

def colorspaces; ls_resources(Resources::COLORSPACE) end

#extgstatesObject



168
# File 'lib/origami/page.rb', line 168

def extgstates; ls_resources(Resources::EXTGSTATE) end

#fontsObject



173
# File 'lib/origami/page.rb', line 173

def fonts; ls_resources(Resources::FONT) end

#ls_resources(type) ⇒ Object



157
158
159
160
161
162
163
164
165
166
# File 'lib/origami/page.rb', line 157

def ls_resources(type)
  target = self.is_a?(Resources) ? self : (self.Resources ||= Resources.new)
  
  rsrc = {}
  (target.send(type) || {}).each_pair do |name, obj|
    rsrc[name.value] = obj.solve
  end

  rsrc
end

#patternsObject



170
# File 'lib/origami/page.rb', line 170

def patterns; ls_resources(Resources::PATTERN) end

#propertiesObject



174
# File 'lib/origami/page.rb', line 174

def properties; ls_resources(Resources::PROPERTIES) end

#resourcesObject



175
176
177
178
179
180
181
182
183
# File 'lib/origami/page.rb', line 175

def resources;
  self.extgstates.
    merge self.colorspaces.
    merge self.patterns.
    merge self.shadings.
    merge self.xobjects.
    merge self.fonts.
    merge self.properties
end

#shadingsObject



171
# File 'lib/origami/page.rb', line 171

def shadings; ls_resources(Resources::SHADING) end

#xobjectsObject



172
# File 'lib/origami/page.rb', line 172

def xobjects; ls_resources(Resources::XOBJECT) end