Class: RTF::ImageNode
Overview
This class represents an image within a RTF document. Currently only the PNG, JPEG and Windows Bitmap formats are supported. Efforts are made to identify the file type but these are not guaranteed to work.
Constant Summary collapse
- PNG =
A definition for an image type constant.
:pngblip
- JPEG =
A definition for an image type constant.
:jpegblip
- BITMAP =
A definition for an image type constant.
:dibitmap0
- LITTLE_ENDIAN =
A definition for an architecture endian constant.
:little
- BIG_ENDIAN =
A definition for an architecture endian constant.
:big
Instance Attribute Summary collapse
-
#bottom_crop ⇒ Object
Attribute accessor.
-
#height ⇒ Object
readonly
Attribute accessor.
-
#left_crop ⇒ Object
Attribute accessor.
-
#right_crop ⇒ Object
Attribute accessor.
-
#top_crop ⇒ Object
Attribute accessor.
-
#width ⇒ Object
readonly
Attribute accessor.
-
#x_scaling ⇒ Object
Attribute accessor.
-
#y_scaling ⇒ Object
Attribute accessor.
Attributes inherited from Node
Instance Method Summary collapse
-
#initialize(parent, source, id) ⇒ ImageNode
constructor
This is the constructor for the ImageNode class.
-
#to_rtf ⇒ Object
This method generates the RTF for an ImageNode object.
Methods inherited from Node
#is_root?, #next_node, #previous_node, #root
Constructor Details
#initialize(parent, source, id) ⇒ ImageNode
This is the constructor for the ImageNode class.
Parameters
- parent
-
A reference to the node that owns the new image node.
- source
-
A reference to the image source. This must be a String or a File.
- id
-
The unique identifier for the image node.
Exceptions
- RTFError
-
Generated whenever the image specified is not recognised as a supported image type, something other than a String or File or IO is passed as the source parameter or if the specified source does not exist or cannot be accessed.
1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 |
# File 'lib/rtf/node.rb', line 1132 def initialize(parent, source, id) super(parent) @source = nil @id = id @read = [] @type = nil @x_scaling = @y_scaling = nil @top_crop = @right_crop = @bottom_crop = @left_crop = nil @width = @height = nil # Check what we were given. src = source src.binmode if src.instance_of?(File) src = File.new(source, 'rb') if source.instance_of?(String) if src.instance_of?(File) # Check the files existence and accessibility. if !File.exist?(src.path) RTFError.fire("Unable to find the #{File.basename(source)} file.") end if !File.readable?(src.path) RTFError.fire("Access to the #{File.basename(source)} file denied.") end @source = src else RTFError.fire("Unrecognised source specified for ImageNode.") end @type = get_file_type(src) if @type == nil RTFError.fire("The #{File.basename(source)} file contains an "\ "unknown or unsupported image type.") end @width, @height = get_dimensions end |
Instance Attribute Details
#bottom_crop ⇒ Object
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def bottom_crop @bottom_crop end |
#height ⇒ Object (readonly)
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def height @height end |
#left_crop ⇒ Object
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def left_crop @left_crop end |
#right_crop ⇒ Object
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def right_crop @right_crop end |
#top_crop ⇒ Object
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def top_crop @top_crop end |
#width ⇒ Object (readonly)
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def width @width end |
#x_scaling ⇒ Object
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def x_scaling @x_scaling end |
#y_scaling ⇒ Object
Attribute accessor.
1111 1112 1113 |
# File 'lib/rtf/node.rb', line 1111 def y_scaling @y_scaling end |
Instance Method Details
#to_rtf ⇒ Object
This method generates the RTF for an ImageNode object.
1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 |
# File 'lib/rtf/node.rb', line 1199 def to_rtf text = StringIO.new count = 0 #text << '{\pard{\*\shppict{\pict' text << '{\*\shppict{\pict' text << "\\picscalex#{@x_scaling}" if @x_scaling != nil text << "\\picscaley#{@y_scaling}" if @y_scaling != nil text << "\\piccropl#{@left_crop}" if @left_crop != nil text << "\\piccropr#{@right_crop}" if @right_crop != nil text << "\\piccropt#{@top_crop}" if @top_crop != nil text << "\\piccropb#{@bottom_crop}" if @bottom_crop != nil text << "\\picw#{@width}\\pich#{@height}\\bliptag#{@id}" text << "\\#{@type.id2name}\n" @source.each_byte {|byte| @read << byte} if @source.eof? == false @read.each do |byte| text << ("%02x" % byte) count += 1 if count == 40 text << "\n" count = 0 end end #text << "\n}}\\par}" text << "\n}}" text.string end |