rghost 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +101 -0
  3. data/README.txt +3 -0
  4. data/Rakefile +93 -0
  5. data/lib/rghost.rb +3 -0
  6. data/lib/rghost/arc.rb +39 -0
  7. data/lib/rghost/barcode.rb +40 -0
  8. data/lib/rghost/callback.rb +55 -0
  9. data/lib/rghost/color.rb +118 -0
  10. data/lib/rghost/constants.rb +616 -0
  11. data/lib/rghost/convert.rb +24 -0
  12. data/lib/rghost/cursor.rb +82 -0
  13. data/lib/rghost/data_grid/basic_grid.rb +136 -0
  14. data/lib/rghost/data_grid/csv_grid.rb +27 -0
  15. data/lib/rghost/data_grid/data_grid.rb +14 -0
  16. data/lib/rghost/data_grid/dynamic_callback.rb +12 -0
  17. data/lib/rghost/data_grid/field_format.rb +60 -0
  18. data/lib/rghost/data_grid/grid.rb +18 -0
  19. data/lib/rghost/data_grid/header.rb +111 -0
  20. data/lib/rghost/data_grid/rails_grid.rb +37 -0
  21. data/lib/rghost/data_grid/static_callback.rb +13 -0
  22. data/lib/rghost/data_grid/style/border_lines.rb +47 -0
  23. data/lib/rghost/data_grid/style/bottom_lines.rb +30 -0
  24. data/lib/rghost/data_grid/style/old_forms.rb +30 -0
  25. data/lib/rghost/data_grid/style/style.rb +8 -0
  26. data/lib/rghost/document.rb +380 -0
  27. data/lib/rghost/dsc_entry.rb +20 -0
  28. data/lib/rghost/dynamic_document_callback.rb +27 -0
  29. data/lib/rghost/eps.rb +22 -0
  30. data/lib/rghost/font.rb +52 -0
  31. data/lib/rghost/function.rb +36 -0
  32. data/lib/rghost/gif.rb +28 -0
  33. data/lib/rghost/graphic.rb +28 -0
  34. data/lib/rghost/gs_alone.rb +17 -0
  35. data/lib/rghost/helpers.rb +13 -0
  36. data/lib/rghost/horizontal_line.rb +29 -0
  37. data/lib/rghost/image.rb +26 -0
  38. data/lib/rghost/jpeg.rb +26 -0
  39. data/lib/rghost/line.rb +40 -0
  40. data/lib/rghost/line_width.rb +17 -0
  41. data/lib/rghost/load.rb +37 -0
  42. data/lib/rghost/newpath.rb +20 -0
  43. data/lib/rghost/paper.rb +88 -0
  44. data/lib/rghost/point.rb +22 -0
  45. data/lib/rghost/point_with_command.rb +17 -0
  46. data/lib/rghost/ps/basic.ps +14 -0
  47. data/lib/rghost/ps/begin_document.ps +7 -0
  48. data/lib/rghost/ps/callbacks.ps +146 -0
  49. data/lib/rghost/ps/code128.font +344 -0
  50. data/lib/rghost/ps/code39.font +195 -0
  51. data/lib/rghost/ps/cursor.ps +41 -0
  52. data/lib/rghost/ps/datagrid.ps +52 -0
  53. data/lib/rghost/ps/ean.font +150 -0
  54. data/lib/rghost/ps/eps.ps +42 -0
  55. data/lib/rghost/ps/font.ps +31 -0
  56. data/lib/rghost/ps/functions.ps +646 -0
  57. data/lib/rghost/ps/gif.ps +150 -0
  58. data/lib/rghost/ps/horizontal_line.ps +3 -0
  59. data/lib/rghost/ps/i25.font +103 -0
  60. data/lib/rghost/ps/jpeg.ps +122 -0
  61. data/lib/rghost/ps/paper.ps +8 -0
  62. data/lib/rghost/ps/rectangle.ps +5 -0
  63. data/lib/rghost/ps/row.ps +4 -0
  64. data/lib/rghost/ps/show.ps +20 -0
  65. data/lib/rghost/ps/table_callbacks.ps +96 -0
  66. data/lib/rghost/ps/textarea.ps +11 -0
  67. data/lib/rghost/ps/type.ps +1 -0
  68. data/lib/rghost/ps/unit.ps +3 -0
  69. data/lib/rghost/ps/vertical_line.ps +14 -0
  70. data/lib/rghost/ps_object.rb +51 -0
  71. data/lib/rghost/rectangle.rb +39 -0
  72. data/lib/rghost/rgengine.so +0 -0
  73. data/lib/rghost/rghost.rb +3 -0
  74. data/lib/rghost/ruby_ghost_config.rb +25 -0
  75. data/lib/rghost/ruby_ghost_engine.rb +175 -0
  76. data/lib/rghost/ruby_to_ps.rb +92 -0
  77. data/lib/rghost/scale.rb +14 -0
  78. data/lib/rghost/show.rb +31 -0
  79. data/lib/rghost/static_document_callback.rb +22 -0
  80. data/lib/rghost/text_in.rb +29 -0
  81. data/lib/rghost/textarea.rb +115 -0
  82. data/lib/rghost/units.rb +81 -0
  83. data/lib/rghost/variable.rb +12 -0
  84. data/lib/rghost/version.rb +9 -0
  85. data/lib/rghost/vertical_line.rb +29 -0
  86. data/scripts/txt2html +67 -0
  87. data/setup.rb +1585 -0
  88. data/test/test_helper.rb +2 -0
  89. data/test/test_rghost.rb +11 -0
  90. data/website/index.html +11 -0
  91. data/website/index.txt +30 -0
  92. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  93. data/website/stylesheets/screen.css +129 -0
  94. data/website/template.rhtml +48 -0
  95. metadata +145 -0
