Parent

Files

Prawn::Table::Cell

A cell is a special-purpose bounding box designed to flow text within a bordered area. This is used by Prawn’s Document::Table implementation but can also be used standalone for drawing text boxes via Document#cell

Attributes

point[RW]
border_style[RW]
border_width[RW]
background_color[RW]
document[RW]
horizontal_padding[RW]
vertical_padding[RW]
align[RW]
borders[RW]
text_color[RW]
border_color[RW]
font_size[RW]
font_style[RW]

Public Class Methods

new(options={}) click to toggle source

Creates a new cell object. Generally used indirectly via Document#cell

Of the available options listed below, :point, :width, and :text must be provided. If you are not using the Document#cell shortcut, the :document must also be provided.

:point

Absolute [x,y] coordinate of the top-left corner of the cell.

:document

The Prawn::Document object to render on.

:text

The text to be flowed within the cell

:text_color

The color of the text to be displayed

:width

The width in PDF points of the cell.

:height

The height in PDF points of the cell.

:horizontal_padding

The horizontal padding in PDF points

:vertical_padding

The vertical padding in PDF points

:padding

Overrides both horizontal and vertical padding

:align

One of :left, :right, :center

:borders

An array of sides which should have a border. Any of :top, :left, :right, :bottom

:border_width

The border line width. Defaults to 1.

:border_style

One of :all, :no_top, :no_bottom, :sides, :none, :bottom_only. Defaults to :all.

:border_color

The color of the cell border.

:font_size

The font size for the cell text.

:font_style

The font style for the cell text.

    # File lib/prawn/table/cell.rb, line 57
57:       def initialize(options={})
58:         @point        = options[:point]
59:         @document     = options[:document]
60:         @text         = options[:text].to_s
61:         @text_color   = options[:text_color]
62:         @width        = options[:width]
63:         @height       = options[:height]
64:         @borders      = options[:borders]
65:         @border_width = options[:border_width] || 1
66:         @border_style = options[:border_style] || :all               
67:         @border_color = options[:border_color]
68:         @background_color = options[:background_color] 
69:         @align            = options[:align] || :left
70:         @font_size        = options[:font_size]
71:         @font_style       = options[:font_style]
72: 
73:         @horizontal_padding = options[:horizontal_padding] || 0
74:         @vertical_padding   = options[:vertical_padding]   || 0
75: 
76:         if options[:padding]
77:           @horizontal_padding = @vertical_padding = options[:padding]
78:         end
79:         
80:       end

Public Instance Methods

draw() click to toggle source

Draws the cell onto the PDF document

     # File lib/prawn/table/cell.rb, line 128
128:       def draw
129:         margin = @border_width / 2.0
130:         
131:         if @background_color    
132:           old_color = @document.fill_color || "000000"
133:           @document.fill_color(@background_color)
134:           h  = borders.include?(:bottom) ? 
135:           height - ( 2 * margin ) : height + margin
136:           @document.fill_rectangle [x, y ], width, h  
137: 
138:           @document.fill_color(old_color)
139:         end
140: 
141:         if @border_width > 0
142:           @document.mask(:line_width) do
143:             @document.line_width = @border_width
144: 
145:             @document.mask(:stroke_color) do
146:               @document.stroke_color @border_color if @border_color
147: 
148:               if borders.include?(:left)
149:                 @document.stroke_line [x, y + margin], 
150:                   [x, y - height - margin ]
151:               end
152: 
153:               if borders.include?(:right)
154:                 @document.stroke_line( 
155:                   [x + width, y + margin],
156:                   [x + width, y - height - margin] )
157:               end
158: 
159:               if borders.include?(:top)
160:                 @document.stroke_line(
161:                   [ x, y ], 
162:                   [ x + width, y ])
163:               end
164: 
165:               if borders.include?(:bottom)
166:                 @document.stroke_line [x, y - height ],
167:                                     [x + width, y - height]
168:               end
169:             end
170: 
171:           end
172:           
173:           borders
174: 
175:         end
176: 
177:         @document.bounding_box( [x + @horizontal_padding, 
178:                                  y - @vertical_padding], 
179:                                 :width   => text_area_width,
180:                                 :height  => height - @vertical_padding) do
181:           @document.move_down((@document.font.line_gap +
182:                                @document.font.descender) / 2)
183: 
184:           options = {:align => @align, :final_gap => false}
185: 
186:           options[:size] = @font_size if @font_size
187:           options[:style] = @font_style if @font_style
188: 
189:           old_color = @document.fill_color || "000000"
190:           @document.fill_color @text_color if @text_color                        
191:           @document.text @text, options
192:           @document.fill_color old_color
193:         end
194:       end
height() click to toggle source

The height of the cell in PDF points

     # File lib/prawn/table/cell.rb, line 108
108:       def height  
109:         @height || text_area_height + 2*@vertical_padding
110:       end
text_area_height() click to toggle source

The height of the text area excluding the vertical padding

     # File lib/prawn/table/cell.rb, line 114
114:       def text_area_height
115:         text_height = 0
116:         if @font_size
117:           @document.font_size(@font_size) do
118:             text_height = @document.height_of(@text, :width => text_area_width)
119:           end
120:         else
121:           text_height = @document.height_of(@text, :width => text_area_width)
122:         end
123:         text_height
124:       end
text_area_width() click to toggle source

The width of the text area excluding the horizonal padding

    # File lib/prawn/table/cell.rb, line 96
96:       def text_area_width
97:         width - 2*@horizontal_padding
98:       end
to_s() click to toggle source

Returns the cell’s text as a string.

    # File lib/prawn/table/cell.rb, line 90
90:       def to_s
91:         @text
92:       end
width() click to toggle source

The width of the cell in PDF points

     # File lib/prawn/table/cell.rb, line 102
102:       def width
103:         @width || (@document.width_of(@text, :size => @font_size)) + 2*@horizontal_padding
104:       end

Private Instance Methods

borders() click to toggle source
     # File lib/prawn/table/cell.rb, line 208
208:       def borders
209:         @borders ||= case @border_style
210:         when :all
211:           [:top,:left,:right,:bottom]
212:         when :sides
213:           [:left,:right]
214:         when :no_top
215:           [:left,:right,:bottom]
216:         when :no_bottom
217:           [:left,:right,:top]
218:         when :bottom_only
219:           [:bottom]
220:         when :none
221:           []
222:         end
223:       end
x() click to toggle source

x-position of the cell

     # File lib/prawn/table/cell.rb, line 199
199:       def x
200:         @point[0]
201:       end
y() click to toggle source

y-position of the cell

     # File lib/prawn/table/cell.rb, line 204
204:       def y
205:         @point[1]
206:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.