class Prawn::Table::Cell::Text
A Cell
that contains text. Has some limited options to set font family, size, and style.
@private
Constants
- TextOptions
Attributes
font[W]
text_color[W]
Public Class Methods
new(pdf, point, options={})
click to toggle source
Calls superclass method
Prawn::Table::Cell::new
# File lib/prawn/table/cell/text.rb, line 29 def initialize(pdf, point, options={}) @text_options = {} super end
Public Instance Methods
draw_content()
click to toggle source
Draws the text content into its bounding box.
# File lib/prawn/table/cell/text.rb, line 67 def draw_content with_font do @pdf.move_down((@pdf.font.line_gap + @pdf.font.descender)/2) with_text_color do text_box(:width => spanned_content_width + FPTolerance, :height => spanned_content_height + FPTolerance, :at => [0, @pdf.cursor]).render end end end
font()
click to toggle source
Returns the font that will be used to draw this cell.
# File lib/prawn/table/cell/text.rb, line 36 def font with_font { @pdf.font } end
font_style=(style)
click to toggle source
Sets the style of the font in use. Equivalent to the Text::Box style
option, but we already have a style method.
# File lib/prawn/table/cell/text.rb, line 43 def font_style=(style) @text_options[:style] = style end
natural_content_height()
click to toggle source
Returns the natural height of this block of text, wrapped to the preset width.
# File lib/prawn/table/cell/text.rb, line 57 def natural_content_height with_font do b = text_box(:width => spanned_content_width + FPTolerance) b.render(:dry_run => true) b.height + b.line_gap end end
natural_content_width()
click to toggle source
Returns the width of this text with no wrapping. This will be far off from the final width if the text is long.
# File lib/prawn/table/cell/text.rb, line 50 def natural_content_width @natural_content_width ||= [styled_width_of(@content), @pdf.bounds.width].min end
set_width_constraints()
click to toggle source
Calls superclass method
Prawn::Table::Cell#set_width_constraints
# File lib/prawn/table/cell/text.rb, line 78 def set_width_constraints # Sets a reasonable minimum width. If the cell has any content, make # sure we have enough width to be at least one character wide. This is # a bit of a hack, but it should work well enough. unless defined?(@min_width) && @min_width min_content_width = [natural_content_width, styled_width_of_single_character].min @min_width = padding_left + padding_right + min_content_width super end end
Protected Instance Methods
styled_width_of(text)
click to toggle source
Returns the width of text
under the given text options.
# File lib/prawn/table/cell/text.rb, line 136 def styled_width_of(text) @pdf.width_of(text, @text_options) end
text_box(extra_options={})
click to toggle source
# File lib/prawn/table/cell/text.rb, line 117 def text_box(extra_options={}) if p = @text_options[:inline_format] p = [] unless p.is_a?(Array) options = @text_options.dup options.delete(:inline_format) options.merge!(extra_options) options[:document] = @pdf array = @pdf.text_formatter.format(@content, *p) ::Prawn::Text::Formatted::Box.new(array, options.merge(extra_options).merge(:document => @pdf)) else ::Prawn::Text::Box.new(@content, @text_options.merge(extra_options). merge(:document => @pdf)) end end
with_font() { || ... }
click to toggle source
# File lib/prawn/table/cell/text.rb, line 91 def with_font @pdf.save_font do options = {} options[:style] = @text_options[:style] if @text_options[:style] options[:style] ||= @pdf.font.options[:style] if @pdf.font.options[:style] @pdf.font(defined?(@font) && @font || @pdf.font.family, options) yield end end
with_text_color() { || ... }
click to toggle source
# File lib/prawn/table/cell/text.rb, line 103 def with_text_color if defined?(@text_color) && @text_color begin old_color = @pdf.fill_color || '000000' @pdf.fill_color(@text_color) yield ensure @pdf.fill_color(old_color) end else yield end end
Private Instance Methods
styled_width_of_single_character()
click to toggle source
Returns the greatest possible width of any single character
under the given text options.
(We use this to determine the minimum width of a table cell) (Although we currently determine this by measuring “M”, it should really
use whichever character is widest under the current font)
# File lib/prawn/table/cell/text.rb, line 148 def styled_width_of_single_character styled_width_of("M") end