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.
- data/History.txt +4 -0
- data/Manifest.txt +101 -0
- data/README.txt +3 -0
- data/Rakefile +93 -0
- data/lib/rghost.rb +3 -0
- data/lib/rghost/arc.rb +39 -0
- data/lib/rghost/barcode.rb +40 -0
- data/lib/rghost/callback.rb +55 -0
- data/lib/rghost/color.rb +118 -0
- data/lib/rghost/constants.rb +616 -0
- data/lib/rghost/convert.rb +24 -0
- data/lib/rghost/cursor.rb +82 -0
- data/lib/rghost/data_grid/basic_grid.rb +136 -0
- data/lib/rghost/data_grid/csv_grid.rb +27 -0
- data/lib/rghost/data_grid/data_grid.rb +14 -0
- data/lib/rghost/data_grid/dynamic_callback.rb +12 -0
- data/lib/rghost/data_grid/field_format.rb +60 -0
- data/lib/rghost/data_grid/grid.rb +18 -0
- data/lib/rghost/data_grid/header.rb +111 -0
- data/lib/rghost/data_grid/rails_grid.rb +37 -0
- data/lib/rghost/data_grid/static_callback.rb +13 -0
- data/lib/rghost/data_grid/style/border_lines.rb +47 -0
- data/lib/rghost/data_grid/style/bottom_lines.rb +30 -0
- data/lib/rghost/data_grid/style/old_forms.rb +30 -0
- data/lib/rghost/data_grid/style/style.rb +8 -0
- data/lib/rghost/document.rb +380 -0
- data/lib/rghost/dsc_entry.rb +20 -0
- data/lib/rghost/dynamic_document_callback.rb +27 -0
- data/lib/rghost/eps.rb +22 -0
- data/lib/rghost/font.rb +52 -0
- data/lib/rghost/function.rb +36 -0
- data/lib/rghost/gif.rb +28 -0
- data/lib/rghost/graphic.rb +28 -0
- data/lib/rghost/gs_alone.rb +17 -0
- data/lib/rghost/helpers.rb +13 -0
- data/lib/rghost/horizontal_line.rb +29 -0
- data/lib/rghost/image.rb +26 -0
- data/lib/rghost/jpeg.rb +26 -0
- data/lib/rghost/line.rb +40 -0
- data/lib/rghost/line_width.rb +17 -0
- data/lib/rghost/load.rb +37 -0
- data/lib/rghost/newpath.rb +20 -0
- data/lib/rghost/paper.rb +88 -0
- data/lib/rghost/point.rb +22 -0
- data/lib/rghost/point_with_command.rb +17 -0
- data/lib/rghost/ps/basic.ps +14 -0
- data/lib/rghost/ps/begin_document.ps +7 -0
- data/lib/rghost/ps/callbacks.ps +146 -0
- data/lib/rghost/ps/code128.font +344 -0
- data/lib/rghost/ps/code39.font +195 -0
- data/lib/rghost/ps/cursor.ps +41 -0
- data/lib/rghost/ps/datagrid.ps +52 -0
- data/lib/rghost/ps/ean.font +150 -0
- data/lib/rghost/ps/eps.ps +42 -0
- data/lib/rghost/ps/font.ps +31 -0
- data/lib/rghost/ps/functions.ps +646 -0
- data/lib/rghost/ps/gif.ps +150 -0
- data/lib/rghost/ps/horizontal_line.ps +3 -0
- data/lib/rghost/ps/i25.font +103 -0
- data/lib/rghost/ps/jpeg.ps +122 -0
- data/lib/rghost/ps/paper.ps +8 -0
- data/lib/rghost/ps/rectangle.ps +5 -0
- data/lib/rghost/ps/row.ps +4 -0
- data/lib/rghost/ps/show.ps +20 -0
- data/lib/rghost/ps/table_callbacks.ps +96 -0
- data/lib/rghost/ps/textarea.ps +11 -0
- data/lib/rghost/ps/type.ps +1 -0
- data/lib/rghost/ps/unit.ps +3 -0
- data/lib/rghost/ps/vertical_line.ps +14 -0
- data/lib/rghost/ps_object.rb +51 -0
- data/lib/rghost/rectangle.rb +39 -0
- data/lib/rghost/rgengine.so +0 -0
- data/lib/rghost/rghost.rb +3 -0
- data/lib/rghost/ruby_ghost_config.rb +25 -0
- data/lib/rghost/ruby_ghost_engine.rb +175 -0
- data/lib/rghost/ruby_to_ps.rb +92 -0
- data/lib/rghost/scale.rb +14 -0
- data/lib/rghost/show.rb +31 -0
- data/lib/rghost/static_document_callback.rb +22 -0
- data/lib/rghost/text_in.rb +29 -0
- data/lib/rghost/textarea.rb +115 -0
- data/lib/rghost/units.rb +81 -0
- data/lib/rghost/variable.rb +12 -0
- data/lib/rghost/version.rb +9 -0
- data/lib/rghost/vertical_line.rb +29 -0
- data/scripts/txt2html +67 -0
- data/setup.rb +1585 -0
- data/test/test_helper.rb +2 -0
- data/test/test_rghost.rb +11 -0
- data/website/index.html +11 -0
- data/website/index.txt +30 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +129 -0
- data/website/template.rhtml +48 -0
- metadata +145 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
/textarea_defaults {
|
2
|
+
/space ( ) def
|
3
|
+
/spacecount { 0 exch ( ) { search { pop 3 -1 roll 1 add 3 1 roll } { pop exit } ifelse } loop } def
|
4
|
+
/ssp { space search pop } def
|
5
|
+
/dsp { dup stringwidth pop } def
|
6
|
+
/cpp { currentpoint pop } def
|
7
|
+
/S { dup spacecount {ssp dsp cpp add rm gt { L s s }{ s s } ifelse } repeat pop } def
|
8
|
+
/n { show newline } def /s { show } def /L { newline } def
|
9
|
+
/centre { dup stringwidth pop 2 div rm 2 div exch sub lm add tm moveto } def
|
10
|
+
/c{ centre n} def
|
11
|
+
} def
|
@@ -0,0 +1 @@
|
|
1
|
+
%!
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/vertical_line{ exch gsave current_row moveto 0 exch neg rlineto stroke grestore } def
|
2
|
+
/vlr {
|
3
|
+
gsave
|
4
|
+
0 row_height rlineto
|
5
|
+
stroke
|
6
|
+
grestore
|
7
|
+
} def
|
8
|
+
/vlrf {
|
9
|
+
gsave
|
10
|
+
X Y row_padding sub moveto
|
11
|
+
0 row_height row_padding add rlineto
|
12
|
+
stroke
|
13
|
+
grestore
|
14
|
+
} def
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#Wrapper Postscript
|
2
|
+
class PsObject
|
3
|
+
#PS_VERSION=3
|
4
|
+
#Nova inst�ncia de PsObject
|
5
|
+
# PsObject.new("/my_proc { 33 45 2 10 sub mul div} bind def")
|
6
|
+
#Por bloco
|
7
|
+
# PsObject.new do
|
8
|
+
# set PsObject.new("(A test) show")
|
9
|
+
# raw "(Other Test in raw) show "
|
10
|
+
# end
|
11
|
+
def initialize(body="",&block)
|
12
|
+
@body=if body.is_a? PsObject
|
13
|
+
body.ps
|
14
|
+
else
|
15
|
+
"#{body} "
|
16
|
+
end
|
17
|
+
|
18
|
+
instance_eval(&block) if block
|
19
|
+
|
20
|
+
end
|
21
|
+
#Idem ps
|
22
|
+
def to_s
|
23
|
+
ps
|
24
|
+
end
|
25
|
+
#Obtem os comandos em Postscript
|
26
|
+
def ps
|
27
|
+
@body.to_s
|
28
|
+
end
|
29
|
+
#Adiciona comando postscript diretamenta na pilha
|
30
|
+
def raw(value)
|
31
|
+
@body << "#{value} "
|
32
|
+
end
|
33
|
+
#Seta um PsObject na pilha
|
34
|
+
def set(value)
|
35
|
+
|
36
|
+
raise TypeError.new("can't convert #{value.class} into PsObject") unless value.is_a? PsObject
|
37
|
+
@body << "#{value.ps} "
|
38
|
+
|
39
|
+
end
|
40
|
+
#Idem de set, n�o funciona dentro de blocos
|
41
|
+
def <<(value)
|
42
|
+
set value
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
#chama um comando,fun��o ou valor internamento dentro da pilha Postscipt
|
47
|
+
def call(name)
|
48
|
+
set PsObject.new(name)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "ps_object"
|
2
|
+
require "units"
|
3
|
+
require "color"
|
4
|
+
#Respons�vel pela cria��o de ret�ngulos
|
5
|
+
class Rectangle < PsObject
|
6
|
+
DEFAULT_OPTIONS={:fill => false, :x => :limit_left, :y=> :current_row, :width => :area_x, :height => :row_height}
|
7
|
+
BACKGROUND_ROW_DEFAULT_OPTIONS={:start_in => :limit_left, :size => :area_x, :color => Gray.new(0.95)}
|
8
|
+
#Nova inst�ncia de Rectangle.
|
9
|
+
# Retangle.new(:x => 1, :y => 5, :height => 5, :width => 5) #um quadrado
|
10
|
+
#O Rectangle desenha apenas as bordas(default) mas pode-se utilizar :fill => true para preenche-lo.
|
11
|
+
# Retangle.new(:x => 1, :y => 5, :width => 3, :fill => true )
|
12
|
+
def initialize(options={})
|
13
|
+
@options=DEFAULT_OPTIONS.dup.merge(options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def ps
|
17
|
+
x,y=@options[:x], @options[:y]
|
18
|
+
w,h,=@options[:width], @options[:height]
|
19
|
+
#with parse
|
20
|
+
x,y=Units::parse(x),Units::parse(y)
|
21
|
+
w,h=Units::parse(w),Units::parse(h)
|
22
|
+
cmd=@options[:fill] ? :fill : :stroke
|
23
|
+
"#{x} #{y} #{w} #{h} rect#{cmd}"
|
24
|
+
end
|
25
|
+
|
26
|
+
#Desenha um ret�ngulo ao fundo da faixa corrente
|
27
|
+
# Rectangle.background_row(:start_in => 2, :size => 10, :color => Color.create("FFAAFF"))
|
28
|
+
#Default
|
29
|
+
# Rectangle.background_row(:start_in => :limit_left, :size => :area_x, :color => Gray.new(0.95))
|
30
|
+
#O mesmo que
|
31
|
+
# Rectangle.background_row
|
32
|
+
def Rectangle.background_row(options={})
|
33
|
+
opts=BACKGROUND_ROW_DEFAULT_OPTIONS.merge(options)
|
34
|
+
start_in,size=Units::parse(opts[:start_in]),Units::parse(opts[:size])
|
35
|
+
return PsObject.new("#{start_in} #{size} {#{opts[:color]}} background_row ")
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
Binary file
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "ps_object"
|
2
|
+
|
3
|
+
|
4
|
+
module RubyGhostConfig
|
5
|
+
GS={
|
6
|
+
:mode => :gsparams,
|
7
|
+
:path => "/usr/bin/gs",
|
8
|
+
:tmpdir => ENV["TMP"] || ENV["TMPDIR"] || ENV["TEMPDIR"] || ENV["TEMP"] || "/tmp",
|
9
|
+
:pslibdir => File.dirname(__FILE__)+File::SEPARATOR+"ps",
|
10
|
+
:default_params=> %w(gs -dNOPAUSE -dBATCH -dQUIET -dNOPAGEPROMPT),
|
11
|
+
:stack_elements => 50,
|
12
|
+
:unit => Units::Cm
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
def RubyGhostConfig.config_platform
|
18
|
+
|
19
|
+
GS[:path]=case PLATFORM
|
20
|
+
when /linux|darwin|freebsd/: "/usr/bin/gs"
|
21
|
+
when /mswin/: "C:\\gs\\bin\\gswin32\\gswin32c.exe"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
require 'ruby_ghost_config'
|
2
|
+
require "constants"
|
3
|
+
#Motor do RubyGhost. Trata parametros e arquivos tempor�rios para a compila��o do Postscript.
|
4
|
+
#
|
5
|
+
class RubyGhostEngine
|
6
|
+
attr_reader :errors, :error, :output
|
7
|
+
DEFAULT_OPTIONS={:device => :pdf }
|
8
|
+
|
9
|
+
include Constants::Devices
|
10
|
+
#Nova inst�ncia de RubyGhostEngine
|
11
|
+
# d=Document.new
|
12
|
+
# rge=RubyGhostEngine.new(d, :logfile => "/var/log/rgengine.log")
|
13
|
+
# img=rge.render(:gif)
|
14
|
+
# if rge.error
|
15
|
+
# puts rge.errors
|
16
|
+
# else
|
17
|
+
# FileUtils.cp(img,"/local/my/dir/")
|
18
|
+
# end
|
19
|
+
def initialize(document,options={})
|
20
|
+
@document=document
|
21
|
+
@options=DEFAULT_OPTIONS.merge(options)
|
22
|
+
@errors=[]
|
23
|
+
@error=false
|
24
|
+
@output=nil
|
25
|
+
@delete_input=true
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
#Renderiza o documento.
|
30
|
+
#Valores v�lidos para options.
|
31
|
+
#
|
32
|
+
# :logfile => "/var/log/rghost.log"
|
33
|
+
# :multipage=> true # Para imagens em v�rios arquivos
|
34
|
+
# :resolution => 72 # Resolu��o
|
35
|
+
# :size => "200x180" # Para crop da imagem de sa�da
|
36
|
+
# :range =>2..3 # Range de p�ginas(PDF only)
|
37
|
+
#Array contendo um Hash para op��es em modo raw do Ghostscript :d ou :s
|
38
|
+
# :s => [{:GenericResourceDir, :DEFAULTPAPERSIZE=> "a3"}]
|
39
|
+
# :d => [ {:TextAlphaBits => 2} ]
|
40
|
+
#
|
41
|
+
#Exemplo:
|
42
|
+
# d=Document.new
|
43
|
+
# #fa�a o documento ....
|
44
|
+
#
|
45
|
+
# d.render :pdf # Sa�da em pdf
|
46
|
+
# d.render :jpeg # Sa�da em jpeg
|
47
|
+
# d.render :png, :multipage => true # Uma imagem por arquivo
|
48
|
+
# d.render :tiff, :resolution => 300 # Imagem com resolu��o de 300 dpi
|
49
|
+
def render(device=nil)
|
50
|
+
puts @options.inspect
|
51
|
+
device||=@options[:device]
|
52
|
+
tmp_filename=@options[:filename]
|
53
|
+
unless tmp_filename
|
54
|
+
tmp_filename||="#{RubyGhostConfig::GS[:tmpdir]}#{File::SEPARATOR}#{self.object_id.abs}"
|
55
|
+
file_out="#{tmp_filename}.#{device}"
|
56
|
+
else
|
57
|
+
file_out=tmp_filename
|
58
|
+
end
|
59
|
+
puts file_out
|
60
|
+
file_err="#{tmp_filename}.rgerr"
|
61
|
+
|
62
|
+
multipage=@options[:multipage]
|
63
|
+
file_out.gsub!(/\./,"_%04d.") if multipage
|
64
|
+
|
65
|
+
params=RubyGhostConfig::GS[:default_params].dup #default parameters gs engine
|
66
|
+
params << "-I#{RubyGhostConfig::GS[:pslibdir]}"
|
67
|
+
params << "-sDEVICE=#{device_for(device)}"
|
68
|
+
params.concat format_params(@options[:d],"-d") if @options[:d]
|
69
|
+
params.concat format_params(@options[:s],"-s") if @options[:s]
|
70
|
+
params << "-r#{@options[:resolution]}" if @options[:resolution]
|
71
|
+
params << "-g#{@options[:size]}" if @options[:size]
|
72
|
+
if @options[:range]
|
73
|
+
params << "-dFirstPage=#{@options[:range].first}"
|
74
|
+
params << "-dLastPage=#{@options[:range].last}"
|
75
|
+
end
|
76
|
+
params << "-sstdout=#{file_err}"
|
77
|
+
params << @options[:raw] if @options[:raw]
|
78
|
+
params << "-sOutputFile=#{file_out}"
|
79
|
+
|
80
|
+
|
81
|
+
case @document
|
82
|
+
when Document:
|
83
|
+
file_in="#{tmp_filename}.rgin"
|
84
|
+
params.concat @document.gs_paper
|
85
|
+
fi=File.open(file_in,'w')
|
86
|
+
fi.puts @document.ps
|
87
|
+
fi.close
|
88
|
+
when File:
|
89
|
+
file_in=@document.path
|
90
|
+
@delete_input=false
|
91
|
+
when String:
|
92
|
+
file_in=@document
|
93
|
+
@delete_input=false
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
params << file_in
|
100
|
+
|
101
|
+
|
102
|
+
puts params.inspect
|
103
|
+
|
104
|
+
if RubyGhostConfig::GS[:mode] == :gslib
|
105
|
+
require "rgengine"
|
106
|
+
gs=RGEngine.new
|
107
|
+
@error=!gs.render(params,params.size)
|
108
|
+
else
|
109
|
+
require 'gs_alone'
|
110
|
+
gs=GSAlone.new(params)
|
111
|
+
@error=!gs.run
|
112
|
+
end
|
113
|
+
|
114
|
+
if @error # if error
|
115
|
+
@errors=File.open(file_err).readlines
|
116
|
+
else
|
117
|
+
if multipage
|
118
|
+
file_out.gsub!(/_%04d/,"_*")
|
119
|
+
@output=Dir.glob(file_out).map { |f| File.open(f) }
|
120
|
+
else
|
121
|
+
@output=File.open(file_out)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
File.delete(file_err)
|
125
|
+
File.delete(file_in) if @delete_input
|
126
|
+
|
127
|
+
log(params) if @options[:logfile]
|
128
|
+
return @output
|
129
|
+
end
|
130
|
+
|
131
|
+
def clear_output
|
132
|
+
case @output
|
133
|
+
when File: File.delete(@output.path)
|
134
|
+
when Array: @output.each {|f| File.delete(f.path)}
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
private
|
139
|
+
def log(gp)
|
140
|
+
id=self.object_id.abs
|
141
|
+
flog=File.open(@options[:logfile], File::WRONLY|File::APPEND|File::CREAT)
|
142
|
+
flog.puts "[ID #{id}] created on #{Time.now}"
|
143
|
+
flog.puts "[#{id}] RUBY GS OPTIONS: #{@options.inspect}"
|
144
|
+
flog.puts "[#{id}] GS OPTIONS: #{gp.join(" ")}"
|
145
|
+
if @error
|
146
|
+
flog.puts "[#{id}] EXIT STATUS: ERROR"
|
147
|
+
flog.puts @errors.uniq.map {|m| "[#{id}] #{m}" }.to_s;
|
148
|
+
else
|
149
|
+
flog.puts "[#{id}] EXIT STATUS: OK"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
def format_params(v,pre="-d")
|
155
|
+
r=[]
|
156
|
+
case v
|
157
|
+
when Symbol:
|
158
|
+
r << "#{pre}#{v}"
|
159
|
+
when Array:
|
160
|
+
v.each do |av|
|
161
|
+
r << format_params(av,pre).to_s
|
162
|
+
end
|
163
|
+
when Hash:
|
164
|
+
v.each do |k,v|
|
165
|
+
r << "#{pre}#{k}=#{v.to_s.gsub(/ /,'')}"
|
166
|
+
end
|
167
|
+
else
|
168
|
+
return ""
|
169
|
+
end
|
170
|
+
return r;
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
175
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#Modulo de convers�o e tratamento de valores de Ruby para Postscript
|
2
|
+
module RubyToPs
|
3
|
+
|
4
|
+
#Converte uma string Ruby para string Postscript
|
5
|
+
def to_string(value)
|
6
|
+
#ps escape
|
7
|
+
ps_str=ps_escape(value)
|
8
|
+
"(#{ps_str}) "
|
9
|
+
|
10
|
+
end
|
11
|
+
#Escapa ( e ) para string postscript
|
12
|
+
def ps_escape(value)
|
13
|
+
value.to_s.gsub(/(\(|\))/,'\\\\\1')
|
14
|
+
end
|
15
|
+
#Converte para ps bool
|
16
|
+
def to_bool(value)
|
17
|
+
value ? "true":"false"
|
18
|
+
end
|
19
|
+
#Converte para um array de string ps
|
20
|
+
def to_string_array(arr)
|
21
|
+
|
22
|
+
"[#{arr.map{|a| to_string(a.to_s) }}] "
|
23
|
+
end
|
24
|
+
#Converte para um array ps
|
25
|
+
def to_array(arr)
|
26
|
+
return "[ ]" unless arr
|
27
|
+
ps_arr=[]
|
28
|
+
arr.each do |a|
|
29
|
+
ps_arr << case a
|
30
|
+
when TrueClass,FalseClass: to_bool(a)
|
31
|
+
when Numeric: a
|
32
|
+
when Proc: a.to_s
|
33
|
+
when Array: to_array(a)
|
34
|
+
else
|
35
|
+
to_string(a.to_s)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
"[#{ps_arr.join(' ')}] "
|
39
|
+
end
|
40
|
+
#Converte um hash para string array ps
|
41
|
+
def hash_to_array(hash)
|
42
|
+
to_string_array(hash.values)
|
43
|
+
end
|
44
|
+
#'aload' converte um array para dados em pilha
|
45
|
+
def array_to_stack(arr)
|
46
|
+
"#{arr.join(' ')} "
|
47
|
+
end
|
48
|
+
#Eval para dados internos de postscript.
|
49
|
+
# s=string_eval("Page: %current_page% of %count_pages%")
|
50
|
+
#As vari�veis s�o delimitadas por %
|
51
|
+
def string_eval(str)
|
52
|
+
return "(#{ps_escape(str)}) show " unless str =~ /%/
|
53
|
+
|
54
|
+
s=str.scan(/([^%][a-z]*[^%]|\d+%?)|(%[^\s%]+%)/).flatten.compact
|
55
|
+
#puts s
|
56
|
+
tudo=""
|
57
|
+
s.each do |v|
|
58
|
+
case v
|
59
|
+
when /^%/: tudo << "#{v.gsub(/%/,'')} to_s show "
|
60
|
+
else
|
61
|
+
tudo << "(#{ps_escape(v)}) show "
|
62
|
+
end
|
63
|
+
end
|
64
|
+
tudo
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
#class Teste
|
71
|
+
# include RubyToPs
|
72
|
+
|
73
|
+
#end
|
74
|
+
#Teste.new.string_eval("diga %current_row oi")
|
75
|
+
|
76
|
+
#
|
77
|
+
#class Ligacoes < ActiveRecord::Base
|
78
|
+
#
|
79
|
+
#end
|
80
|
+
#
|
81
|
+
#ActiveRecord::Base.establish_connection(:adapter => "postgresql",:database => "fonip", :host => 'solaris', :username => 'fonip', :password=>'qwe123')
|
82
|
+
#
|
83
|
+
#t=Teste.new
|
84
|
+
#liga=Ligacoes.find(:all, :limit => 50, :conditions => "id > 100")
|
85
|
+
#
|
86
|
+
#puts liga.class
|
87
|
+
#
|
88
|
+
#liga.each do |l|
|
89
|
+
#
|
90
|
+
#puts t.hash_to_array(l.attributes)
|
91
|
+
#
|
92
|
+
#end
|
data/lib/rghost/scale.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "ps_object"
|
2
|
+
#Escala dos objetos
|
3
|
+
|
4
|
+
class Scale < PsObject
|
5
|
+
#Nova inst�ncia de Scale
|
6
|
+
# Scale.new(1,1) # default postscript
|
7
|
+
# Scale.new(0.5,0.5) # zoom de 50%
|
8
|
+
# Scale.new(2,2) # zoom de 200%
|
9
|
+
def initialize(sx,sy)
|
10
|
+
super("#{sx} #{sy} scale")
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
end
|