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_MIME_TYPES =
allowed mime types
%w(image/jpeg image/png image/gif)
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.
-
#opacity ⇒ Fixnum
readonly
Picture opacity.
-
#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
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/axlsx/drawing/pic.rb', line 19 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() @opacity = ([:opacity] * 100000).round if [:opacity] end |
Instance Attribute Details
#anchor ⇒ OneCellAnchor (readonly)
The anchor for this image
48 49 50 |
# File 'lib/axlsx/drawing/pic.rb', line 48 def anchor @anchor end |
#descr ⇒ String
A description of the picture
39 40 41 |
# File 'lib/axlsx/drawing/pic.rb', line 39 def descr @descr end |
#hyperlink ⇒ Object
Returns the value of attribute hyperlink.
53 54 55 |
# File 'lib/axlsx/drawing/pic.rb', line 53 def hyperlink @hyperlink end |
#image_src ⇒ String
The path to the image you want to include Only local images are supported at this time.
44 45 46 |
# File 'lib/axlsx/drawing/pic.rb', line 44 def image_src @image_src end |
#name ⇒ String
The name to use for this picture
35 36 37 |
# File 'lib/axlsx/drawing/pic.rb', line 35 def name @name end |
#opacity ⇒ Fixnum (readonly)
Picture opacity
57 58 59 |
# File 'lib/axlsx/drawing/pic.rb', line 57 def opacity @opacity end |
#picture_locking ⇒ Object (readonly)
The picture locking attributes for this picture
51 52 53 |
# File 'lib/axlsx/drawing/pic.rb', line 51 def picture_locking @picture_locking end |
Instance Method Details
#end_at(x, y = nil) ⇒ Marker
noop if not using a two cell anchor
161 162 163 164 165 |
# File 'lib/axlsx/drawing/pic.rb', line 161 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 '.'
95 96 97 |
# File 'lib/axlsx/drawing/pic.rb', line 95 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
89 90 91 |
# File 'lib/axlsx/drawing/pic.rb', line 89 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
135 136 137 |
# File 'lib/axlsx/drawing/pic.rb', line 135 def height @anchor.height end |
#height=(v) ⇒ Object
This is a noop if you are using a TwoCellAnchor
141 142 143 144 |
# File 'lib/axlsx/drawing/pic.rb', line 141 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
101 102 103 |
# File 'lib/axlsx/drawing/pic.rb', line 101 def index @anchor.drawing.worksheet.workbook.images.index(self) end |
#pn ⇒ String
The part name for this image used in serialization and relationship building
107 108 109 |
# File 'lib/axlsx/drawing/pic.rb', line 107 def pn "#{IMAGE_PN % [(index+1), extname]}" end |
#relationship ⇒ Relationship
The relationship object for this pic.
113 114 115 |
# File 'lib/axlsx/drawing/pic.rb', line 113 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
152 153 154 155 |
# File 'lib/axlsx/drawing/pic.rb', line 152 def start_at(x, y=nil) @anchor.start_at x, y @anchor.from end |
#to_xml_string(str = '') ⇒ String
Serializes the object
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/axlsx/drawing/pic.rb', line 170 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 << '">') if opacity str << "<a:alphaModFix amt=\"#{opacity}\"/>" end str << '</a:blip>' 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
120 121 122 123 |
# File 'lib/axlsx/drawing/pic.rb', line 120 def width return unless @anchor.is_a?(OneCellAnchor) @anchor.width end |
#width=(v) ⇒ Object
126 127 128 129 |
# File 'lib/axlsx/drawing/pic.rb', line 126 def width=(v) use_one_cell_anchor unless @anchor.is_a?(OneCellAnchor) @anchor.width = v end |