rghost 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
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,150 @@
1
+ % Copyright (C) 1989, 1992, 1993, 1998 Aladdin Enterprises. All rights reserved.
2
+ % For more information about licensing, please refer to
3
+ % http://www.ghostscript.com/licensing/. For information on
4
+ % commercial licensing, go to http://www.artifex.com/licensing/ or
5
+ % Adaptation to ruby-ghost by Shairon Toledo shairon.toledo@gmail.com
6
+
7
+ /read1 % <file> read1 <int>
8
+ { read pop
9
+ } bind def
10
+ /read2 % <file> read2 <int>
11
+ { dup read1 exch read1 8 bitshift add
12
+ } bind def
13
+
14
+ /readGIFheader % <file> readGIFheader <dict>
15
+ { 20 dict begin
16
+ dup 6 string readstring pop
17
+ dup (GIF87a) eq exch (GIF89a) eq or not
18
+ { (Not a GIF file.\n) print cleartomark stop
19
+ } if
20
+ dup read2 /Width exch def
21
+ dup read2 /Height exch def
22
+ dup read1
23
+ dup 128 ge /GlobalColor exch def
24
+ dup -4 bitshift 7 and 1 add /BitsPerPixel exch def %***BOGUS?***
25
+ dup 8 and 0 ne /PaletteSorted exch def
26
+ 7 and 1 add dup /BitsPerPixel exch def
27
+ 1 exch bitshift /PaletteSize exch def
28
+ dup read1 /BackgroundIndex exch def
29
+ dup read1 15 add 64 div /AspectRatio exch def
30
+ GlobalColor
31
+ { PaletteSize 3 mul string readstring pop
32
+ /GlobalPalette exch def
33
+ } if
34
+ currentdict end
35
+ } bind def
36
+
37
+ /readGIFimageHeader % <file> readGIFimageHeader <dict>
38
+ % Note: GIF header must be on dict stack
39
+ { 10 dict begin
40
+ { dup read1
41
+ dup (!) 0 get ne { exit } if pop % extension
42
+ dup read1 pop
43
+ { dup read1 dup 0 eq { pop exit } if { dup read1 pop } repeat
44
+ } loop
45
+ } loop
46
+ (,) 0 get ne
47
+ { (Not a GIF image.\n) print stop
48
+ } if
49
+ dup read2 /Left exch def
50
+ dup read2 /Top exch def
51
+ dup read2 /Width exch def
52
+ dup read2 /Height exch def
53
+ dup read1
54
+ dup 128 ge /LocalColor exch def
55
+ dup 64 and 0 ne /Interlaced exch def
56
+ LocalColor
57
+ { 7 and 1 add /BitsPerPixel exch def
58
+ 1 BitsPerPixel bitshift 3 mul string readstring pop
59
+ /Palette exch def
60
+ }
61
+ { pop pop /Palette GlobalPalette def
62
+ }
63
+ ifelse
64
+ currentdict end
65
+ } bind def
66
+
67
+ /imageGIF % <imagedict> imageGIF
68
+ { /ImageOut where
69
+ { pop
70
+ % We know BitsPerComponent = 8, Decode = [0 255].
71
+ % and there is only a single data source which is
72
+ % either a filter or a string whose size is exactly
73
+ % the width of the row.
74
+ dup /DataSource get dup type /stringtype eq
75
+ { ImageOut exch writestring
76
+ }
77
+ { pop dup /Width get string
78
+ 1 index /Height get
79
+ { 1 index /DataSource get 1 index readstring pop
80
+ ImageOut exch writestring
81
+ }
82
+ repeat pop pop
83
+ }
84
+ ifelse
85
+ }
86
+ { image
87
+ }
88
+ ifelse
89
+ } bind def
90
+
91
+ /viewGIF % <file|string> viewGIF -
92
+ { save 20 dict begin
93
+ /saved exch def
94
+ dup type /stringtype eq { (r) file } if
95
+ /F exch def
96
+ /ImageOutFile where { /ImageOut ImageOutFile (w) file def } if
97
+ F readGIFheader /Header exch def
98
+ currentdict Header end begin begin
99
+ VGIFDEBUG { Header { exch == == } forall (----------------\n) print flush } if
100
+ F readGIFimageHeader /ImageHeader exch def
101
+ currentdict ImageHeader end begin begin
102
+ VGIFDEBUG { ImageHeader { exch == == } forall (----------------\n) print flush } if
103
+ /D F
104
+ << /InitialCodeLength F read1
105
+ /FirstBitLowOrder true
106
+ /BlockData true
107
+ /EarlyChange 0
108
+ >> /LZWDecode filter def
109
+
110
+ [/Indexed /DeviceRGB 1 BitsPerPixel bitshift 1 sub Palette] setcolorspace
111
+ matrix currentmatrix
112
+ 0 1 3 { 2 copy get dup 0 ne { dup abs div } if 3 copy put pop pop } for
113
+ setmatrix
114
+
115
+ << /ImageType 1
116
+ /ImageMatrix [1 0 0 -1 0 Height]
117
+ /BitsPerComponent 8
118
+ /Decode [0 255]
119
+ Interlaced
120
+ { /Width Width /Height 1
121
+ /row Width string def
122
+ /DataSource row
123
+ >> /I exch def
124
+ /inter % <num> <denom> inter -
125
+ { /denom exch def /num exch def
126
+ gsave
127
+ /lines Height denom 1 sub add num sub denom idiv def
128
+ 0 1 lines 1 sub {
129
+ Height exch denom mul num add sub
130
+ I /ImageMatrix get 5 3 -1 roll put
131
+ D row readstring pop pop
132
+ I imageGIF
133
+ } for
134
+ grestore
135
+ }
136
+ bind def
137
+ 0 8 inter
138
+ 4 8 inter
139
+ 2 4 inter
140
+ 1 2 inter
141
+ }
142
+ { /Width Width /Height Height
143
+ gif_params
144
+ /DataSource D
145
+ >> imageGIF
146
+ }
147
+ ifelse
148
+ saved end end end restore
149
+ } bind def
150
+ gsave
@@ -0,0 +1,3 @@
1
+ /horizontal_line_top { exch gsave current_row row_height add moveto 0 rlineto stroke grestore } def
2
+ /horizontal_line_middle { exch gsave current_row row_height sqrt add moveto 0 rlineto stroke grestore }def
3
+ /horizontal_line_bottom { exch gsave current_row row_padding sub moveto 0 rlineto stroke grestore }def
@@ -0,0 +1,103 @@
1
+ %!PS-AdobeFont-1.0: Codei25JK 1.000
2
+ %%CreationDate: Thu Feb 22 12:20:33 2001
3
+ %%VMusage: 10488 6784
4
+ %
5
+ % This Type 1 PostScript font implements the Code 39 bar code.
6
+ % Copyright (C) 2001 Jan Karrman. All rights reserved.
7
+ %
8
+ % This program is free software; you can redistribute it and/or modify
9
+ % it under the terms of the GNU General Public License as published by
10
+ % the Free Software Foundation; either version 2 of the License, or
11
+ % (at your option) any later version.
12
+ %
13
+ % This program is distributed in the hope that it will be useful,
14
+ % but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ % GNU General Public License for more details.
17
+ %
18
+ % You should have received a copy of the GNU General Public License
19
+ % along with this program; if not, write to the Free Software
20
+ % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
+ %
22
+ false
23
+ 17 dict begin
24
+ /FontInfo 13 dict dup begin
25
+ /version(001.000) readonly def
26
+ /Notice(Copyright (C) 2001 Jan Karrman. All rights reserved.)readonly def
27
+ /FullName(Interleaved 2 of 5)readonly def
28
+ /FamilyName(Interleaved 2 of 5)readonly def
29
+ /Weight(Normal)readonly def
30
+ /isFixedPitch false def
31
+ /ItalicAngle 0 def
32
+ /UnderlinePosition -133 def
33
+ /UnderlineThickness 20 def
34
+ end readonly def
35
+ /FontName /Codei25JK def
36
+ /Encoding StandardEncoding def
37
+ /PaintType 0 def
38
+ /FontType 1 def
39
+ /StrokeWidth 0 def
40
+ /FontMatrix[0.001 0 0 0.001 0 0]readonly def
41
+ /UniqueID 4345031 def
42
+ /FontBBox{0 0 201 1003}readonly def
43
+ currentdict end
44
+ currentfile eexec
45
+ d9d66f633b846a97b686a97e45a3d0aa0525392eecac163e584a9104d99ad0bc
46
+ 1b1f3f7121d1d0f2c60dd206b0d3c8c450620b47320ca0aeb8937511e456aade
47
+ 8e66b301b1e3e9dfe17e2f79ecfea709ff3dae19b4c169df6773eda414d02915
48
+ a6f0faf8b24fbb0777c697be8a37d63a390ad9dae495bb7e626721ff2fd3fb14
49
+ 7c80d22beac37c2624d818d58c8df0209f5ce76acdde57a303d9042bf0a674d0
50
+ 95697f925f532d1814bea8f8a5b1fd0737f362c88e00acaed0fbd4a36e9c2a30
51
+ 8f53570cf2a0c2f3cacdcef9a65bc833ba02199166a964e544f4b7b7afeaac17
52
+ f8e05601552604b40d45d9fa0ab5a091879bf8f22cfa7ada67b9cc14129ca45f
53
+ a4c800e5c096889016e179a61c27f4e94f4f665fe0ffde7fa87eee002851e3da
54
+ feb5b00e066377ebe43637036e54a7a96bffe3a5b9bb29d1139125a36291f767
55
+ 17d0083283a430a2842be99904f3160181d8007d412200a34824f478a098157d
56
+ 96002e8dea100b6b11ed62564d1084f84db72cf8246e1afc90613b4fc4857601
57
+ a5dbf84543531f6c6b5d0843fb6f982f1a942c7fc9d041b3a1678d40e94f994c
58
+ a2f2f27034fa69106f1adaa2dac46114af354e3143e0edd091a021eee4060880
59
+ 0bc8f236114a0a40eb6533819e15d3e4f2adacdb65329de3f7f57bc58432c12d
60
+ 3ffe9847c0797728c4d0dc106609cbcb7ec1df50872bede40f92c33b7ed57aa8
61
+ 05d58482571f8440d26d1e27d9b63bafa6d5d3a506238448dd4832d73d1ad4e1
62
+ 0656d6796a70de97442bc98689d002beb5a63e222bc8f3000d25873be21fd28c
63
+ ddb4dfc11da7337bfbdb28714f5905c98798499a36e9bada0cdf82aefbbb9b7f
64
+ 88f5f0b5cd27b129da62afba21cc46bb3207676b96695aedbfe52b3d4e097418
65
+ c1033dd020930229eb0888b285b72c0ef088a386cb77a060b529ff519061d665
66
+ 3e8df6c9c90f4c459352f8149cf30339daa54822c2d72a7938a76fe4bdd1becb
67
+ 4f085845d39491f9ac0256d2ea56c62cd14a0b49dedfa9b1da56c771eb30f6f3
68
+ b26e479da0bbc92521b15ad68cad72849d651245c5ec4f62a6e5bf9897e75c31
69
+ a1a6938f1bbf331d5432ba5eca376fd94ca1d82701e2f30aa14cef5c7609b7b8
70
+ a5e1854cad98aa1eb4e769f964ba42ad48748fb6356a4f1b01317b3f7882b2a3
71
+ 69c6301f483dcf59ebcfcc2bd9d6fd09448d01ed1d5303950c46968954828189
72
+ c1955f876e92acaff10ecd920b11bf0f1f75006e66fe5ff817f94ab879d80e76
73
+ ff1cf788da1298bfb31b43aa1eb02b4ead48691c2a47df0576970140ceec8429
74
+ a1acd7e32b7bbc152d967e4fd41cdd60d6643a6584fba4114608c6556b42a230
75
+ 7eedeaede6918d32153c448db337d539fcb0edd42cd26374e816bf38a498c651
76
+ 9e2dcf1de36ca654aa4124d577d7f47fd14be17d8c830a2bcafb0ccdfbe13d2e
77
+ 7c026ee679c3e7adab9939315238f16f7ba5a0de9a8171295c0deaa2bad1fb80
78
+ d67f16b316cbb54d5da2b380bffaaff1d0bb3d19d19f2dab4becb387548d6d13
79
+ 326ed54154eb4040e6e7e797e18a75e5ac29d39a35490f03daf5a2da077f6f9d
80
+ 588054a06a923ebd689ff14fe3bbe917e4621145d1ddda773ec146cb259e4e72
81
+ 235d21f4b7d7fec81f27ff764f80221ce57d5b447026590da0fbd0ccba3a850e
82
+ e76b6d6214ac21b1012afab0fd82aaf86bf0fbef01d92c7862418323581e7a6c
83
+ 96fe2ed6c5cc6aa7ee629d85ab55a9517579b847f0173eae4b5ebb54d5118af0
84
+ 9cde391674cc9ced53988dfa7c609e2eda8a7988c135c4aa9e6a41be39a192b8
85
+ d5701ce678af5d99ad1e63d6cc276c10deb077e464bf8b8105b2c55f2ee5dbd1
86
+ fd75d518841b85833cef602275d860
87
+ 00000000000000000000000000000000
88
+ 00000000000000000000000000000000
89
+ 00000000000000000000000000000000
90
+ 00000000000000000000000000000000
91
+ 00000000000000000000000000000000
92
+ 00000000000000000000000000000000
93
+ 00000000000000000000000000000000
94
+ 00000000000000000000000000000000
95
+ 00000000000000000000000000000000
96
+ 00000000000000000000000000000000
97
+ 00000000000000000000000000000000
98
+ 00000000000000000000000000000000
99
+ 00000000000000000000000000000000
100
+ 00000000000000000000000000000000
101
+ 00000000000000000000000000000000
102
+ 00000000000000000000000000000000
103
+ cleartomark{restore}if
@@ -0,0 +1,122 @@
1
+ % viewjpeg.ps Copyright (C) 1994 Thomas Merz <tm@pdflib.com>
2
+ % This software is provided AS-IS with no warranty, either express or
3
+ % implied.
4
+ % For more information about licensing, please refer to http://www.ghostscript.com/licensing/
5
+ % Author's address:
6
+ % ------------------------------+
7
+ % {(pstack exec quit) = flush } | Thomas Merz, Munich
8
+ % pstack exec quit | voice +49/89/29160728
9
+ % ------------------------------+ tm@muc.de http://www.muc.de/~tm/
10
+ %
11
+ % Adaptation to ruby-ghost by Shairon Toledo shairon.toledo@gmail.com
12
+ % zoom, translate and real size
13
+
14
+ /languagelevel where {pop languagelevel 2 lt}{true} ifelse {
15
+ (JPEG needs PostScript Level 2!\n) print flush stop
16
+ } if
17
+
18
+ /JPEGdict 20 dict def
19
+ JPEGdict begin
20
+
21
+ /NoParamMarkers [ % JPEG markers without additional parameters
22
+ 16#D0 16#D1 16#D2 16#D3 16#D4 16#D5 16#D6 16#D7 16#D8 16#01
23
+ ] def
24
+
25
+ /NotSupportedMarkers [ % JPEG markers not supported by PostScript level 2
26
+ 16#C3 16#C5 16#C6 16#C7 16#C8 16#C9 16#CA 16#CB 16#CD 16#CE 16#CF
27
+ ] def
28
+
29
+ % Names of color spaces
30
+ /ColorSpaceNames << /1 /DeviceGray /3 /DeviceRGB /4 /DeviceCMYK >> def
31
+
32
+ % read one byte from file F
33
+ % - ==> int --or-- stop context
34
+ /NextByte {
35
+ F read not { (Read error in ViewJPEG!\n) print flush stop } if
36
+ } bind def
37
+
38
+ /SkipSegment { % read two bytes and skip that much data
39
+ NextByte 8 bitshift NextByte add 2 sub { NextByte pop } repeat
40
+ } bind def
41
+
42
+ % read width, height, and # of components from JPEG markers
43
+ % and store in dict
44
+ /readJPEGmarkers { % - ==> dict --or-- stop context
45
+ 5 dict begin
46
+
47
+ { % loop: read JPEG marker segments until we find SOFn marker or EOF
48
+ NextByte
49
+ 16#FF eq { % found marker
50
+ /markertype NextByte def
51
+ % Is it S0F0=baseline, SOF1=extended sequential, SOF2=progressive ?
52
+ markertype dup 16#C0 ge exch 16#C2 le and {
53
+ NextByte pop NextByte pop % segment length
54
+ % Ghostscript and Adobe PS accept only data precision 8
55
+ NextByte 8 ne {
56
+ (Error: not 8 bits per component!\n) print flush stop
57
+ } if
58
+
59
+ % Read crucial image parameters
60
+ /height NextByte 8 bitshift NextByte add def
61
+ /width NextByte 8 bitshift NextByte add def
62
+ /colors NextByte def
63
+
64
+ VJPGDEBUG { currentdict { exch == == } forall flush } if
65
+ exit
66
+ } if
67
+
68
+ % detect several segment types which are not compatible with PS
69
+ NotSupportedMarkers {
70
+ markertype eq {
71
+ (Marker ) print markertype ==
72
+ (not supported!\n) print flush stop
73
+ } if
74
+ } forall
75
+
76
+ % Skip segment if marker has parameters associated with it
77
+ true NoParamMarkers { markertype eq {pop false exit} if } forall
78
+ { SkipSegment } if
79
+ } if
80
+ } loop
81
+
82
+ currentdict dup /markertype undef
83
+ end
84
+ } bind def
85
+
86
+ end % JPEGdict
87
+
88
+ % read image parameters from JPEG file and display the image
89
+ /viewJPEG { % <file|string> ==> -
90
+
91
+ save
92
+ JPEGdict begin
93
+ /saved exch def
94
+ /scratch 1 string def
95
+ dup type /stringtype eq { (r) file } if
96
+ /F exch def
97
+
98
+ readJPEGmarkers begin
99
+ F 0 setfileposition % reset file pointer
100
+ width zoom mul height zoom mul scale
101
+
102
+ % use whole width or height, whichever is appropriate
103
+ ColorSpaceNames colors scratch cvs get setcolorspace
104
+
105
+ % prepare image dictionary
106
+ << /ImageType 1
107
+ /Width width
108
+ /Height height
109
+ /ImageMatrix [ width 0 0 height neg 0 height ]
110
+ /BitsPerComponent 8
111
+ % If 4-component (CMYK), assume data is inverted per Adobe Photoshop
112
+ colors 4 eq {
113
+ /Decode [ colors { 1 0 } repeat ]
114
+ } {
115
+ /Decode [ colors { 0 1 } repeat ]
116
+ } ifelse
117
+ /DataSource F /DCTDecode filter
118
+ >> image
119
+ end % image parameter dictionary
120
+ saved end restore
121
+ } bind def
122
+
@@ -0,0 +1,8 @@
1
+ 2 dict dup /PageSize pagesize put dup /ImagingBBox null put setpagedevice
2
+ /limit_top { pagesize 1 get margin /top get sub } def
3
+ /limit_right { pagesize 0 get margin /right get sub } def
4
+ /limit_bottom { margin /bottom get } def
5
+ /limit_left { margin /left get } def
6
+ /area_x pagesize 0 get margin /right get sub margin /left get sub def
7
+ /area_y pagesize 1 get margin /top get sub margin /bottom get sub def
8
+ 1 unit 1 unit moveto
@@ -0,0 +1,5 @@
1
+ /background_row {
2
+ gsave dup type to_s (arraytype) eq { exec} if
3
+ current_row row_padding sub exch row_height row_padding add 0.5 sub rectfill
4
+ grestore
5
+ }def
@@ -0,0 +1,4 @@
1
+ /row_height 0.4 unit def
2
+ /row_padding 0.1 unit def
3
+ /row 1 def
4
+ /current_row 0 def
@@ -0,0 +1,20 @@
1
+ /show_center{ dup stringwidth pop 2 div neg 0 rmoveto show } def
2
+ /show_right{ dup stringwidth pop neg 0 rmoveto show } def
3
+ /show_left{ show }def
4
+
5
+ %%TODO: page_(center & left & right)
6
+
7
+ /page_center{
8
+ area_x 2 div margin /left get add current_row moveto
9
+ dup stringwidth pop 2 div neg 0 rmoveto show
10
+ } def
11
+
12
+ /page_right{
13
+ area_x margin /left get add current_row moveto
14
+ dup stringwidth pop neg 0 rmoveto show
15
+ } def
16
+
17
+ /page_left{
18
+ limit_left current_row moveto
19
+ dup stringwidth pop neg 0 rmoveto show
20
+ } def
@@ -0,0 +1,96 @@
1
+ %%TABLE
2
+ /before_table_create {} def
3
+ /after_table_create{} def
4
+ %%%%%%TABLE ROW---------------------
5
+
6
+ /row_odd_or_even {
7
+ current_table_row odd? {odd_row}{even_row} ifelse
8
+ }def
9
+ /before_row_create 3 dict def before_row_create begin
10
+ /proc { } bind def
11
+ /except [ ] def
12
+ /only [ ] def
13
+ end
14
+
15
+ /odd_row 3 dict def odd_row begin
16
+ /proc { } bind def
17
+ /except [ ] def
18
+ /only [ ] def
19
+ end
20
+
21
+ /even_row 3 dict def even_row begin
22
+ /proc { } bind def
23
+ /except [ ] def
24
+ /only [ ] def
25
+ end
26
+
27
+ %column
28
+ /col_odd_or_even {
29
+ col odd? {odd_column}{even_column} ifelse
30
+ }def
31
+
32
+ /before_column 3 dict def before_column begin
33
+ /proc { } bind def
34
+ /except [ ] def
35
+ /only [ ] def
36
+ end
37
+
38
+ /after_column 3 dict def after_column begin
39
+ /proc { } bind def
40
+ /except [ ] def
41
+ /only [ ] def
42
+ end
43
+
44
+ /odd_column 3 dict def odd_column begin
45
+ /proc { } bind def
46
+ /except [ ] def
47
+ /only [ ] def
48
+ end
49
+
50
+ /even_column 3 dict def even_column begin
51
+ /proc { } bind def
52
+ /except [ ] def
53
+ /only [ ] def
54
+ end
55
+
56
+ %%HEADER----------------------
57
+ /before_header_create {} def
58
+ /after_header_create {} def
59
+
60
+ /before_column_header 3 dict def before_column_header begin
61
+ /proc { } bind def
62
+ /except [ ] def
63
+ /only [ ] def
64
+ end
65
+
66
+ /after_column_header 3 dict def after_column_header begin
67
+ /proc { } bind def
68
+ /except [ ] def
69
+ /only [ ] def
70
+ end
71
+
72
+ %%ROW CALLBACKS
73
+ /callback_row{
74
+ dup dup
75
+ /except get length 0 ne { /except get current_table_row include? not}{
76
+ dup /only get length 0 ne { /only get current_table_row include?}{
77
+ pop true
78
+ }ifelse
79
+ }ifelse
80
+ { /proc get exec }{
81
+ pop
82
+ }ifelse
83
+ } bind def
84
+
85
+ %%COLUMN CALLBACKS
86
+ /callback_col{
87
+ dup dup
88
+ /except get length 0 ne { /except get col include? not}{
89
+ dup /only get length 0 ne { /only get col include?}{
90
+ pop true
91
+ }ifelse
92
+ }ifelse
93
+ { /proc get exec }{
94
+ pop
95
+ }ifelse
96
+ } bind def