rghost-ruby1.9-beta 0.8.7.2

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 (132) hide show
  1. data/lib/rghost.rb +18 -0
  2. data/lib/rghost/border.rb +44 -0
  3. data/lib/rghost/callback.rb +58 -0
  4. data/lib/rghost/circle.rb +102 -0
  5. data/lib/rghost/color.rb +175 -0
  6. data/lib/rghost/constants.rb +626 -0
  7. data/lib/rghost/convert.rb +43 -0
  8. data/lib/rghost/cursor.rb +124 -0
  9. data/lib/rghost/dash.rb +59 -0
  10. data/lib/rghost/document.rb +546 -0
  11. data/lib/rghost/document_callback_facade.rb +64 -0
  12. data/lib/rghost/dsc_entry.rb +20 -0
  13. data/lib/rghost/dynamic_document_callback.rb +15 -0
  14. data/lib/rghost/eps.rb +31 -0
  15. data/lib/rghost/font.rb +48 -0
  16. data/lib/rghost/font_map.rb +54 -0
  17. data/lib/rghost/frame.rb +105 -0
  18. data/lib/rghost/function.rb +38 -0
  19. data/lib/rghost/gif.rb +41 -0
  20. data/lib/rghost/graphic.rb +26 -0
  21. data/lib/rghost/grid/base_grid.rb +228 -0
  22. data/lib/rghost/grid/callback_facade.rb +136 -0
  23. data/lib/rghost/grid/csv_grid.rb +51 -0
  24. data/lib/rghost/grid/dynamic_callback.rb +12 -0
  25. data/lib/rghost/grid/field_format.rb +43 -0
  26. data/lib/rghost/grid/grid.rb +15 -0
  27. data/lib/rghost/grid/header.rb +120 -0
  28. data/lib/rghost/grid/matrix.rb +10 -0
  29. data/lib/rghost/grid/rails_grid.rb +74 -0
  30. data/lib/rghost/grid/static_callback.rb +13 -0
  31. data/lib/rghost/grid/style/border_lines.rb +44 -0
  32. data/lib/rghost/grid/style/bottom_lines.rb +28 -0
  33. data/lib/rghost/grid/style/old_forms.rb +28 -0
  34. data/lib/rghost/grid/style/style.rb +8 -0
  35. data/lib/rghost/gs_alone.rb +25 -0
  36. data/lib/rghost/helpers.rb +13 -0
  37. data/lib/rghost/horizontal_line.rb +45 -0
  38. data/lib/rghost/how_to.rb +75 -0
  39. data/lib/rghost/image.rb +26 -0
  40. data/lib/rghost/jpeg.rb +39 -0
  41. data/lib/rghost/line.rb +89 -0
  42. data/lib/rghost/line_width.rb +28 -0
  43. data/lib/rghost/load.rb +43 -0
  44. data/lib/rghost/newpath.rb +19 -0
  45. data/lib/rghost/paper.rb +147 -0
  46. data/lib/rghost/parse_text.rb +53 -0
  47. data/lib/rghost/pdf_security.rb +36 -0
  48. data/lib/rghost/point.rb +23 -0
  49. data/lib/rghost/point_with_command.rb +17 -0
  50. data/lib/rghost/polygon.rb +75 -0
  51. data/lib/rghost/ps/AdobeExpert.enc +258 -0
  52. data/lib/rghost/ps/AdobeLatinEncoding.enc +258 -0
  53. data/lib/rghost/ps/Bengali.enc +386 -0
  54. data/lib/rghost/ps/CodePage1250.enc +258 -0
  55. data/lib/rghost/ps/CodePage1251.enc +258 -0
  56. data/lib/rghost/ps/CodePage1252.enc +258 -0
  57. data/lib/rghost/ps/CodePage1253.enc +258 -0
  58. data/lib/rghost/ps/CodePage1254.enc +258 -0
  59. data/lib/rghost/ps/CodePage1256.enc +258 -0
  60. data/lib/rghost/ps/CodePage1257.enc +258 -0
  61. data/lib/rghost/ps/CodePage1258.enc +258 -0
  62. data/lib/rghost/ps/CodePage874.enc +258 -0
  63. data/lib/rghost/ps/Fontmap +5 -0
  64. data/lib/rghost/ps/IsoLatin.enc +352 -0
  65. data/lib/rghost/ps/MacCentralEuropean.enc +258 -0
  66. data/lib/rghost/ps/MacCyrillice.desnc +258 -0
  67. data/lib/rghost/ps/MacGreek.enc +258 -0
  68. data/lib/rghost/ps/MacHebrew.enc +258 -0
  69. data/lib/rghost/ps/TeX-CorkEncoding.enc +258 -0
  70. data/lib/rghost/ps/TeX-LGR-Greek.enc +258 -0
  71. data/lib/rghost/ps/TeX-T2AModified2Encoding.enc +258 -0
  72. data/lib/rghost/ps/TeX-T2BAdobeEncoding.enc +258 -0
  73. data/lib/rghost/ps/TeX-T2CAdobeEncoding.enc +258 -0
  74. data/lib/rghost/ps/TeX-X2AdobeEncoding.enc +258 -0
  75. data/lib/rghost/ps/TeX-XL2encoding.enc +258 -0
  76. data/lib/rghost/ps/TeXMathExtensionEncoding.enc +258 -0
  77. data/lib/rghost/ps/TeXMathItalicEncoding.enc +258 -0
  78. data/lib/rghost/ps/TeXMathSymbolEncoding.enc +258 -0
  79. data/lib/rghost/ps/US-ASCII.enc +258 -0
  80. data/lib/rghost/ps/UTF-8.enc +3 -0
  81. data/lib/rghost/ps/_cusor.ps +46 -0
  82. data/lib/rghost/ps/basic.ps +25 -0
  83. data/lib/rghost/ps/begin_document.ps +8 -0
  84. data/lib/rghost/ps/callbacks.ps +175 -0
  85. data/lib/rghost/ps/code128.font +344 -0
  86. data/lib/rghost/ps/code39.font +195 -0
  87. data/lib/rghost/ps/cursor.ps +106 -0
  88. data/lib/rghost/ps/datagrid.ps +55 -0
  89. data/lib/rghost/ps/developer.ps +237 -0
  90. data/lib/rghost/ps/ean.font +150 -0
  91. data/lib/rghost/ps/eps.ps +42 -0
  92. data/lib/rghost/ps/font.ps +38 -0
  93. data/lib/rghost/ps/frame.ps +16 -0
  94. data/lib/rghost/ps/gif.ps +150 -0
  95. data/lib/rghost/ps/horizontal_line.ps +4 -0
  96. data/lib/rghost/ps/i25.font +103 -0
  97. data/lib/rghost/ps/jpeg.ps +122 -0
  98. data/lib/rghost/ps/link.ps +22 -0
  99. data/lib/rghost/ps/paper.ps +8 -0
  100. data/lib/rghost/ps/rect_link.ps +17 -0
  101. data/lib/rghost/ps/rectangle.ps +5 -0
  102. data/lib/rghost/ps/rghost_default_template.eps +1532 -0
  103. data/lib/rghost/ps/row.ps +4 -0
  104. data/lib/rghost/ps/show.ps +21 -0
  105. data/lib/rghost/ps/table_callbacks.ps +96 -0
  106. data/lib/rghost/ps/text.ps +63 -0
  107. data/lib/rghost/ps/textarea.ps +11 -0
  108. data/lib/rghost/ps/type.ps +1 -0
  109. data/lib/rghost/ps/unit.ps +3 -0
  110. data/lib/rghost/ps/vertical_line.ps +12 -0
  111. data/lib/rghost/ps/virtual_pages.ps +55 -0
  112. data/lib/rghost/ps_facade.rb +253 -0
  113. data/lib/rghost/ps_object.rb +55 -0
  114. data/lib/rghost/rectangle_link.rb +65 -0
  115. data/lib/rghost/rgengine.so +0 -0
  116. data/lib/rghost/ruby_ghost_config.rb +243 -0
  117. data/lib/rghost/ruby_ghost_engine.rb +156 -0
  118. data/lib/rghost/ruby_ghost_version.rb +8 -0
  119. data/lib/rghost/ruby_to_ps.rb +78 -0
  120. data/lib/rghost/scale.rb +29 -0
  121. data/lib/rghost/shape_content.rb +23 -0
  122. data/lib/rghost/show.rb +88 -0
  123. data/lib/rghost/static_document_callback.rb +18 -0
  124. data/lib/rghost/text.rb +44 -0
  125. data/lib/rghost/text_in.rb +51 -0
  126. data/lib/rghost/text_link_in.rb +42 -0
  127. data/lib/rghost/textarea.rb +88 -0
  128. data/lib/rghost/units.rb +82 -0
  129. data/lib/rghost/variable.rb +12 -0
  130. data/lib/rghost/vertical_line.rb +37 -0
  131. data/lib/rghost/virtual_pages.rb +42 -0
  132. metadata +185 -0