@@ -0,0 +1,37 @@
1
+ require 'ps_object'
2
+ #Cria uma Grid para ActiveRecord::Base obtendo o valor de @attributes atraves do nome.
3
+ class DataGrid::RailsGrid < DataGrid::BasicGrid
4
+ #Adiciona um Array de objetos ActiveRecord::Base
5
+ def data(_data)
6
+ _data.collect do |d|
7
+ line=@rails_cols.collect{|c| d[c[:field_name]] }
8
+ proc_line(line)
9
+ end
10
+ end
11
+ #Adiciona colunas associando :field_name ao t�tulo da coluna
12
+ #Exemplo:
13
+ #Para o exemplo abaixo a classe Calls � uma heran�a de ActiveRecord::Base. Constru��o normal.
14
+ # rails_grid=DataGrid::RailsGrid.new(:align => :center, :width => 3)
15
+ #Mapeamento, primeiro o nome do atributo, depois as op��es j� conhecidas
16
+ #
17
+ # rails_grid.col :mobile, :title => "Mobile", :align => :right
18
+ # rails_grid.col :duration, :title => "Dura��o",:width => 3
19
+ # rails_grid.col :start, :title => "Inicio", :format => :eurodate
20
+ # rails_grid.col :called, :title => "N�mero", :align => :right, :title_align => :center
21
+ # Carregamento dos dados
22
+ # calls = Calls.find(:all, :limit => 5000)
23
+ # rails_grid.data(calls)
24
+ def col(field_name, options={})
25
+ super(options[:title],options)
26
+ @rails_cols||=[]
27
+ owf=options.dup #from options with field
28
+ owf[:field_name]||=field_name
29
+ @rails_cols << owf
30
+
31
+ end
32
+ # Alias col
33
+ def column(field_name, options={})
34
+ col(field_name,options)
35
+ end
36
+
37
+ end
@@ -0,0 +1,13 @@
1
+ require "ps_object"
2
+ require "function"
3
+ #Callbacks est�ticos a n�vel de Grid
4
+ class DataGrid::StaticCallback < Function
5
+ ACCEPT=[:before_table_create, :after_table_create]
6
+
7
+ def initialize(name,&block)
8
+ raise NameError.new("#{name} no accept in #{self.class}") unless ACCEPT.include? name
9
+ super(name,&block)
10
+ end
11
+
12
+ end
13
+
@@ -0,0 +1,47 @@
1
+
2
+
3
+ class DataGrid::Style::BorderLines
4
+
5
+ def set_style(grid)
6
+
7
+ grid.before_row do
8
+
9
+ set HorizontalLine.new(:top, :size => grid.header.size)
10
+ set HorizontalLine.new(:bottom,:size => grid.header.size)
11
+ end
12
+
13
+ grid.before_column :only => 0 do
14
+ set VerticalLine.row
15
+ end
16
+
17
+ grid.after_column do
18
+ set VerticalLine.row
19
+ end
20
+
21
+
22
+ grid.header.before_create do
23
+ set LineWidth.new(0)
24
+ call :font_bold
25
+ set HorizontalLine.new(:top, :size => grid.header.size)
26
+ set HorizontalLine.new(:bottom,:size => grid.header.size)
27
+ end
28
+
29
+ grid.header.after_create { call :font_normal }
30
+
31
+
32
+
33
+ grid.header.before_column :only => 0 do
34
+ set VerticalLine.row
35
+ end
36
+
37
+ grid.header.after_column do
38
+ set VerticalLine.row
39
+ end
40
+
41
+
42
+
43
+
44
+ end
45
+
46
+
47
+ end
@@ -0,0 +1,30 @@
1
+
2
+
3
+ class DataGrid::Style::BottomLines
4
+
5
+ def set_style(grid)
6
+
7
+ size=grid.header.size
8
+ grid.before_row do
9
+ set HorizontalLine.new(:bottom,:size => grid.header.size)
10
+
11
+ end
12
+
13
+ grid.header.before_create do
14
+ set LineWidth.new(0)
15
+ set HorizontalLine.new(:bottom,:size => grid.header.size)
16
+ call :font_bold
17
+ end
18
+
19
+ grid.header.after_create { call :font_normal }
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+ end
28
+
29
+
30
+ end
@@ -0,0 +1,30 @@
1
+
2
+
3
+ class DataGrid::Style::OldForms
4
+
5
+ def set_style(grid)
6
+
7
+ size=grid.header.size
8
+ grid.odd_row do
9
+ set Rectangle.background_row(:size => size)
10
+
11
+ end
12
+
13
+ grid.header.before_create do
14
+ set LineWidth.new(0)
15
+ set Rectangle.background_row(:size => size, :color => Gray.new(0.9) )
16
+ call :font_bold
17
+ end
18
+
19
+ grid.header.after_create { call :font_normal }
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+ end
28
+
29
+
30
+ end
@@ -0,0 +1,8 @@
1
+
2
+ module DataGrid
3
+ module Style
4
+ require 'data_grid/style/border_lines'
5
+ require 'data_grid/style/old_forms'
6
+ require 'data_grid/style/bottom_lines'
7
+ end
8
+ end
@@ -0,0 +1,380 @@
1
+ ##
2
+ # Ruby Ghost Engine - Document Builder.
3
+ # http://rubyforge.org/projects/rghost/
4
+ # Author Shairon Toledo <shairon.toledo at gmail.com> http://www.hashcode.eti.br
5
+ # Brazil Jun/2007
6
+ #
7
+ # Licensed under a Creative Commons licence.
8
+ # http://creativecommons.org/licenses/by-sa/2.5/br/
9
+ ##
10
+
11
+ require "ps_object"
12
+ require "dynamic_document_callback"
13
+ require "static_document_callback"
14
+ require "paper"
15
+ require "load"
16
+ require "horizontal_line"
17
+ require "vertical_line"
18
+ require "function"
19
+ require "font"
20
+ require "cursor"
21
+ require "show"
22
+ require "rectangle"
23
+ require "color"
24
+ require "graphic"
25
+ require "arc"
26
+ require "newpath"
27
+ require "line"
28
+ require "line_width"
29
+ require "textarea"
30
+ require "variable"
31
+ require "eps"
32
+ require "jpeg"
33
+ require "gif"
34
+ require "text_in"
35
+ require "ruby_ghost_engine"
36
+ require "barcode"
37
+ require "convert"
38
+
39
+
40
+ #Document � a classe que centraliza a estrutura do documento
41
+ class Document < PsObject
42
+ DEFAULT_OPTIONS={
43
+ :rows_per_page => 80 ,
44
+ :count_pages => 10,
45
+ :row_height => 0.4,
46
+ :row_padding => 0.1,
47
+ :fontsize=> 8
48
+ }
49
+ #Nova inst�ncia de Document com proxy da classe Paper.
50
+ # Responde as op��es
51
+ #Document
52
+ # :rows_per_page => 80 , # M�ximo de linhas por p�gina
53
+ # :count_pages => 10, # Total de p�ginas do documento
54
+ # :row_height => 0.4, # Altura da faixa
55
+ # :row_padding => 0.1, # Espa�o entre cada faixa
56
+ # :fontsize=> 8 # Tamanho da fonte padr�o
57
+ #Paper
58
+ # :paper => :A4 # Tamanho do papel, personalizavel com array width X height(em pontos). Exmp: :paper => [400,300]
59
+ # :landscape => false # Disposi��o do papel em 90�
60
+ # :margin_top => 1, # Margin de topo
61
+ # :margin_right => 1, # Margin direita
62
+ # :margin_bottom => 1, # Margin da base
63
+ # :margin_left => 1, # Margin esquerda
64
+ # :duplex => false, # true - duas faces(para impress�o)
65
+ # :tumble => false # true - tipo do duplex(para impress�o)
66
+ #
67
+ #
68
+ def initialize(options={},&block)
69
+ super("%!RubyGhostEngine")
70
+ @head,@callbacks=PsObject.new,PsObject.new
71
+ @head.set Load.library(:type)
72
+ @head.set Load.library(:unit)
73
+ @paper=Paper.new(options[:paper] || :A4, options)
74
+ @head.set @paper
75
+
76
+ @variables=DEFAULT_OPTIONS.dup.merge(options)
77
+ @defines=[]
78
+
79
+ default_variables
80
+ instance_eval(&block) if block
81
+ end
82
+ #Facade Paper.gs_paper
83
+ #Obtem o valor no formato esperado pelo GS.
84
+ def gs_paper
85
+ @paper.gs_paper
86
+ end
87
+
88
+
89
+ #Aceita StaticDocumentCallback::ACCEPT e DynamicDocumentCallback::ACCEPT
90
+ # doc=Document.new
91
+ # doc.before_page_create :only => [1,2] do
92
+ # set HorizontalLine.new
93
+ # end
94
+ # doc.even_pages :except => [1] do
95
+ # set Show.new("ET say: Hello Humans!!")
96
+ # end
97
+ # doc.last_page do
98
+ # set Cursor.jump_rows(3)
99
+ # set TextIn.new(:x=> 4, :y => 15.5, :text => "Total: %current_page%")
100
+ # end
101
+ def method_missing(name,*args,&block)
102
+ case name
103
+ when *DynamicDocumentCallback::ACCEPT:
104
+
105
+ @callbacks.set DynamicDocumentCallback.new(name,args.shift || {},&block) #args.shift || {} without args
106
+
107
+ when *StaticDocumentCallback::ACCEPT:
108
+
109
+ @callbacks.set StaticDocumentCallback.new(name,&block)
110
+
111
+ else
112
+ raise NameError.new(name.to_s)
113
+ end
114
+ end
115
+
116
+ def ps
117
+ out=PsObject.new
118
+ out.set @head
119
+ out.set @default_variables
120
+ out.set Load.rg_enviroment
121
+ out.raw @defines.join
122
+ out.set @callbacks
123
+ out.set Variable.new(:fontsize,@variables[:fontsize])
124
+ out.call :font_normal
125
+ out.set Load.library(:begin_document)
126
+ out.set Cursor.moveto
127
+
128
+ "#{out} #{super}"
129
+
130
+ #"#{@head} \n%%endhead\n#{@default_variables}\n\n #{Load.rg_enviroment} #{@defines.join} #{@callbacks} #{Load.library(:begin_document)}\n #{Cursor.moveto}#{super}"
131
+
132
+
133
+ end
134
+
135
+ #Facade RubyGhostEngine.render
136
+ #Renderiza o documento.
137
+ # Valores v�lidos para options.
138
+ #
139
+ # :tmpdir => File::SEPARATOR + "tmp", # Diret�rio tempor�rio
140
+ # :logfile => File::SEPARATOR + "tmp" +File::SEPARATOR + "ruby_ghost.log" # Arquivo de log
141
+ # :multipage=> true # Para imagens em v�rios arquivos
142
+ # :resolution => 72 # Resolu��o
143
+ # :size => "200x180" # Para crop da imagem de sa�da
144
+ # :range =>2..3 # Range de p�ginas (PDF Only)
145
+ # Array contendo um Hash para op��es em modo raw do Ghostscript :d ou :s
146
+ # :s => [{:GenericResourceDir => /dir, :DEFAULTPAPERSIZE=> "a3"}]
147
+ # :d => [ {:TextAlphaBits => 2} ]
148
+ #Ou usando string
149
+ # :raw => "-sGenericResourceDir=/test -dTextAlphaBits=2"
150
+ #
151
+ #Exemplo:
152
+ # d=Document.new
153
+ # #fa�a o documento ....
154
+ #
155
+ # d.render :pdf # Sa�da em pdf
156
+ # d.render :jpeg # Sa�da em jpeg
157
+ # d.render :png, :multipage => true # Uma imagem por arquivo
158
+ # d.render :tiff, :resolution => 300 # Imagem com resolu��o de 300 dpi
159
+ def render(device,options={})
160
+ rg=RubyGhostEngine.new(self,options)
161
+ rg.render(device)
162
+ rg
163
+ end
164
+ #Renderiza, abre o stream e deleta o arquivo de sa�da. N�o aceita multipage=>true
165
+ def render_stream(device,options={})
166
+ rg=render(device,options)
167
+ out=rg.output.readlines.join
168
+ rg.clear_output
169
+ out
170
+ end
171
+ #Facade Function.new
172
+ #Define uma fun��o.
173
+ #Exemplo:
174
+ # doc=Document.new
175
+ # doc.define :myfont do
176
+ # set Font.new(:name => "ZapfChancery-MediumItalic", :size => 10)
177
+ # end
178
+ def define(name,&block)
179
+ @defines << Function.new(name,&block)
180
+ end
181
+ #Define e chama uma fun��o.
182
+ # doc=Document.new
183
+ # doc.define_and_call :my_photo do
184
+ # set Jpeg.new("/local/img/my_photo.jpg", :y=> 5,:x => 8, :zoom=> 50)
185
+ # end
186
+ def define_and_call(name,&block)
187
+ define(name,&block)
188
+ call(name)
189
+ end
190
+ #Salta uma faixa e usa a faixa corrente.
191
+ # d=Document.new
192
+ # doc.next_line do
193
+ # set Show.new("single text in page center", :align => :page_center)
194
+ # end
195
+ #Para cada linha de um arquivo.
196
+ # d=Document.new
197
+ # File.open(__FILE__).each { |line| doc.next_row{ set Show.new(line) } }
198
+ # d.done
199
+ # d.render :pdf
200
+ #Uma linha separando cada faixa
201
+ #File.open(__FILE__).each do |line|
202
+ # doc.next_row do
203
+ # set HorizontalLine.new(:top)
204
+ # set Show.new(line)
205
+ # end
206
+ #end
207
+ def next_row(&block)
208
+ set PsObject.new(&block)
209
+ set Cursor.next_row
210
+
211
+
212
+ end
213
+ #Carrega o texto do arquivo em uma itera��o de linhas.
214
+ def print_file(file)
215
+ File.open(file).each do |line|
216
+ next_row do
217
+ set Show.new(line)
218
+ end
219
+ end
220
+ end
221
+
222
+ #Salta a p�gina com controlando o documento.
223
+ def next_page
224
+ call :next_page
225
+ end
226
+ #Facade Graphic
227
+ #Condiciona em um bloco gr�fico. Defini��es gr�ficas v�lidas apenas para o escopo do bloco n�o interferindo nos demais gr�ficos.
228
+ # doc=Document.new
229
+ # doc.graphic do
230
+ # set LineWidth.new(0)
231
+ # set Line.lineto(5,7)
232
+ # end
233
+ def graphic(ps_obj=PsObject.new,&block)
234
+ set Graphic.new(ps_obj,&block)
235
+ end
236
+ #Facade Newpath
237
+ #Cria um bloco que cria um novo path sem alterar o path corrente. O path v�lido apenas para o escopo do bloco. Contudo fecha o path(closepath) ao fim do bloco.
238
+ # doc=Document.new
239
+ # doc.newpath do
240
+ # set Arc.new(:x => 10, :y => 10, :radius => 100)
241
+ # end
242
+ def newpath(ps_obj=PsObject.new,&block)
243
+ set NewPath.new(ps_obj,&block)
244
+ end
245
+ #Facade Variable.new
246
+ #Define uma vari�vel global em Postscript.
247
+ # d=Document.new
248
+ # d.define_variable(:my_var,[3,4,5,6])
249
+ #
250
+ def define_variable(name,value)
251
+ @defines << Variable.new(name,value)
252
+ end
253
+ #Use showpage para o fim do documento ou para saltar p�ginas.
254
+ # Obs.: showpage n�o reseta os contadores de p�ginas,faixas, etc.
255
+ def showpage
256
+ call :stroke
257
+ call :showpage
258
+ end
259
+
260
+ #Facade Cursor.goto_row
261
+ def goto_row(row)
262
+ set Cursor.goto_row(row)
263
+ end
264
+ #Facade Cursor.jump_rows
265
+ def jump_rows(row)
266
+ set Cursor.jump_rows(row)
267
+ end
268
+ #Facade Cursor.rotate
269
+ def rotate(angle)
270
+ set Cursor.rotate(angle)
271
+ end
272
+ #Facade Cursor.moveto
273
+ def moveto(point={})
274
+ set Cursor.moveto(point)
275
+ end
276
+ #Facade Cursor.rmoveto
277
+ def rmoveto(point={})
278
+ set Cursor.rmoveto(point)
279
+ end
280
+ #Facade Cursor.translate
281
+ def translate(point={})
282
+ set Cursor.translate(point)
283
+ end
284
+ #Facade DSCEntry.new
285
+ def dsc_entry(&block)
286
+ set DSCEntry.new(&block)
287
+ end
288
+ #Facade EPS.new
289
+ def template(file_path,options={})
290
+ set EPS.new(file_path,options)
291
+ end
292
+ #Define um template/eps
293
+ # dt=Document.new
294
+ # dt.define_template(:myform, '/local/template/form1.eps', :x=> 3, :y => 5)
295
+ # dt.call :myform # Executa o template
296
+ def define_template(name,file_path,options)
297
+ set Function.new(name,EPS.new(file_path,options))
298
+ end
299
+ #Facade Font.new
300
+ def font(options)
301
+ set Font.new(options)
302
+ end
303
+ #Facade Image.for
304
+ def image(path,options={})
305
+ set Image.for(path,options)
306
+ end
307
+ #Idem horizontal_line
308
+ def hl(valign=:middle,options={})
309
+ set HorizontalLine.new(valign,options)
310
+ end
311
+ #Facade HorizontalLine.new
312
+ def horizontal_line(valign=:middle,options={})
313
+ hl(valign,options)
314
+ end
315
+ #Facade Rectangle.new
316
+ def rectangle(options={})
317
+ set Rectangle.new(options)
318
+ end
319
+ #Facade Rectangle.background_row
320
+ def background_row(options={})
321
+ set Rectangle.background_row(options={})
322
+ end
323
+ #Facade Scale.new
324
+ def scale(sx,sy)
325
+ set Scale.new(sx,sy)
326
+ end
327
+ #Facade TextIn.new
328
+ def text_in(options={})
329
+ set TextIn.new(options)
330
+ end
331
+ #Facade Show.new
332
+ def text(text,align={ :align=>:show_left })
333
+ set Show.new(text,align)
334
+ end
335
+ #Facade Show.new
336
+ def show(text,align={ :align=>:show_left })
337
+ set Show.new(text,align)
338
+ end
339
+ #Facade TextArea.new
340
+ def text_area(text,options={})
341
+ set TextArea.new(text,options)
342
+ end
343
+ #Facade VerticalLine.new
344
+ def vertical_line(start_in=:limit_left,size=:area_y)
345
+ set TextArea.new(start_in, size)
346
+ end
347
+ #Carrega de c�digo de barras(GNU Barcodes) da API
348
+ def load_font(name=:CODE39)
349
+
350
+ raw Load.library(name,:font)
351
+
352
+ end
353
+ #Executa o comando stoke para desenho de vertores
354
+ def stroke
355
+
356
+ call :stroke
357
+ end
358
+ #Informa que o documento est� pronto para ser convertido/impresso
359
+ def done
360
+ showpage
361
+ raw "\n%%EOF"
362
+ end
363
+
364
+ private
365
+ def default_variables
366
+ ps=PsObject.new
367
+ ps.set Variable.new(:rows_per_page,@variables[:rows_per_page])
368
+ ps.set Variable.new(:count_pages,@variables[:count_pages])
369
+ ps.set Variable.new(:row_height,Units::parse(@variables[:row_height]))
370
+ ps.set Variable.new(:row_padding,Units::parse(@variables[:row_padding]))
371
+
372
+
373
+ @default_variables=ps
374
+
375
+
376
+ end
377
+
378
+ end
379
+
380
+