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
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ +++ 0.0.1 2007-06-06
2
+
3
+ + 1 major enhancement:
4
+ + Initial release
data/Manifest.txt ADDED
@@ -0,0 +1,101 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ lib/rghost.rb
6
+ lib/rghost/version.rb
7
+ scripts/txt2html
8
+ setup.rb
9
+ test/test_helper.rb
10
+ test/test_rghost.rb
11
+ website/index.html
12
+ website/index.txt
13
+ website/javascripts/rounded_corners_lite.inc.js
14
+ website/stylesheets/screen.css
15
+ website/template.rhtml
16
+ lib/
17
+ lib/rghost
18
+ lib/rghost/vertical_line.rb
19
+ lib/rghost/graphic.rb
20
+ lib/rghost/color.rb
21
+ lib/rghost/document.rb
22
+ lib/rghost/load.rb
23
+ lib/rghost/convert.rb
24
+ lib/rghost/function.rb
25
+ lib/rghost/jpeg.rb
26
+ lib/rghost/point_with_command.rb
27
+ lib/rghost/horizontal_line.rb
28
+ lib/rghost/ruby_to_ps.rb
29
+ lib/rghost/line_width.rb
30
+ lib/rghost/gs_alone.rb
31
+ lib/rghost/eps.rb
32
+ lib/rghost/point.rb
33
+ lib/rghost/callback.rb
34
+ lib/rghost/barcode.rb
35
+ lib/rghost/rghost.rb
36
+ lib/rghost/units.rb
37
+ lib/rghost/gif.rb
38
+ lib/rghost/font.rb
39
+ lib/rghost/text_in.rb
40
+ lib/rghost/paper.rb
41
+ lib/rghost/data_grid
42
+ lib/rghost/data_grid/style
43
+ lib/rghost/data_grid/style/bottom_lines.rb
44
+ lib/rghost/data_grid/style/style.rb
45
+ lib/rghost/data_grid/style/old_forms.rb
46
+ lib/rghost/data_grid/style/border_lines.rb
47
+ lib/rghost/data_grid/data_grid.rb
48
+ lib/rghost/data_grid/dynamic_callback.rb
49
+ lib/rghost/data_grid/rails_grid.rb
50
+ lib/rghost/data_grid/csv_grid.rb
51
+ lib/rghost/data_grid/static_callback.rb
52
+ lib/rghost/data_grid/grid.rb
53
+ lib/rghost/data_grid/basic_grid.rb
54
+ lib/rghost/data_grid/header.rb
55
+ lib/rghost/data_grid/field_format.rb
56
+ lib/rghost/rgengine.so
57
+ lib/rghost/constants.rb
58
+ lib/rghost/ps
59
+ lib/rghost/ps/horizontal_line.ps
60
+ lib/rghost/ps/rectangle.ps
61
+ lib/rghost/ps/gif.ps
62
+ lib/rghost/ps/font.ps
63
+ lib/rghost/ps/paper.ps
64
+ lib/rghost/ps/row.ps
65
+ lib/rghost/ps/functions.ps
66
+ lib/rghost/ps/code39.font
67
+ lib/rghost/ps/cursor.ps
68
+ lib/rghost/ps/textarea.ps
69
+ lib/rghost/ps/datagrid.ps
70
+ lib/rghost/ps/callbacks.ps
71
+ lib/rghost/ps/unit.ps
72
+ lib/rghost/ps/show.ps
73
+ lib/rghost/ps/vertical_line.ps
74
+ lib/rghost/ps/basic.ps
75
+ lib/rghost/ps/type.ps
76
+ lib/rghost/ps/begin_document.ps
77
+ lib/rghost/ps/i25.font
78
+ lib/rghost/ps/jpeg.ps
79
+ lib/rghost/ps/table_callbacks.ps
80
+ lib/rghost/ps/eps.ps
81
+ lib/rghost/ps/ean.font
82
+ lib/rghost/ps/code128.font
83
+ lib/rghost/cursor.rb
84
+ lib/rghost/textarea.rb
85
+ lib/rghost/variable.rb
86
+ lib/rghost/show.rb
87
+ lib/rghost/image.rb
88
+ lib/rghost/version.rb
89
+ lib/rghost/line.rb
90
+ lib/rghost/scale.rb
91
+ lib/rghost/dsc_entry.rb
92
+ lib/rghost/helpers.rb
93
+ lib/rghost/rectangle.rb
94
+ lib/rghost/dynamic_document_callback.rb
95
+ lib/rghost/static_document_callback.rb
96
+ lib/rghost/arc.rb
97
+ lib/rghost/newpath.rb
98
+ lib/rghost/ps_object.rb
99
+ lib/rghost/ruby_ghost_config.rb
100
+ lib/rghost/ruby_ghost_engine.rb
101
+ lib/rghost.rb
data/README.txt ADDED
@@ -0,0 +1,3 @@
1
+ README for rghost
2
+ =================
3
+
data/Rakefile ADDED
@@ -0,0 +1,93 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/rdoctask'
8
+ require 'rake/contrib/rubyforgepublisher'
9
+ require 'fileutils'
10
+ require 'hoe'
11
+ include FileUtils
12
+ require File.join(File.dirname(__FILE__), 'lib', 'rghost', 'version')
13
+
14
+ AUTHOR = 'shairon' # can also be an array of Authors
15
+ EMAIL = "your contact email for bug fixes and info"
16
+ DESCRIPTION = "description of gem"
17
+ GEM_NAME = 'rghost' # what ppl will type to install your gem
18
+ RUBYFORGE_PROJECT = 'rghost' # The unix name for your project
19
+ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20
+ DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
21
+
22
+ NAME = "rghost"
23
+ REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
24
+ VERS = Rghost::VERSION::STRING + (REV ? ".#{REV}" : "")
25
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
26
+ RDOC_OPTS = ['--quiet', '--title', 'rghost documentation',
27
+ "--opname", "index.html",
28
+ "--line-numbers",
29
+ "--main", "README",
30
+ "--inline-source"]
31
+
32
+ class Hoe
33
+ def extra_deps
34
+ @extra_deps.reject { |x| Array(x).first == 'hoe' }
35
+ end
36
+ end
37
+
38
+ # Generate all the Rake tasks
39
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
40
+ hoe = Hoe.new(GEM_NAME, VERS) do |p|
41
+ p.author = AUTHOR
42
+ p.description = DESCRIPTION
43
+ p.email = EMAIL
44
+ p.summary = DESCRIPTION
45
+ p.url = HOMEPATH
46
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
47
+ p.test_globs = ["test/**/test_*.rb"]
48
+ p.clean_globs = CLEAN #An array of file patterns to delete on clean.
49
+
50
+ # == Optional
51
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
52
+ #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
53
+ #p.spec_extras = {} # A hash of extra values to set in the gemspec.
54
+ end
55
+
56
+
57
+ desc 'Generate website files'
58
+ task :website_generate do
59
+ Dir['website/**/*.txt'].each do |txt|
60
+ sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
61
+ end
62
+ end
63
+
64
+ desc 'Upload website files to rubyforge'
65
+ task :website_upload do
66
+ config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
67
+ host = "#{config["username"]}@rubyforge.org"
68
+ remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/"
69
+ # remote_dir = "/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
70
+ local_dir = 'website'
71
+ sh %{rsync -av #{local_dir}/ #{host}:#{remote_dir}}
72
+ end
73
+
74
+ desc 'Generate and upload website files'
75
+ task :website => [:website_generate, :website_upload]
76
+
77
+ desc 'Release the website and new gem version'
78
+ task :deploy => [:check_version, :website, :release]
79
+
80
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
81
+ task :local_deploy => [:website_generate, :install_gem]
82
+
83
+ task :check_version do
84
+ unless ENV['VERSION']
85
+ puts 'Must pass a VERSION=x.y.z release version'
86
+ exit
87
+ end
88
+ unless ENV['VERSION'] == VERS
89
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
90
+ exit
91
+ end
92
+ end
93
+
data/lib/rghost.rb ADDED
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH << File.dirname(__FILE__)+File::SEPARATOR+"rghost"
2
+ require 'document'
3
+ require 'data_grid/data_grid'
data/lib/rghost/arc.rb ADDED
@@ -0,0 +1,39 @@
1
+ require "ps_object"
2
+ require "units"
3
+ # Arc representa arcos, onde ang2 acende os pontos e ang2 apaga os pontos, ambos no sentido anti-hor�rio para valores positivos.
4
+ # Para evitar surpresas no esbo�o do Arc recomenda-se o uso dentro de um bloco newpath.
5
+ #
6
+ # doc=Document.new
7
+ # doc.newpath do
8
+ # set Arc.new(:x => 3, :y => 3, :radius => 70, :ang2 => 180)
9
+ # end
10
+ class Arc < PsObject
11
+ DEFAULT_OPTIONS={:fill => false, :x => :limit_left, :y=> :current_row, :radius => 50, :ang1 => 0, :ang2 => 360 , :use => :arc }
12
+ #Nova inst�ncia de Arc
13
+ # Responde as op��es
14
+ # :x => :limit_left # Posi��o X
15
+ # :y => :current_row # Posi��o Y
16
+ # :fill => false # false - N�o preenche o arco mas desenha a borda, true - Preenche o arco
17
+ # :radius => 50 # O raio do arco, valor em pontos
18
+ # :ang1 => 0 # Apaga os pontos
19
+ # :ang2 => 360 # Acende os Pontos
20
+ # :use => :arc # Usa o comando :arc e :arcn
21
+ #
22
+ #Postscript Command: x y r ang1 ang2 arc
23
+ def initialize(options={})
24
+ @options=DEFAULT_OPTIONS.dup.merge(options)
25
+ end
26
+
27
+ def ps
28
+ x,y=@options[:x], @options[:y]
29
+ x,y=Units::parse(x),Units::parse(y) #with parse
30
+
31
+
32
+ cmd=@options[:fill] ? :fill : :stroke
33
+ "#{x} #{y} #{@options[:radius]} #{@options[:ang1]} #{@options[:ang2]} #{@options[:use]} #{cmd}"
34
+ end
35
+
36
+
37
+
38
+
39
+ end
@@ -0,0 +1,40 @@
1
+ require "ps_object"
2
+ #Trata das fontes bin�rias dispon�veis na API(GNU Barcodes)
3
+ class Barcode < PsObject
4
+ DEFAULT_BARCODES={
5
+ :ean => "EANJK",
6
+ :code128 => "Code128JK" ,
7
+ :code39 => "Code39JK",
8
+ :i25 => "Codei25JK",
9
+ }
10
+ #Nova inst�ncia de Barcode
11
+ def initialize(barcode_name)
12
+ @barcode=barcode_name
13
+
14
+ end
15
+
16
+ def ps
17
+ Load.library(name,:font)
18
+ end
19
+ #Obtem o nome da real da fonte Postscript
20
+ def font_name
21
+ DEFAULT_BARCODES[@barcode]
22
+
23
+ end
24
+ #Codifica a fonte em N,n,W e w. Formato esperado pela fonte i25.
25
+ def Barcode.i25_encode(string_integers)
26
+ cd=%w(00110 10001 01001 11000 00101 10100 01100 00011 10010 01010) # binaries
27
+ hash={'00' => 'n' , '01' => 'N', '10' => 'w', '11' => 'W'}
28
+ cnv= ''
29
+ v=-1;
30
+ barcode=barcode.scan(/./).map {|c| c.to_i}
31
+ (barcode.size.div 2).times do
32
+ b1,b2=cd[barcode[v+=1]],cd[barcode[v+=1]]
33
+ 0.upto(4) { |i| cnv << hash[ b1[i].chr+b2[i].chr] }
34
+ end
35
+ "<#{cnv}>"
36
+ end
37
+ end
38
+
39
+
40
+ #puts Barcode.new(:EAN).binary_font
@@ -0,0 +1,55 @@
1
+ require "ps_object"
2
+ require "ruby_to_ps"
3
+
4
+ # Callback representa uma chamada com condi��o :only e :except para elementos inteiros.
5
+ # � gerado metac�digo em Postscript tendo como base um dict no formato abaixo.
6
+ # /dictname 3 dict def
7
+ # dictname begin
8
+ # /proc {} bind def
9
+ # /except [ ] def
10
+ # /only [ ] def
11
+ # end
12
+ # Obs: Se detectado pelo menos uma entrada para :only o :except n�o ser� executado
13
+ #
14
+ class Callback < PsObject
15
+ attr_accessor :only, :except, :name
16
+ include RubyToPs
17
+ #Nova inst�ncia de Callback
18
+ # Responde as op��es
19
+ # :only => [1,2] # Array - Callback ser� executado somente para os valores
20
+ # :except => [3,4] # Array - Callback n�o executar� para os valores
21
+ #Exemplo:
22
+ # Callback.new :only => [4,10,11]
23
+ def initialize(name,options={},&block) #((|name|)) nome do callback
24
+ super(&block)
25
+ @name=name
26
+ @options=options
27
+
28
+ end
29
+
30
+ def ps
31
+
32
+
33
+ @only=num_to_array(@options[:only])
34
+ @except=num_to_array(@options[:except])
35
+
36
+
37
+
38
+ "\n/#{@name} 3 dict def #{@name} begin \n/proc { #{super} } bind def \n/except #{to_array(@except)} def \n/only #{to_array(@only)} def \nend "
39
+
40
+ end
41
+
42
+ private
43
+ def num_to_array(value)
44
+ case value
45
+ when Fixnum:
46
+ a=[]
47
+ a << value
48
+ when NilClass: []
49
+ else
50
+ value
51
+ end
52
+
53
+ end
54
+ end
55
+
@@ -0,0 +1,118 @@
1
+ require "ps_object"
2
+ require "constants"
3
+ require "ruby_to_ps" #array_to_stack
4
+
5
+ #Prototype de Colores
6
+ #Os valores no intevalo de 0.0 a 1.0 se o valor for maior que 1 ser� dividido por 100.
7
+ class Color < PsObject
8
+
9
+ include RubyToPs
10
+ #Cria uma cor RGB ou CMYK ou Gray dependendo do tipo do valor de entrada(factory).
11
+ # Para o tipo
12
+ # String => RGB valor em Hexa color='#FFAA33'
13
+ # Array => CMYK com 4 elementos color=[0.5, 0, 0, 1]
14
+ # Array => RGB com 3 elementos color=[0.5, 0, 0]
15
+ # Hash => CMYK - color={:cyan=> 1 ,:magenta => 0, :yellow => 0, :black => 0}
16
+ # Hash => RGB - color={:red => 0, :green => 0, :blue => 0}
17
+ # Numeric => Gray - color=0.5
18
+ #Exemplos:
19
+ # Color.create("#03D5F2") #RGB
20
+ # Color.create([0.3, 0.4, 0.2, 0.9]) #CMYK
21
+ # Color.create(0.9) #Gray
22
+ def Color.create(color='#000000')
23
+
24
+ return case color
25
+ when String: RGB.new(color)
26
+ when Array, Hash:
27
+ if color.size == 3
28
+ RGB.new(color)
29
+ elsif color.size == 4
30
+ CMYK.new(color)
31
+ else
32
+ raise ArgumentError.new
33
+ end
34
+ when Numeric: Gray.new(color)
35
+ else
36
+ raise ArgumentError.new
37
+ end
38
+
39
+ end
40
+
41
+
42
+ end
43
+
44
+ #Espa�o de cor RGB
45
+ class RGB < Color
46
+ attr_accessor :red, :green, :blue
47
+ CONSTANTS=Constants::Colors::RGB
48
+ DEFAULT_RGB={:red => 0, :green => 0, :blue => 0}
49
+ #Nova inst�ncia de RGB
50
+ #Por sequ�ncia de parametros
51
+ # RGB.new(0.5,1,0)
52
+ # #ou Hash
53
+ # RGB.new(:red => 0.5, :green => 1, :blue => 0)
54
+ # #ou String
55
+ # RGB.new('#F0FF00')
56
+ def initialize(color_or_red=nil,green=nil,blue=nil)
57
+ @color=color_or_red
58
+ @color=[color_or_red.to_f,green.to_f,blue.to_f] if color_or_red.is_a? Numeric
59
+ @color=DEFAULT_RGB.merge(color_or_red) if color_or_red.is_a? Hash
60
+
61
+ end
62
+
63
+ def ps
64
+
65
+ value=case @color
66
+ when Hash: [@color[:red],@color[:green],@color[:blue]]
67
+ when Array: @color
68
+ when String: hex_to_rgb(@color)
69
+ when NilClass: [0,0,1]
70
+ end
71
+ array_to_stack(value.map{|n| n > 1 ? n/100.0: n})+"setrgbcolor"
72
+ end
73
+
74
+ private
75
+
76
+ def hex_to_rgb(color="#FFFFFF")
77
+
78
+ color.gsub(/#/,'').scan(/[\dA-F]{2}/).map{|h| h.hex / 255.0}
79
+ end
80
+
81
+ end
82
+
83
+ #Espa�o de cor CMYK
84
+ class CMYK < Color
85
+ attr_accessor :cyan ,:magenta, :yellow, :black
86
+ CONSTANTS=Constants::Colors::CMYK
87
+ #Nova inst�ncia de CMYK
88
+ # CMYK.new(:cyan=> 1 ,:magenta => 0, :yellow => 0, :black => 0)
89
+ def initialize(color={:cyan=> 1 ,:magenta => 0, :yellow => 0, :black => 0})
90
+ @color=color
91
+ end
92
+
93
+ def ps
94
+
95
+ value=case @color
96
+ when Hash: [@color[:cyan],@color[:magenta],@color[:yellow],@color[:black]]
97
+ when Array: @color
98
+ end
99
+ array_to_stack(value.map{|n| n > 1 ? n/100.0: n})+"setcmykcolor"
100
+
101
+ end
102
+
103
+ end
104
+ #Espa�o de cor Gray
105
+ class Gray < Color
106
+ attr_accessor :gray
107
+ #Nova inst�ncia de Gray
108
+ # Gray.new(0.7)
109
+ def initialize(gray=0.8)
110
+ @gray=gray
111
+ end
112
+
113
+ def ps
114
+ @gray = @gray/100.0 if @gray > 1
115
+ "#{@gray} setgray"
116
+ end
117
+
118
+ end