@@ -0,0 +1,64 @@
1
+ #This module is included inside of Document class. It will creates methods to easy the use.
2
+ #===Callback execution order
3
+ #Example for a document with 4 pages, looking at the picture you can see the order in which the callbacks are executed
4
+ #
5
+ #link:images/pages_rghost.png
6
+
7
+ module RGhost::DocumentCallbackFacade
8
+
9
+ #Executes before page create. Respond to :only and :except options
10
+ def before_page_create(options={},&block)
11
+ new_dynamic_callback(:before_page_create,options,&block)
12
+ end
13
+
14
+ #Executes after page create. Respond to :only and :except options
15
+ def after_page_create(options={},&block)
16
+ new_dynamic_callback(:after_page_create,options,&block)
17
+ end
18
+
19
+ #Executes on odd pages create. Respond to :only and :except options
20
+ def odd_pages(options={},&block)
21
+ new_dynamic_callback(:odd_pages,options,&block)
22
+ end
23
+
24
+ #Executes on even pages create. Respond to :only and :except options
25
+ def even_pages(options={},&block)
26
+ new_dynamic_callback(:even_pages,options,&block)
27
+ end
28
+
29
+ #Executes one time before document create.
30
+ def before_document_create(&block)
31
+ new_static_callback(:before_document_create,&block)
32
+ end
33
+
34
+ #Executes one time on first page.
35
+ def first_page(&block)
36
+ new_static_callback(:first_page,&block)
37
+ end
38
+ #Executes one time on last page(end of document).
39
+ def last_page(&block)
40
+ new_static_callback(:last_page,&block)
41
+ end
42
+
43
+ #Executes before virtual page create. Respond to :only and :except options
44
+ def before_virtual_page_create(options={},&block)
45
+ new_dynamic_callback(:before_virtual_page_create,options,&block)
46
+ end
47
+ #Executes after virtual page create. Respond to :only and :except options
48
+ def after_virtual_page_create(options={},&block)
49
+ new_dynamic_callback(:after_virtual_page_create,options,&block)
50
+ end
51
+
52
+ private
53
+
54
+ def new_dynamic_callback(name,options={},&block)
55
+ @callbacks.set RGhost::Callback.new(name,options,&block)
56
+ end
57
+ def new_static_callback(name,&block)
58
+
59
+ callback_body= RGhost::PsFacade.new(&block)
60
+ @callbacks.set RGhost::Function.new(name,callback_body)
61
+ end
62
+
63
+
64
+ end
@@ -0,0 +1,20 @@
1
+ require "rghost/ps_object"
2
+ #Specifiesnew DSC (Document Structuring Conventions)
3
+ class RGhost::DSCEntry < RGhost::PsObject
4
+ #===Example
5
+ # DSCEntry.new do |entry|
6
+ # entry << "BoundingBox: 0 0 612 792"
7
+ # entry << "Pages: 45"
8
+ # entry << "BeginSetup"
9
+ # end
10
+ def initialize
11
+
12
+ yield @entries=[]
13
+ end
14
+
15
+ def ps
16
+ @entries.map{|e| "%%#{e}\n"}.to_s
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,15 @@
1
+ require "rghost/callback"
2
+
3
+ class RGhost::DynamicDocumentCallback < RGhost::Callback #:nodoc:
4
+ ACCEPT=[:before_page_create,
5
+ :after_page_create,
6
+ :odd_pages,
7
+ :even_pages
8
+ ]
9
+
10
+ def initialize(name,options={},&block)
11
+ raise NameError.new("#{name} no accept in #{self.class}") unless ACCEPT.include? name
12
+ super(name,options,&block)
13
+ end
14
+
15
+ end
data/lib/rghost/eps.rb ADDED
@@ -0,0 +1,31 @@
1
+ require "rghost/ps_object"
2
+ #Load new EPS file.
3
+ class RGhost::Eps < RGhost::PsObject
4
+ #===Examples
5
+ # doc=Document.new
6
+ # doc.set Eps.new "/local/templates/myform.eps", :x => 10, :y => 3
7
+ #Using Image.for facade
8
+ # doc.set Image.for "/local/templates/myform.eps", :x => 10, :y => 3
9
+ #Using PsFacade or Document
10
+ # doc.image "/local/templates/myform.eps", :x => 10, :y => 3
11
+ #===Options
12
+ #
13
+ #* <tt>:x and :y</tt> - Coordinates to position.
14
+ #* <tt>:rotate</tt> - Angle to image rotation if there is one.
15
+ def initialize(eps_path,options={:x=>0, :y=> 0, :rotate => 0})
16
+ super("")
17
+ @options=options
18
+ @path=eps_path
19
+ end
20
+
21
+
22
+ def ps
23
+
24
+ "BeginEPSF \n #{RGhost::Cursor.translate(@options)} \n\t(#{@path}) run \nEndEPSF\n ";
25
+
26
+ end
27
+
28
+
29
+
30
+
31
+ end
@@ -0,0 +1,48 @@
1
+ require "rghost/ps_object"
2
+ require "rghost/constants"
3
+ require "rghost/helpers"
4
+
5
+
6
+ class RGhost::Font < RGhost::PsObject #:nodoc:
7
+ DEFAULT_OPTONS={ :size=> 8, :name => "Helvetica", :encoding => true }
8
+ include RGhost::Constants::Fonts
9
+
10
+ attr_reader :name
11
+
12
+ def initialize(options)
13
+
14
+ @options=DEFAULT_OPTONS.dup.merge(options)
15
+ @options.default ""
16
+ @options[:name]=@options[:font] if @options[:font]
17
+ @name=@options[:name].to_s
18
+ @name+="-encoding" if @options[:encoding]
19
+ end
20
+
21
+ def ps
22
+ o=@options
23
+ str_ret=""
24
+ # if o[:barcode]
25
+ # bc=RGhost::Barcode.new(o[:barcode])
26
+ # @name=bc.font_name
27
+ # o[:encoding]=false
28
+ # end
29
+ if o[:encoding] #define enconding
30
+ str_ret="/#{o[:name]} encoding_font\n"+
31
+ "/#{o[:name]}-encoding exch definefont pop\n"
32
+ end
33
+
34
+
35
+ size= o[:size]
36
+ str_ret+=case size
37
+ when Hash then "/#{@name} findfont [ #{size[:width]} 0 0 #{size[:height]} 0 0] makefont setfont "
38
+ when Array then "/#{@name} findfont [ #{size[0]} 0 0 #{size[1]} 0 0] makefont setfont "
39
+ when Fixnum then "/#{@name} findfont #{size} scalefont setfont "
40
+ end
41
+ str_ret
42
+ end
43
+
44
+
45
+
46
+ end
47
+
48
+
@@ -0,0 +1,54 @@
1
+ #NetDeseigners <www.ndesigners.com.br>
2
+ #Shairon Toledo <shairon.toledo@gmail.com>
3
+ require 'rghost/ps_object'
4
+ require 'rghost/font'
5
+ require 'rghost/function'
6
+
7
+
8
+ class RGhost::FontMap < RGhost::PsObject #:nodoc:
9
+ include RGhost::RubyToPs
10
+ def initialize(options={:font => "Helvetica", :size => 8},&block)
11
+
12
+ #options[:name]=options[:font]
13
+ @options=options
14
+ @fonts={}
15
+ instance_eval(&block) if block
16
+ end
17
+
18
+ def new(name,options={})
19
+ #options[:name]=options[:font]
20
+ @fonts[name]=options
21
+
22
+ end
23
+ def tag(name,options={})
24
+ new(name,options)
25
+ end
26
+
27
+
28
+ def ps
29
+ functions=[]
30
+ fonts=""
31
+ @fonts.each do |name,params|
32
+ options=@options
33
+ if params[:from]
34
+ [params[:from]].flatten.each do |font|
35
+ functions << format_custom_font(font)
36
+ end
37
+
38
+ end
39
+ functions << RGhost::Function.new("_#{name}") do
40
+ raw RGhost::Font.new(options.dup.merge(params)).ps
41
+ raw( RGhost::Color.create(params[:color] || 0) )
42
+ end
43
+ end
44
+ functions.join
45
+ end
46
+
47
+ private
48
+ def format_custom_font(font_path)
49
+ ps=RGhost::PsObject.new
50
+ ps.raw "#{to_string(font_path)} findfont pop"
51
+ ps
52
+ end
53
+ end
54
+
@@ -0,0 +1,105 @@
1
+ #Creates one rectangle or one shape with rounded corners.
2
+ #===Options
3
+ #
4
+ #* <tt>:x and :y</tt> - Coordinates to position.
5
+ #* <tt>:corners</tt> - Value for rounded corners. Use 0 to straight angle.
6
+ #* <tt>:width and :height</tt> - Size of frame
7
+ #* <tt>:content</tt> - facade to ShapeContent with same parameters.
8
+ #* <tt>:border</tt> - facade to Border with same parameters.
9
+ #===Examples using facade frame method inside of Document
10
+ # d=Document.new
11
+ # d.frame :x => 3, :width => 7, :height => 5, :content => {:fill => false}
12
+ #
13
+ #link:images/frame01.png
14
+ # d=Document.new
15
+ # d.frame :x => 3, :width => 7, :height => 5, :content => {:color => '#35F6A3' }
16
+ #
17
+ #link:images/frame02.png
18
+ #
19
+ # d=Document.new
20
+ # d.frame :x => 3, :width => 7, :height => 5, :content => {:color => '#35F6A3' }, :border =>{:width => 5, :dash => [1,3,10]}
21
+ #
22
+ #link:images/frame03.png
23
+ #
24
+ # d=Document.new
25
+ # d.frame :x => 3, :width => 7, :height => 5, :content => {:color => '#35F6A3' }, :corners => 20
26
+ #
27
+ #link:images/frame04.png
28
+ #
29
+ # d=Document.new
30
+ # d.frame :x => 3, :width => 7, :height => 5, :content => {:color => :yellow }, :border => {:color => :red, :width => 4}, :corners => 20
31
+ #
32
+ #link:images/frame05.png
33
+ class RGhost::Frame < RGhost::PsObject
34
+ DEFAULT_OPTIONS={
35
+ :x => :limit_left,
36
+ :y => :current_row,
37
+ :width => 5,
38
+ :height => 3.5,
39
+ :corners => 1,
40
+ :content => RGhost::ShapeContent::DEFAULT_OPTIONS,
41
+ :border => RGhost::Border::DEFAULT_OPTIONS
42
+
43
+
44
+ }
45
+ BACKGROUND_ROW_DEFAULT_OPTIONS={:start_in => :limit_left, :size => :area_x, :color => RGhost::ShapeContent::DEFAULT_OPTIONS[:color]}
46
+ def initialize(options={})
47
+
48
+ @options = DEFAULT_OPTIONS.dup.merge(options)
49
+
50
+ end
51
+
52
+
53
+ def ps
54
+ x=RGhost::Units::parse(@options[:x])
55
+ y=RGhost::Units::parse(@options[:y])
56
+
57
+ h=RGhost::Units::parse(@options[:height])
58
+ w=RGhost::Units::parse(@options[:width])
59
+
60
+ inside=RGhost::ShapeContent.new(@options[:content]) if @options[:content]
61
+ border=RGhost::Border.new(@options[:border]) if @options[:border]
62
+
63
+ params=%Q{
64
+ /rcorners_params{
65
+ /:x #{x} def /:y #{y} def
66
+ /:w #{w} def /:h #{h} def
67
+ /:r #{@options[:corners]} def
68
+ /:s 1 def
69
+ /:inside{
70
+ #{inside.ps if inside }
71
+ } def
72
+ /:outside{
73
+ #{border.ps if border}
74
+ }def
75
+ } def
76
+ }
77
+
78
+ "#{params} rcorners_params rcorners"
79
+
80
+ end
81
+ #Creates background of the row for current row. Example
82
+ #Here's fill the current row using width :area_x, height :row_height, and starting in :limit_left.
83
+ # doc.background_row :color => '#35F6A3'
84
+ #
85
+ #link:images/background_row01.png
86
+ #
87
+ #Specifies size and where will start of background
88
+ # doc.background_row :start_in => 2, :size => 5.5, :color => 0.8
89
+ #
90
+ #link:images/background_row02.png
91
+ def self.background_row(options=BACKGROUND_ROW_DEFAULT_OPTIONS)
92
+ #opts=BACKGROUND_ROW_DEFAULT_OPTIONS.merge(options)
93
+ #start_in,size=Units::parse(opts[:start_in]),Units::parse(opts[:size])
94
+ #return RGhost::PsObject.new("#{start_in} #{size} {#{opts[:color]}} background_row ")
95
+ options =RGhost::Frame::BACKGROUND_ROW_DEFAULT_OPTIONS.merge(options)
96
+ g=RGhost::Graphic.new
97
+ g.set RGhost::Units::parse(options[:start_in])
98
+ g.set RGhost::Units::parse(options[:size])
99
+ g.set RGhost::Color.create(options[:color]) if options[:color]
100
+ g.raw :background_row
101
+ g
102
+
103
+
104
+ end
105
+ end
@@ -0,0 +1,38 @@
1
+ require "rghost/ps_object"
2
+
3
+
4
+ #Creates postscript internal function. Example
5
+ # f=RGhost::Function.new :foo do
6
+ # set Show.new("A Test")
7
+ # end
8
+ #In ps stack will be
9
+ # /foo (A Test) show def
10
+ class RGhost::Function < RGhost::PsObject
11
+
12
+ attr_reader :name
13
+
14
+ def initialize(name,body_function=nil,&block)
15
+ if block
16
+ #super(&block)
17
+ super(&block)
18
+
19
+ else
20
+
21
+ super("")
22
+ end
23
+ @name=name
24
+ @body_function=body_function
25
+
26
+ end
27
+
28
+ def use_template(function_name)
29
+ call "_#{function_name}"
30
+
31
+ end
32
+ def ps
33
+ @body_function||=super
34
+
35
+ "\n/#{@name}{\n#{@body_function}\n} bind def \n"
36
+ end
37
+
38
+ end
data/lib/rghost/gif.rb ADDED
@@ -0,0 +1,41 @@
1
+ require "rghost/ps_object"
2
+ require "rghost/graphic"
3
+ require "rghost/cursor"
4
+ require "rghost/variable"
5
+ require "rghost/image"
6
+ require "rghost/function"
7
+ require "rghost/scale"
8
+ #Loads GIF image from file
9
+ #===Examples
10
+ # doc=Document.new
11
+ # doc.set Gif.new "../public/images/button.gif", :x => 10, :y => 3
12
+ #Using Image.for facade
13
+ # doc.set Image.for "../public/images/button.gif", :x => 10, :y => 3
14
+ #Using PsFacade or Document
15
+ # doc.image "images/button.gif", :x => 10, :y => 3
16
+ #Using zoom of the 200 percent
17
+ # doc.image "images/button.gif", :zoom => 200
18
+ #===Options
19
+ #
20
+ #* <tt>:x and :y</tt> - Coordinates to position.
21
+ #* <tt>:rotate</tt> - Angle to image rotation if there is one.
22
+ #* <tt>:zoom</tt> - Resize proportionally the image
23
+ class RGhost::Gif < RGhost::Image
24
+
25
+ def ps
26
+ s=@options[:zoom]/100.0
27
+
28
+ g=RGhost::Graphic.new
29
+
30
+ params=RGhost::Function.new(:gif_params)
31
+ params.set RGhost::Cursor.translate(@options)
32
+ params.set RGhost::Cursor.rotate(@options[:rotate])
33
+ params.set RGhost::Scale.new(s,s)
34
+
35
+ g.set params
36
+ g.set RGhost::PsObject.new("(#{@file}) viewGIF")
37
+ g.ps
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,26 @@
1
+ require "rghost/ps_object"
2
+ require "rghost/cursor"
3
+ require "rghost/point"
4
+ require "rghost/line_width"
5
+ #Creates a new graphic state between gsave and grestore postscript primitives. Example
6
+ # doc=Document.new
7
+ # doc.graphic do
8
+ # set LineWidth.new(0)
9
+ # set Line.lineto(5,7)
10
+ # end
11
+ class RGhost::Graphic < RGhost::PsObject
12
+
13
+ def ps
14
+ "gsave #{super} grestore"
15
+ end
16
+
17
+
18
+ end
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+