Class: Axlsx::Pic
- Inherits:
-
Object
- Object
- Axlsx::Pic
- Includes:
- OptionsParser
- Defined in:
- lib/axlsx/drawing/pic.rb
Overview
a Pic object represents an image in your worksheet Worksheet#add_image is the recommended way to manage images in your sheets
Constant Summary collapse
- ALLOWED_EXTENSIONS =
allowed file extenstions
['gif', 'jpeg', 'png', 'jpg']
Instance Attribute Summary collapse
-
#anchor ⇒ OneCellAnchor
readonly
The anchor for this image.
-
#descr ⇒ String
A description of the picture.
-
#hyperlink ⇒ Object
Returns the value of attribute hyperlink.
-
#image_src ⇒ String
The path to the image you want to include Only local images are supported at this time.
-
#name ⇒ String
The name to use for this picture.
-
#picture_locking ⇒ Object
readonly
The picture locking attributes for this picture.
Instance Method Summary collapse
-
#end_at(x, y = nil) ⇒ Marker
noop if not using a two cell anchor.
-
#extname ⇒ String
returns the extension of image_src without the preceeding '.'.
-
#file_name ⇒ String
The file name of image_src without any path information.
-
#height ⇒ Object
providing access to update the anchor's height attribute.
- #height=(v) ⇒ Object
-
#index ⇒ Index
The index of this image in the workbooks images collections.
-
#initialize(anchor, options = {}) {|_self| ... } ⇒ Pic
constructor
Creates a new Pic(ture) object.
-
#pn ⇒ String
The part name for this image used in serialization and relationship building.
-
#relationship ⇒ Relationship
The relationship object for this pic.
-
#start_at(x, y = nil) ⇒ Marker
This is a short cut method to set the start anchor position If you need finer granularity in positioning use graphic_frame.anchor.from.colOff / rowOff.
-
#to_xml_string(str = '') ⇒ String
Serializes the object.
-
#width ⇒ Object
providing access to the anchor's width attribute.
- #width=(v) ⇒ Object
Methods included from OptionsParser
Constructor Details
#initialize(anchor, options = {}) {|_self| ... } ⇒ Pic
Creates a new Pic(ture) object
18 19 20 21 22 23 24 25 26 |
# File 'lib/axlsx/drawing/pic.rb', line 18 def initialize(anchor, ={}) @anchor = anchor @hyperlink = nil @anchor.drawing.worksheet.workbook.images << self start_at(*[:start_at]) if [:start_at] yield self if block_given? @picture_locking = PictureLocking.new() end |
Instance Attribute Details
#anchor ⇒ OneCellAnchor (readonly)
The anchor for this image
46 47 48 |
# File 'lib/axlsx/drawing/pic.rb', line 46 def anchor @anchor end |
#descr ⇒ String
A description of the picture
37 38 39 |
# File 'lib/axlsx/drawing/pic.rb', line 37 def descr @descr end |
#hyperlink ⇒ Object
Returns the value of attribute hyperlink.
51 52 53 |
# File 'lib/axlsx/drawing/pic.rb', line 51 def hyperlink @hyperlink end |
#image_src ⇒ String
The path to the image you want to include Only local images are supported at this time.
42 43 44 |
# File 'lib/axlsx/drawing/pic.rb', line 42 def image_src @image_src end |
#name ⇒ String
The name to use for this picture
33 34 35 |
# File 'lib/axlsx/drawing/pic.rb', line 33 def name @name end |
#picture_locking ⇒ Object (readonly)
The picture locking attributes for this picture
49 50 51 |
# File 'lib/axlsx/drawing/pic.rb', line 49 def picture_locking @picture_locking end |
Instance Method Details
#end_at(x, y = nil) ⇒ Marker
noop if not using a two cell anchor
156 157 158 159 160 |
# File 'lib/axlsx/drawing/pic.rb', line 156 def end_at(x, y=nil) use_two_cell_anchor unless @anchor.is_a?(TwoCellAnchor) @anchor.end_at x, y @anchor.to end |
#extname ⇒ String
returns the extension of image_src without the preceeding '.'
90 91 92 |
# File 'lib/axlsx/drawing/pic.rb', line 90 def extname File.extname(image_src).delete('.') unless image_src.nil? end |
#file_name ⇒ String
The file name of image_src without any path information
84 85 86 |
# File 'lib/axlsx/drawing/pic.rb', line 84 def file_name File.basename(image_src) unless image_src.nil? end |
#height ⇒ Object
this is a noop if you are using a TwoCellAnchor
providing access to update the anchor's height attribute
130 131 132 |
# File 'lib/axlsx/drawing/pic.rb', line 130 def height @anchor.height end |
#height=(v) ⇒ Object
This is a noop if you are using a TwoCellAnchor
136 137 138 139 |
# File 'lib/axlsx/drawing/pic.rb', line 136 def height=(v) use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor) @anchor.height = v end |
#index ⇒ Index
The index of this image in the workbooks images collections
96 97 98 |
# File 'lib/axlsx/drawing/pic.rb', line 96 def index @anchor.drawing.worksheet.workbook.images.index(self) end |
#pn ⇒ String
The part name for this image used in serialization and relationship building
102 103 104 |
# File 'lib/axlsx/drawing/pic.rb', line 102 def pn "#{IMAGE_PN % [(index+1), extname]}" end |
#relationship ⇒ Relationship
The relationship object for this pic.
108 109 110 |
# File 'lib/axlsx/drawing/pic.rb', line 108 def relationship Relationship.new(self, IMAGE_R, "../#{pn}") end |
#start_at(x, y = nil) ⇒ Marker
This is a short cut method to set the start anchor position If you need finer granularity in positioning use graphic_frame.anchor.from.colOff / rowOff
147 148 149 150 |
# File 'lib/axlsx/drawing/pic.rb', line 147 def start_at(x, y=nil) @anchor.start_at x, y @anchor.from end |
#to_xml_string(str = '') ⇒ String
Serializes the object
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/axlsx/drawing/pic.rb', line 165 def to_xml_string(str = '') str << '<xdr:pic>' str << '<xdr:nvPicPr>' str << '<xdr:cNvPr id="2" name="' << name.to_s << '" descr="' << descr.to_s << '">' @hyperlink.to_xml_string(str) if @hyperlink.is_a?(Hyperlink) str << '</xdr:cNvPr><xdr:cNvPicPr>' picture_locking.to_xml_string(str) str << '</xdr:cNvPicPr></xdr:nvPicPr>' str << '<xdr:blipFill>' str << '<a:blip xmlns:r ="' << XML_NS_R << '" r:embed="' << relationship.Id << '"/>' str << '<a:stretch><a:fillRect/></a:stretch></xdr:blipFill><xdr:spPr>' str << '<a:xfrm><a:off x="0" y="0"/><a:ext cx="2336800" cy="2161540"/></a:xfrm>' str << '<a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr></xdr:pic>' end |
#width ⇒ Object
providing access to the anchor's width attribute
115 116 117 118 |
# File 'lib/axlsx/drawing/pic.rb', line 115 def width return unless @anchor.is_a?(OneCellAnchor) @anchor.width end |
#width=(v) ⇒ Object
121 122 123 124 |
# File 'lib/axlsx/drawing/pic.rb', line 121 def width=(v) use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor) @anchor.width = v end |