pdf-writer 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,7 @@
6
6
  # Licensed under a MIT-style licence. See LICENCE in the main distribution
7
7
  # for full licensing information.
8
8
  #
9
- # $Id: graphics.rb,v 1.12 2005/06/28 21:32:17 austin Exp $
9
+ # $Id: graphics.rb,v 1.12.2.1 2005/08/25 03:38:05 austin Exp $
10
10
  #++
11
11
  # Points for use in the drawing of polygons.
12
12
  class PDF::Writer::PolygonPoint
@@ -726,7 +726,7 @@ module PDF::Writer::Graphics
726
726
 
727
727
  if border
728
728
  border = {} if true == border
729
- border[:color] ||= Color::Grey50
729
+ border[:color] ||= Color::RGB::Grey50
730
730
  border[:style] ||= PDF::Writer::StrokeStyle::DEFAULT
731
731
 
732
732
  save_state
@@ -808,6 +808,6 @@ module PDF::Writer::Graphics
808
808
  # * Y axis skewing uses [ 1 tan(a) 0 1 0 0 ] where a is the angle,
809
809
  # measured in radians.
810
810
  def transform_matrix(a, b, c, d, e, f)
811
- add_content("\n%.3f %.3f %.3f %.3f %3.f %.3f cm" % [ a, b, c, d, e, f ])
811
+ add_content("\n%.3f %.3f %.3f %.3f %.3f %.3f cm" % [ a, b, c, d, e, f ])
812
812
  end
813
813
  end
@@ -6,7 +6,7 @@
6
6
  # Licensed under a MIT-style licence. See LICENCE in the main distribution
7
7
  # for full licensing information.
8
8
  #
9
- # $Id: en.rb,v 1.9 2005/06/28 21:32:17 austin Exp $
9
+ # $Id: en.rb,v 1.9.2.1 2005/08/25 03:38:06 austin Exp $
10
10
  #++
11
11
  # PDF::Writer::Lang::EN is the English-language output module. It contains a
12
12
  # hash, @message, that contains the messages that may be reported by any
@@ -44,6 +44,7 @@ code. Please change it.
44
44
  :png_unsupp_filter => "Unsupported PNG filter method.",
45
45
  :png_header_missing => "PNG information header is missing.",
46
46
  :png_8bit_colour => "Only PNG colour depths of 8 bits or less are supported.",
47
+ :png_interlace => "Interlaced PNG images are not currently supported.",
47
48
  :png_alpha_trans => "PNG alpha channel transparency is not supported; only palette transparency is supported.",
48
49
  :data_must_be_array => "The table data is not an Array. (Temporary limitation.)",
49
50
  :columns_unspecified => "Columns are unspecified. They must be data[0] and be an array.",
@@ -6,7 +6,7 @@
6
6
  # Licensed under a MIT-style licence. See LICENCE in the main distribution
7
7
  # for full licensing information.
8
8
  #
9
- # $Id: contents.rb,v 1.2 2005/05/16 03:59:21 austin Exp $
9
+ # $Id: contents.rb,v 1.2.2.1 2005/08/25 03:38:06 austin Exp $
10
10
  #++
11
11
  # The contents objects hold all of the content which appears on pages
12
12
  class PDF::Writer::Object::Contents < PDF::Writer::Object
@@ -25,7 +25,8 @@ class PDF::Writer::Object::Contents < PDF::Writer::Object
25
25
  end
26
26
  end
27
27
 
28
- attr_reader :on_page
28
+ attr_reader :on_page
29
+ attr_accessor :data
29
30
 
30
31
  def size
31
32
  @data.size
@@ -6,11 +6,150 @@
6
6
  # Licensed under a MIT-style licence. See LICENCE in the main distribution
7
7
  # for full licensing information.
8
8
  #
9
- # $Id: image.rb,v 1.2 2005/05/16 03:59:21 austin Exp $
9
+ # $Id: image.rb,v 1.2.2.1 2005/08/25 03:38:06 austin Exp $
10
10
  #++
11
11
  require 'pdf/writer/oreader'
12
12
 
13
- # an image object, will be an XObject in the document, includes description and data
13
+ # An image object. This will be an /XObject dictionary in the document. This
14
+ # includes description and data. The diectionary includes:
15
+ #
16
+ # Type:: (name, Optional) The type of PDF object that this
17
+ # dictionary describes; if present, must be /XObject for
18
+ # an image XObject.
19
+ # Subtype:: (name, Required) The type of XObject that this
20
+ # dictionary describes; must be /Image for an image
21
+ # /XObject.
22
+ # Width:: (integer, Required) The width of the image, in samples.
23
+ # Height:: (integer, Required) The height of the image, in samples.
24
+ # ColorSpace:: (name or array, Required for images, except those that
25
+ # use the /JPXDecode filter; not allowed for image
26
+ # masks) The color space in which image samples are
27
+ # specified; it can be any type of color space except
28
+ # /Pattern. If the image uses the JPXDecode filter, this
29
+ # entry is optional: * If /ColorSpace is present, any
30
+ # color space specifications in the JPEG2000 data are
31
+ # ignored. * If /ColorSpace is absent, the color space
32
+ # specifications in the JPEG2000 data are used. The
33
+ # /Decode array is also ignored unless /ImageMask is
34
+ # true.
35
+ # BitsPerComponent:: (integer, Required except for image masks and images
36
+ # that use the JPXDecode filter) The number of bits used
37
+ # to represent each color component. Only a single value
38
+ # may be specified; the number of bits is the same for
39
+ # all color components. Valid values are 1, 2, 4, 8, and
40
+ # (in PDF 1.5) 16. If /ImageMask is true, this entry is
41
+ # optional, and if specified, its value must be 1. If
42
+ # the image stream uses a filter, the value of
43
+ # BitsPerComponent must be consistent with the size of
44
+ # the data samples that the filter delivers. In
45
+ # particular, a CCITTFaxDecode or JBIG2Decode filter
46
+ # always delivers 1-bit samples, a RunLengthDecode or
47
+ # DCTDecode filter delivers 8-bit samples, and an
48
+ # LZWDecode or FlateDecode filter delivers samples of a
49
+ # specified size if a predictor function is used. If the
50
+ # image stream uses the JPXDecode filter, this entry is
51
+ # optional and ignored if present. The bit depth is
52
+ # determined in the process of decoding the JPEG2000
53
+ # image.
54
+ # Intent:: (name, Optional; PDF 1.1) The name of a color
55
+ # rendering intent to be used in rendering the image
56
+ # (see �Rendering Intents� on page 230). Default value:
57
+ # the current rendering intent in the graphics state.
58
+ # ImageMask:: (boolean, Optional) A flag indicating whether the
59
+ # image is to be treated as an image mask (see Section
60
+ # 4.8.5, �Masked Images�). If this flag is true, the
61
+ # value of /BitsPerComponent must be 1 and Mask and
62
+ # /ColorSpace should not be specified; unmasked areas
63
+ # are painted using the current nonstroking color.
64
+ # Default value: false.
65
+ # Mask:: (stream or array, Optional except for image masks; not
66
+ # allowed for image masks; PDF 1.3) An image XObject
67
+ # defining an image mask to be applied to this image
68
+ # (see �Explicit Masking� on page 321), or an array
69
+ # specifying a range of colors to be applied to it as a
70
+ # color key mask (see �Color Key Masking� on page 321).
71
+ # If ImageMask is true, this entry must not be present.
72
+ # (See implementation note 51 in Appendix H.)
73
+ # Decode:: (array, Optional) An array of numbers describing how
74
+ # to map image samples into the range of values
75
+ # appropriate for the image�s color space (see �Decode
76
+ # Arrays� on page 314). If ImageMask is true, the array
77
+ # must be either [0 1] or [1 0]; otherwise, its length
78
+ # must be twice the number of color components required
79
+ # by ColorSpace. If the image uses the JPXDecode filter
80
+ # and ImageMask is false, Decode is ignored. Default
81
+ # value: see �Decode Arrays� on page 314.
82
+ # Interpolate:: (boolean, Optional) A flag indicating whether image
83
+ # interpolation is to be performed (see �Image
84
+ # Interpolation� on page 316). Default value: false.
85
+ # Alternates:: (array, Optional; PDF 1.3) An array of alternate image
86
+ # dictionaries for this image (see �Alternate Images� on
87
+ # page 317). The order of elements within the array has
88
+ # no significance. This entry may not be present in an
89
+ # image XObject that is itself an alternate image.
90
+ # SMask:: (stream, Optional; PDF 1.4) A subsidiary image XObject
91
+ # defining a soft-mask image (see �Soft-Mask Images� on
92
+ # page 522) to be used as a source of mask shape or mask
93
+ # opacity values in the transparent imaging model. The
94
+ # alpha source parameter in the graphics state
95
+ # determines whether the mask values are interpreted as
96
+ # shape or opacity. If present, this entry overrides the
97
+ # current soft mask in the graphics state, as well as
98
+ # the image�s Mask entry, if any. (However, the other
99
+ # transparency related graphics state parameters�blend
100
+ # mode and alpha constant�remain in effect.) If SMask is
101
+ # absent, the image has no associated soft mask
102
+ # (although the current soft mask in the graphics state
103
+ # may still apply).
104
+ # SMaskInData:: (integer, Optional for images that use the JPXDecode
105
+ # filter, meaningless otherwise; PDF 1.5) A code
106
+ # specifying how soft-mask information (see �Soft-Mask
107
+ # Images� on page 522) encoded with image samples should
108
+ # be used: (0) If present, encoded soft-mask image
109
+ # information should be ignored. (1) The image�s data
110
+ # stream includes encoded soft-mask values. An
111
+ # application can create a soft-mask image from the
112
+ # information to be used as a source of mask shape or
113
+ # mask opacity in the transparency imaging model. (2)
114
+ # The image�s data stream includes color channels that
115
+ # have been preblended with a background; the image data
116
+ # also includes an opacity channel. An application can
117
+ # create a soft-mask image with a Matte entry from the
118
+ # opacity channel information to be used as a source of
119
+ # mask shape or mask opacity in the transparency model.
120
+ # * If this entry has a nonzero value, SMask should not
121
+ # be specified. See also Section 3.3.8, �JPXDecode
122
+ # Filter.� Default value: 0.
123
+ # Name:: (name, Required in PDF 1.0; optional otherwise) The
124
+ # name by which this image XObject is referenced in the
125
+ # XObject subdictionary of the current resource
126
+ # dictionary (see Section 3.7.2, �Resource
127
+ # Dictionaries�). Note: This entry is obsolescent and
128
+ # its use is no longer recommended. (See implementation
129
+ # note 52 in Appendix H.)
130
+ # StructParent:: (integer, Required if the image is a structural
131
+ # content item; PDF 1.3) The integer key of the image�s
132
+ # entry in the structural parent tree (see �Finding
133
+ # Structure Elements from Content Items� on page 797).
134
+ # ID:: (string, Optional; PDF 1.3; indirect reference
135
+ # preferred) The digital identifier of the image�s
136
+ # parent Web Capture content set (see Section 10.9.5,
137
+ # �Object Attributes Related to Web Capture�).
138
+ # OPI:: (dictionary, Optional; PDF 1.2) An OPI version
139
+ # dictionary for the image (see Section 10.10.6, �Open
140
+ # Prepress Interface (OPI)�). If ImageMask is true, this
141
+ # entry is ignored.
142
+ # Metadata:: (stream, Optional; PDF 1.4) A metadata stream
143
+ # containing metadata for the image (see Section 10.2.2,
144
+ # �Metadata Streams�).
145
+ # OC:: (dictionary, Optional; PDF 1.5) An optional content
146
+ # group or optional content membership dictionary (see
147
+ # Section 4.10, �Optional Content�), specifying the
148
+ # optional content properties for this image XObject.
149
+ # Before the image is processed, its visibility is
150
+ # determined based on this entry. If it is determined to
151
+ # be invisible, the entire image is skipped, as if there
152
+ # were no Do operator to invoke it.
14
153
  class PDF::Writer::External::Image < PDF::Writer::External
