Class: PdfTable
- Inherits:
-
Object
- Object
- PdfTable
- Defined in:
- lib/majorsilence_pdf/pdf_native.rb
Overview
A table layout handle. Call close when done.
Usage:
table = PdfTable.new(fns, [180, 80, 90, 90])
table.set_header_bg(26, 86, 160)
.set_alternate_bg(240, 245, 252)
.set_border(200, 200, 200, 0.5)
.add_row('Product', 'Qty', 'Unit Price', 'Total')
.add_row('Widget', '3', '$10.00', '$30.00')
canvas.draw_table(table.handle, 72, 100)
table.close
Instance Attribute Summary collapse
-
#handle ⇒ Object
readonly
Returns the value of attribute handle.
Instance Method Summary collapse
-
#add_row(*cells) ⇒ Object
Stage all cells and commit them as a single row.
- #close ⇒ Object
-
#initialize(fns, col_widths) ⇒ PdfTable
constructor
A new instance of PdfTable.
- #set_alternate_bg(r, g, b) ⇒ Object
- #set_border(r, g, b, w) ⇒ Object
- #set_cell_padding(padding) ⇒ Object
- #set_header_bg(r, g, b) ⇒ Object
Constructor Details
#initialize(fns, col_widths) ⇒ PdfTable
Returns a new instance of PdfTable.
370 371 372 373 374 375 376 377 378 379 380 381 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 370 def initialize(fns, col_widths) @fns = fns # Pack column widths as a native float array. packed = col_widths.map(&:to_f).pack('f*') ptr = Fiddle::Pointer[packed] h = fns[:pdf_table_create].call(ptr, col_widths.length) raise "pdf_table_create failed: #{PdfLibrary.last_error_str(fns)}" if h.nil? || h.zero? @handle = h # Keep packed alive so the pointer remains valid during the call. @_col_widths_packed = packed end |
Instance Attribute Details
#handle ⇒ Object (readonly)
Returns the value of attribute handle.
368 369 370 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 368 def handle @handle end |
Instance Method Details
#add_row(*cells) ⇒ Object
Stage all cells and commit them as a single row.
389 390 391 392 393 394 395 396 397 398 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 389 def add_row(*cells) cells.each do |cell| ret = @fns[:pdf_table_stage_cell].call(@handle, c_str(cell.to_s)) raise "pdf_table_stage_cell failed: #{PdfLibrary.last_error_str(@fns)}" unless ret.zero? end ret = @fns[:pdf_table_commit_row].call(@handle) raise "pdf_table_commit_row failed: #{PdfLibrary.last_error_str(@fns)}" unless ret.zero? self end |
#close ⇒ Object
400 401 402 403 404 405 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 400 def close return unless @handle @fns[:pdf_table_close].call(@handle) @handle = nil end |
#set_alternate_bg(r, g, b) ⇒ Object
384 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 384 def set_alternate_bg(r, g, b)= tap { @fns[:pdf_table_set_alternate_bg].call(@handle, r, g, b) } |
#set_border(r, g, b, w) ⇒ Object
385 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 385 def set_border(r, g, b, w) = tap { @fns[:pdf_table_set_border].call(@handle, r, g, b, w.to_f) } |
#set_cell_padding(padding) ⇒ Object
386 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 386 def set_cell_padding(padding) = tap { @fns[:pdf_table_set_cell_padding].call(@handle, padding.to_f) } |
#set_header_bg(r, g, b) ⇒ Object
383 |
# File 'lib/majorsilence_pdf/pdf_native.rb', line 383 def set_header_bg(r, g, b) = tap { @fns[:pdf_table_set_header_bg].call(@handle, r, g, b) } |