15
154
  attr_reader :label
16
155
  attr_reader :image_info
@@ -46,11 +185,11 @@ class PDF::Writer::External::Image < PDF::Writer::External
46
185
  @info['BitsPerComponent'] = 8
47
186
  when "PNG"
48
187
  if image.info[:compression_method] != 0
49
- raise TypeError, PDF::Writer::Message[:png_unsupp_compres]
188
+ raise TypeError, PDF::Writer::Lang[:png_unsupp_compres]
50
189
  end
51
190
 
52
191
  if image.info[:filter_method] != 0
53
- raise TypeError, PDF::Writer::Message[:png_unsupp_filter]
192
+ raise TypeError, PDF::Writer::Lang[:png_unsupp_filter]
54
193
  end
55
194
 
56
195
  data = data.dup
@@ -88,7 +227,7 @@ class PDF::Writer::External::Image < PDF::Writer::External
88
227
  # Grey is two bytes, range 0 .. (2 ^ bit-depth) - 1
89
228
  trans[:grayscale] = data.read_o(2).unpack("n")
90
229
  trans[:type] = 'indexed'
91
- trans[:data] = data.read_o.unpack("C")
230
+ # trans[:data] = data.read_o.unpack("C")
92
231
  when 2
93
232
  # True colour with proper alpha channel.
94
233
  trans[:rgb] = data.read_o(6).unpack("nnn")
@@ -97,16 +236,16 @@ class PDF::Writer::External::Image < PDF::Writer::External
97
236
  data.offset += chunk_size
98
237
  end
99
238
 
100
- ok = section != "IEND"
239
+ ok = (section != "IEND")
101
240
 
102
241
  data.read_o(4) # Skip the CRC
103
242
  end
104
243
 
105
244
  if image.bits > 8
106
- raise TypeError, PDF::Writer::Message[:png_8bit_colour]
245
+ raise TypeError, PDF::Writer::Lang[:png_8bit_colour]
107
246
  end
108
247
  if image.info[:interlace_method] != 0
109
- raise TypeError, PDF::Writer::Message[:png_interlace]
248
+ raise TypeError, PDF::Writer::Lang[:png_interlace]
110
249
  end
111
250
 
112
251
  ncolor = 1
@@ -119,7 +258,7 @@ class PDF::Writer::External::Image < PDF::Writer::External
119
258
  when 0
120
259
  colour = 'DeviceGray'
121
260
  else
122
- raise TypeError, PDF::Writer::Message[:png_alpha_trans]
261
+ raise TypeError, PDF::Writer::Lang[:png_alpha_trans]
123
262
  end
124
263
 
125
264
  @info['Filter'] = '[/FlateDecode]'
@@ -128,7 +267,8 @@ class PDF::Writer::External::Image < PDF::Writer::External
128
267
 
129
268
  unless palette.empty?
130
269
  @info['ColorSpace'] = " [ /Indexed /DeviceRGB #{(palette.size / 3) - 1} "
131
- contents = PDF::Writer::Contents.new
270
+ contents = PDF::Writer::Object::Contents.new(parent,
271
+ self)
132
272
  contents.data = palette
133
273
  @info['ColorSpace'] << "#{contents.oid} 0 R ]"
134
274
 
data/manual.pwd CHANGED
@@ -98,7 +98,7 @@
98
98
  # Use .eval to do encoding configuration.
99
99
  .eval {{{
100
100
  pdf.techbook_encoding = {
101
- :encoding => 'WinAnsiEncoding',
101
+ :encoding => "WinAnsiEncoding",
102
102
  :differences => {
103
103
  169 => "copyright",
104
104
  215 => "multiply",
@@ -111,7 +111,7 @@ pdf.select_font "Helvetica", pdf.techbook_encoding
111
111
  # Put a heading on all pages.
112
112
  pdf.open_object do |heading|
113
113
  pdf.save_state
114
- pdf.stroke_color! Color::Black
114
+ pdf.stroke_color! Color::RGB::Black
115
115
  pdf.stroke_style! PDF::Writer::StrokeStyle::DEFAULT
116
116
 
117
117
  s = 6
@@ -134,7 +134,7 @@ end
134
134
  # Put a footing on all pages.
135
135
  pdf.open_object do |footing|
136
136
  pdf.save_state
137
- pdf.stroke_color! Color::Black
137
+ pdf.stroke_color! Color::RGB::Black
138
138
  pdf.stroke_style! PDF::Writer::StrokeStyle::DEFAULT
139
139
 
140
140
  s = 6
@@ -172,11 +172,11 @@ size = 72
172
172
  fh = pdf.font_height(size) * 1.01
173
173
  fd = pdf.font_descender(size) * 1.01
174
174
  pdf.save_state
175
- pdf.fill_color Color::Red
176
- pdf.stroke_color Color::Red
175
+ pdf.fill_color Color::RGB::Red
176
+ pdf.stroke_color Color::RGB::Red
177
177
  pdf.rectangle(pdf.absolute_left_margin, 0, fh, pdf.page_height).fill
178
- pdf.fill_color Color::White
179
- pdf.stroke_color Color::White
178
+ pdf.fill_color Color::RGB::White
179
+ pdf.stroke_color Color::RGB::White
180
180
  pdf.add_text(pdf.absolute_left_margin + fh + fd, 70, title, size, 90)
181
181
  pdf.restore_state
182
182
 
@@ -199,12 +199,15 @@ Copyright
199
199
  INFO
200
200
 
201
201
  pdf.text(info, :font_size => 18, :justification => :right)
202
- pdf.open_here('Fit')
202
+ pdf.open_here("Fit")
203
203
 
204
- pdf.start_page_numbering(pnx, pny, 6, :right, "<PAGENUM>", 1)
205
204
  pdf.techbook_fontsize = 12
206
205
  .endeval }}}
207
206
  .newpage
207
+ .eval {{{
208
+ pnx = pdf.absolute_right_margin
209
+ pdf.start_page_numbering(pnx, 36, 6, :right, "<PAGENUM>", 1)
210
+ .endeval }}}
208
211
  # The main document.
209
212
  1<Introduction to PDF::Writer for Ruby>Introduction
210
213
 
@@ -264,7 +267,7 @@ centered at the top of the page in 72-point (1
264
267
 
265
268
  .code {{{
266
269
  # This code is demo/hello.rb
267
- require 'pdf/writer'
270
+ require "pdf/writer"
268
271
 
269
272
  pdf = PDF::Writer.new
270
273
  pdf.select_font "Times-Roman"
@@ -278,7 +281,7 @@ that the images are JPEG and PNG
278
281
 
279
282
  .code {{{
280
283
  # This code is demo/chunkybacon.rb
281
- require 'pdf/writer'
284
+ require "pdf/writer"
282
285
 
283
286
  pdf = PDF::Writer.new
284
287
  pdf.select_font "Times-Roman"
@@ -529,13 +532,13 @@ pdf.select_font("Times-Roman", { :encoding =&gt; "MacExpertEncoding" })
529
532
  # Set up the Helvetica font for use with German characters as an offset
530
533
  # of the WinAnsiEncoding.
531
534
  diff= {
532
- 196 =&gt; 'Adieresis',
533
- 228 =&gt; 'adieresis',
534
- 214 =&gt; 'Odieresis',
535
- 246 =&gt; 'odieresis',
536
- 220 =&gt; 'Udieresis',
537
- 252 =&gt; 'udieresis',
538
- 223 =&gt; 'germandbls'
535
+ 196 =&gt; "Adieresis",
536
+ 228 =&gt; "adieresis",
537
+ 214 =&gt; "Odieresis",
538
+ 246 =&gt; "odieresis",
539
+ 220 =&gt; "Udieresis",
540
+ 252 =&gt; "udieresis",
541
+ 223 =&gt; "germandbls"
539
542
  }
540
543
  pdf.select_font("Helvetica", { :encoding =&gt; "WinAnsiEncoding", :differences => diff })
541
544
  .endcode }}}
@@ -558,10 +561,10 @@ pdf = PDF::Writer.new
558
561
  # different font than "ib" (&lt;i&gt;&lt;b&gt;).
559
562
  pdf.font_families["Helvetica"] =
560
563
  {
561
- "b" =&gt; 'Helvetica-Bold',
562
- "i" =&gt; 'Helvetica-Oblique',
563
- "bi" =&gt; 'Helvetica-BoldOblique',
564
- "ib" =&gt; 'Helvetica-BoldOblique'
564
+ "b" =&gt; "Helvetica-Bold",
565
+ "i" =&gt; "Helvetica-Oblique",
566
+ "bi" =&gt; "Helvetica-BoldOblique",
567
+ "ib" =&gt; "Helvetica-BoldOblique"
565
568
  }
566
569
  .endcode }}}
567
570
 
@@ -624,7 +627,7 @@ built-in fonts as well).
624
627
 
625
628
  .code {{{
626
629
  encoding = {
627
- :encoding =&gt; 'WinAnsiEncoding',
630
+ :encoding =&gt; "WinAnsiEncoding",
628
631
  :differences =&gt; {
629
632
  215 =&gt; "multiply",
630
633
  148 =&gt; "copyright",
@@ -687,7 +690,7 @@ are standard US Letter (8
687
690
  named parameters, <b>:paper</b>, <b>:version</b>, and <b>:orientation</b>.
688
691
 
689
692
  .code {{{
690
- require 'pdf/writer'
693
+ require "pdf/writer"
691
694
 
692
695
  # US Letter, portrait, 1.3
693
696
  PDF::Writer.new
@@ -806,7 +809,7 @@ points).
806
809
  Prepress marks will appear on all pages.
807
810
 
808
811
  .code {{{
809
- require 'pdf/writer'
812
+ require "pdf/writer"
810
813
 
811
814
  PDF::Writer.prepress # US Letter, portrait, 1.3, prepress
812
815
  .endcode }}}
@@ -1119,7 +1122,7 @@ encountered.
1119
1122
  The example below is the �bullet� tag from PDF::Writer.
1120
1123
  .code {{{
1121
1124
  class TagBullet
1122
- DEFAULT_COLOR = Color::Black
1125
+ DEFAULT_COLOR = Color::RGB::Black
1123
1126
 
1124
1127
  class << self
1125
1128
  attr_accessor :color
@@ -1274,8 +1277,8 @@ The callback object is <b>PDF::Writer::TagAlink</b>. The display style of
1274
1277
  linking and link underlining may be modified through
1275
1278
  <b>TagAlink.style</b>, which is a hash of five keys:
1276
1279
  .blist {{{
1277
- <b>:color</b> is colour of the link underline. The default is Color::Blue. If nil, the current stroke colour will be maintained.
1278
- <b>:text_color</b> is the colour of the text. The default is Color::Blue. If nil, the current fill colour will be maintained.
1280
+ <b>:color</b> is colour of the link underline. The default is Color::RGB::Blue. If nil, the current stroke colour will be maintained.
1281
+ <b>:text_color</b> is the colour of the text. The default is Color::RGB::Blue. If nil, the current fill colour will be maintained.
1279
1282
  <b>:factor</b> is the size of the line, as a multiplier of the text height. The default is 5% of the line height (0.05).
1280
1283
  <b>:line_style</b> is a style modification hash provided to PDF::Writer::StrokeStyle.new. The default is a solid line with normal cap, join, and miter limit values. See �<r:xref name="StrokeStyleClass" label="title" />� for more information.
1281
1284
  <b>:draw_line</b> indicates whether the underline should be drawn or not.
@@ -1321,14 +1324,14 @@ linking and link underlining may be modified through
1321
1324
  The &lt;C:bullet&gt; tag inserts a solid circular bullet, like this:
1322
1325
  � <C:bullet />�. Bullets are implemented in <b>PDF::Writer::TagBullet</b>. The
1323
1326
  bullet display colour may be modified through <b>TagBullet.color</b>, which
1324
- defaults to <b>Color::Black</b>.
1327
+ defaults to <b>Color::RGB::Black</b>.
1325
1328
 
1326
1329
  5<&lt;C:disc&gt;>
1327
1330
  The &lt;C:disc&gt; tag inserts a hollow circular bullet, like this: � <C:disc
1328
1331
  />�. Bullets are implemented in <b>PDF::Writer::TagDisc</b>. The disc display
1329
1332
  colours may be modified throguh <b>TagDisc.foreground</b> and
1330
- <b>TagDisc.background</b>, which default to <b>Color::Black</b> and
1331
- <b>Color::White</b>, respectively.
1333
+ <b>TagDisc.background</b>, which default to <b>Color::RGB::Black</b> and
1334
+ <b>Color::RGB::White</b>, respectively.
1332
1335
 
1333
1336
  5<&lt;C:tocdots ...&gt;>
1334
1337
  This is a stand-alone callback that draws a dotted line over to the right and
@@ -1677,8 +1680,8 @@ Returns <b>true</b> if columns are turned on.
1677
1680
  2<Page Numbering>PageNumbering
1678
1681
  PDF::Writer supports automatic page numbering. The current page numbering
1679
1682
  system does not support anything except standard Arabic numbering (e.g., 1,
1680
- 2, 3). <b>The page numbering mechanism will be changing in a later version of
1681
- PDF::Writer to be far more flexible.</b>
1683
+ 2, 3). <b>The page numbering mechanism will be changing in a future version
1684
+ of PDF::Writer to be far more flexible.</b>
1682
1685
 
1683
1686
  4<PDF::Writer#start_page_numbering(x, y, size, pos = nil, pattern = nil, starting = nil)>
1684
1687
  Prepares the placement of page numbers on pages from the current page. Place
@@ -1705,8 +1708,8 @@ page (labelled
1705
1708
  pdf = PDF::Writer.new
1706
1709
  pdf.select_font "Helvetica"
1707
1710
  # page 1, blank
1708
- pdf.start_page_numbering(300, 500, 20, nil, nil, 1)
1709
1711
  pdf.start_new_page # page 2, 1 of 9
1712
+ pdf.start_page_numbering(300, 500, 20, nil, nil, 1)
1710
1713
  pdf.start_new_page # page 3, 2 of 9
1711
1714
  pdf.start_new_page # page 4, 3 of 9
1712
1715
  pdf.start_new_page # page 5, 4 of 9
@@ -2013,12 +2016,12 @@ y = pdf.y + 90
2013
2016
 
2014
2017
  pdf.select_font "Times-Roman"
2015
2018
 
2016
- pdf.fill_color Color::Grey70
2017
- pdf.stroke_color! Color::Black
2019
+ pdf.fill_color Color::RGB::Grey70
2020
+ pdf.stroke_color! Color::RGB::Black
2018
2021
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2019
2022
  pdf.rectangle(pdf.absolute_left_margin, y + 64, pdf.margin_width, -100).fill_stroke
2020
2023
 
2021
- pdf.fill_color Color::Black
2024
+ pdf.fill_color Color::RGB::Black
2022
2025
 
2023
2026
  (0..7).each do |style|
2024
2027
  pdf.add_text(pdf.absolute_left_margin + 20 + (60 * style), y + 48,
@@ -2412,7 +2415,7 @@ pdf.line(100, pdf.y - 5, 400, pdf.y + 5)
2412
2415
  .eval {{{
2413
2416
  pdf.move_pointer(20, true)
2414
2417
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2415
- pdf.stroke_color Color::Black
2418
+ pdf.stroke_color Color::RGB::Black
2416
2419
  pdf.line(100, pdf.y - 15, 400, pdf.y - 5).stroke
2417
2420
  .endeval }}}
2418
2421
 
@@ -2428,7 +2431,7 @@ pdf.curve(100, pdf.y - 5, 200, pdf.y + 5, 300, pdf.y - 5, 400, pdf.y + 5
2428
2431
  .eval {{{
2429
2432
  pdf.move_pointer(20, true)
2430
2433
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2431
- pdf.stroke_color Color::Black
2434
+ pdf.stroke_color Color::RGB::Black
2432
2435
  pdf.curve(100, pdf.y - 15, 200, pdf.y - 5, 300, pdf.y - 15, 400, pdf.y - 5)
2433
2436
  pdf.stroke
2434
2437
  .endeval }}}
@@ -2445,7 +2448,7 @@ pdf.scurve(100, pdf.y - 5, 300, pdf.y + 5, 400, pdf.y - 5)
2445
2448
  .eval {{{
2446
2449
  pdf.move_pointer(20, true)
2447
2450
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2448
- pdf.stroke_color Color::Black
2451
+ pdf.stroke_color Color::RGB::Black
2449
2452
  pdf.scurve(100, pdf.y - 15, 300, pdf.y - 5, 400, pdf.y - 15).stroke
2450
2453
  .endeval }}}
2451
2454
 
@@ -2461,7 +2464,7 @@ pdf.ecurve(100, pdf.y - 5, 200, pdf.y + 5, 400, pdf.y - 5)
2461
2464
  .eval {{{
2462
2465
  pdf.move_pointer(20, true)
2463
2466
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2464
- pdf.stroke_color Color::Black
2467
+ pdf.stroke_color Color::RGB::Black
2465
2468
  pdf.ecurve(100, pdf.y - 15, 200, pdf.y - 5, 400, pdf.y - 15)
2466
2469
  pdf.stroke
2467
2470
  .endeval }}}
@@ -2476,7 +2479,7 @@ pdf.circle_at(250, pdf.y, 10)
2476
2479
  .eval {{{
2477
2480
  pdf.move_pointer(30, true)
2478
2481
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2479
- pdf.stroke_color Color::Black
2482
+ pdf.stroke_color Color::RGB::Black
2480
2483
  pdf.circle_at(250, pdf.y + 15, 10)
2481
2484
  pdf.stroke
2482
2485
  .endeval }}}
@@ -2492,7 +2495,7 @@ pdf.ellipse_at(250, pdf.y, 20, 10)
2492
2495
  .eval {{{
2493
2496
  pdf.move_pointer(30, true)
2494
2497
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2495
- pdf.stroke_color Color::Black
2498
+ pdf.stroke_color Color::RGB::Black
2496
2499
  pdf.ellipse_at(250, pdf.y + 15, 20, 10)
2497
2500
  pdf.stroke
2498
2501
  .endeval }}}
@@ -2512,7 +2515,7 @@ pdf.ellipse2_at(250, pdf.y, 20, 10)
2512
2515
  .eval {{{
2513
2516
  pdf.move_pointer(30, true)
2514
2517
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2515
- pdf.stroke_color Color::Black
2518
+ pdf.stroke_color Color::RGB::Black
2516
2519
  pdf.ellipse2_at(250, pdf.y + 15, 20, 10).stroke
2517
2520
  .endeval }}}
2518
2521
 
@@ -2522,7 +2525,7 @@ pdf.ellipse2_at(250, pdf.y, 20, 10, 135, -45)
2522
2525
  .eval {{{
2523
2526
  pdf.move_pointer(30, true)
2524
2527
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2525
- pdf.stroke_color Color::Black
2528
+ pdf.stroke_color Color::RGB::Black
2526
2529
  pdf.ellipse2_at(250, pdf.y + 15, 20, 10, 135, -45).stroke
2527
2530
  .endeval }}}
2528
2531
 
@@ -2531,11 +2534,11 @@ ss = PDF::Writer::StrokeStyle.new(2)
2531
2534
  ss.cap = :round
2532
2535
 
2533
2536
  pdf.stroke_style ss
2534
- pdf.fill_color! Color::BlueViolet
2537
+ pdf.fill_color! Color::RGB::BlueViolet
2535
2538
  pdf.translate_axis(300, pdf.y + 25)
2536
2539
  pdf.circle_at(0, 0, 38).fill
2537
2540
  pdf.rotate_axis(10)
2538
- pdf.stroke_color! Color::Grey30
2541
+ pdf.stroke_color! Color::RGB::Grey30
2539
2542
  pdf.ellipse2_at(0, 0, 81, 20, 65.5, -245.5).stroke
2540
2543
  pdf.ellipse2_at(0, 0, 85, 22, 67.5, -247.5).stroke
2541
2544
  pdf.ellipse2_at(0, 0, 89, 25, 70.5, -250.5).stroke
@@ -2547,11 +2550,11 @@ ss = PDF::Writer::StrokeStyle.new(2)
2547
2550
  ss.cap = :round
2548
2551
 
2549
2552
  pdf.stroke_style ss
2550
- pdf.fill_color! Color::BlueViolet
2553
+ pdf.fill_color! Color::RGB::BlueViolet
2551
2554
  pdf.translate_axis(300, pdf.y + 25)
2552
2555
  pdf.circle_at(0, 0, 38).fill
2553
2556
  pdf.rotate_axis(10)
2554
- pdf.stroke_color! Color::Grey30
2557
+ pdf.stroke_color! Color::RGB::Grey30
2555
2558
  pdf.ellipse2_at(0, 0, 81, 20, 65.5, -245.5).stroke
2556
2559
  pdf.ellipse2_at(0, 0, 85, 22, 67.5, -247.5).stroke
2557
2560
  pdf.ellipse2_at(0, 0, 89, 25, 70.5, -250.5).stroke
@@ -2568,7 +2571,7 @@ pdf.segment_at(250, pdf.y, 20, 10, 45, -45)
2568
2571
  .eval {{{
2569
2572
  pdf.move_pointer(30, true)
2570
2573
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2571
- pdf.stroke_color Color::Black
2574
+ pdf.stroke_color Color::RGB::Black
2572
2575
  pdf.segment_at(250, pdf.y + 15, 20, 10, 45, -45)
2573
2576
  pdf.stroke
2574
2577
  .endeval }}}
@@ -2676,7 +2679,7 @@ pdf.rounded_rectangle(100, pdf.y, 300, 30, 5)
2676
2679
  .eval {{{
2677
2680
  pdf.move_pointer(40, true)
2678
2681
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2679
- pdf.stroke_color Color::Black
2682
+ pdf.stroke_color Color::RGB::Black
2680
2683
  pdf.rounded_rectangle(100, pdf.y + 35, 100, 30, 10)
2681
2684
  pdf.stroke
2682
2685
  pdf.move_pointer(5, true)
@@ -2699,7 +2702,7 @@ pdf.star(430, pdf.y, 20, 8).stroke
2699
2702
  .eval {{{
2700
2703
  pdf.move_pointer(40, true)
2701
2704
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2702
- pdf.stroke_color Color::Black
2705
+ pdf.stroke_color Color::RGB::Black
2703
2706
  pdf.star(166, pdf.y + 15, 20, 4).stroke
2704
2707
  pdf.star(232, pdf.y + 15, 20, 5).stroke
2705
2708
  pdf.star(298, pdf.y + 15, 20, 6).stroke
@@ -2781,7 +2784,7 @@ winding number fill rule, it is hollow.
2781
2784
  .eval {{{
2782
2785
  pdf.move_pointer(60, true)
2783
2786
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2784
- pdf.stroke_color Color::Black
2787
+ pdf.stroke_color Color::RGB::Black
2785
2788
  y0 = pdf.y + 50 # top
2786
2789
  y1 = y0 - 10 # top-middle
2787
2790
  y2 = y1 - 20 # bottom-middle
@@ -2816,7 +2819,7 @@ filled using the even-odd rule. They appear the same.
2816
2819
  .eval {{{
2817
2820
  pdf.move_pointer(60, true)
2818
2821
  pdf.stroke_style PDF::Writer::StrokeStyle::DEFAULT
2819
- pdf.stroke_color Color::Black
2822
+ pdf.stroke_color Color::RGB::Black
2820
2823
  y0 = pdf.y + 50 # top
2821
2824
  y1 = y0 - 10 # top-middle
2822
2825
  y2 = y1 - 20 # bottom-middle
@@ -3556,13 +3559,13 @@ The font size of the heading cells, in points. Defaults to 12 points.
3556
3559
  The font size of the #title, in points. Defaults to 12 points.
3557
3560
 
3558
3561
  4<SimpleTable#title_color, SimpleTable#title_color=>
3559
- The text colour of the #title. Defaults to Color::Black.
3562
+ The text colour of the #title. Defaults to Color::RGB::Black.
3560
3563
 
3561
3564
  4<SimpleTable#heading_color, SimpleTable#heading_color=>
3562
- The text colour of the heading. Defaults to Color::Black.
3565
+ The text colour of the heading. Defaults to Color::RGB::Black.
3563
3566
 
3564
3567
  4<SimpleTable#text_color, SimpleTable#text_color=>
3565
- The text colour of the body cells. Defaults to Color::Black.
3568
+ The text colour of the body cells. Defaults to Color::RGB::Black.
3566
3569
 
3567
3570
  4<SimpleTable#bold_headings, SimpleTable#bold_headings=>
3568
3571
  Makes the heading text bold if <b>true</b>. The default is <b>false</b>.
@@ -3599,16 +3602,16 @@ colour.
3599
3602
  4<SimpleTable#shade_color2, SimpleTable#shade_color2=>
3600
3603
 
3601
3604
  The main and alternate shading colours. #shade_color defaults to
3602
- Color::Grey80; #shade_color2 defaults to Color::Grey70.
3605
+ Color::RGB::Grey80; #shade_color2 defaults to Color::RGB::Grey70.
3603
3606
 
3604
3607
  4<SimpleTable#shade_headings, SimpleTable#shade_headings=>
3605
3608
  4<SimpleTable#shade_heading_color, SimpleTable#shade_heading_color=>
3606
3609
  If #shade_headings is <b>true</b>, heading rows will be shaded with the value
3607
- of #shade_heading_color (Color::Grey90 by default). Headings are not shaded
3608
- by default.
3610
+ of #shade_heading_color (Color::RGB::Grey90 by default). Headings are not
3611
+ shaded by default.
3609
3612
 
3610
3613
  4<SimpleTable#line_color, SimpleTable#line_color=>
3611
- The colour of table lines, defaultting to Color::Black.
3614
+ The colour of table lines, defaultting to Color::RGB::Black.
3612
3615
 
3613
3616
  4<SimpleTable#inner_line_style, SimpleTable#inner_line_style=>
3614
3617
  4<SimpleTable#outer_line_style, SimpleTable#outer_line_style=>
@@ -4099,7 +4102,7 @@ PDF::Charts::StdDev::Scale.new do |scale|
4099
4102
  scale.show_labels = false
4100
4103
  PDF::Charts::StdDev::Label.new do |label|
4101
4104
  label.text_size = 8
4102
- label.text_color = Color::Black
4105
+ label.text_color = Color::RGB::Black
4103
4106
  label.pad = 2
4104
4107
  label.decimal_precision = 1
4105
4108
  scale.label = label
@@ -4133,8 +4136,8 @@ StdDev::Label object.
4133
4136
  # This is the default chart label style.
4134
4137
  Label.new do |label|
4135
4138
  label.height = 25
4136
- label.background_color = Color::Black
4137
- label.text_color = Color::White
4139
+ label.background_color = Color::RGB::Black
4140
+ label.text_color = Color::RGB::White
4138
4141
  label.text_size = 12
4139
4142
  chart.label = label
4140
4143
  end
@@ -4149,7 +4152,7 @@ drawn. If set, they must be PDF::Charts::StdDev::Marker objects.
4149
4152
  # These are the defaults.
4150
4153
  PDF::Charts::StdDev::Marker.new do |marker|
4151
4154
  marker.style = PDF::Writer::StrokeStyle.new(1.5)
4152
- marker.color = Color::Black
4155
+ marker.color = Color::RGB::Black
4153
4156
  chart.outer_borders = marker
4154
4157
  end
4155
4158
  chart.inner_borders = nil
@@ -4173,22 +4176,22 @@ as it is thick.
4173
4176
  # These are the defaults.
4174
4177
  PDF::Charts::StdDev::Marker.new do |marker|
4175
4178
  marker.style = PDF::Writer::StrokeStyle.new(5)
4176
- marker.color = Color::Black
4179
+ marker.color = Color::RGB::Black
4177
4180
  chart.dot = marker
4178
4181
  end
4179
4182
  PDF::Charts::StdDev::Marker.new do |marker|
4180
4183
  marker.style = PDF::Writer::StrokeStyle.new(0.5)
4181
- marker.color = Color::Black
4184
+ marker.color = Color::RGB::Black
4182
4185
  chart.bar = marker
4183
4186
  end
4184
4187
  PDF::Charts::StdDev::Marker.new do |marker|
4185
4188
  marker.style = PDF::Writer::StrokeStyle.new(1)
4186
- marker.color = Color::Black
4189
+ marker.color = Color::RGB::Black
4187
4190
  chart.upper_crossbar = marker
4188
4191
  end
4189
4192
  PDF::Charts::StdDev::Marker.new do |marker|
4190
4193
  marker.style = PDF::Writer::StrokeStyle.new(1)
4191
- marker.color = Color::Black
4194
+ marker.color = Color::RGB::Black
4192
4195
  chart.lower_crossbar = marker
4193
4196
  end
4194
4197
  .endcode }}}
@@ -4351,13 +4354,13 @@ pdf.move_pointer(150, true)
4351
4354
  _y = pdf.y + 140
4352
4355
 
4353
4356
  pdf.save_state
4354
- pdf.stroke_color! Color::Black
4357
+ pdf.stroke_color! Color::RGB::Black
4355
4358
  pdf.stroke_style! PDF::Writer::StrokeStyle::DEFAULT
4356
4359
 
4357
4360
  pdf.rectangle(100, _y, 75, -50).line(125, _y, 125, _y - 50)
4358
4361
  pdf.line(150, _y, 150, _y - 50).stroke
4359
4362
 
4360
- pdf.fill_color Color::Grey60
4363
+ pdf.fill_color Color::RGB::Grey60
4361
4364
  pdf.add_text(105, _y - 36, "1", 36)
4362
4365
  pdf.add_text(130, _y - 36, "2", 36)
4363
4366
  pdf.add_text(155, _y - 36, "3", 36)
@@ -4365,12 +4368,12 @@ pdf.add_text(155, _y - 36, "3", 36)
4365
4368
  pdf.rectangle(215, _y - 15, 25, -50).stroke
4366
4369
  pdf.add_text(220, _y - 51, "3", 36)
4367
4370
  pdf.line(225, _y, 215, _y - 15).line(225, _y - 50, 215, _y - 65).stroke
4368
- pdf.fill_color Color::White
4371
+ pdf.fill_color Color::RGB::White
4369
4372
  pdf.rectangle(200, _y, 25, -50).fill_stroke
4370
- pdf.fill_color Color::Grey60
4373
+ pdf.fill_color Color::RGB::Grey60
4371
4374
  pdf.add_text(205, _y - 36, "1", 36)
4372
4375
 
4373
- pdf.fill_color Color::Black
4376
+ pdf.fill_color Color::RGB::Black
4374
4377
  pdf.line(200, _y + 5, 225, _y + 5).stroke
4375
4378
  pdf.move_to(227, _y + 5).line_to(220, _y + 7.5).line_to(220, _y + 2.5)
4376
4379
  pdf.close_fill
@@ -4402,12 +4405,12 @@ pdf.move_pointer(150, true)
4402
4405
  _y = pdf.y + 140
4403
4406
  pdf.save_state
4404
4407
 
4405
- pdf.stroke_color! Color::Black
4408
+ pdf.stroke_color! Color::RGB::Black
4406
4409
  pdf.stroke_style! PDF::Writer::StrokeStyle::DEFAULT
4407
4410
  pdf.rectangle(100, _y, 75, -50).line(125, _y, 125, _y - 50)
4408
4411
  pdf.line(150, _y, 150, _y - 50).stroke
4409
4412
 
4410
- pdf.fill_color Color::Grey60
4413
+ pdf.fill_color Color::RGB::Grey60
4411
4414
  pdf.add_text(103, _y - 36, "1", 36)
4412
4415
  pdf.add_text(128, _y - 36, "2", 36)
4413
4416
  pdf.add_text(153, _y - 36, "3", 36)
@@ -4420,7 +4423,7 @@ pdf.line(255, _y - 40, 250, _y - 50).stroke
4420
4423
  pdf.add_text(228, _y - 36, "2", 36)
4421
4424
 
4422
4425
  pdf.save_state
4423
- pdf.fill_color Color::Black
4426
+ pdf.fill_color Color::RGB::Black
4424
4427
  pdf.line(250, _y - 60, 275, _y - 60).stroke
4425
4428
  pdf.move_to(248, _y - 60).line_to(255, _y - 57.5).line_to(255, _y - 62.5)
4426
4429
  pdf.close_fill
@@ -4432,7 +4435,7 @@ pdf.line(320, _y - 40, 325, _y - 50).stroke
4432
4435
  pdf.add_text(328, _y - 36, "4", 36)
4433
4436
  pdf.save_state
4434
4437
  pdf.line(300, _y - 60, 325, _y - 60).stroke
4435
- pdf.fill_color Color::Black
4438
+ pdf.fill_color Color::RGB::Black
4436
4439
  pdf.move_to(327, _y - 60).line_to(320, _y - 57.5).line_to(320, _y - 62.5)
4437
4440
  pdf.close_fill
4438
4441
  pdf.restore_state
@@ -4541,7 +4544,7 @@ platform dependent). The text will be placed with full justification.
4541
4544
  3<QuickRef#pre(text)>
4542
4545
  Writes code text. Newlines and spaces will be preserved.
4543
4546
 
4544
- 3<QuickRef#hline(style = PDF::Writer::StrokeStyle::DEFAULT, color = Color::Black)>
4547
+ 3<QuickRef#hline(style = PDF::Writer::StrokeStyle::DEFAULT, color = Color::RGB::Black)>
4545
4548
  Draws a horizontal line with the specified style and colour across the width
4546
4549
  of the column.
4547
4550
 
@@ -5089,18 +5092,27 @@ must be understood. Transaction::Simple:
5089
5092
  2<color-tools>ColorTools
5090
5093
  The color-tools package was created to abstract out the colour needs for
5091
5094
  PDF::Writer and make them available for other uses as well (such as web
5092
- pages). There are five main components to color-tools in the current version:
5095
+ pages). There are several main components to color-tools in version 1.3.0:
5093
5096
  .blist {{{
5094
5097
  Named colours: more than 150 named RGB colours so that the exact colour representation does not need to be remembered.
5095
5098
  Color::RGB: a colour class that encapsulates operations on RGB (red, green, blue) colours.
5096
5099
  Color::CMYK: a colour class that encapsulates operations on CMYK (cyan, magenta, yellow, black) colours, mostly used for printing.
5100
+ Color::GrayScale: a colour class that encapsulates operations on greyscale colours, mostly used for PDF operations.
5101
+ Color::YIQ: a colour class that encapsulates the NTSC/YIQ video colour space.
5102
+ Color::HSL: a colour class that encapsulates the HSL (hue, saturation, luminance) colour space.
5097
5103
  Color::Palette::MonoContrast: an RGB colour palette generator.
5098
- Color::Palette::GIMP: a class to read GIMP (GNU Image Manipulation Program) colour palettes and make them available for access.
5104
+ Color::Palette::Gimp: a class to read Gimp (GNU Image Manipulation Program) colour palettes and make them available for access.
5105
+ Color::CSS: An interface for interpreting named CSS3 colours.
5099
5106
  .endblist }}}
5100
5107
 
5101
5108
  3<Named Colors>
5102
- There are more than 150 named colours available in the Color namespace. The
5103
- demo program demo/colornames.rb illustrates these colours.
5109
+ There are more than 150 named colours available in the Color::RGB and
5110
+ Color::RGB::Metallic namespaces. The demo program demo/colornames.rb shows
5111
+ these colours. The colours in Color::RGB used to be part of the Color
5112
+ namespace. If a colour like Color::Black is used, there will be a single
5113
+ warning printed. Future versions of color-tools will see a warning printed on
5114
+ every use (1.4.x) and ultimately the constants will be completely removed
5115
+ (1.5.x or 2.x).
5104
5116
 
5105
5117
  3<Color::RGB>
5106
5118
  This class encapsulates RGB colours and offers some operations on them. Other
@@ -5139,9 +5151,18 @@ fed = Color::RGB.from_html("fed")
5139
5151
  cabbed = Color::RGB.from_html("#cabbed;")
5140
5152
  .endcode }}}
5141
5153
 
5154
+ 4<Color::RGB#==(other)>
5155
+ Compares the other colour to this one. The other colour will be converted to
5156
+ RGB before comparison, so the comparison between a RGB colour and a non-RGB
5157
+ colour will be approximate and based on the other colour�s default #to_rgb
5158
+ conversion. If there is no #to_rgb conversion, this will raise an exception.
5159
+ This will report that two RGB colours are equivalent if all component values
5160
+ are within 1e-4 (0.0001) of each other.
5161
+
5142
5162
  4<Color::RGB#pdf_fill>
5143
5163
  4<Color::RGB#pdf_stroke>
5144
- Renders the colour as a string suitable for PDF colour changes.
5164
+ Renders the colour as a string suitable for PDF colour changes. These two
5165
+ methods will be removed from the color-tools base package in version 2.0.
5145
5166
  .code {{{
5146
5167
  cabbed.pdf_fill
5147
5168
  blue.pdf_stroke
@@ -5161,17 +5182,56 @@ experts strongly suggest that this is a <b>bad</b> idea. CMYK colours
5161
5182
  represent percentages of inks on paper, not mixed colour intensities like
5162
5183
  RGB. The CMYK versions of RGB colours will usually be darker than the
5163
5184
  original RGB.
5185
+
5164
5186
  .code {{{
5165
5187
  cabbed.to_cmyk
5166
5188
  .endcode }}}
5167
5189
 
5190
+ The method used is as follows:
5191
+
5192
+ 5<1. RGB-&lt;CMY>
5193
+ Convert the R, G, and B components to C, M, and Y components.
5194
+ .code {{{
5195
+ c = 1.0 � r
5196
+ m = 1.0 � g
5197
+ y = 1.0 � b
5198
+ .endcode }}}
5199
+
5200
+ 5<2. Minimum Black Calculation>
5201
+ Compute the minimum amount of black (K) required to smooth the colour in
5202
+ inks.
5203
+ .code {{{
5204
+ k = min(c, m, y)
5205
+ .endcode }}}
5206
+
5207
+ 5<3. Undercolour Removal>
5208
+ Perform undercolour removal on the C, M, and Y components of the colours
5209
+ because less of each colour is needed for each bit of black. Also, regenerate
5210
+ the black (K) based on the undercolour removal so that the colour is more
5211
+ accurately represented in ink.
5212
+ .code {{{
5213
+ c = min(1.0, max(0.0, c � UCR(k)))
5214
+ m = min(1.0, max(0.0, m � UCR(k)))
5215
+ y = min(1.0, max(0.0, y � UCR(k)))
5216
+ k = min(1.0, max(0.0, BG(k)))
5217
+ .endcode }}}
5218
+
5219
+ The undercolour removal function and the black generation functions return a
5220
+ value based on the brightness of the RGB colour.
5221
+
5222
+ 4<Color::RGB#to_rgb(ignored = nil)>
5223
+ Returns the existing colour object.
5224
+
5225
+ 4<Color::RGB#to_hsl>
5226
+ Converts the colour to the HSL colour space.
5227
+
5168
5228
  4<Color::RGB#lighten_by(percent)>
5169
- Lightens the RGB hue by the stated percent by mixing the current colour with
5170
- White at the desired opacity.
5229
+ Mix the RGB hue with White so that the RGB hue is the specified percentage of
5230
+ the resulting colour. Strictly speaking, this isn�t a lighten_by operation.
5171
5231
 
5172
5232
  4<Color::RGB#darken_by(percent)>
5173
- Darkens the RGB hue by the stated percent by mixing the current colour with
5174
- Black at the desired opacity.
5233
+ Mix the RGB hue with Black so that the RGB hue is the specified percentage of
5234
+ the resulting colour. Strictly speaking, this isn�t a darken_by operation.
5175
5235
 
5176
5236
  4<Color::RGB#mix_with(mask, opacity)>
5177
5237
  Mixes the mask colour (which must be an RGB object) with the current colour
@@ -5187,10 +5247,42 @@ keys of :y, :i, and :q.
5187
5247
  Returns the perceived brightness value for a colour on a scale of 0 .. 1.
5188
5248
  This is based on the Y (luminosity) value of YIQ colour encoding.
5189
5249
 
5250
+ 4<Color::RGB#to_grayscale>
5251
+ 4<Color::RGB#to_greyscale>
5252
+ Converts the color to a GrayScale colour based on the HSL luminance.
5253
+
5254
+ 4<Color::RGB#adjust_brightness(percent)>
5255
+ Returns a new colour with the brightness adjusted by the specified
5256
+ percentage. Negative percentages will darken the colour; positive percentages
5257
+ will brighten the colour.
5258
+ .code {{{
5259
+ Color::RGB::DarkBlue.adjust_brightness(10)
5260
+ Color::RGB::DarkBlue.adjust_brightness(-10)
5261
+ .endcode }}}
5262
+
5263
+ 4<Color::RGB#adjust_saturation(percent)>
5264
+ Returns a new colour with the saturation adjusted by the specified
5265
+ percentage. Negative percentages will reduce the saturation; positive
5266
+ percentages will increase the saturation.
5267
+ .code {{{
5268
+ Color::RGB::DarkBlue.adjust_saturation(10)
5269
+ Color::RGB::DarkBlue.adjust_saturation(-10)
5270
+ .endcode }}}
5271
+
5272
+ 4<Color::RGB#adjust_hue(percent)>
5273
+ Returns a new colour with the hue adjusted by the specified percentage.
5274
+ Negative percentages will reduce the hue; positive percentages will increase
5275
+ the hue.
5276
+ .code {{{
5277
+ Color::RGB::DarkBlue.adjust_hue(10)
5278
+ Color::RGB::DarkBlue.adjust_hue(-10)
5279
+ .endcode }}}
5280
+
5190
5281
  4<Color::RGB#r, Color::RGB#r=>
5191
5282
  4<Color::RGB#g, Color::RGB#g=>
5192
5283
  4<Color::RGB#b, Color::RGB#b=>
5193
- Read and set the independent components of the RGB colour.
5284
+ Read and set the independent components of the RGB colour. The colour values
5285
+ will be in the range (0..1).
5194
5286
 
5195
5287
  3<Color::CMYK>
5196
5288
  This class encapsulates CMYK colours and offers some operations on them.
@@ -5203,31 +5295,256 @@ black = Color::CMYK.new(0, 0, 0, 100)
5203
5295
  .endcode }}}
5204
5296
 
5205
5297
  4<Color::CMYK.from_fraction(c = 0, m = 0, y = 0, k = 0)>
5206
- Creates a CMYK colour object from fractional values.
5298
+ Creates a CMYK colour object from fractional values (0..1).
5207
5299
  .code {{{
5208
5300
  black = Color::CMYK.new(0, 0, 0, 1)
5209
5301
  .endcode }}}
5210
5302
 
5303
+ 4<Color::CMYK#==(other)>
5304
+ Compares the other colour to this one. The other colour will be converted to
5305
+ CMYK before comparison, so the comparison between a CMYK colour and a
5306
+ non-CMYK colour will be approximate and based on the other colour�s #to_cmyk
5307
+ conversion. If there is no #to_cmyk conversion, this will raise an exception.
5308
+ This will report that two CMYK colours are equivalent if all component values
5309
+ are within 1e-4 (0.0001) of each other.
5310
+
5211
5311
  4<Color::CMYK#pdf_fill>
5212
5312
  4<Color::CMYK#pdf_stroke>
5213
- Renders the colour as a string suitable for PDF colour changes.
5313
+ Renders the colour as a string suitable for PDF colour changes. These two
5314
+ methods will be removed from the color-tools base package in version 2.0.
5214
5315
  .code {{{
5215
5316
  black.pdf_fill
5216
5317
  black.pdf_stroke
5217
5318
  .endcode }}}
5218
5319
 
5219
5320
  4<Color::CMYK#html>
5220
- Presents the colour as a converted RGB HTML and CSS colour string.
5321
+ Present the colour as an RGB HTML/CSS colour string. Note that this will
5322
+ perform a #to_rgb operation using the default conversion formula.
5323
+
5324
+ 4<Color::CMYK#to_rgb(use_adobe_method = false)>
5325
+ Converts the CMYK colour to RGB. Most colour experts strongly suggest that
5326
+ this is not a good idea (some even suggesting that it�s a very bad idea).
5327
+ CMYK represents additive percentages of inks on white paper, whereas RGB
5328
+ represents mixed colour intensities on a black screen.
5329
+
5330
+ However, the colour conversion can be done, and there are two different
5331
+ methods for the conversion that provide slightly different results. Adobe PDF
5332
+ conversions are done with the first form.
5333
+
5334
+ .code {{{
5335
+ # Adobe PDF Display Formula
5336
+ r = 1.0 - min(1.0, c + k)
5337
+ g = 1.0 - min(1.0, m + k)
5338
+ b = 1.0 - min(1.0, y + k)
5339
+
5340
+ # Other
5341
+ r = 1.0 - (c * (1.0 - k) + k)
5342
+ g = 1.0 - (m * (1.0 - k) + k)
5343
+ b = 1.0 - (y * (1.0 - k) + k)
5344
+ .endcode }}}
5221
5345
 
5222
- 4<Color::CMYK#to_rgb>
5223
- Converts the CMYK colour to RGB. See the notes about Color::RGB#to_cmyk for
5224
- cautions.
5346
+ If we have a CMYK colour of [33% 66% 83% 25%], the first method will give an
5347
+ approximate RGB colour of (107, 23, 0) or #6b1700. The second method will
5348
+ give an approximate RGB colour of (128, 65, 33) or #804121. Which is correct?
5349
+ Although the colours may seem to be drastically different in the RGB colour
5350
+ space, they are very similar colours, differing mostly in intensity. The
5351
+ first is a darker, slightly redder brown; the second is a lighter brown.
5352
+
5353
+ Because of this subtlety, both methods are now offered for conversion in
5354
+ color-tools 1.2 or later. The Adobe method is not used by default; to enable
5355
+ it, pass <b>true</b> to #to_rgb.
5356
+
5357
+ Future versions of color-tools may offer other conversion mechanisms that
5358
+ offer greater colour fidelity.
5359
+
5360
+ 4<Color::CMYK#to_grayscale>
5361
+ 4<Color::CMYK#to_greyscale>
5362
+ Converts the CMYK colour to a single greyscale value. There are undoubtedly
5363
+ multiple methods for this conversion, but only a minor variant of the Adobe
5364
+ conversion method will be used:
5365
+
5366
+ .code {{{
5367
+ g = 1.0 - min(1.0, 0.299 * c + 0.587 * m + 0.114 * y + k)
5368
+ .endcode }}}
5369
+
5370
+ This treats the CMY values similarly to YIQ (NTSC) values and then adds the
5371
+ level of black. This is a variant of the Adobe version because it uses the
5372
+ more precise YIQ (NTSC) conversion values for Y (intensity) rather than the
5373
+ approximates provided by Adobe (0.3, 0.59, and 0.11).
5374
+
5375
+ 4<Color::CMYK#to_cmyk>
5376
+ Returns the current CMYK colour object.
5377
+
5378
+ 4<Color::CMYK#to_yiq>
5379
+ 4<Color::CMYK#to_hsl>
5380
+ Converts to RGB and then HSL. Uses only the default RGB conversion method.
5225
5381
 
5226
5382
  4<Color::CMYK#c, Color::CMYK#c=>
5227
5383
  4<Color::CMYK#m, Color::CMYK#m=>
5228
5384
  4<Color::CMYK#y, Color::CMYK#y=>
5229
5385
  4<Color::CMYK#k, Color::CMYK#k=>
5230
- Read and set the independent components of the CMYK colour.
5386
+ Read and set the independent components of the CMYK colour. The colour values
5387
+ will be in the range (0..1).
5388
+
5389
+ 3<Color::GrayScale>
5390
+ Also know as Color::GreyScale, this is to provide colours representing
5391
+ continuous shades of grey.
5392
+
5393
+ 4<Color::GrayScale.from_fraction(g = 0)>
5394
+ Creates a greyscale colour object from fractional (0..1).
5395
+ .code {{{
5396
+ Color::GreyScale.from_fraction(0.5)
5397
+ .endcode }}}
5398
+
5399
+ 4<Color::GrayScale.new(g = 0)
5400
+ Creates a greyscale colour object from percentages (0..100).
5401
+ .code {{{
5402
+ Color::GrayScale.new(50)
5403
+ .endcode }}}
5404
+
5405
+ 4<Color::GrayScale#==(other)>
5406
+ Compares the other colour to this one. The other colour will be converted to
5407
+ GreyScale before comparison, so the comparison between a GreyScale colour and
5408
+ a non-GreyScale colour will be approximate and based on the other colour�s
5409
+ #to_greyscale conversion. If there is no #to_greyscale conversion, this will
5410
+ raise an exception. This will report that two GreyScale values are equivalent
5411
+ if they are within 1e-4 (0.0001) of each other.
5412
+
5413
+ 4<Color::GrayScale#pdf_fill>
5414
+ 4<Color::GrayScale#pdf_stroke>
5415
+ Present the colour as a string suitable for PDF colour changes with
5416
+ DeviceGray. These two methods will be removed from the color-tools base
5417
+ package in version 2.0.
5418
+
5419
+ 4<Color::GrayScale#html>
5420
+ Presents the colour as an RGB HTML/CSS colour string.
5421
+
5422
+ 4<Color::GrayScale#to_cmyk>
5423
+ Convert the greyscale colour to CMYK.
5424
+
5425
+ 4<Color::GrayScale#to_rgb(ignored = true)>
5426
+ Convert the greyscale colour to RGB.
5427
+
5428
+ 4<Color::GrayScale#to_grayscale>
5429
+ 4<Color::GrayScale#to_greyscale>
5430
+ Returns the current greyscale colour object.
5431
+
5432
+ 4<Color::GrayScale#lighten_by>
5433
+ Lightens the greyscale colour by the stated percent.
5434
+
5435
+ 4<Color::GrayScale#darken_by>
5436
+ Darkens the greyscale colour by the stated percent.
5437
+
5438
+ 4<Color::GrayScale#to_yiq>
5439
+ Returns the YIQ (NTSC) colour encoding of the greyscale value. This is an
5440
+ approximation, as the values for I and Q are calculated by treating the
5441
+ greyscale value as an RGB value. The Y (intensity or brightness) value is the
5442
+ same as the greyscale value.
5443
+
5444
+ 4<Color::GrayScale#to_hsl>
5445
+ Returns the HSL colour encoding of the greyscale value.
5446
+
5447
+ 4<Color::GrayScale#brightness>
5448
+ Returns the brightness value for this greyscale value; this is the percentage
5449
+ of grey.
5450
+
5451
+ 4<Color::GrayScale#g, Color::GrayScale#g=>
5452
+ Read and set the grayscale value. The colour values will be in the range
5453
+ (0..1).
5454
+
5455
+ 3<Color::HSL>
5456
+ An HSL colour object. Internally, the hue (#h), saturation (#s), and
5457
+ luminosity (#l) values are dealt with as fractional values in the range
5458
+ (0..1).
5459
+
5460
+ 4<Color::HSL.from_fraction(h = 0.0, s = 0.0, l = 0.0)>
5461
+ Creates an HSL colour object from fractional values 0..1.
5462
+
5463
+ 4<Color::HSL.new(h = 0, s = 0, l = 0)>
5464
+ Creates an HSL colour object from the standard values of degrees and
5465
+ percentages (e.g., 145�, 30%, 50%).
5466
+
5467
+ 4<Color::HSL#==(other)>
5468
+ Compares the other colour to this one. The other colour will be converted to
5469
+ HSL before comparison, so the comparison between a HSL colour and a non-HSL
5470
+ colour will be approximate and based on the other colour�s #to_hsl
5471
+ conversion. If there is no #to_hsl conversion, this will raise an exception.
5472
+ This will report that two HSL values are equivalent if all component values
5473
+ are within 1e-4 (0.0001) of each other.
5474
+
5475
+ 4<Color::HSL#html>
5476
+ Present the colour as an HTML/CSS colour string.
5477
+
5478
+ 4<Color::HSL#to_rgb(ignored = nil)>
5479
+ Converting to HSL as adapted from Foley and Van-Dam from
5480
+ <c:alink
5481
+ uri="http://www.bobpowell.net/RGBHSB.htm">http://www.bobpowell.net/RGBHSB.htm</c:alink>.
5482
+
5483
+ 4<Color::HSL#to_yiq>
5484
+ 4<Color::HSL#to_cmyk>
5485
+ Converts to RGB and then YIQ and CMYK, respectively.
5486
+
5487
+ 4<Color::HSL#brightness>
5488
+ Returns the luminosity (#l) of the colour.
5489
+
5490
+ 4<Color::HSL#to_greyscale>
5491
+ 4<Color::HSL#to_grayscale>
5492
+ Converts the HSL colour to Color::GrayScale.
5493
+
5494
+ 4<Color::HSL#h, Color::HSL#h=>
5495
+ 4<Color::HSL#s, Color::HSL#s=>
5496
+ 4<Color::HSL#l, Color::HSL#l=>
5497
+ Read and set the independent components of the HSL colour. The colour values
5498
+ will be in the range (0..1).
5499
+
5500
+ 3<Color::YIQ>
5501
+ A colour object representing YIQ (NTSC) colour encoding.
5502
+
5503
+ 4<Color::YIQ.from_fraction(y = 0.0, i = 0.0, q = 0.0)>
5504
+ Creates a YIQ colour object from fractional values (0..1).
5505
+ .code {{{
5506
+ Color::YIQ.new(0.3, 0.2, 0.1)
5507
+ .endcode }}}
5508
+
5509
+ 4<Color::YIQ.new(y = 0, i = 0, q = 0)>
5510
+ Creates a YIQ colour object from percentages (0..100).
5511
+ .code {{{
5512
+ Color::YIQ.new(10, 20, 30)
5513
+ .endcode }}}
5514
+
5515
+ 4<Color::YIQ#==(other)>
5516
+ Compares the other colour to this one. The other colour will be converted to
5517
+ YIQ before comparison, so the comparison between a YIQ colour and a non-YIQ
5518
+ colour will be approximate and based on the other colour�s #to_yiq
5519
+ conversion. If there is no #to_yiq conversion, this will raise an exception.
5520
+ This will report that two YIQ values are equivalent if all component colours
5521
+ are within 1e-4 (0.0001) of each other.
5522
+
5523
+ 4<Color::YIQ#to_yiq>
5524
+ Returns the current YIQ colour.
5525
+
5526
+ 4<Color::YIQ#brightness>
5527
+ Returns the brightness (#y) of the current colour.
5528
+
5529
+ 4<Color::YIQ#to_grayscale>
5530
+ 4<Color::YIQ#to_greyscale>
5531
+ Converts the current YIQ colour to Color::GrayScale based on the #y version.
5532
+
5533
+ 4<Color::YIQ#y, Color::YIQ#y=>
5534
+ 4<Color::YIQ#i, Color::YIQ#i=>
5535
+ 4<Coqor::YIQ#q, Coqor::YIQ#q=>
5536
+ Read and set the independent components of the HSL colour. The colour values
5537
+ will be in the range (0..1).
5538
+
5539
+ 3<Color::CSS>
5540
+ This namespace contains some CSS colour names.
5541
+
5542
+ 4<Color::CSS[name]>
5543
+ Returns the RGB colour for name or +nil+ if the name is not valid. This is
5544
+ based on the constants from the Color::RGB namespace.
5545
+
5546
+ Future versions of this will be extended to recognise other valid CSS colour
5547
+ specifications, including <b>hsl()</b>, <b>hsv()</b>, and <b>rgb()</b>.
5231
5548
 
5232
5549
  3<Color::Palette::MonoContrast>
5233
5550
  Generates a monochromatic constrasting colour palette for background and
@@ -5265,15 +5582,18 @@ values.
5265
5582
  .endblist }}}
5266
5583
 
5267
5584
  4<Color::Palette::MonoContrast#minimum_brightness_diff>
5268
- The minimum brightness difference between the background and the foreground.
5269
- This ensures that the foreground colours will have acceptable contrast ratios
5270
- to the background colours. Changing this value will regenerate the palette.
5271
- The default value for this is about 0.49 (125 / 255).
5585
+ 4<Color::Palette::MonoContrast#minimum_brightness_diff=>
5586
+ The minimum brightness difference between the background and the foreground,
5587
+ and must be between (0..1). Setting this value will regenerate the palette
5588
+ based on the base colours. The default value for this is 125 / 255.0. If this
5589
+ value is set to <b>nil</b>, it will be restored to the default.
5272
5590
 
5273
5591
  4<Color::Palette::MonoContrast#minimum_color_diff>
5274
- The minimum colour difference between the background and the foreground.
5275
- Changing this value will regenerate the palette. The default value for this
5276
- is about 0.65 (500 / 765).
5592
+ 4<Color::Palette::MonoContrast#minimum_color_diff=>
5593
+ The minimum colour difference between the background and the foreground, and
5594
+ must be between 0..3. Setting this value will regenerate the palette based on
5595
+ the base colours. The default value for this is about 1.96 (500 / 255). If
5596
+ this value is set to <b>nil</b>, it will be restored to the default.
5277
5597
 
5278
5598
  4<Color::Palette::MonoContrast#regenerate(background, foreground = nil)
5279
5599
  Regenerates the palette based on new background and foreground values. If
@@ -5298,28 +5618,50 @@ contrast</c:alink> suggest that this value be at least approximately 0.49
5298
5618
  Returns the contrast between to colours, a decimal value between 0 and 3.
5299
5619
  Accessibility guidelines from the W3C for <c:alink
5300
5620
  uri="http://www.w3.org/TR/AERT#color-contrast">colour contrast</c:alink>
5301
- suggest that this value be at least approximately 1.96 (500 / 765.0) for
5621
+ suggest that this value be at least approximately 1.96 (500 / 255.0) for
5302
5622
  proper contrast.
5303
5623
 
5304
- 3<Color::Palette::GIMP>
5305
- This class will read a GIMP palette file and make the colours in it
5306
- accessible by name. If one or more colours have the same name, <b>all</b>
5307
- colours with that name will be discarded.
5624
+ 3<Color::Palette::Gimp>
5625
+ A class that can read a Gimp (GNU Image Manipulation Program) palette file
5626
+ and provide a Hash-like interface to the contents. Gimp colour palettes are
5627
+ RGB values only.
5628
+
5629
+ Because two or more entries in a Gimp palette may have the same name, all
5630
+ named entries are returned as an array.
5631
+
5632
+ .code {{{
5633
+ pal = Color::Palette::Gimp.from_file(my_gimp_palette)
5634
+ pal[0] => Color::RGB<...>
5635
+ pal["white"] => [ Color::RGB<...> ]
5636
+ pal["unknown"] => [ Color::RGB<...>, Color::RGB<...>, ... ]
5637
+ .endcode }}}
5638
+
5639
+ Gimp Palettes are always indexable by insertion order (an integer key).
5308
5640
 
5309
- 4<Color::Palette::GIMP.new(palette)>
5310
- Iterates through the data of the GIMP palette and interprets it.
5641
+ 4<Color::Palette::Gimp.new(palette)>
5642
+ Iterates through the data of the Gimp palette and interprets it.
5311
5643
 
5312
- 4<Color::Palette::GIMP.from_file(filename)>
5644
+ 4<Color::Palette::Gimp.from_file(filename)>
5313
5645
  Reads the palette data from the filename.
5314
5646
 
5315
- 4<Color::Palette::GIMP.from_io(io)>
5647
+ 4<Color::Palette::Gimp.from_io(io)>
5316
5648
  Reads the palette data from the IO or IO-like object (depends on #read).
5317
5649
 
5318
- 4<Color::Palette::GIMP#[](key)>
5319
- Access the colours by name.
5650
+ 4<Color::Palette::Gimp#[](key)>
5651
+ Access the colours by name or numeric index.
5320
5652
 
5321
- 4<Color::Palette::GIMP#each>
5322
- Loops through the palette�s colours.
5653
+ 4<Color::Palette::Gimp#each>
5654
+ Loops through the palette�s colours, yielding each colour in turn.
5655
+
5656
+ 4<Color::Palette::Gimp#each_name>
5657
+ Loops through the named colours, yielding the colour name and an Array of
5658
+ colours.
5659
+
5660
+ 4<Color::Palette::Gimp#valid?>
5661
+ Returns true if this is believed to be a valid GIMP palette.
5662
+
5663
+ 4<Color::Palette::Gimp#name>
5664
+ Returns the name of the GIMP palette.
5323
5665
  .newpage
5324
5666
  1<PDF::Writer Demos>
5325
5667
 
@@ -5391,6 +5733,17 @@ Unicode support
5391
5733
  .newpage
5392
5734
  1<Revision History>
5393
5735
 
5736
+ 2<PDF::Writer 1.1.2: August 25, 2005>
5737
+ .blist {{{
5738
+ Thomas Gantner <thomas.gantner@gmx.net> found a problem with the interpretation of the placement of page numbers and provided a patch. Thanks!
5739
+ Thomas also reported a problem with an inability to place page numbering on the first page of a document, as well as strange results from not providing a starting page number. This has been fixed. Also reported as #2204.
5740
+ Modified PDF::Writer requirements to require color-tools version 1.3.0 or later. This necessitates that Color constants be changed to Color::RGB constants.
5741
+ Updated supporting library documentation to include information on color-tools version 1.3.
5742
+ Fixed a bug with Graphics#transform_matrix truncating one of the transform parameters.
5743
+ Applied a fix to PDF::SimpleTable submitted by Mike Leddy in #2129 on the RubyForge tracker.
5744
+ Applied a partial fix for PNG with index-transparency provided by Marc Vleugels in #2245 on the RubyForge tracker. NOTE: This does not solve the transparency problem; at this point, PDF::Writer cannot be said to support PNGs with transparency. This will be fixed in a later version of PDF::Writer.
5745
+ .endblist }}}
5746
+
5394
5747
  2<Version 1.1.1: July 1, 2005>
5395
5748
  .blist {{{
5396
5749
  Fixed the packaging process; the .tar.gz files will no longer corrupt the images.
@@ -5602,6 +5955,6 @@ pdf.stop_page_numbering(true, :current)
5602
5955
  # Licensed under a MIT-style licence. See LICENCE in the main distribution
5603
5956
  # for full licensing information.
5604
5957
  #
5605
- # $Id: manual.pwd,v 1.51 2005/07/01 16:48:26 austin Exp $
5958
+ # $Id: manual.pwd,v 1.51.2.2 2005/08/25 03:43:59 austin Exp $
5606
5959
  # vim: sts=2 sw=2 ts=4 et ai tw=77 foldmethod=marker foldcolumn=2
5607
5960
  #++