paperback 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/workflows/tests.yml +46 -0
- data/.rubocop-disables.yml +26 -12
- data/CHANGELOG.md +21 -0
- data/README.md +27 -6
- data/bin/paperback +4 -0
- data/lib/paperback/cli.rb +38 -2
- data/lib/paperback/document.rb +134 -17
- data/lib/paperback/preparer.rb +107 -29
- data/lib/paperback/version.rb +2 -1
- data/lib/paperback.rb +12 -0
- data/paperback.gemspec +10 -7
- data/sorbet/config +3 -0
- data/sorbet/rbi/annotations/rainbow.rbi +269 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
- data/sorbet/rbi/gems/chunky_png@1.4.0.rbi +4498 -0
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +3426 -0
- data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +272 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
- data/sorbet/rbi/gems/parallel@1.22.1.rbi +277 -0
- data/sorbet/rbi/gems/parser@3.2.0.0.rbi +6963 -0
- data/sorbet/rbi/gems/pdf-core@0.4.0.rbi +1682 -0
- data/sorbet/rbi/gems/prawn@1.3.0.rbi +5567 -0
- data/sorbet/rbi/gems/pry@0.14.1.rbi +9990 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +408 -0
- data/sorbet/rbi/gems/rake@13.0.6.rbi +3023 -0
- data/sorbet/rbi/gems/rbi@0.0.16.rbi +3008 -0
- data/sorbet/rbi/gems/regexp_parser@2.6.1.rbi +3481 -0
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +4717 -0
- data/sorbet/rbi/gems/rqrcode@0.10.1.rbi +617 -0
- data/sorbet/rbi/gems/rspec-core@3.12.0.rbi +10791 -0
- data/sorbet/rbi/gems/rspec-expectations@3.12.1.rbi +8106 -0
- data/sorbet/rbi/gems/rspec-mocks@3.12.1.rbi +5305 -0
- data/sorbet/rbi/gems/rspec-support@3.12.0.rbi +1617 -0
- data/sorbet/rbi/gems/rspec@3.12.0.rbi +88 -0
- data/sorbet/rbi/gems/rubocop-ast@1.24.1.rbi +6617 -0
- data/sorbet/rbi/gems/rubocop@0.93.1.rbi +40848 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +1234 -0
- data/sorbet/rbi/gems/sixword@0.4.0.rbi +536 -0
- data/sorbet/rbi/gems/spoom@1.1.15.rbi +2383 -0
- data/sorbet/rbi/gems/subprocess@1.5.6.rbi +391 -0
- data/sorbet/rbi/gems/tapioca@0.10.5.rbi +3207 -0
- data/sorbet/rbi/gems/thor@1.2.1.rbi +3956 -0
- data/sorbet/rbi/gems/ttfunk@1.4.0.rbi +1951 -0
- data/sorbet/rbi/gems/unicode-display_width@1.8.0.rbi +40 -0
- data/sorbet/rbi/gems/unparser@0.6.7.rbi +4524 -0
- data/sorbet/rbi/gems/webrick@1.7.0.rbi +2555 -0
- data/sorbet/rbi/gems/yard-sorbet@0.8.0.rbi +441 -0
- data/sorbet/rbi/gems/yard@0.9.28.rbi +17816 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +4 -0
- data/spec/functional/paperback/cli_spec.rb +195 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/paperback_spec.rb +1 -0
- metadata +91 -7
@@ -0,0 +1,4498 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `chunky_png` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem chunky_png`.
|
6
|
+
|
7
|
+
# ChunkyPNG - the pure ruby library to access PNG files.
|
8
|
+
#
|
9
|
+
# The ChunkyPNG module defines some constants that are used in the
|
10
|
+
# PNG specification, specifies some exception classes, and serves as
|
11
|
+
# a namespace for all the other modules and classes in this library.
|
12
|
+
#
|
13
|
+
# {ChunkyPNG::Image}:: class to represent PNG images, including metadata.
|
14
|
+
# {ChunkyPNG::Canvas}:: class to represent the image's canvas.
|
15
|
+
# {ChunkyPNG::Color}:: module to work with color values.
|
16
|
+
# {ChunkyPNG::Palette}:: represents the palette of colors used on a {ChunkyPNG::Canvas}.
|
17
|
+
# {ChunkyPNG::Datastream}:: represents the internal structure of a PNG {ChunkyPNG::Image}.
|
18
|
+
# {ChunkyPNG::Color}:: represents one chunk of data within a {ChunkyPNG::Datastream}.
|
19
|
+
# {ChunkyPNG::Point}:: geometry helper class representing a 2-dimensional point.
|
20
|
+
# {ChunkyPNG::Dimension}:: geometry helper class representing a dimension (i.e. width x height).
|
21
|
+
# {ChunkyPNG::Vector}:: geometry helper class representing a series of points.
|
22
|
+
#
|
23
|
+
# @author Willem van Bergen
|
24
|
+
#
|
25
|
+
# source://chunky_png//lib/chunky_png.rb#25
|
26
|
+
module ChunkyPNG
|
27
|
+
class << self
|
28
|
+
# Factory method to return a color value, based on the arguments given.
|
29
|
+
#
|
30
|
+
# @overload Color
|
31
|
+
# @overload Color
|
32
|
+
# @overload Color
|
33
|
+
# @overload Color
|
34
|
+
# @overload Color
|
35
|
+
# @raise [ArgumentError] if the arguments weren't understood as a color.
|
36
|
+
# @return [Integer] The determined color value as RGBA integer.
|
37
|
+
# @see ChunkyPNG::Color
|
38
|
+
# @see ChunkyPNG::Color.parse
|
39
|
+
#
|
40
|
+
# source://chunky_png//lib/chunky_png/color.rb#33
|
41
|
+
def Color(*args); end
|
42
|
+
|
43
|
+
# Creates a {ChunkyPNG::Dimension} instance using arguments that can be interpreted
|
44
|
+
# as width and height.
|
45
|
+
#
|
46
|
+
# @overload Dimension
|
47
|
+
# @overload Dimension
|
48
|
+
# @overload Dimension
|
49
|
+
# @overload Dimension
|
50
|
+
# @raise [ArgumentError] If the argument(s) given where not understood as a dimension.
|
51
|
+
# @return [ChunkyPNG::Dimension] The dimension created by this factory method.
|
52
|
+
# @see ChunkyPNG::Dimension
|
53
|
+
#
|
54
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#31
|
55
|
+
def Dimension(*args); end
|
56
|
+
|
57
|
+
# Factory method to create {ChunkyPNG::Point} instances.
|
58
|
+
#
|
59
|
+
# This method tries to be as flexible as possible with regards to the given input: besides
|
60
|
+
# explicit coordinates, this method also accepts arrays, hashes, strings, {ChunkyPNG::Dimension}
|
61
|
+
# instances and anything that responds to <tt>:x</tt> and <tt>:y</tt>.
|
62
|
+
#
|
63
|
+
# @overload Point
|
64
|
+
# @overload Point
|
65
|
+
# @overload Point
|
66
|
+
# @overload Point
|
67
|
+
# @raise [ArgumentError] if the arguments weren't understood.
|
68
|
+
# @return [ChunkyPNG::Point]
|
69
|
+
# @see ChunkyPNG::Point
|
70
|
+
#
|
71
|
+
# source://chunky_png//lib/chunky_png/point.rb#32
|
72
|
+
def Point(*args); end
|
73
|
+
|
74
|
+
# Factory method for {ChunkyPNG::Vector} instances.
|
75
|
+
#
|
76
|
+
# @overload Vector
|
77
|
+
# @overload Vector
|
78
|
+
# @overload Vector
|
79
|
+
# @raise [ArgumentError] If the given arguments could not be understood as a vector.
|
80
|
+
# @return [ChunkyPNG::Vector] The vector created by this factory method.
|
81
|
+
# @see ChunkyPNG::Vector
|
82
|
+
#
|
83
|
+
# source://chunky_png//lib/chunky_png/vector.rb#20
|
84
|
+
def Vector(*args); end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#40
|
89
|
+
def build_dimension_from_object(source); end
|
90
|
+
|
91
|
+
# source://chunky_png//lib/chunky_png/point.rb#41
|
92
|
+
def build_point_from_object(source); end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# Indicates that the PNG image uses grayscale colors, i.e. only a
|
97
|
+
# single teint channel.
|
98
|
+
#
|
99
|
+
# @private
|
100
|
+
#
|
101
|
+
# source://chunky_png//lib/chunky_png.rb#33
|
102
|
+
ChunkyPNG::COLOR_GRAYSCALE = T.let(T.unsafe(nil), Integer)
|
103
|
+
|
104
|
+
# Indicates that the PNG image uses grayscale colors with opacity, i.e.
|
105
|
+
# a teint channel with an alpha channel.
|
106
|
+
#
|
107
|
+
# @private
|
108
|
+
#
|
109
|
+
# source://chunky_png//lib/chunky_png.rb#48
|
110
|
+
ChunkyPNG::COLOR_GRAYSCALE_ALPHA = T.let(T.unsafe(nil), Integer)
|
111
|
+
|
112
|
+
# Indicates that the PNG image uses indexed colors, where the values
|
113
|
+
# point to colors defined on a palette.
|
114
|
+
#
|
115
|
+
# @private
|
116
|
+
#
|
117
|
+
# source://chunky_png//lib/chunky_png.rb#43
|
118
|
+
ChunkyPNG::COLOR_INDEXED = T.let(T.unsafe(nil), Integer)
|
119
|
+
|
120
|
+
# Indicates that the PNG image uses true color, composed of a red
|
121
|
+
# green and blue channel.
|
122
|
+
#
|
123
|
+
# @private
|
124
|
+
#
|
125
|
+
# source://chunky_png//lib/chunky_png.rb#38
|
126
|
+
ChunkyPNG::COLOR_TRUECOLOR = T.let(T.unsafe(nil), Integer)
|
127
|
+
|
128
|
+
# Indicates that the PNG image uses true color with opacity, composed of
|
129
|
+
# a red, green and blue channel, and an alpha value.
|
130
|
+
#
|
131
|
+
# @private
|
132
|
+
#
|
133
|
+
# source://chunky_png//lib/chunky_png.rb#53
|
134
|
+
ChunkyPNG::COLOR_TRUECOLOR_ALPHA = T.let(T.unsafe(nil), Integer)
|
135
|
+
|
136
|
+
# Indicates that the PNG chunk content is compressed
|
137
|
+
# flag used in iTXt chunk
|
138
|
+
#
|
139
|
+
# @private
|
140
|
+
#
|
141
|
+
# source://chunky_png//lib/chunky_png.rb#68
|
142
|
+
ChunkyPNG::COMPRESSED_CONTENT = T.let(T.unsafe(nil), Integer)
|
143
|
+
|
144
|
+
# Indicates that the PNG specification's default compression
|
145
|
+
# method is used (Zlib/Deflate)
|
146
|
+
#
|
147
|
+
# @private
|
148
|
+
#
|
149
|
+
# source://chunky_png//lib/chunky_png.rb#58
|
150
|
+
ChunkyPNG::COMPRESSION_DEFAULT = T.let(T.unsafe(nil), Integer)
|
151
|
+
|
152
|
+
# Exception that is raised if the CRC check for a block fails
|
153
|
+
#
|
154
|
+
# source://chunky_png//lib/chunky_png.rb#123
|
155
|
+
class ChunkyPNG::CRCMismatch < ::ChunkyPNG::Exception; end
|
156
|
+
|
157
|
+
# The ChunkyPNG::Canvas class represents a raster image as a matrix of
|
158
|
+
# pixels.
|
159
|
+
#
|
160
|
+
# This class supports loading a Canvas from a PNG datastream, and creating a
|
161
|
+
# {ChunkyPNG::Datastream PNG datastream} based on this matrix. ChunkyPNG
|
162
|
+
# only supports 8-bit color depth, otherwise all of the PNG format's
|
163
|
+
# variations are supported for both reading and writing.
|
164
|
+
#
|
165
|
+
# This class offers per-pixel access to the matrix by using x,y coordinates.
|
166
|
+
# It uses a palette (see {ChunkyPNG::Palette}) to keep track of the
|
167
|
+
# different colors used in this matrix.
|
168
|
+
#
|
169
|
+
# The pixels in the canvas are stored as 4-byte fixnum, representing 32-bit
|
170
|
+
# RGBA colors (8 bit per channel). The module {ChunkyPNG::Color} is provided
|
171
|
+
# to work more easily with these number as color values.
|
172
|
+
#
|
173
|
+
# The module {ChunkyPNG::Canvas::Operations} is imported for operations on
|
174
|
+
# the whole canvas, like cropping and alpha compositing. Simple drawing
|
175
|
+
# functions are imported from the {ChunkyPNG::Canvas::Drawing} module.
|
176
|
+
#
|
177
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#4
|
178
|
+
class ChunkyPNG::Canvas
|
179
|
+
include ::ChunkyPNG::Canvas::PNGEncoding
|
180
|
+
include ::ChunkyPNG::Canvas::StreamExporting
|
181
|
+
include ::ChunkyPNG::Canvas::DataUrlExporting
|
182
|
+
include ::ChunkyPNG::Canvas::Operations
|
183
|
+
include ::ChunkyPNG::Canvas::Drawing
|
184
|
+
include ::ChunkyPNG::Canvas::Resampling
|
185
|
+
include ::ChunkyPNG::Canvas::Masking
|
186
|
+
extend ::ChunkyPNG::Canvas::PNGDecoding
|
187
|
+
extend ::ChunkyPNG::Canvas::Adam7Interlacing
|
188
|
+
extend ::ChunkyPNG::Canvas::StreamImporting
|
189
|
+
extend ::ChunkyPNG::Canvas::DataUrlImporting
|
190
|
+
|
191
|
+
# Initializes a new Canvas instance.
|
192
|
+
#
|
193
|
+
# @overload initialize
|
194
|
+
# @overload initialize
|
195
|
+
# @return [Canvas] a new instance of Canvas
|
196
|
+
#
|
197
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#79
|
198
|
+
def initialize(width, height, initial = T.unsafe(nil)); end
|
199
|
+
|
200
|
+
# Equality check to compare this canvas with other matrices.
|
201
|
+
#
|
202
|
+
# @param other The object to compare this Matrix to.
|
203
|
+
# @return [true, false] True if the size and pixel values of the other
|
204
|
+
# canvas are exactly the same as this canvas's size and pixel values.
|
205
|
+
#
|
206
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#277
|
207
|
+
def ==(other); end
|
208
|
+
|
209
|
+
# Returns a single pixel's color value from this canvas.
|
210
|
+
#
|
211
|
+
# @param x [Integer] The x-coordinate of the pixel (column)
|
212
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
213
|
+
# @raise [ChunkyPNG::OutOfBounds] when the coordinates are outside of the
|
214
|
+
# image's dimensions.
|
215
|
+
# @return [Integer] The current color value at the provided coordinates.
|
216
|
+
# @see #get_pixel
|
217
|
+
#
|
218
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#174
|
219
|
+
def [](x, y); end
|
220
|
+
|
221
|
+
# Replaces a single pixel in this canvas.
|
222
|
+
#
|
223
|
+
# @param x [Integer] The x-coordinate of the pixel (column)
|
224
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
225
|
+
# @param color [Integer] The new color for the provided coordinates.
|
226
|
+
# @raise [ChunkyPNG::OutOfBounds] when the coordinates are outside of the
|
227
|
+
# image's dimensions.
|
228
|
+
# @return [Integer] The new color value for this pixel, i.e.
|
229
|
+
# <tt>color</tt>.
|
230
|
+
# @see #set_pixel
|
231
|
+
#
|
232
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#135
|
233
|
+
def []=(x, y, color); end
|
234
|
+
|
235
|
+
# Returns the area of this canvas in number of pixels.
|
236
|
+
#
|
237
|
+
# @return [Integer] The number of pixels in this canvas
|
238
|
+
#
|
239
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#122
|
240
|
+
def area; end
|
241
|
+
|
242
|
+
# Returns an extracted column as vector of pixels.
|
243
|
+
#
|
244
|
+
# @param x [Integer] The 0-based column index.
|
245
|
+
# @return [Array<Integer>] The vector of pixels in the requested column.
|
246
|
+
#
|
247
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#200
|
248
|
+
def column(x); end
|
249
|
+
|
250
|
+
# Returns the dimension (width x height) for this canvas.
|
251
|
+
#
|
252
|
+
# @return [ChunkyPNG::Dimension] A dimension instance with the width and
|
253
|
+
# height set for this canvas.
|
254
|
+
#
|
255
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#116
|
256
|
+
def dimension; end
|
257
|
+
|
258
|
+
# Equality check to compare this canvas with other matrices.
|
259
|
+
#
|
260
|
+
# @param other The object to compare this Matrix to.
|
261
|
+
# @return [true, false] True if the size and pixel values of the other
|
262
|
+
# canvas are exactly the same as this canvas's size and pixel values.
|
263
|
+
#
|
264
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#277
|
265
|
+
def eql?(other); end
|
266
|
+
|
267
|
+
# Returns a single pixel from this canvas, without checking bounds. The
|
268
|
+
# return value for this method is undefined if the coordinates are out of
|
269
|
+
# bounds.
|
270
|
+
#
|
271
|
+
# @param x [Integer] The x-coordinate of the pixel (column)
|
272
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
273
|
+
# @return [Integer] The current pixel at the provided coordinates.
|
274
|
+
#
|
275
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#185
|
276
|
+
def get_pixel(x, y); end
|
277
|
+
|
278
|
+
# @return [Integer] The number of rows in this canvas
|
279
|
+
#
|
280
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#55
|
281
|
+
def height; end
|
282
|
+
|
283
|
+
# Checks whether the given coordinates are in the range of the canvas
|
284
|
+
#
|
285
|
+
# @param point_like [ChunkyPNG::Point, Array, Hash, String] The point to
|
286
|
+
# check.
|
287
|
+
# @return [true, false] True if the x and y coordinates of the point are
|
288
|
+
# within the limits of this canvas.
|
289
|
+
# @see ChunkyPNG.Point
|
290
|
+
#
|
291
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#233
|
292
|
+
def include?(*point_like); end
|
293
|
+
|
294
|
+
# Checks whether the given coordinates are in the range of the canvas
|
295
|
+
#
|
296
|
+
# @param point_like [ChunkyPNG::Point, Array, Hash, String] The point to
|
297
|
+
# check.
|
298
|
+
# @return [true, false] True if the x and y coordinates of the point are
|
299
|
+
# within the limits of this canvas.
|
300
|
+
# @see ChunkyPNG.Point
|
301
|
+
#
|
302
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#233
|
303
|
+
def include_point?(*point_like); end
|
304
|
+
|
305
|
+
# Checks whether the given x-coordinate is in the range of the canvas
|
306
|
+
#
|
307
|
+
# @param x [Integer] The y-coordinate of the pixel (column)
|
308
|
+
# @return [true, false] True if the x-coordinate is in the range of this
|
309
|
+
# canvas.
|
310
|
+
#
|
311
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#262
|
312
|
+
def include_x?(x); end
|
313
|
+
|
314
|
+
# Checks whether the given x- and y-coordinate are in the range of the
|
315
|
+
# canvas
|
316
|
+
#
|
317
|
+
# @param x [Integer] The x-coordinate of the pixel (column)
|
318
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
319
|
+
# @return [true, false] True if the x- and y-coordinate is in the range of
|
320
|
+
# this canvas.
|
321
|
+
#
|
322
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#246
|
323
|
+
def include_xy?(x, y); end
|
324
|
+
|
325
|
+
# Checks whether the given y-coordinate is in the range of the canvas
|
326
|
+
#
|
327
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
328
|
+
# @return [true, false] True if the y-coordinate is in the range of this
|
329
|
+
# canvas.
|
330
|
+
#
|
331
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#254
|
332
|
+
def include_y?(y); end
|
333
|
+
|
334
|
+
# Alternative implementation of the inspect method.
|
335
|
+
#
|
336
|
+
# @private
|
337
|
+
# @return [String] A nicely formatted string representation of this canvas.
|
338
|
+
#
|
339
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#299
|
340
|
+
def inspect; end
|
341
|
+
|
342
|
+
# Returns the palette used for this canvas.
|
343
|
+
#
|
344
|
+
# @return [ChunkyPNG::Palette] A palette which contains all the colors that
|
345
|
+
# are being used for this image.
|
346
|
+
#
|
347
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#269
|
348
|
+
def palette; end
|
349
|
+
|
350
|
+
# @return [Array<ChunkyPNG::Color>] The list of pixels in this canvas.
|
351
|
+
# This array always should have +width * height+ elements.
|
352
|
+
#
|
353
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#59
|
354
|
+
def pixels; end
|
355
|
+
|
356
|
+
# Replaces a column of pixels on this canvas.
|
357
|
+
#
|
358
|
+
# @param x [Integer] The 0-based column index.
|
359
|
+
# @param vector [Array<Integer>] The vector of pixels to replace the column
|
360
|
+
# with.
|
361
|
+
# @return [void]
|
362
|
+
#
|
363
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#220
|
364
|
+
def replace_column!(x, vector); end
|
365
|
+
|
366
|
+
# Replaces a row of pixels on this canvas.
|
367
|
+
#
|
368
|
+
# @param y [Integer] The 0-based row index.
|
369
|
+
# @param vector [Array<Integer>] The vector of pixels to replace the row
|
370
|
+
# with.
|
371
|
+
# @return [void]
|
372
|
+
#
|
373
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#210
|
374
|
+
def replace_row!(y, vector); end
|
375
|
+
|
376
|
+
# Returns an extracted row as vector of pixels
|
377
|
+
#
|
378
|
+
# @param y [Integer] The 0-based row index
|
379
|
+
# @return [Array<Integer>] The vector of pixels in the requested row
|
380
|
+
#
|
381
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#192
|
382
|
+
def row(y); end
|
383
|
+
|
384
|
+
# Replaces a single pixel in this canvas, without bounds checking.
|
385
|
+
#
|
386
|
+
# This method return value and effects are undefined for coordinates
|
387
|
+
# out of bounds of the canvas.
|
388
|
+
#
|
389
|
+
# @param x [Integer] The x-coordinate of the pixel (column)
|
390
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
391
|
+
# @param color [Integer] The new color for the provided coordinates.
|
392
|
+
# @return [Integer] The new color value for this pixel, i.e.
|
393
|
+
# <tt>color</tt>.
|
394
|
+
#
|
395
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#150
|
396
|
+
def set_pixel(x, y, color); end
|
397
|
+
|
398
|
+
# Replaces a single pixel in this canvas, with bounds checking. It will do
|
399
|
+
# noting if the provided coordinates are out of bounds.
|
400
|
+
#
|
401
|
+
# @param x [Integer] The x-coordinate of the pixel (column)
|
402
|
+
# @param y [Integer] The y-coordinate of the pixel (row)
|
403
|
+
# @param color [Integer] The new color value for the provided coordinates.
|
404
|
+
# @return [Integer] The new color value for this pixel, i.e.
|
405
|
+
# <tt>color</tt>, or <tt>nil</tt> if the coordinates are out of bounds.
|
406
|
+
#
|
407
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#162
|
408
|
+
def set_pixel_if_within_bounds(x, y, color); end
|
409
|
+
|
410
|
+
# Creates an ChunkyPNG::Image object from this canvas.
|
411
|
+
#
|
412
|
+
# @return [ChunkyPNG::Image] This canvas wrapped in an Image instance.
|
413
|
+
#
|
414
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#292
|
415
|
+
def to_image; end
|
416
|
+
|
417
|
+
# @return [Integer] The number of columns in this canvas
|
418
|
+
#
|
419
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#52
|
420
|
+
def width; end
|
421
|
+
|
422
|
+
protected
|
423
|
+
|
424
|
+
# Throws an exception if the vector_length does not match this canvas'
|
425
|
+
# height.
|
426
|
+
#
|
427
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#344
|
428
|
+
def assert_height!(vector_length); end
|
429
|
+
|
430
|
+
# Throws an exception if the matrix width and height does not match this canvas' dimensions.
|
431
|
+
#
|
432
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#363
|
433
|
+
def assert_size!(matrix_width, matrix_height); end
|
434
|
+
|
435
|
+
# Throws an exception if the vector_length does not match this canvas'
|
436
|
+
# width.
|
437
|
+
#
|
438
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#354
|
439
|
+
def assert_width!(vector_length); end
|
440
|
+
|
441
|
+
# Throws an exception if the x-coordinate is out of bounds.
|
442
|
+
#
|
443
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#319
|
444
|
+
def assert_x!(x); end
|
445
|
+
|
446
|
+
# Throws an exception if the x- or y-coordinate is out of bounds.
|
447
|
+
#
|
448
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#335
|
449
|
+
def assert_xy!(x, y); end
|
450
|
+
|
451
|
+
# Throws an exception if the y-coordinate is out of bounds.
|
452
|
+
#
|
453
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#327
|
454
|
+
def assert_y!(y); end
|
455
|
+
|
456
|
+
# Replaces the image, given a new width, new height, and a new pixel array.
|
457
|
+
#
|
458
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#310
|
459
|
+
def replace_canvas!(new_width, new_height, new_pixels); end
|
460
|
+
|
461
|
+
private
|
462
|
+
|
463
|
+
# Initializes a new Canvas instances when being cloned.
|
464
|
+
#
|
465
|
+
# @param other [ChunkyPNG::Canvas] The canvas to duplicate
|
466
|
+
# @private
|
467
|
+
# @return [void]
|
468
|
+
#
|
469
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#97
|
470
|
+
def initialize_copy(other); end
|
471
|
+
|
472
|
+
class << self
|
473
|
+
# Creates a new canvas instance by duplicating another instance.
|
474
|
+
#
|
475
|
+
# @param canvas [ChunkyPNG::Canvas] The canvas to duplicate
|
476
|
+
# @return [ChunkyPNG::Canvas] The newly constructed canvas instance.
|
477
|
+
#
|
478
|
+
# source://chunky_png//lib/chunky_png/canvas.rb#105
|
479
|
+
def from_canvas(canvas); end
|
480
|
+
end
|
481
|
+
end
|
482
|
+
|
483
|
+
# Methods for decoding and encoding Adam7 interlacing.
|
484
|
+
#
|
485
|
+
# Adam7 interlacing extracts 7 pass images out of a single image, that can be encoded to a
|
486
|
+
# stream separately so the image can be built up progressively. The module is included into
|
487
|
+
# ChunkyPNG canvas and is used to extract the pass images from the original image, or to
|
488
|
+
# reconstruct an original image from separate pass images.
|
489
|
+
#
|
490
|
+
# source://chunky_png//lib/chunky_png/canvas/adam7_interlacing.rb#11
|
491
|
+
module ChunkyPNG::Canvas::Adam7Interlacing
|
492
|
+
# Extracts a pass from a complete image
|
493
|
+
#
|
494
|
+
# @param pass [Integer] The pass number, should be in 0..6.
|
495
|
+
# @param canvas [ChunkyPNG::Canvas] The image that is being deconstructed.
|
496
|
+
# @return [ChunkyPNG::Canvas] The extracted pass image.
|
497
|
+
#
|
498
|
+
# source://chunky_png//lib/chunky_png/canvas/adam7_interlacing.rb#63
|
499
|
+
def adam7_extract_pass(pass, canvas); end
|
500
|
+
|
501
|
+
# Merges a pass image into a total image that is being constructed.
|
502
|
+
#
|
503
|
+
# @param pass [Integer] The pass number, should be in 0..6.
|
504
|
+
# @param canvas [ChunkyPNG::Canvas] The image that is being constructed.
|
505
|
+
# @param subcanvas [ChunkyPNG::Canvas] The pass image that should be merged
|
506
|
+
#
|
507
|
+
# source://chunky_png//lib/chunky_png/canvas/adam7_interlacing.rb#48
|
508
|
+
def adam7_merge_pass(pass, canvas, subcanvas); end
|
509
|
+
|
510
|
+
# Returns an array with the x-shift, x-offset, y-shift and y-offset for the requested pass.
|
511
|
+
#
|
512
|
+
# @param pass [Integer] The pass number, should be in 0..6.
|
513
|
+
#
|
514
|
+
# source://chunky_png//lib/chunky_png/canvas/adam7_interlacing.rb#14
|
515
|
+
def adam7_multiplier_offset(pass); end
|
516
|
+
|
517
|
+
# Returns the pixel dimensions of the requested pass.
|
518
|
+
#
|
519
|
+
# @param pass [Integer] The pass number, should be in 0..6.
|
520
|
+
# @param original_width [Integer] The width of the original image.
|
521
|
+
# @param original_height [Integer] The height of the original image.
|
522
|
+
#
|
523
|
+
# source://chunky_png//lib/chunky_png/canvas/adam7_interlacing.rb#27
|
524
|
+
def adam7_pass_size(pass, original_width, original_height); end
|
525
|
+
|
526
|
+
# Returns an array of the dimension of all the pass images.
|
527
|
+
#
|
528
|
+
# @param original_width [Integer] The width of the original image.
|
529
|
+
# @param original_height [Integer] The height of the original image.
|
530
|
+
# @return [Array<Array<Integer>>] Returns an array with 7 pairs of dimensions.
|
531
|
+
# @see #adam7_pass_size
|
532
|
+
#
|
533
|
+
# source://chunky_png//lib/chunky_png/canvas/adam7_interlacing.rb#40
|
534
|
+
def adam7_pass_sizes(original_width, original_height); end
|
535
|
+
end
|
536
|
+
|
537
|
+
# Methods to export a canvas to a PNG data URL.
|
538
|
+
#
|
539
|
+
# source://chunky_png//lib/chunky_png/canvas/data_url_exporting.rb#6
|
540
|
+
module ChunkyPNG::Canvas::DataUrlExporting
|
541
|
+
# Exports the canvas as a data url (e.g. data:image/png;base64,<data>) that can
|
542
|
+
# easily be used inline in CSS or HTML.
|
543
|
+
#
|
544
|
+
# @return [String] The canvas formatted as a data URL string.
|
545
|
+
#
|
546
|
+
# source://chunky_png//lib/chunky_png/canvas/data_url_exporting.rb#10
|
547
|
+
def to_data_url; end
|
548
|
+
end
|
549
|
+
|
550
|
+
# Methods to import a canvas from a PNG data URL.
|
551
|
+
#
|
552
|
+
# source://chunky_png//lib/chunky_png/canvas/data_url_importing.rb#6
|
553
|
+
module ChunkyPNG::Canvas::DataUrlImporting
|
554
|
+
# Imports a canvas from a PNG data URL.
|
555
|
+
#
|
556
|
+
# @param string [String] The data URL string to load from.
|
557
|
+
# @raise ChunkyPNG::SignatureMismatch if the provides string is not a properly
|
558
|
+
# formatted PNG data URL (i.e. it should start with "data:image/png;base64,")
|
559
|
+
# @return [Canvas] The imported canvas.
|
560
|
+
#
|
561
|
+
# source://chunky_png//lib/chunky_png/canvas/data_url_importing.rb#12
|
562
|
+
def from_data_url(string); end
|
563
|
+
end
|
564
|
+
|
565
|
+
# Module that adds some primitive drawing methods to {ChunkyPNG::Canvas}.
|
566
|
+
#
|
567
|
+
# All of these methods change the current canvas instance and do not create
|
568
|
+
# a new one, even though the method names do not end with a bang.
|
569
|
+
#
|
570
|
+
# @note Drawing operations will not fail when something is drawn outside of
|
571
|
+
# the bounds of the canvas; these pixels will simply be ignored.
|
572
|
+
# @see ChunkyPNG::Canvas
|
573
|
+
#
|
574
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#13
|
575
|
+
module ChunkyPNG::Canvas::Drawing
|
576
|
+
# Draws a Bezier curve
|
577
|
+
#
|
578
|
+
# @param points [Array, Point] A collection of control points
|
579
|
+
# @param stroke_color [Integer]
|
580
|
+
# @return [Chunky:PNG::Canvas] Itself, with the curve drawn
|
581
|
+
#
|
582
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#39
|
583
|
+
def bezier_curve(points, stroke_color = T.unsafe(nil)); end
|
584
|
+
|
585
|
+
# Draws a circle on the canvas.
|
586
|
+
#
|
587
|
+
# @param x0 [Integer] The x-coordinate of the center of the circle.
|
588
|
+
# @param y0 [Integer] The y-coordinate of the center of the circle.
|
589
|
+
# @param radius [Integer] The radius of the circle from the center point.
|
590
|
+
# @param stroke_color [Integer] The color to use for the line.
|
591
|
+
# @param fill_color [Integer] The color to use that fills the circle.
|
592
|
+
# @return [ChunkyPNG::Canvas] Itself, with the circle drawn.
|
593
|
+
#
|
594
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#241
|
595
|
+
def circle(x0, y0, radius, stroke_color = T.unsafe(nil), fill_color = T.unsafe(nil)); end
|
596
|
+
|
597
|
+
# Composes a pixel on the canvas by alpha blending a color with its
|
598
|
+
# background color.
|
599
|
+
#
|
600
|
+
# @param x [Integer] The x-coordinate of the pixel to blend.
|
601
|
+
# @param y [Integer] The y-coordinate of the pixel to blend.
|
602
|
+
# @param color [Integer] The foreground color to blend with
|
603
|
+
# @return [Integer] The composed color.
|
604
|
+
#
|
605
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#21
|
606
|
+
def compose_pixel(x, y, color); end
|
607
|
+
|
608
|
+
# Composes a pixel on the canvas by alpha blending a color with its
|
609
|
+
# background color, without bounds checking.
|
610
|
+
#
|
611
|
+
# @param x [Integer] The x-coordinate of the pixel to blend.
|
612
|
+
# @param y [Integer] The y-coordinate of the pixel to blend.
|
613
|
+
# @param color [Integer] The foreground color to blend with
|
614
|
+
# @return [Integer] The composed color.
|
615
|
+
#
|
616
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#31
|
617
|
+
def compose_pixel_unsafe(x, y, color); end
|
618
|
+
|
619
|
+
# Draws an anti-aliased line using Xiaolin Wu's algorithm.
|
620
|
+
#
|
621
|
+
# @param x0 [Integer] The x-coordinate of the first control point.
|
622
|
+
# @param y0 [Integer] The y-coordinate of the first control point.
|
623
|
+
# @param x1 [Integer] The x-coordinate of the second control point.
|
624
|
+
# @param y1 [Integer] The y-coordinate of the second control point.
|
625
|
+
# @param stroke_color [Integer] The color to use for this line.
|
626
|
+
# @param inclusive [true, false] Whether to draw the last pixel. Set to
|
627
|
+
# false when drawing multiple lines in a path.
|
628
|
+
# @return [ChunkyPNG::Canvas] Itself, with the line drawn.
|
629
|
+
#
|
630
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#94
|
631
|
+
def line(x0, y0, x1, y1, stroke_color, inclusive = T.unsafe(nil)); end
|
632
|
+
|
633
|
+
# Draws an anti-aliased line using Xiaolin Wu's algorithm.
|
634
|
+
#
|
635
|
+
# @param x0 [Integer] The x-coordinate of the first control point.
|
636
|
+
# @param y0 [Integer] The y-coordinate of the first control point.
|
637
|
+
# @param x1 [Integer] The x-coordinate of the second control point.
|
638
|
+
# @param y1 [Integer] The y-coordinate of the second control point.
|
639
|
+
# @param stroke_color [Integer] The color to use for this line.
|
640
|
+
# @param inclusive [true, false] Whether to draw the last pixel. Set to
|
641
|
+
# false when drawing multiple lines in a path.
|
642
|
+
# @return [ChunkyPNG::Canvas] Itself, with the line drawn.
|
643
|
+
#
|
644
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#94
|
645
|
+
def line_xiaolin_wu(x0, y0, x1, y1, stroke_color, inclusive = T.unsafe(nil)); end
|
646
|
+
|
647
|
+
# Draws a polygon on the canvas using the stroke_color, filled using the
|
648
|
+
# fill_color if any.
|
649
|
+
#
|
650
|
+
# @param path [Array, String] The control point vector. Accepts everything
|
651
|
+
# {ChunkyPNG.Vector} accepts.
|
652
|
+
# @param stroke_color [Integer] The stroke color to use for this polygon.
|
653
|
+
# @param fill_color [Integer] The fill color to use for this polygon.
|
654
|
+
# @return [ChunkyPNG::Canvas] Itself, with the polygon drawn.
|
655
|
+
#
|
656
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#166
|
657
|
+
def polygon(path, stroke_color = T.unsafe(nil), fill_color = T.unsafe(nil)); end
|
658
|
+
|
659
|
+
# Draws a rectangle on the canvas, using two control points.
|
660
|
+
#
|
661
|
+
# @param x0 [Integer] The x-coordinate of the first control point.
|
662
|
+
# @param y0 [Integer] The y-coordinate of the first control point.
|
663
|
+
# @param x1 [Integer] The x-coordinate of the second control point.
|
664
|
+
# @param y1 [Integer] The y-coordinate of the second control point.
|
665
|
+
# @param stroke_color [Integer] The line color to use for this rectangle.
|
666
|
+
# @param fill_color [Integer] The fill color to use for this rectangle.
|
667
|
+
# @return [ChunkyPNG::Canvas] Itself, with the rectangle drawn.
|
668
|
+
#
|
669
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#211
|
670
|
+
def rect(x0, y0, x1, y1, stroke_color = T.unsafe(nil), fill_color = T.unsafe(nil)); end
|
671
|
+
|
672
|
+
private
|
673
|
+
|
674
|
+
# Calculates the binomial coefficient for n over k.
|
675
|
+
#
|
676
|
+
# @param n [Integer] first parameter in coeffient (the number on top when
|
677
|
+
# looking at the mathematic formula)
|
678
|
+
# @param k [Integer] k-element, second parameter in coeffient (the number
|
679
|
+
# on the bottom when looking at the mathematic formula)
|
680
|
+
# @return [Integer] The binomial coeffcient of (n,k)
|
681
|
+
#
|
682
|
+
# source://chunky_png//lib/chunky_png/canvas/drawing.rb#311
|
683
|
+
def binomial_coefficient(n, k); end
|
684
|
+
end
|
685
|
+
|
686
|
+
# The ChunkyPNG::Canvas::Masking module defines methods to perform masking
|
687
|
+
# and theming operations on a {ChunkyPNG::Canvas}. The module is included into the Canvas class so all
|
688
|
+
# these methods are available on every canvas.
|
689
|
+
#
|
690
|
+
# @see ChunkyPNG::Canvas
|
691
|
+
#
|
692
|
+
# source://chunky_png//lib/chunky_png/canvas/masking.rb#10
|
693
|
+
module ChunkyPNG::Canvas::Masking
|
694
|
+
# Changes the color of a mask image.
|
695
|
+
#
|
696
|
+
# This method works on a canvas extracted out of another image using the {#extract_mask} method.
|
697
|
+
# It can then be applied on the extracted base image. See {#change_theme_color!} to perform
|
698
|
+
# these operations in one go.
|
699
|
+
#
|
700
|
+
# @param new_color [Integer] The color to replace the original mask color with.
|
701
|
+
# @raise [ChunkyPNG::ExpectationFailed] when this canvas is not a mask image, i.e. its palette
|
702
|
+
# has more than once color, disregarding transparency.
|
703
|
+
# @see #change_theme_color!
|
704
|
+
# @see #extract_mask
|
705
|
+
#
|
706
|
+
# source://chunky_png//lib/chunky_png/canvas/masking.rb#84
|
707
|
+
def change_mask_color!(new_color); end
|
708
|
+
|
709
|
+
# Creates a new image, based on the current image but with a new theme color.
|
710
|
+
#
|
711
|
+
# This method will replace one color in an image with another image. This is done by
|
712
|
+
# first extracting the pixels with a color close to the original theme color as a mask
|
713
|
+
# image, changing the color of this mask image and then apply it on the original image.
|
714
|
+
#
|
715
|
+
# Mask extraction works best when the theme colored pixels are clearly distinguishable
|
716
|
+
# from a background color (preferably white). You can set a tolerance level to influence
|
717
|
+
# the extraction process.
|
718
|
+
#
|
719
|
+
# @param old_theme_color [Integer] The original theme color in this image.
|
720
|
+
# @param new_theme_color [Integer] The color to replace the old theme color with.
|
721
|
+
# @param bg_color [Integer] The background color on which the theme colored pixels are placed.
|
722
|
+
# @param tolerance [Integer] The tolerance level to use when extracting the mask image. Five is
|
723
|
+
# the default; increase this if the masked image does not extract all the required pixels,
|
724
|
+
# decrease it if too many pixels get extracted.
|
725
|
+
# @return [ChunkyPNG::Canvas] Returns itself, but with the theme colored pixels changed.
|
726
|
+
# @see #change_theme_color!
|
727
|
+
# @see #change_mask_color!
|
728
|
+
#
|
729
|
+
# source://chunky_png//lib/chunky_png/canvas/masking.rb#30
|
730
|
+
def change_theme_color!(old_theme_color, new_theme_color, bg_color = T.unsafe(nil), tolerance = T.unsafe(nil)); end
|
731
|
+
|
732
|
+
# Creates a base image and a mask image from an original image that has a particular theme color.
|
733
|
+
# This can be used to easily change a theme color in an image.
|
734
|
+
#
|
735
|
+
# It will extract all the pixels that look like the theme color (with a tolerance level) and put
|
736
|
+
# these in a mask image. All the other pixels will be stored in a base image. Both images will be
|
737
|
+
# of the exact same size as the original image. The original image will be left untouched.
|
738
|
+
#
|
739
|
+
# The color of the mask image can be changed with {#change_mask_color!}. This new mask image can
|
740
|
+
# then be composed upon the base image to create an image with a new theme color. A call to
|
741
|
+
# {#change_theme_color!} will perform this in one go.
|
742
|
+
#
|
743
|
+
# @param mask_color [Integer] The current theme color.
|
744
|
+
# @param bg_color [Integer] The background color on which the theme colored pixels are applied.
|
745
|
+
# @param tolerance [Integer] The tolerance level to use when extracting the mask image. Five is
|
746
|
+
# the default; increase this if the masked image does not extract all the required pixels,
|
747
|
+
# decrease it if too many pixels get extracted.
|
748
|
+
# @return [Array<ChunkyPNG::Canvas, ChunkyPNG::Canvas>] An array with the base canvas and the mask
|
749
|
+
# canvas as elements.
|
750
|
+
# @see #change_theme_color!
|
751
|
+
# @see #change_mask_color!
|
752
|
+
#
|
753
|
+
# source://chunky_png//lib/chunky_png/canvas/masking.rb#56
|
754
|
+
def extract_mask(mask_color, bg_color = T.unsafe(nil), tolerance = T.unsafe(nil)); end
|
755
|
+
end
|
756
|
+
|
757
|
+
# The ChunkyPNG::Canvas::Operations module defines methods to perform
|
758
|
+
# operations on a {ChunkyPNG::Canvas}. The module is included into the
|
759
|
+
# Canvas class so all these methods are available on every canvas.
|
760
|
+
#
|
761
|
+
# Note that some of these operations modify the canvas, while some
|
762
|
+
# operations return a new canvas and leave the original intact.
|
763
|
+
#
|
764
|
+
# @see ChunkyPNG::Canvas
|
765
|
+
#
|
766
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#13
|
767
|
+
module ChunkyPNG::Canvas::Operations
|
768
|
+
# Draws a border around the image.
|
769
|
+
#
|
770
|
+
# @param size [Integer] The size of the border.
|
771
|
+
# @param color [Integer] The color of the border.
|
772
|
+
# @return [ChunkyPNG::Canvas] Returns a bordered version of the image.
|
773
|
+
# @see #border!
|
774
|
+
#
|
775
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#366
|
776
|
+
def border(size, color = T.unsafe(nil)); end
|
777
|
+
|
778
|
+
# Draws a border around the image in place.
|
779
|
+
#
|
780
|
+
# @param size [Integer] The size of the border.
|
781
|
+
# @param color [Integer] The color of the border.
|
782
|
+
# @return [ChunkyPNG::Canvas] Returns itself with the border added.
|
783
|
+
# @see #border
|
784
|
+
#
|
785
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#376
|
786
|
+
def border!(size, color = T.unsafe(nil)); end
|
787
|
+
|
788
|
+
# Composes another image onto this image using alpha blending. This will
|
789
|
+
# return a new canvas and leave the original intact.
|
790
|
+
#
|
791
|
+
# If you simply want to replace pixels or when the other image does not
|
792
|
+
# have transparency, it is faster to use {#replace}.
|
793
|
+
#
|
794
|
+
# @note API changed since 1.0 - This method now no longer is in place,
|
795
|
+
# but returns a new canvas and leaves the original intact. Use
|
796
|
+
# {#compose!} if you want to compose on the canvas in place.
|
797
|
+
# @param other [ChunkyPNG::Canvas] The foreground canvas to compose on
|
798
|
+
# the current canvas, using alpha compositing.
|
799
|
+
# @param offset_x [Integer] The x-offset to apply the new foreground on.
|
800
|
+
# @param offset_y [Integer] The y-offset to apply the new foreground on.
|
801
|
+
# @raise [ChunkyPNG::OutOfBounds] when the other canvas doesn't fit on
|
802
|
+
# this one, given the offset and size of the other canvas.
|
803
|
+
# @return [ChunkyPNG::Canvas] Returns the new canvas, composed of the
|
804
|
+
# other 2.
|
805
|
+
# @see #replace
|
806
|
+
#
|
807
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#90
|
808
|
+
def compose(other, offset_x = T.unsafe(nil), offset_y = T.unsafe(nil)); end
|
809
|
+
|
810
|
+
# Composes another image onto this image using alpha blending. This will
|
811
|
+
# modify the current canvas.
|
812
|
+
#
|
813
|
+
# If you simply want to replace pixels or when the other image does not
|
814
|
+
# have transparency, it is faster to use {#replace!}.
|
815
|
+
#
|
816
|
+
# @param other [ChunkyPNG::Canvas] The foreground canvas to compose on
|
817
|
+
# the current canvas, using alpha compositing.
|
818
|
+
# @param offset_x [Integer] The x-offset to apply the new foreground on.
|
819
|
+
# @param offset_y [Integer] The y-offset to apply the new foreground on.
|
820
|
+
# @raise [ChunkyPNG::OutOfBounds] when the other canvas doesn't fit on
|
821
|
+
# this one, given the offset and size of the other canvas.
|
822
|
+
# @return [ChunkyPNG::Canvas] Returns itself, but with the other canvas
|
823
|
+
# composed onto it.
|
824
|
+
# @see #replace!
|
825
|
+
# @see #compose
|
826
|
+
#
|
827
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#56
|
828
|
+
def compose!(other, offset_x = T.unsafe(nil), offset_y = T.unsafe(nil)); end
|
829
|
+
|
830
|
+
# Crops an image, given the coordinates and size of the image that needs
|
831
|
+
# to be cut out. This will leave the original image intact and return a
|
832
|
+
# new, cropped image with pixels copied from the original image.
|
833
|
+
#
|
834
|
+
# @param x [Integer] The x-coordinate of the top left corner of the image
|
835
|
+
# to be cropped.
|
836
|
+
# @param y [Integer] The y-coordinate of the top left corner of the image
|
837
|
+
# to be cropped.
|
838
|
+
# @param crop_width [Integer] The width of the image to be cropped.
|
839
|
+
# @param crop_height [Integer] The height of the image to be cropped.
|
840
|
+
# @raise [ChunkyPNG::OutOfBounds] when the crop dimensions plus the given
|
841
|
+
# coordinates are bigger then the original image.
|
842
|
+
# @return [ChunkyPNG::Canvas] Returns the newly created cropped image.
|
843
|
+
#
|
844
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#155
|
845
|
+
def crop(x, y, crop_width, crop_height); end
|
846
|
+
|
847
|
+
# Crops an image, given the coordinates and size of the image that needs
|
848
|
+
# to be cut out.
|
849
|
+
#
|
850
|
+
# This will change the size and content of the current canvas. Use
|
851
|
+
# {#crop} if you want to have a new canvas returned instead, leaving the
|
852
|
+
# current canvas intact.
|
853
|
+
#
|
854
|
+
# @param x [Integer] The x-coordinate of the top left corner of the image
|
855
|
+
# to be cropped.
|
856
|
+
# @param y [Integer] The y-coordinate of the top left corner of the image
|
857
|
+
# to be cropped.
|
858
|
+
# @param crop_width [Integer] The width of the image to be cropped.
|
859
|
+
# @param crop_height [Integer] The height of the image to be cropped.
|
860
|
+
# @raise [ChunkyPNG::OutOfBounds] when the crop dimensions plus the given
|
861
|
+
# coordinates are bigger then the original image.
|
862
|
+
# @return [ChunkyPNG::Canvas] Returns itself, but cropped.
|
863
|
+
#
|
864
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#175
|
865
|
+
def crop!(x, y, crop_width, crop_height); end
|
866
|
+
|
867
|
+
# Flips the image horizontally, leaving the original intact.
|
868
|
+
#
|
869
|
+
# This will flip the image on its horizontal axis, e.g. pixels on the top
|
870
|
+
# will now be pixels on the bottom. Chaining this method twice will
|
871
|
+
# return the original canvas. This method will leave the original object
|
872
|
+
# intact and return a new canvas.
|
873
|
+
#
|
874
|
+
# @return [ChunkyPNG::Canvas] The flipped image
|
875
|
+
# @see #flip_horizontally!
|
876
|
+
#
|
877
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#205
|
878
|
+
def flip; end
|
879
|
+
|
880
|
+
# Flips the image horizontally in place.
|
881
|
+
#
|
882
|
+
# This will flip the image on its horizontal axis, e.g. pixels on the top
|
883
|
+
# will now be pixels on the bottom. Chaining this method twice will
|
884
|
+
# return the original canvas. This method will leave the original object
|
885
|
+
# intact and return a new canvas.
|
886
|
+
#
|
887
|
+
# @return [ChunkyPNG::Canvas] Itself, but flipped
|
888
|
+
# @see #flip_horizontally
|
889
|
+
#
|
890
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#218
|
891
|
+
def flip!; end
|
892
|
+
|
893
|
+
# Flips the image horizontally, leaving the original intact.
|
894
|
+
#
|
895
|
+
# This will flip the image on its horizontal axis, e.g. pixels on the top
|
896
|
+
# will now be pixels on the bottom. Chaining this method twice will
|
897
|
+
# return the original canvas. This method will leave the original object
|
898
|
+
# intact and return a new canvas.
|
899
|
+
#
|
900
|
+
# @return [ChunkyPNG::Canvas] The flipped image
|
901
|
+
# @see #flip_horizontally!
|
902
|
+
#
|
903
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#205
|
904
|
+
def flip_horizontally; end
|
905
|
+
|
906
|
+
# Flips the image horizontally in place.
|
907
|
+
#
|
908
|
+
# This will flip the image on its horizontal axis, e.g. pixels on the top
|
909
|
+
# will now be pixels on the bottom. Chaining this method twice will
|
910
|
+
# return the original canvas. This method will leave the original object
|
911
|
+
# intact and return a new canvas.
|
912
|
+
#
|
913
|
+
# @return [ChunkyPNG::Canvas] Itself, but flipped
|
914
|
+
# @see #flip_horizontally
|
915
|
+
#
|
916
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#218
|
917
|
+
def flip_horizontally!; end
|
918
|
+
|
919
|
+
# Flips the image vertically, leaving the original intact.
|
920
|
+
#
|
921
|
+
# This will flip the image on its vertical axis, e.g. pixels on the left
|
922
|
+
# will now be pixels on the right. Chaining this method twice will return
|
923
|
+
# the original canvas. This method will leave the original object intact
|
924
|
+
# and return a new canvas.
|
925
|
+
#
|
926
|
+
# @return [ChunkyPNG::Canvas] The flipped image
|
927
|
+
# @see #flip_vertically!
|
928
|
+
#
|
929
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#240
|
930
|
+
def flip_vertically; end
|
931
|
+
|
932
|
+
# Flips the image vertically in place.
|
933
|
+
#
|
934
|
+
# This will flip the image on its vertical axis, e.g. pixels on the left
|
935
|
+
# will now be pixels on the right. Chaining this method twice will return
|
936
|
+
# the original canvas. This method will leave the original object intact
|
937
|
+
# and return a new canvas.
|
938
|
+
#
|
939
|
+
# @return [ChunkyPNG::Canvas] Itself, but flipped
|
940
|
+
# @see #flip_vertically
|
941
|
+
#
|
942
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#253
|
943
|
+
def flip_vertically!; end
|
944
|
+
|
945
|
+
# Converts the canvas to grayscale, returning a new canvas.
|
946
|
+
#
|
947
|
+
# This method will not modify the canvas. To modift the current canvas,
|
948
|
+
# use {#grayscale!} instead.
|
949
|
+
#
|
950
|
+
# @return [ChunkyPNG::Canvas] A copy of the canvas, converted to
|
951
|
+
# grayscale.
|
952
|
+
# @see #grayscale!
|
953
|
+
# @see ChunkyPNG::Color#to_grayscale
|
954
|
+
#
|
955
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#36
|
956
|
+
def grayscale; end
|
957
|
+
|
958
|
+
# Converts the canvas to grayscale.
|
959
|
+
#
|
960
|
+
# This method will modify the canvas. The obtain a new canvas and leave
|
961
|
+
# the current instance intact, use {#grayscale} instead.
|
962
|
+
#
|
963
|
+
# @return [ChunkyPNG::Canvas] Returns itself, converted to grayscale.
|
964
|
+
# @see #grayscale
|
965
|
+
# @see ChunkyPNG::Color#to_grayscale
|
966
|
+
#
|
967
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#22
|
968
|
+
def grayscale!; end
|
969
|
+
|
970
|
+
# Flips the image vertically, leaving the original intact.
|
971
|
+
#
|
972
|
+
# This will flip the image on its vertical axis, e.g. pixels on the left
|
973
|
+
# will now be pixels on the right. Chaining this method twice will return
|
974
|
+
# the original canvas. This method will leave the original object intact
|
975
|
+
# and return a new canvas.
|
976
|
+
#
|
977
|
+
# @return [ChunkyPNG::Canvas] The flipped image
|
978
|
+
# @see #flip_vertically!
|
979
|
+
#
|
980
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#240
|
981
|
+
def mirror; end
|
982
|
+
|
983
|
+
# Flips the image vertically in place.
|
984
|
+
#
|
985
|
+
# This will flip the image on its vertical axis, e.g. pixels on the left
|
986
|
+
# will now be pixels on the right. Chaining this method twice will return
|
987
|
+
# the original canvas. This method will leave the original object intact
|
988
|
+
# and return a new canvas.
|
989
|
+
#
|
990
|
+
# @return [ChunkyPNG::Canvas] Itself, but flipped
|
991
|
+
# @see #flip_vertically
|
992
|
+
#
|
993
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#253
|
994
|
+
def mirror!; end
|
995
|
+
|
996
|
+
# Replaces pixels on this image by pixels from another pixels, on a given
|
997
|
+
# offset. This method will modify the current canvas.
|
998
|
+
#
|
999
|
+
# This will completely replace the pixels of the background image. If you
|
1000
|
+
# want to blend them with semi-transparent pixels from the foreground
|
1001
|
+
# image, see {#compose!}.
|
1002
|
+
#
|
1003
|
+
# @note API changed since 1.0 - This method now no longer is in place,
|
1004
|
+
# but returns a new canvas and leaves the original intact. Use
|
1005
|
+
# {#replace!} if you want to replace pixels on the canvas in place.
|
1006
|
+
# @param other [ChunkyPNG::Canvas] The foreground canvas to get the
|
1007
|
+
# pixels from.
|
1008
|
+
# @param offset_x [Integer] The x-offset to apply the new foreground on.
|
1009
|
+
# @param offset_y [Integer] The y-offset to apply the new foreground on.
|
1010
|
+
# @raise [ChunkyPNG::OutOfBounds] when the other canvas doesn't fit on
|
1011
|
+
# this one, given the offset and size of the other canvas.
|
1012
|
+
# @return [ChunkyPNG::Canvas] Returns a new, combined canvas.
|
1013
|
+
# @see #compose
|
1014
|
+
#
|
1015
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#138
|
1016
|
+
def replace(other, offset_x = T.unsafe(nil), offset_y = T.unsafe(nil)); end
|
1017
|
+
|
1018
|
+
# Replaces pixels on this image by pixels from another pixels, on a given
|
1019
|
+
# offset. This method will modify the current canvas.
|
1020
|
+
#
|
1021
|
+
# This will completely replace the pixels of the background image. If you
|
1022
|
+
# want to blend them with semi-transparent pixels from the foreground
|
1023
|
+
# image, see {#compose!}.
|
1024
|
+
#
|
1025
|
+
# @param other [ChunkyPNG::Canvas] The foreground canvas to get the
|
1026
|
+
# pixels from.
|
1027
|
+
# @param offset_x [Integer] The x-offset to apply the new foreground on.
|
1028
|
+
# @param offset_y [Integer] The y-offset to apply the new foreground on.
|
1029
|
+
# @raise [ChunkyPNG::OutOfBounds] when the other canvas doesn't fit on
|
1030
|
+
# this one, given the offset and size of the other canvas.
|
1031
|
+
# @return [ChunkyPNG::Canvas] Returns itself, but with the other canvas
|
1032
|
+
# placed onto it.
|
1033
|
+
# @see #compose!
|
1034
|
+
# @see #replace
|
1035
|
+
#
|
1036
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#111
|
1037
|
+
def replace!(other, offset_x = T.unsafe(nil), offset_y = T.unsafe(nil)); end
|
1038
|
+
|
1039
|
+
# Rotates the image 180 degrees.
|
1040
|
+
#
|
1041
|
+
# This method will leave the original object intact and return a new
|
1042
|
+
# canvas.
|
1043
|
+
#
|
1044
|
+
# @return [ChunkyPNG::Canvas] The rotated image.
|
1045
|
+
# @see #rotate_180!
|
1046
|
+
#
|
1047
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#322
|
1048
|
+
def rotate_180; end
|
1049
|
+
|
1050
|
+
# Rotates the image 180 degrees in place.
|
1051
|
+
#
|
1052
|
+
# @return [ChunkyPNG::Canvas] Itself, but rotated 180 degrees.
|
1053
|
+
# @see #rotate_180
|
1054
|
+
#
|
1055
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#330
|
1056
|
+
def rotate_180!; end
|
1057
|
+
|
1058
|
+
# Returns a new canvas instance that is rotated 90 degrees clockwise.
|
1059
|
+
#
|
1060
|
+
# This method will return a new canvas and leaves the original intact.
|
1061
|
+
#
|
1062
|
+
# @return [ChunkyPNG::Canvas] A clockwise-rotated copy.
|
1063
|
+
# @see #rotate_right! for the in place version.
|
1064
|
+
#
|
1065
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#269
|
1066
|
+
def rotate_clockwise; end
|
1067
|
+
|
1068
|
+
# Rotates the image 90 degrees clockwise in place.
|
1069
|
+
#
|
1070
|
+
# This method will change the current canvas.
|
1071
|
+
#
|
1072
|
+
# @return [ChunkyPNG::Canvas] Itself, but rotated clockwise.
|
1073
|
+
# @see #rotate_right for a version that leaves the current canvas intact
|
1074
|
+
#
|
1075
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#279
|
1076
|
+
def rotate_clockwise!; end
|
1077
|
+
|
1078
|
+
# Returns an image that is rotated 90 degrees counter-clockwise.
|
1079
|
+
#
|
1080
|
+
# This method will leave the original object intact and return a new
|
1081
|
+
# canvas.
|
1082
|
+
#
|
1083
|
+
# @return [ChunkyPNG::Canvas] A rotated copy of itself.
|
1084
|
+
# @see #rotate_left! for the in-place version.
|
1085
|
+
#
|
1086
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#295
|
1087
|
+
def rotate_counter_clockwise; end
|
1088
|
+
|
1089
|
+
# Rotates the image 90 degrees counter-clockwise in place.
|
1090
|
+
#
|
1091
|
+
# This method will change the original canvas. See {#rotate_left} for a
|
1092
|
+
# version that leaves the canvas intact and returns a new rotated canvas
|
1093
|
+
# instead.
|
1094
|
+
#
|
1095
|
+
# @return [ChunkyPNG::Canvas] Itself, but rotated.
|
1096
|
+
#
|
1097
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#306
|
1098
|
+
def rotate_counter_clockwise!; end
|
1099
|
+
|
1100
|
+
# Returns an image that is rotated 90 degrees counter-clockwise.
|
1101
|
+
#
|
1102
|
+
# This method will leave the original object intact and return a new
|
1103
|
+
# canvas.
|
1104
|
+
#
|
1105
|
+
# @return [ChunkyPNG::Canvas] A rotated copy of itself.
|
1106
|
+
# @see #rotate_left! for the in-place version.
|
1107
|
+
#
|
1108
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#295
|
1109
|
+
def rotate_left; end
|
1110
|
+
|
1111
|
+
# Rotates the image 90 degrees counter-clockwise in place.
|
1112
|
+
#
|
1113
|
+
# This method will change the original canvas. See {#rotate_left} for a
|
1114
|
+
# version that leaves the canvas intact and returns a new rotated canvas
|
1115
|
+
# instead.
|
1116
|
+
#
|
1117
|
+
# @return [ChunkyPNG::Canvas] Itself, but rotated.
|
1118
|
+
#
|
1119
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#306
|
1120
|
+
def rotate_left!; end
|
1121
|
+
|
1122
|
+
# Returns a new canvas instance that is rotated 90 degrees clockwise.
|
1123
|
+
#
|
1124
|
+
# This method will return a new canvas and leaves the original intact.
|
1125
|
+
#
|
1126
|
+
# @return [ChunkyPNG::Canvas] A clockwise-rotated copy.
|
1127
|
+
# @see #rotate_right! for the in place version.
|
1128
|
+
#
|
1129
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#269
|
1130
|
+
def rotate_right; end
|
1131
|
+
|
1132
|
+
# Rotates the image 90 degrees clockwise in place.
|
1133
|
+
#
|
1134
|
+
# This method will change the current canvas.
|
1135
|
+
#
|
1136
|
+
# @return [ChunkyPNG::Canvas] Itself, but rotated clockwise.
|
1137
|
+
# @see #rotate_right for a version that leaves the current canvas intact
|
1138
|
+
#
|
1139
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#279
|
1140
|
+
def rotate_right!; end
|
1141
|
+
|
1142
|
+
# Trims the border around the image, presumed to be the color of the
|
1143
|
+
# first pixel.
|
1144
|
+
#
|
1145
|
+
# @param border [Integer] The color to attempt to trim.
|
1146
|
+
# @return [ChunkyPNG::Canvas] The trimmed image.
|
1147
|
+
# @see #trim!
|
1148
|
+
#
|
1149
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#341
|
1150
|
+
def trim(border = T.unsafe(nil)); end
|
1151
|
+
|
1152
|
+
# Trims the border around the image in place.
|
1153
|
+
#
|
1154
|
+
# @param border [Integer] The color to attempt to trim.
|
1155
|
+
# @return [ChunkyPNG::Canvas] Returns itself, but with the border
|
1156
|
+
# trimmed.
|
1157
|
+
# @see #trim
|
1158
|
+
#
|
1159
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#351
|
1160
|
+
def trim!(border = T.unsafe(nil)); end
|
1161
|
+
|
1162
|
+
protected
|
1163
|
+
|
1164
|
+
# Checks whether another image has the correct dimension to be used for
|
1165
|
+
# an operation on the current image, given an offset coordinate to work
|
1166
|
+
# with.
|
1167
|
+
#
|
1168
|
+
# @param other [ChunkyPNG::Canvas] The other canvas
|
1169
|
+
# @param offset_x [Integer] The x offset on which the other image will be
|
1170
|
+
# applied.
|
1171
|
+
# @param offset_y [Integer] The y offset on which the other image will be
|
1172
|
+
# applied.
|
1173
|
+
# @raise [ChunkyPNG::OutOfBounds] when the other image doesn't fit.
|
1174
|
+
#
|
1175
|
+
# source://chunky_png//lib/chunky_png/canvas/operations.rb#395
|
1176
|
+
def check_size_constraints!(other, offset_x, offset_y); end
|
1177
|
+
end
|
1178
|
+
|
1179
|
+
# The PNGDecoding contains methods for decoding PNG datastreams to create a
|
1180
|
+
# Canvas object. The datastream can be provided as filename, string or IO
|
1181
|
+
# stream.
|
1182
|
+
#
|
1183
|
+
# Overview of the decoding process:
|
1184
|
+
#
|
1185
|
+
# * The optional PLTE and tRNS chunk are decoded for the color palette of
|
1186
|
+
# the original image.
|
1187
|
+
# * The contents of the IDAT chunks is combined, and uncompressed using
|
1188
|
+
# Inflate decompression to the image pixelstream.
|
1189
|
+
# * Based on the color mode, width and height of the original image, which
|
1190
|
+
# is read from the PNG header (IHDR chunk), the amount of bytes
|
1191
|
+
# per line is determined.
|
1192
|
+
# * For every line of pixels in the encoded image, the original byte values
|
1193
|
+
# are restored by unapplying the milter method for that line.
|
1194
|
+
# * The read bytes are unfiltered given by the filter function specified by
|
1195
|
+
# the first byte of the line.
|
1196
|
+
# * The unfiltered pixelstream are is into colored pixels, using the color mode.
|
1197
|
+
# * All lines combined to form the original image.
|
1198
|
+
#
|
1199
|
+
# For interlaced images, the original image was split into 7 subimages.
|
1200
|
+
# These images get decoded just like the process above (from step 3), and get
|
1201
|
+
# combined to form the original images.
|
1202
|
+
#
|
1203
|
+
# @see ChunkyPNG::Canvas::PNGEncoding
|
1204
|
+
# @see https://www.w3.org/TR/PNG/ The W3C PNG format specification
|
1205
|
+
#
|
1206
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#31
|
1207
|
+
module ChunkyPNG::Canvas::PNGDecoding
|
1208
|
+
# Decodes a canvas from a PNG encoded pixelstream, using a given width, height,
|
1209
|
+
# color mode and interlacing mode.
|
1210
|
+
#
|
1211
|
+
# @param stream [String] The pixelstream to read from.
|
1212
|
+
# @param width [Integer] The width of the image.
|
1213
|
+
# @param height [Integer] The height of the image.
|
1214
|
+
# @param color_mode [Integer] The color mode of the encoded pixelstream.
|
1215
|
+
# @param depth [Integer] The bit depth of the pixel samples.
|
1216
|
+
# @param interlace [Integer] The interlace method of the encoded pixelstream.
|
1217
|
+
# @param decoding_palette [ChunkyPNG::Palette] The palette to use to decode colors.
|
1218
|
+
# @param transparent_color [Integer] The color that should be considered fully transparent.
|
1219
|
+
# @raise [ChunkyPNG::ExpectationFailed]
|
1220
|
+
# @return [ChunkyPNG::Canvas] The decoded Canvas instance.
|
1221
|
+
#
|
1222
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#95
|
1223
|
+
def decode_png_pixelstream(stream, width, height, color_mode, depth, interlace, decoding_palette, transparent_color); end
|
1224
|
+
|
1225
|
+
# Decodes a Canvas from a PNG encoded string.
|
1226
|
+
#
|
1227
|
+
# @param str [String] The string to read from.
|
1228
|
+
# @return [ChunkyPNG::Canvas] The canvas decoded from the PNG encoded string.
|
1229
|
+
#
|
1230
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#35
|
1231
|
+
def from_blob(str); end
|
1232
|
+
|
1233
|
+
# Decodes the Canvas from a PNG datastream instance.
|
1234
|
+
#
|
1235
|
+
# @param ds [ChunkyPNG::Datastream] The datastream to decode.
|
1236
|
+
# @return [ChunkyPNG::Canvas] The canvas decoded from the PNG datastream.
|
1237
|
+
#
|
1238
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#60
|
1239
|
+
def from_datastream(ds); end
|
1240
|
+
|
1241
|
+
# Decodes a Canvas from a PNG encoded file.
|
1242
|
+
#
|
1243
|
+
# @param filename [String] The file to read from.
|
1244
|
+
# @return [ChunkyPNG::Canvas] The canvas decoded from the PNG file.
|
1245
|
+
#
|
1246
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#44
|
1247
|
+
def from_file(filename); end
|
1248
|
+
|
1249
|
+
# Decodes a Canvas from a PNG encoded stream.
|
1250
|
+
#
|
1251
|
+
# @param io [IO, #read] The stream to read from.
|
1252
|
+
# @return [ChunkyPNG::Canvas] The canvas decoded from the PNG stream.
|
1253
|
+
#
|
1254
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#51
|
1255
|
+
def from_io(io); end
|
1256
|
+
|
1257
|
+
# Decodes a Canvas from a PNG encoded stream.
|
1258
|
+
#
|
1259
|
+
# @param io [IO, #read] The stream to read from.
|
1260
|
+
# @return [ChunkyPNG::Canvas] The canvas decoded from the PNG stream.
|
1261
|
+
#
|
1262
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#51
|
1263
|
+
def from_stream(io); end
|
1264
|
+
|
1265
|
+
# Decodes a Canvas from a PNG encoded string.
|
1266
|
+
#
|
1267
|
+
# @param str [String] The string to read from.
|
1268
|
+
# @return [ChunkyPNG::Canvas] The canvas decoded from the PNG encoded string.
|
1269
|
+
#
|
1270
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#35
|
1271
|
+
def from_string(str); end
|
1272
|
+
|
1273
|
+
protected
|
1274
|
+
|
1275
|
+
# Extract a bit from a byte on a given index.
|
1276
|
+
#
|
1277
|
+
# @param byte [Integer] The byte (0..255) value to extract a bit from.
|
1278
|
+
# @param index [Integer] The index within the byte. This should be 0..7;
|
1279
|
+
# the value will be modded by 8 to enforce this.
|
1280
|
+
# @return [Integer] Either 1 or 0.
|
1281
|
+
#
|
1282
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#168
|
1283
|
+
def decode_png_extract_1bit_value(byte, index); end
|
1284
|
+
|
1285
|
+
# Extract 2 consecutive bits from a byte.
|
1286
|
+
#
|
1287
|
+
# @param byte [Integer] The byte (0..255) value to extract a 2 bit value from.
|
1288
|
+
# @param index [Integer] The index within the byte. This should be either 0, 1, 2, or 3;
|
1289
|
+
# the value will be modded by 4 to enforce this.
|
1290
|
+
# @return [Integer] The extracted 2 bit value (0..3)
|
1291
|
+
#
|
1292
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#158
|
1293
|
+
def decode_png_extract_2bit_value(byte, index); end
|
1294
|
+
|
1295
|
+
# Extract 4 consecutive bits from a byte.
|
1296
|
+
#
|
1297
|
+
# @param byte [Integer] The byte (0..255) value to extract a 4 bit value from.
|
1298
|
+
# @param index [Integer] The index within the byte. This should be either 0 or 2;
|
1299
|
+
# the value will be modded by 2 to enforce this.
|
1300
|
+
# @return [Integer] The extracted 4bit value (0..15)
|
1301
|
+
#
|
1302
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#149
|
1303
|
+
def decode_png_extract_4bit_value(byte, index); end
|
1304
|
+
|
1305
|
+
# Decodes a single PNG image pass width a given width, height and color
|
1306
|
+
# mode, to a Canvas, starting at the given position in the stream.
|
1307
|
+
#
|
1308
|
+
# A non-interlaced image only consists of one pass, while an Adam7
|
1309
|
+
# image consists of 7 passes that must be combined after decoding.
|
1310
|
+
#
|
1311
|
+
# @param start_pos [Integer] The position in the pixel stream to start reading.
|
1312
|
+
# @param decoding_palette [ChunkyPNG::Palette] The palette to use to decode colors.
|
1313
|
+
# @param stream [String] The pixelstream to read from.
|
1314
|
+
# @param width [Integer] The width of the image.
|
1315
|
+
# @param height [Integer] The height of the image.
|
1316
|
+
# @param color_mode [Integer] The color mode of the encoded pixelstream.
|
1317
|
+
# @return [ChunkyPNG::Canvas] The decoded Canvas instance.
|
1318
|
+
#
|
1319
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#383
|
1320
|
+
def decode_png_image_pass(stream, width, height, color_mode, depth, start_pos, decoding_palette); end
|
1321
|
+
|
1322
|
+
# Decodes a scanline of a 16-bit, grayscale image into a row of pixels.
|
1323
|
+
#
|
1324
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1325
|
+
#
|
1326
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#347
|
1327
|
+
def decode_png_pixels_from_scanline_grayscale_16bit(stream, pos, width, _decoding_palette); end
|
1328
|
+
|
1329
|
+
# Decodes a scanline of a 1-bit, grayscale image into a row of pixels.
|
1330
|
+
#
|
1331
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1332
|
+
#
|
1333
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#310
|
1334
|
+
def decode_png_pixels_from_scanline_grayscale_1bit(stream, pos, width, _decoding_palette); end
|
1335
|
+
|
1336
|
+
# Decodes a scanline of a 2-bit, grayscale image into a row of pixels.
|
1337
|
+
#
|
1338
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1339
|
+
#
|
1340
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#320
|
1341
|
+
def decode_png_pixels_from_scanline_grayscale_2bit(stream, pos, width, _decoding_palette); end
|
1342
|
+
|
1343
|
+
# Decodes a scanline of a 4-bit, grayscale image into a row of pixels.
|
1344
|
+
#
|
1345
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1346
|
+
#
|
1347
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#330
|
1348
|
+
def decode_png_pixels_from_scanline_grayscale_4bit(stream, pos, width, _decoding_palette); end
|
1349
|
+
|
1350
|
+
# Decodes a scanline of an 8-bit, grayscale image into a row of pixels.
|
1351
|
+
#
|
1352
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1353
|
+
#
|
1354
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#340
|
1355
|
+
def decode_png_pixels_from_scanline_grayscale_8bit(stream, pos, width, _decoding_palette); end
|
1356
|
+
|
1357
|
+
# Decodes a scanline of a 16-bit, grayscale image with transparency into a row of pixels.
|
1358
|
+
#
|
1359
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1360
|
+
#
|
1361
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#299
|
1362
|
+
def decode_png_pixels_from_scanline_grayscale_alpha_16bit(stream, pos, width, _decoding_palette); end
|
1363
|
+
|
1364
|
+
# Decodes a scanline of an 8-bit, grayscale image with transparency into a row of pixels.
|
1365
|
+
#
|
1366
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1367
|
+
#
|
1368
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#292
|
1369
|
+
def decode_png_pixels_from_scanline_grayscale_alpha_8bit(stream, pos, width, _decoding_palette); end
|
1370
|
+
|
1371
|
+
# Decodes a scanline of a 1-bit, indexed image into a row of pixels.
|
1372
|
+
#
|
1373
|
+
# @param stream [String] The stream to decode from.
|
1374
|
+
# @param pos [Integer] The position in the stream on which the scanline starts (including the filter byte).
|
1375
|
+
# @param width [Integer] The width in pixels of the scanline.
|
1376
|
+
# @param decoding_palette [ChunkyPNG::Palette] The palette to use to decode colors.
|
1377
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1378
|
+
#
|
1379
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#214
|
1380
|
+
def decode_png_pixels_from_scanline_indexed_1bit(stream, pos, width, decoding_palette); end
|
1381
|
+
|
1382
|
+
# Decodes a scanline of a 2-bit, indexed image into a row of pixels.
|
1383
|
+
#
|
1384
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1385
|
+
#
|
1386
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#224
|
1387
|
+
def decode_png_pixels_from_scanline_indexed_2bit(stream, pos, width, decoding_palette); end
|
1388
|
+
|
1389
|
+
# Decodes a scanline of a 4-bit, indexed image into a row of pixels.
|
1390
|
+
#
|
1391
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1392
|
+
#
|
1393
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#234
|
1394
|
+
def decode_png_pixels_from_scanline_indexed_4bit(stream, pos, width, decoding_palette); end
|
1395
|
+
|
1396
|
+
# Decodes a scanline of a 8-bit, indexed image into a row of pixels.
|
1397
|
+
#
|
1398
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1399
|
+
#
|
1400
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#244
|
1401
|
+
def decode_png_pixels_from_scanline_indexed_8bit(stream, pos, width, decoding_palette); end
|
1402
|
+
|
1403
|
+
# Returns the method name to use to decode scanlines into pixels.
|
1404
|
+
#
|
1405
|
+
# @param color_mode [Integer] The color mode of the image.
|
1406
|
+
# @param depth [Integer] The bit depth of the image.
|
1407
|
+
# @raise [ChunkyPNG::NotSupported] when the color_mode and/or bit depth is not supported.
|
1408
|
+
# @return [Symbol] The method name to use for decoding, to be called on the canvas class.
|
1409
|
+
#
|
1410
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#357
|
1411
|
+
def decode_png_pixels_from_scanline_method(color_mode, depth); end
|
1412
|
+
|
1413
|
+
# Decodes a scanline of a 16-bit, true color image into a row of pixels.
|
1414
|
+
#
|
1415
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1416
|
+
#
|
1417
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#281
|
1418
|
+
def decode_png_pixels_from_scanline_truecolor_16bit(stream, pos, width, _decoding_palette); end
|
1419
|
+
|
1420
|
+
# Decodes a scanline of an 8-bit, true color image into a row of pixels.
|
1421
|
+
#
|
1422
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1423
|
+
#
|
1424
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#274
|
1425
|
+
def decode_png_pixels_from_scanline_truecolor_8bit(stream, pos, width, _decoding_palette); end
|
1426
|
+
|
1427
|
+
# Decodes a scanline of a 16-bit, true color image with transparency into a row of pixels.
|
1428
|
+
#
|
1429
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1430
|
+
#
|
1431
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#258
|
1432
|
+
def decode_png_pixels_from_scanline_truecolor_alpha_16bit(stream, pos, width, _decoding_palette); end
|
1433
|
+
|
1434
|
+
# Decodes a scanline of an 8-bit, true color image with transparency into a row of pixels.
|
1435
|
+
#
|
1436
|
+
# @return [Array<Integer>] An array of decoded pixels.
|
1437
|
+
#
|
1438
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#251
|
1439
|
+
def decode_png_pixels_from_scanline_truecolor_alpha_8bit(stream, pos, width, _decoding_palette); end
|
1440
|
+
|
1441
|
+
# Resamples a 16 bit value to an 8 bit value. This will discard some color information.
|
1442
|
+
#
|
1443
|
+
# @param value [Integer] The 16 bit value to resample.
|
1444
|
+
# @return [Integer] The 8 bit resampled value
|
1445
|
+
#
|
1446
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#176
|
1447
|
+
def decode_png_resample_16bit_value(value); end
|
1448
|
+
|
1449
|
+
# Resamples a 1 bit value to an 8 bit value.
|
1450
|
+
#
|
1451
|
+
# @param value [Integer] The 1 bit value to resample.
|
1452
|
+
# @return [Integer] The 8 bit resampled value
|
1453
|
+
#
|
1454
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#204
|
1455
|
+
def decode_png_resample_1bit_value(value); end
|
1456
|
+
|
1457
|
+
# Resamples a 2 bit value to an 8 bit value.
|
1458
|
+
#
|
1459
|
+
# @param value [Integer] The 2 bit value to resample.
|
1460
|
+
# @return [Integer] The 8 bit resampled value.
|
1461
|
+
#
|
1462
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#197
|
1463
|
+
def decode_png_resample_2bit_value(value); end
|
1464
|
+
|
1465
|
+
# Resamples a 4 bit value to an 8 bit value.
|
1466
|
+
#
|
1467
|
+
# @param value [Integer] The 4 bit value to resample.
|
1468
|
+
# @return [Integer] The 8 bit resampled value.
|
1469
|
+
#
|
1470
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#190
|
1471
|
+
def decode_png_resample_4bit_value(value); end
|
1472
|
+
|
1473
|
+
# No-op - available for completeness sake only
|
1474
|
+
#
|
1475
|
+
# @param value [Integer] The 8 bit value to resample.
|
1476
|
+
# @return [Integer] The 8 bit resampled value
|
1477
|
+
#
|
1478
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#183
|
1479
|
+
def decode_png_resample_8bit_value(value); end
|
1480
|
+
|
1481
|
+
# Decodes a scanline if it was encoded using filtering.
|
1482
|
+
#
|
1483
|
+
# It will extract the filtering method from the first byte of the scanline, and uses the
|
1484
|
+
# method to change the subsequent bytes to unfiltered values. This will modify the pixelstream.
|
1485
|
+
#
|
1486
|
+
# The bytes of the scanline can then be used to construct pixels, based on the color mode..
|
1487
|
+
#
|
1488
|
+
# @param stream [String] The pixelstream to undo the filtering in.
|
1489
|
+
# @param pos [Integer] The starting position of the scanline to decode.
|
1490
|
+
# @param prev_pos [Integer, nil] The starting position of the previously decoded scanline, or <tt>nil</tt>
|
1491
|
+
# if this is the first scanline of the image.
|
1492
|
+
# @param line_length [Integer] The number of bytes in the scanline, discounting the filter method byte.
|
1493
|
+
# @param pixel_size [Integer] The number of bytes used per pixel, based on the color mode.
|
1494
|
+
# @return [void]
|
1495
|
+
#
|
1496
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#421
|
1497
|
+
def decode_png_str_scanline(stream, pos, prev_pos, line_length, pixel_size); end
|
1498
|
+
|
1499
|
+
# Decodes a scanline in a pixelstream that was encoded using AVERAGE filtering.
|
1500
|
+
# This will change the pixelstream to have unfiltered values.
|
1501
|
+
#
|
1502
|
+
# @return [void]
|
1503
|
+
#
|
1504
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#464
|
1505
|
+
def decode_png_str_scanline_average(stream, pos, prev_pos, line_length, pixel_size); end
|
1506
|
+
|
1507
|
+
# Decodes a scanline in a pixelstream that was encoded using PAETH filtering.
|
1508
|
+
# This will change the pixelstream to have unfiltered values.
|
1509
|
+
#
|
1510
|
+
# @return [void]
|
1511
|
+
#
|
1512
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#476
|
1513
|
+
def decode_png_str_scanline_paeth(stream, pos, prev_pos, line_length, pixel_size); end
|
1514
|
+
|
1515
|
+
# Decodes a scanline in a pixelstream that was encoded using SUB filtering.
|
1516
|
+
# This will change the pixelstream to have unfiltered values.
|
1517
|
+
#
|
1518
|
+
# @return [void]
|
1519
|
+
#
|
1520
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#443
|
1521
|
+
def decode_png_str_scanline_sub(stream, pos, prev_pos, line_length, pixel_size); end
|
1522
|
+
|
1523
|
+
# Decodes a scanline that wasn't encoded using filtering. This is a no-op.
|
1524
|
+
#
|
1525
|
+
# @return [void]
|
1526
|
+
#
|
1527
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#435
|
1528
|
+
def decode_png_str_scanline_sub_none(stream, pos, prev_pos, line_length, pixel_size); end
|
1529
|
+
|
1530
|
+
# Decodes a scanline in a pixelstream that was encoded using UP filtering.
|
1531
|
+
# This will change the pixelstream to have unfiltered values.
|
1532
|
+
#
|
1533
|
+
# @return [void]
|
1534
|
+
#
|
1535
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#453
|
1536
|
+
def decode_png_str_scanline_up(stream, pos, prev_pos, line_length, pixel_size); end
|
1537
|
+
|
1538
|
+
# Decodes a canvas from a Adam 7 interlaced PNG encoded pixelstream, using a
|
1539
|
+
# given width, height and color mode.
|
1540
|
+
#
|
1541
|
+
# @param decoding_palette [ChunkyPNG::Palette] The palette to use to decode colors.
|
1542
|
+
# @param stream [String] The pixelstream to read from.
|
1543
|
+
# @param width [Integer] The width of the image.
|
1544
|
+
# @param height [Integer] The height of the image.
|
1545
|
+
# @param color_mode [Integer] The color mode of the encoded pixelstream.
|
1546
|
+
# @param depth [Integer] The bit depth of the pixel samples.
|
1547
|
+
# @return [ChunkyPNG::Canvas] The decoded Canvas instance.
|
1548
|
+
#
|
1549
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#132
|
1550
|
+
def decode_png_with_adam7_interlacing(stream, width, height, color_mode, depth, decoding_palette); end
|
1551
|
+
|
1552
|
+
# Decodes a canvas from a non-interlaced PNG encoded pixelstream, using a
|
1553
|
+
# given width, height and color mode.
|
1554
|
+
#
|
1555
|
+
# @param decoding_palette [ChunkyPNG::Palette] The palette to use to decode colors.
|
1556
|
+
# @param stream [String] The pixelstream to read from.
|
1557
|
+
# @param width [Integer] The width of the image.
|
1558
|
+
# @param height [Integer] The height of the image.
|
1559
|
+
# @param color_mode [Integer] The color mode of the encoded pixelstream.
|
1560
|
+
# @param depth [Integer] The bit depth of the pixel samples.
|
1561
|
+
# @return [ChunkyPNG::Canvas] The decoded Canvas instance.
|
1562
|
+
#
|
1563
|
+
# source://chunky_png//lib/chunky_png/canvas/png_decoding.rb#119
|
1564
|
+
def decode_png_without_interlacing(stream, width, height, color_mode, depth, decoding_palette); end
|
1565
|
+
end
|
1566
|
+
|
1567
|
+
# Methods for encoding a Canvas instance into a PNG datastream.
|
1568
|
+
#
|
1569
|
+
# Overview of the encoding process:
|
1570
|
+
#
|
1571
|
+
# * The image is split up in scanlines (i.e. rows of pixels);
|
1572
|
+
# * All pixels are encoded as a pixelstream, based on the color mode.
|
1573
|
+
# * All the pixel bytes in the pixelstream are adjusted using a filtering
|
1574
|
+
# method if one is specified.
|
1575
|
+
# * Compress the resulting string using deflate compression.
|
1576
|
+
# * Split compressed data over one or more PNG chunks.
|
1577
|
+
# * These chunks should be embedded in a datastream with at least a IHDR and
|
1578
|
+
# IEND chunk and possibly a PLTE chunk.
|
1579
|
+
#
|
1580
|
+
# For interlaced images, the initial image is first split into 7 subimages.
|
1581
|
+
# These images get encoded exactly as above, and the result gets combined
|
1582
|
+
# before the compression step.
|
1583
|
+
#
|
1584
|
+
# @see ChunkyPNG::Canvas::PNGDecoding
|
1585
|
+
# @see https://www.w3.org/TR/PNG/ The W3C PNG format specification
|
1586
|
+
#
|
1587
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#24
|
1588
|
+
module ChunkyPNG::Canvas::PNGEncoding
|
1589
|
+
# The palette used for encoding the image.This is only in used for images
|
1590
|
+
# that get encoded using indexed colors.
|
1591
|
+
#
|
1592
|
+
# @return [ChunkyPNG::Palette]
|
1593
|
+
#
|
1594
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#28
|
1595
|
+
def encoding_palette; end
|
1596
|
+
|
1597
|
+
# The palette used for encoding the image.This is only in used for images
|
1598
|
+
# that get encoded using indexed colors.
|
1599
|
+
#
|
1600
|
+
# @return [ChunkyPNG::Palette]
|
1601
|
+
#
|
1602
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#28
|
1603
|
+
def encoding_palette=(_arg0); end
|
1604
|
+
|
1605
|
+
# Writes the canvas to a file, encoded as a PNG image.
|
1606
|
+
#
|
1607
|
+
# @param filename [String] The file to save the PNG image to.
|
1608
|
+
# @param constraints [Hash, Symbol] The constraints to use when encoding the canvas.
|
1609
|
+
# This can either be a hash with different constraints, or a symbol which acts as a
|
1610
|
+
# preset for some constraints. If no constraints are given, ChunkyPNG will decide
|
1611
|
+
# for itself how to best create the PNG datastream.
|
1612
|
+
# Supported presets are <tt>:fast_rgba</tt> for quickly saving images with transparency,
|
1613
|
+
# <tt>:fast_rgb</tt> for quickly saving opaque images, and <tt>:best_compression</tt> to
|
1614
|
+
# obtain the smallest possible filesize.
|
1615
|
+
# @return [void]
|
1616
|
+
#
|
1617
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#42
|
1618
|
+
def save(filename, constraints = T.unsafe(nil)); end
|
1619
|
+
|
1620
|
+
# Encoded the canvas to a PNG formatted string.
|
1621
|
+
#
|
1622
|
+
# @param constraints [Hash, Symbol] The constraints to use when encoding the canvas.
|
1623
|
+
# This can either be a hash with different constraints, or a symbol which acts as a
|
1624
|
+
# preset for some constraints. If no constraints are given, ChunkyPNG will decide
|
1625
|
+
# for itself how to best create the PNG datastream.
|
1626
|
+
# Supported presets are <tt>:fast_rgba</tt> for quickly saving images with transparency,
|
1627
|
+
# <tt>:fast_rgb</tt> for quickly saving opaque images, and <tt>:best_compression</tt> to
|
1628
|
+
# obtain the smallest possible filesize.
|
1629
|
+
# @return [String] The PNG encoded canvas as string.
|
1630
|
+
#
|
1631
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#49
|
1632
|
+
def to_blob(constraints = T.unsafe(nil)); end
|
1633
|
+
|
1634
|
+
# Converts this Canvas to a datastream, so that it can be saved as a PNG image.
|
1635
|
+
#
|
1636
|
+
# @option constraints
|
1637
|
+
# @option constraints
|
1638
|
+
# @option constraints
|
1639
|
+
# @option constraints
|
1640
|
+
# @param constraints [Hash, Symbol] The constraints to use when encoding the canvas.
|
1641
|
+
# This can either be a hash with different constraints, or a symbol which acts as a
|
1642
|
+
# preset for some constraints. If no constraints are given, ChunkyPNG will decide
|
1643
|
+
# for itself how to best create the PNG datastream.
|
1644
|
+
# Supported presets are <tt>:fast_rgba</tt> for quickly saving images with transparency,
|
1645
|
+
# <tt>:fast_rgb</tt> for quickly saving opaque images, and <tt>:best_compression</tt> to
|
1646
|
+
# obtain the smallest possible filesize.
|
1647
|
+
# @return [ChunkyPNG::Datastream] The PNG datastream containing the encoded canvas.
|
1648
|
+
# @see ChunkyPNG::Canvas::PNGEncoding#determine_png_encoding
|
1649
|
+
#
|
1650
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#74
|
1651
|
+
def to_datastream(constraints = T.unsafe(nil)); end
|
1652
|
+
|
1653
|
+
# Encoded the canvas to a PNG formatted string.
|
1654
|
+
#
|
1655
|
+
# @return [String] The PNG encoded canvas as string.
|
1656
|
+
#
|
1657
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#49
|
1658
|
+
def to_s(constraints = T.unsafe(nil)); end
|
1659
|
+
|
1660
|
+
# Encoded the canvas to a PNG formatted string.
|
1661
|
+
#
|
1662
|
+
# @return [String] The PNG encoded canvas as string.
|
1663
|
+
#
|
1664
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#49
|
1665
|
+
def to_string(constraints = T.unsafe(nil)); end
|
1666
|
+
|
1667
|
+
# Writes the canvas to an IO stream, encoded as a PNG image.
|
1668
|
+
#
|
1669
|
+
# @param io [IO] The output stream to write to.
|
1670
|
+
# @param constraints [Hash, Symbol] The constraints to use when encoding the canvas.
|
1671
|
+
# This can either be a hash with different constraints, or a symbol which acts as a
|
1672
|
+
# preset for some constraints. If no constraints are given, ChunkyPNG will decide
|
1673
|
+
# for itself how to best create the PNG datastream.
|
1674
|
+
# Supported presets are <tt>:fast_rgba</tt> for quickly saving images with transparency,
|
1675
|
+
# <tt>:fast_rgb</tt> for quickly saving opaque images, and <tt>:best_compression</tt> to
|
1676
|
+
# obtain the smallest possible filesize.
|
1677
|
+
# @return [void]
|
1678
|
+
#
|
1679
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#34
|
1680
|
+
def write(io, constraints = T.unsafe(nil)); end
|
1681
|
+
|
1682
|
+
protected
|
1683
|
+
|
1684
|
+
# Determines the best possible PNG encoding variables for this image, by analyzing
|
1685
|
+
# the colors used for the image.
|
1686
|
+
#
|
1687
|
+
# You can provide constraints for the encoding variables by passing a hash with
|
1688
|
+
# encoding variables to this method.
|
1689
|
+
#
|
1690
|
+
# @param constraints [Hash, Symbol] The constraints for the encoding. This can be a
|
1691
|
+
# Hash or a preset symbol.
|
1692
|
+
# @return [Hash] A hash with encoding options for {ChunkyPNG::Canvas::PNGEncoding#to_datastream}
|
1693
|
+
#
|
1694
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#107
|
1695
|
+
def determine_png_encoding(constraints = T.unsafe(nil)); end
|
1696
|
+
|
1697
|
+
# Encodes the canvas to a stream, in a given color mode.
|
1698
|
+
#
|
1699
|
+
# @param stream [String] The stream to write to.
|
1700
|
+
# @param color_mode [Integer] The color mode to use for encoding.
|
1701
|
+
# @param bit_depth [Integer] The bit depth of the image.
|
1702
|
+
# @param filtering [Integer] The filtering method to use.
|
1703
|
+
#
|
1704
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#206
|
1705
|
+
def encode_png_image_pass_to_stream(stream, color_mode, bit_depth, filtering); end
|
1706
|
+
|
1707
|
+
# Encodes the canvas according to the PNG format specification with a given color
|
1708
|
+
# mode and Adam7 interlacing.
|
1709
|
+
#
|
1710
|
+
# This method will split the original canvas in 7 smaller canvases and encode them
|
1711
|
+
# one by one, concatenating the resulting strings.
|
1712
|
+
#
|
1713
|
+
# @param color_mode [Integer] The color mode to use for encoding.
|
1714
|
+
# @param bit_depth [Integer] The bit depth of the image.
|
1715
|
+
# @param filtering [Integer] The filtering method to use.
|
1716
|
+
# @return [String] The PNG encoded canvas as string.
|
1717
|
+
#
|
1718
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#191
|
1719
|
+
def encode_png_image_with_interlacing(color_mode, bit_depth = T.unsafe(nil), filtering = T.unsafe(nil)); end
|
1720
|
+
|
1721
|
+
# Encodes the canvas according to the PNG format specification with a given color mode.
|
1722
|
+
#
|
1723
|
+
# @param color_mode [Integer] The color mode to use for encoding.
|
1724
|
+
# @param bit_depth [Integer] The bit depth of the image.
|
1725
|
+
# @param filtering [Integer] The filtering method to use.
|
1726
|
+
# @return [String] The PNG encoded canvas as string.
|
1727
|
+
#
|
1728
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#175
|
1729
|
+
def encode_png_image_without_interlacing(color_mode, bit_depth = T.unsafe(nil), filtering = T.unsafe(nil)); end
|
1730
|
+
|
1731
|
+
# Encodes a line of pixels using 1-bit grayscale mode.
|
1732
|
+
#
|
1733
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1734
|
+
# @return [String] The encoded scanline as binary string
|
1735
|
+
#
|
1736
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#307
|
1737
|
+
def encode_png_pixels_to_scanline_grayscale_1bit(pixels); end
|
1738
|
+
|
1739
|
+
# Encodes a line of pixels using 2-bit grayscale mode.
|
1740
|
+
#
|
1741
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1742
|
+
# @return [String] The encoded scanline as binary string
|
1743
|
+
#
|
1744
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#325
|
1745
|
+
def encode_png_pixels_to_scanline_grayscale_2bit(pixels); end
|
1746
|
+
|
1747
|
+
# Encodes a line of pixels using 2-bit grayscale mode.
|
1748
|
+
#
|
1749
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1750
|
+
# @return [String] The encoded scanline as binary string
|
1751
|
+
#
|
1752
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#339
|
1753
|
+
def encode_png_pixels_to_scanline_grayscale_4bit(pixels); end
|
1754
|
+
|
1755
|
+
# Encodes a line of pixels using 8-bit grayscale mode.
|
1756
|
+
#
|
1757
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1758
|
+
# @return [String] The encoded scanline as binary string
|
1759
|
+
#
|
1760
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#350
|
1761
|
+
def encode_png_pixels_to_scanline_grayscale_8bit(pixels); end
|
1762
|
+
|
1763
|
+
# Encodes a line of pixels using 8-bit grayscale alpha mode.
|
1764
|
+
#
|
1765
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1766
|
+
# @return [String] The encoded scanline as binary string
|
1767
|
+
#
|
1768
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#357
|
1769
|
+
def encode_png_pixels_to_scanline_grayscale_alpha_8bit(pixels); end
|
1770
|
+
|
1771
|
+
# Encodes a line of pixels using 1-bit indexed mode.
|
1772
|
+
#
|
1773
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1774
|
+
# @return [String] The encoded scanline as binary string
|
1775
|
+
#
|
1776
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#253
|
1777
|
+
def encode_png_pixels_to_scanline_indexed_1bit(pixels); end
|
1778
|
+
|
1779
|
+
# Encodes a line of pixels using 2-bit indexed mode.
|
1780
|
+
#
|
1781
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1782
|
+
# @return [String] The encoded scanline as binary string
|
1783
|
+
#
|
1784
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#273
|
1785
|
+
def encode_png_pixels_to_scanline_indexed_2bit(pixels); end
|
1786
|
+
|
1787
|
+
# Encodes a line of pixels using 4-bit indexed mode.
|
1788
|
+
#
|
1789
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1790
|
+
# @return [String] The encoded scanline as binary string
|
1791
|
+
#
|
1792
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#289
|
1793
|
+
def encode_png_pixels_to_scanline_indexed_4bit(pixels); end
|
1794
|
+
|
1795
|
+
# Encodes a line of pixels using 8-bit indexed mode.
|
1796
|
+
#
|
1797
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1798
|
+
# @return [String] The encoded scanline as binary string
|
1799
|
+
#
|
1800
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#300
|
1801
|
+
def encode_png_pixels_to_scanline_indexed_8bit(pixels); end
|
1802
|
+
|
1803
|
+
# Returns the method name to use to decode scanlines into pixels.
|
1804
|
+
#
|
1805
|
+
# @param color_mode [Integer] The color mode of the image.
|
1806
|
+
# @param depth [Integer] The bit depth of the image.
|
1807
|
+
# @raise [ChunkyPNG::NotSupported] when the color_mode and/or bit depth is not supported.
|
1808
|
+
# @return [Symbol] The method name to use for decoding, to be called on the canvas class.
|
1809
|
+
#
|
1810
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#366
|
1811
|
+
def encode_png_pixels_to_scanline_method(color_mode, depth); end
|
1812
|
+
|
1813
|
+
# Encodes a line of pixels using 8-bit truecolor mode.
|
1814
|
+
#
|
1815
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1816
|
+
# @return [String] The encoded scanline as binary string
|
1817
|
+
#
|
1818
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#239
|
1819
|
+
def encode_png_pixels_to_scanline_truecolor_8bit(pixels); end
|
1820
|
+
|
1821
|
+
# Encodes a line of pixels using 8-bit truecolor alpha mode.
|
1822
|
+
#
|
1823
|
+
# @param pixels [Array<Integer>] A row of pixels of the original image.
|
1824
|
+
# @return [String] The encoded scanline as binary string
|
1825
|
+
#
|
1826
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#246
|
1827
|
+
def encode_png_pixels_to_scanline_truecolor_alpha_8bit(pixels); end
|
1828
|
+
|
1829
|
+
# Encodes the canvas according to the PNG format specification with a given color
|
1830
|
+
# mode, possibly with interlacing.
|
1831
|
+
#
|
1832
|
+
# @param color_mode [Integer] The color mode to use for encoding.
|
1833
|
+
# @param bit_depth [Integer] The bit depth of the image.
|
1834
|
+
# @param interlace [Integer] The interlacing method to use.
|
1835
|
+
# @return [String] The PNG encoded canvas as string.
|
1836
|
+
#
|
1837
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#157
|
1838
|
+
def encode_png_pixelstream(color_mode = T.unsafe(nil), bit_depth = T.unsafe(nil), interlace = T.unsafe(nil), filtering = T.unsafe(nil)); end
|
1839
|
+
|
1840
|
+
# Encodes a scanline of a pixelstream using AVERAGE filtering. This will modify the stream.
|
1841
|
+
#
|
1842
|
+
# @param stream [String] The pixelstream to work on. This string will be modified.
|
1843
|
+
# @param pos [Integer] The starting position of the scanline.
|
1844
|
+
# @param prev_pos [Integer, nil] The starting position of the previous scanline. <tt>nil</tt> if
|
1845
|
+
# this is the first line.
|
1846
|
+
# @param line_width [Integer] The number of bytes in this scanline, without counting the filtering
|
1847
|
+
# method byte.
|
1848
|
+
# @param pixel_size [Integer] The number of bytes used per pixel.
|
1849
|
+
# @return [void]
|
1850
|
+
#
|
1851
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#417
|
1852
|
+
def encode_png_str_scanline_average(stream, pos, prev_pos, line_width, pixel_size); end
|
1853
|
+
|
1854
|
+
# Encodes a scanline of a pixelstream without filtering. This is a no-op.
|
1855
|
+
#
|
1856
|
+
# @param stream [String] The pixelstream to work on. This string will be modified.
|
1857
|
+
# @param pos [Integer] The starting position of the scanline.
|
1858
|
+
# @param prev_pos [Integer, nil] The starting position of the previous scanline. <tt>nil</tt> if
|
1859
|
+
# this is the first line.
|
1860
|
+
# @param line_width [Integer] The number of bytes in this scanline, without counting the filtering
|
1861
|
+
# method byte.
|
1862
|
+
# @param pixel_size [Integer] The number of bytes used per pixel.
|
1863
|
+
# @return [void]
|
1864
|
+
#
|
1865
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#388
|
1866
|
+
def encode_png_str_scanline_none(stream, pos, prev_pos, line_width, pixel_size); end
|
1867
|
+
|
1868
|
+
# Encodes a scanline of a pixelstream using PAETH filtering. This will modify the stream.
|
1869
|
+
#
|
1870
|
+
# @param stream [String] The pixelstream to work on. This string will be modified.
|
1871
|
+
# @param pos [Integer] The starting position of the scanline.
|
1872
|
+
# @param prev_pos [Integer, nil] The starting position of the previous scanline. <tt>nil</tt> if
|
1873
|
+
# this is the first line.
|
1874
|
+
# @param line_width [Integer] The number of bytes in this scanline, without counting the filtering
|
1875
|
+
# method byte.
|
1876
|
+
# @param pixel_size [Integer] The number of bytes used per pixel.
|
1877
|
+
# @return [void]
|
1878
|
+
#
|
1879
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#429
|
1880
|
+
def encode_png_str_scanline_paeth(stream, pos, prev_pos, line_width, pixel_size); end
|
1881
|
+
|
1882
|
+
# Encodes a scanline of a pixelstream using SUB filtering. This will modify the stream.
|
1883
|
+
#
|
1884
|
+
# @param stream [String] The pixelstream to work on. This string will be modified.
|
1885
|
+
# @param pos [Integer] The starting position of the scanline.
|
1886
|
+
# @param prev_pos [Integer, nil] The starting position of the previous scanline. <tt>nil</tt> if
|
1887
|
+
# this is the first line.
|
1888
|
+
# @param line_width [Integer] The number of bytes in this scanline, without counting the filtering
|
1889
|
+
# method byte.
|
1890
|
+
# @param pixel_size [Integer] The number of bytes used per pixel.
|
1891
|
+
# @return [void]
|
1892
|
+
#
|
1893
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#395
|
1894
|
+
def encode_png_str_scanline_sub(stream, pos, prev_pos, line_width, pixel_size); end
|
1895
|
+
|
1896
|
+
# Encodes a scanline of a pixelstream using UP filtering. This will modify the stream.
|
1897
|
+
#
|
1898
|
+
# @param stream [String] The pixelstream to work on. This string will be modified.
|
1899
|
+
# @param pos [Integer] The starting position of the scanline.
|
1900
|
+
# @param prev_pos [Integer, nil] The starting position of the previous scanline. <tt>nil</tt> if
|
1901
|
+
# this is the first line.
|
1902
|
+
# @param line_width [Integer] The number of bytes in this scanline, without counting the filtering
|
1903
|
+
# method byte.
|
1904
|
+
# @param pixel_size [Integer] The number of bytes used per pixel.
|
1905
|
+
# @return [void]
|
1906
|
+
#
|
1907
|
+
# source://chunky_png//lib/chunky_png/canvas/png_encoding.rb#406
|
1908
|
+
def encode_png_str_scanline_up(stream, pos, prev_pos, line_width, pixel_size); end
|
1909
|
+
end
|
1910
|
+
|
1911
|
+
# The ChunkyPNG::Canvas::Resampling module defines methods to perform image resampling to
|
1912
|
+
# a {ChunkyPNG::Canvas}.
|
1913
|
+
#
|
1914
|
+
# Currently, only the nearest neighbor algorithm is implemented. Bilinear and cubic
|
1915
|
+
# algorithms may be added later on.
|
1916
|
+
#
|
1917
|
+
# @see ChunkyPNG::Canvas
|
1918
|
+
#
|
1919
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#12
|
1920
|
+
module ChunkyPNG::Canvas::Resampling
|
1921
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#90
|
1922
|
+
def resample(new_width, new_height); end
|
1923
|
+
|
1924
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#134
|
1925
|
+
def resample_bilinear(new_width, new_height); end
|
1926
|
+
|
1927
|
+
# Resamples the canvas with bilinear interpolation.
|
1928
|
+
#
|
1929
|
+
# @param new_width [Integer] The width of the resampled canvas.
|
1930
|
+
# @param new_height [Integer] The height of the resampled canvas.
|
1931
|
+
# @return [ChunkyPNG::Canvas] A new canvas instance with the resampled pixels.
|
1932
|
+
#
|
1933
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#98
|
1934
|
+
def resample_bilinear!(new_width, new_height); end
|
1935
|
+
|
1936
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#90
|
1937
|
+
def resample_nearest_neighbor(new_width, new_height); end
|
1938
|
+
|
1939
|
+
# Resamples the canvas using nearest neighbor interpolation.
|
1940
|
+
#
|
1941
|
+
# @param new_width [Integer] The width of the resampled canvas.
|
1942
|
+
# @param new_height [Integer] The height of the resampled canvas.
|
1943
|
+
# @return [ChunkyPNG::Canvas] A new canvas instance with the resampled pixels.
|
1944
|
+
#
|
1945
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#74
|
1946
|
+
def resample_nearest_neighbor!(new_width, new_height); end
|
1947
|
+
|
1948
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#90
|
1949
|
+
def resize(new_width, new_height); end
|
1950
|
+
|
1951
|
+
# Integer Interpolation between two values
|
1952
|
+
#
|
1953
|
+
# Used for generating indicies for interpolation (eg, nearest
|
1954
|
+
# neighbour).
|
1955
|
+
#
|
1956
|
+
# @param width [Integer] The width of the source
|
1957
|
+
# @param new_width [Integer] The width of the destination
|
1958
|
+
# @return [Array<Integer>] An Array of Integer indicies
|
1959
|
+
#
|
1960
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#21
|
1961
|
+
def steps(width, new_width); end
|
1962
|
+
|
1963
|
+
# Fractional Interpolation between two values
|
1964
|
+
#
|
1965
|
+
# Used for generating values for interpolation (eg, bilinear).
|
1966
|
+
# Produces both the indices and the interpolation factors (residues).
|
1967
|
+
#
|
1968
|
+
# @param width [Integer] The width of the source
|
1969
|
+
# @param new_width [Integer] The width of the destination
|
1970
|
+
# @return [Array<Integer>, Array<Integer>] Two arrays of indicies and residues
|
1971
|
+
#
|
1972
|
+
# source://chunky_png//lib/chunky_png/canvas/resampling.rb#38
|
1973
|
+
def steps_residues(width, new_width); end
|
1974
|
+
end
|
1975
|
+
|
1976
|
+
# Methods to save load a canvas from to stream, encoded in RGB, RGBA, BGR or ABGR format.
|
1977
|
+
#
|
1978
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_exporting.rb#6
|
1979
|
+
module ChunkyPNG::Canvas::StreamExporting
|
1980
|
+
# Creates an ABGR-formatted pixelstream with the pixel data from this canvas.
|
1981
|
+
#
|
1982
|
+
# Note that this format is fast but bloated, because no compression is used
|
1983
|
+
# and the internal representation is left intact. To reconstruct the
|
1984
|
+
# canvas, the width and height should be known.
|
1985
|
+
#
|
1986
|
+
# @return [String] The RGBA-formatted pixel data.
|
1987
|
+
#
|
1988
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_exporting.rb#53
|
1989
|
+
def to_abgr_stream; end
|
1990
|
+
|
1991
|
+
# Creates a stream of the alpha channel of this canvas.
|
1992
|
+
#
|
1993
|
+
# @return [String] The 0-255 alpha values of all pixels packed as string
|
1994
|
+
#
|
1995
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_exporting.rb#32
|
1996
|
+
def to_alpha_channel_stream; end
|
1997
|
+
|
1998
|
+
# Creates a grayscale stream of this canvas.
|
1999
|
+
#
|
2000
|
+
# This method assume sthat this image is fully grayscale, i.e. R = G = B for
|
2001
|
+
# every pixel. The alpha channel will not be included in the stream.
|
2002
|
+
#
|
2003
|
+
# @return [String] The 0-255 grayscale values of all pixels packed as string.
|
2004
|
+
#
|
2005
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_exporting.rb#42
|
2006
|
+
def to_grayscale_stream; end
|
2007
|
+
|
2008
|
+
# Creates an RGB-formatted pixelstream with the pixel data from this canvas.
|
2009
|
+
#
|
2010
|
+
# Note that this format is fast but bloated, because no compression is used
|
2011
|
+
# and the internal representation is almost left intact. To reconstruct
|
2012
|
+
# the canvas, the width and height should be known.
|
2013
|
+
#
|
2014
|
+
# @return [String] The RGB-formatted pixel data.
|
2015
|
+
#
|
2016
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_exporting.rb#25
|
2017
|
+
def to_rgb_stream; end
|
2018
|
+
|
2019
|
+
# Creates an RGB-formatted pixelstream with the pixel data from this canvas.
|
2020
|
+
#
|
2021
|
+
# Note that this format is fast but bloated, because no compression is used
|
2022
|
+
# and the internal representation is left intact. To reconstruct the
|
2023
|
+
# canvas, the width and height should be known.
|
2024
|
+
#
|
2025
|
+
# @return [String] The RGBA-formatted pixel data.
|
2026
|
+
#
|
2027
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_exporting.rb#14
|
2028
|
+
def to_rgba_stream; end
|
2029
|
+
end
|
2030
|
+
|
2031
|
+
# Methods to quickly load a canvas from a stream, encoded in RGB, RGBA, BGR or ABGR format.
|
2032
|
+
#
|
2033
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_importing.rb#6
|
2034
|
+
module ChunkyPNG::Canvas::StreamImporting
|
2035
|
+
# Creates a canvas by reading pixels from an ARGB formatted stream with a
|
2036
|
+
# provided with and height.
|
2037
|
+
#
|
2038
|
+
# Every pixel should be represented by 4 bytes in the stream, in the correct
|
2039
|
+
# ARGB order. This format is almost like the internal representation of a
|
2040
|
+
# canvas object, so this kind of stream can be read extremely quickly.
|
2041
|
+
#
|
2042
|
+
# @param width [Integer] The width of the new canvas.
|
2043
|
+
# @param height [Integer] The height of the new canvas.
|
2044
|
+
# @param stream [#read, String] The stream to read the pixel data from.
|
2045
|
+
# @return [ChunkyPNG::Canvas] The newly constructed canvas instance.
|
2046
|
+
#
|
2047
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_importing.rb#71
|
2048
|
+
def from_abgr_stream(width, height, stream); end
|
2049
|
+
|
2050
|
+
# Creates a canvas by reading pixels from an BGR formatted stream with a
|
2051
|
+
# provided with and height.
|
2052
|
+
#
|
2053
|
+
# Every pixel should be represented by 3 bytes in the stream, in the correct
|
2054
|
+
# BGR order. This format closely resembles the internal representation of a
|
2055
|
+
# canvas object, so this kind of stream can be read extremely quickly.
|
2056
|
+
#
|
2057
|
+
# @param width [Integer] The width of the new canvas.
|
2058
|
+
# @param height [Integer] The height of the new canvas.
|
2059
|
+
# @param stream [#read, String] The stream to read the pixel data from.
|
2060
|
+
# @return [ChunkyPNG::Canvas] The newly constructed canvas instance.
|
2061
|
+
#
|
2062
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_importing.rb#53
|
2063
|
+
def from_bgr_stream(width, height, stream); end
|
2064
|
+
|
2065
|
+
# Creates a canvas by reading pixels from an RGB formatted stream with a
|
2066
|
+
# provided with and height.
|
2067
|
+
#
|
2068
|
+
# Every pixel should be represented by 3 bytes in the stream, in the correct
|
2069
|
+
# RGB order. This format closely resembles the internal representation of a
|
2070
|
+
# canvas object, so this kind of stream can be read extremely quickly.
|
2071
|
+
#
|
2072
|
+
# @param width [Integer] The width of the new canvas.
|
2073
|
+
# @param height [Integer] The height of the new canvas.
|
2074
|
+
# @param stream [#read, String] The stream to read the pixel data from.
|
2075
|
+
# @return [ChunkyPNG::Canvas] The newly constructed canvas instance.
|
2076
|
+
#
|
2077
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_importing.rb#18
|
2078
|
+
def from_rgb_stream(width, height, stream); end
|
2079
|
+
|
2080
|
+
# Creates a canvas by reading pixels from an RGBA formatted stream with a
|
2081
|
+
# provided with and height.
|
2082
|
+
#
|
2083
|
+
# Every pixel should be represented by 4 bytes in the stream, in the correct
|
2084
|
+
# RGBA order. This format is exactly like the internal representation of a
|
2085
|
+
# canvas object, so this kind of stream can be read extremely quickly.
|
2086
|
+
#
|
2087
|
+
# @param width [Integer] The width of the new canvas.
|
2088
|
+
# @param height [Integer] The height of the new canvas.
|
2089
|
+
# @param stream [#read, String] The stream to read the pixel data from.
|
2090
|
+
# @return [ChunkyPNG::Canvas] The newly constructed canvas instance.
|
2091
|
+
#
|
2092
|
+
# source://chunky_png//lib/chunky_png/canvas/stream_importing.rb#37
|
2093
|
+
def from_rgba_stream(width, height, stream); end
|
2094
|
+
end
|
2095
|
+
|
2096
|
+
# A PNG datastream consists of multiple chunks. This module, and the classes
|
2097
|
+
# contained within, help with handling these chunks. It supports both reading
|
2098
|
+
# and writing chunks.
|
2099
|
+
#
|
2100
|
+
# All chunk types are instances of the {ChunkyPNG::Chunk::Base} class. For
|
2101
|
+
# some chunk types a specialized class is available, e.g. the IHDR chunk is
|
2102
|
+
# represented by the {ChunkyPNG::Chunk::Header} class. These specialized
|
2103
|
+
# classes help accessing the content of the chunk. All other chunks are
|
2104
|
+
# represented by the {ChunkyPNG::Chunk::Generic} class.
|
2105
|
+
#
|
2106
|
+
# @see ChunkyPNG::Datastream
|
2107
|
+
#
|
2108
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#15
|
2109
|
+
module ChunkyPNG::Chunk
|
2110
|
+
class << self
|
2111
|
+
# Reads a chunk from an IO stream.
|
2112
|
+
#
|
2113
|
+
# @param io [IO, #read] The IO stream to read from.
|
2114
|
+
# @return [ChunkyPNG::Chung::Base] The loaded chunk instance.
|
2115
|
+
#
|
2116
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#20
|
2117
|
+
def read(io); end
|
2118
|
+
|
2119
|
+
# Reads an exact number of bytes from an IO stream.
|
2120
|
+
#
|
2121
|
+
# @param io [IO, #read] The IO stream to read from.
|
2122
|
+
# @param length [Integer] The IO exact number of bytes to read.
|
2123
|
+
# @raise [ChunkyPNG::ExpectationFailed] If not exactly length
|
2124
|
+
# bytes could be read from the IO stream.
|
2125
|
+
# @return [String] A binary string of exactly length bytes.
|
2126
|
+
#
|
2127
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#36
|
2128
|
+
def read_bytes(io, length); end
|
2129
|
+
|
2130
|
+
# Verifies the CRC of a chunk.
|
2131
|
+
#
|
2132
|
+
# @param type [String] The chunk's type.
|
2133
|
+
# @param content [String] The chunk's content.
|
2134
|
+
# @param found_crc [Integer] The chunk's found CRC value.
|
2135
|
+
# @raise [ChunkyPNG::CRCMismatch] An exception is raised if
|
2136
|
+
# the found CRC value is not equal to the expected CRC value.
|
2137
|
+
#
|
2138
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#48
|
2139
|
+
def verify_crc!(type, content, found_crc); end
|
2140
|
+
end
|
2141
|
+
end
|
2142
|
+
|
2143
|
+
# The base chunk class is the superclass for every chunk type. It contains
|
2144
|
+
# methods to write the chunk to an output stream.
|
2145
|
+
#
|
2146
|
+
# A subclass should implement the +content+ method, which gets called when
|
2147
|
+
# the chunk gets written to a PNG datastream
|
2148
|
+
#
|
2149
|
+
# @abstract
|
2150
|
+
#
|
2151
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#60
|
2152
|
+
class ChunkyPNG::Chunk::Base
|
2153
|
+
# Initializes the chunk instance.
|
2154
|
+
#
|
2155
|
+
# @param type [String] The four character chunk type indicator.
|
2156
|
+
# @param attributes [Hash] A hash of attributes to set on this chunk.
|
2157
|
+
# @return [Base] a new instance of Base
|
2158
|
+
#
|
2159
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#69
|
2160
|
+
def initialize(type, attributes = T.unsafe(nil)); end
|
2161
|
+
|
2162
|
+
# The four-character type indicator for the chunk. This field is used to
|
2163
|
+
# find the correct class for a chunk when it is loaded from a PNG stream.
|
2164
|
+
#
|
2165
|
+
# @return [String]
|
2166
|
+
#
|
2167
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#64
|
2168
|
+
def type; end
|
2169
|
+
|
2170
|
+
# The four-character type indicator for the chunk. This field is used to
|
2171
|
+
# find the correct class for a chunk when it is loaded from a PNG stream.
|
2172
|
+
#
|
2173
|
+
# @return [String]
|
2174
|
+
#
|
2175
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#64
|
2176
|
+
def type=(_arg0); end
|
2177
|
+
|
2178
|
+
# Writes the chunk to the IO stream.
|
2179
|
+
#
|
2180
|
+
# It will call the +content+ method to get the content for this chunk,
|
2181
|
+
# and will calculate and append the checksum automatically.
|
2182
|
+
#
|
2183
|
+
# @param io [IO] The IO stream to write to.
|
2184
|
+
#
|
2185
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#88
|
2186
|
+
def write(io); end
|
2187
|
+
|
2188
|
+
# Writes the chunk to the IO stream, using the provided content.
|
2189
|
+
# The checksum will be calculated and appended to the stream.
|
2190
|
+
#
|
2191
|
+
# @param io [IO] The IO stream to write to.
|
2192
|
+
# @param content [String] The content for this chunk.
|
2193
|
+
#
|
2194
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#78
|
2195
|
+
def write_with_crc(io, content); end
|
2196
|
+
end
|
2197
|
+
|
2198
|
+
# Maps chunk types to classes, based on the four byte chunk type indicator
|
2199
|
+
# at the beginning of a chunk.
|
2200
|
+
#
|
2201
|
+
# If a chunk type is not specified in this hash, the Generic chunk type
|
2202
|
+
# will be used.
|
2203
|
+
#
|
2204
|
+
# @see ChunkyPNG::Chunk.read
|
2205
|
+
#
|
2206
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#460
|
2207
|
+
ChunkyPNG::Chunk::CHUNK_TYPES = T.let(T.unsafe(nil), Hash)
|
2208
|
+
|
2209
|
+
# The CompressedText (zTXt) chunk contains keyword/value metadata about the
|
2210
|
+
# PNG stream. In this chunk, the value is compressed using Deflate
|
2211
|
+
# compression.
|
2212
|
+
#
|
2213
|
+
# @see https://www.w3.org/TR/PNG/#11zTXt
|
2214
|
+
# @see ChunkyPNG::Chunk::CompressedText
|
2215
|
+
# @see ChunkyPNG::Chunk::InternationalText
|
2216
|
+
#
|
2217
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#331
|
2218
|
+
class ChunkyPNG::Chunk::CompressedText < ::ChunkyPNG::Chunk::Base
|
2219
|
+
# @return [CompressedText] a new instance of CompressedText
|
2220
|
+
#
|
2221
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#334
|
2222
|
+
def initialize(keyword, value); end
|
2223
|
+
|
2224
|
+
# Creates the content to write to the stream, by concatenating the
|
2225
|
+
# keyword with the deflated value, joined by a null character.
|
2226
|
+
#
|
2227
|
+
# @return The content that should be written to the datastream.
|
2228
|
+
#
|
2229
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#349
|
2230
|
+
def content; end
|
2231
|
+
|
2232
|
+
# Returns the value of attribute keyword.
|
2233
|
+
#
|
2234
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#332
|
2235
|
+
def keyword; end
|
2236
|
+
|
2237
|
+
# Sets the attribute keyword
|
2238
|
+
#
|
2239
|
+
# @param value the value to set the attribute keyword to.
|
2240
|
+
#
|
2241
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#332
|
2242
|
+
def keyword=(_arg0); end
|
2243
|
+
|
2244
|
+
# Returns the value of attribute value.
|
2245
|
+
#
|
2246
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#332
|
2247
|
+
def value; end
|
2248
|
+
|
2249
|
+
# Sets the attribute value
|
2250
|
+
#
|
2251
|
+
# @param value the value to set the attribute value to.
|
2252
|
+
#
|
2253
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#332
|
2254
|
+
def value=(_arg0); end
|
2255
|
+
|
2256
|
+
class << self
|
2257
|
+
# @raise [ChunkyPNG::NotSupported]
|
2258
|
+
#
|
2259
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#339
|
2260
|
+
def read(type, content); end
|
2261
|
+
end
|
2262
|
+
end
|
2263
|
+
|
2264
|
+
# The End (IEND) chunk indicates the last chunk of a PNG stream. It does
|
2265
|
+
# not contain any data.
|
2266
|
+
#
|
2267
|
+
# @see https://www.w3.org/TR/PNG/#11IEND
|
2268
|
+
#
|
2269
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#175
|
2270
|
+
class ChunkyPNG::Chunk::End < ::ChunkyPNG::Chunk::Base
|
2271
|
+
# @return [End] a new instance of End
|
2272
|
+
#
|
2273
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#176
|
2274
|
+
def initialize; end
|
2275
|
+
|
2276
|
+
# Returns an empty string, because this chunk should always be empty.
|
2277
|
+
#
|
2278
|
+
# @return [""] An empty string.
|
2279
|
+
#
|
2280
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#194
|
2281
|
+
def content; end
|
2282
|
+
|
2283
|
+
class << self
|
2284
|
+
# Reads the END chunk. It will check if the content is empty.
|
2285
|
+
#
|
2286
|
+
# @param type [String] The four character chunk type indicator (=
|
2287
|
+
# "IEND").
|
2288
|
+
# @param content [String] The content read from the chunk. Should be
|
2289
|
+
# empty.
|
2290
|
+
# @raise [ChunkyPNG::ExpectationFailed] Raises an exception if the content was not empty.
|
2291
|
+
# @return [ChunkyPNG::Chunk::End] The new End chunk instance.
|
2292
|
+
#
|
2293
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#187
|
2294
|
+
def read(type, content); end
|
2295
|
+
end
|
2296
|
+
end
|
2297
|
+
|
2298
|
+
# The Generic chunk type will read the content from the chunk as it,
|
2299
|
+
# and will write it back as it was read.
|
2300
|
+
#
|
2301
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#97
|
2302
|
+
class ChunkyPNG::Chunk::Generic < ::ChunkyPNG::Chunk::Base
|
2303
|
+
# @return [Generic] a new instance of Generic
|
2304
|
+
#
|
2305
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#100
|
2306
|
+
def initialize(type, content = T.unsafe(nil)); end
|
2307
|
+
|
2308
|
+
# The attribute to store the content from the chunk, which gets
|
2309
|
+
# written by the +write+ method.
|
2310
|
+
#
|
2311
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#98
|
2312
|
+
def content; end
|
2313
|
+
|
2314
|
+
# The attribute to store the content from the chunk, which gets
|
2315
|
+
# written by the +write+ method.
|
2316
|
+
#
|
2317
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#98
|
2318
|
+
def content=(_arg0); end
|
2319
|
+
|
2320
|
+
class << self
|
2321
|
+
# Creates an instance, given the chunk's type and content.
|
2322
|
+
#
|
2323
|
+
# @param type [String] The four character chunk type indicator.
|
2324
|
+
# @param content [String] The content read from the chunk.
|
2325
|
+
# @return [ChunkyPNG::Chunk::Generic] The new chunk instance.
|
2326
|
+
#
|
2327
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#108
|
2328
|
+
def read(type, content); end
|
2329
|
+
end
|
2330
|
+
end
|
2331
|
+
|
2332
|
+
# The header (IHDR) chunk is the first chunk of every PNG image, and
|
2333
|
+
# contains information about the image: i.e. its width, height, color
|
2334
|
+
# depth, color mode, compression method, filtering method and interlace
|
2335
|
+
# method.
|
2336
|
+
#
|
2337
|
+
# ChunkyPNG supports all values for these variables that are defined in the
|
2338
|
+
# PNG spec, except for color depth: Only 8-bit depth images are supported.
|
2339
|
+
# Note that it is still possible to access the chunk for such an image, but
|
2340
|
+
# ChunkyPNG will raise an exception if you try to access the pixel data.
|
2341
|
+
#
|
2342
|
+
# @see https://www.w3.org/TR/PNG/#11IHDR
|
2343
|
+
#
|
2344
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#124
|
2345
|
+
class ChunkyPNG::Chunk::Header < ::ChunkyPNG::Chunk::Base
|
2346
|
+
# @return [Header] a new instance of Header
|
2347
|
+
#
|
2348
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#127
|
2349
|
+
def initialize(attrs = T.unsafe(nil)); end
|
2350
|
+
|
2351
|
+
# Returns the value of attribute color.
|
2352
|
+
#
|
2353
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2354
|
+
def color; end
|
2355
|
+
|
2356
|
+
# Sets the attribute color
|
2357
|
+
#
|
2358
|
+
# @param value the value to set the attribute color to.
|
2359
|
+
#
|
2360
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2361
|
+
def color=(_arg0); end
|
2362
|
+
|
2363
|
+
# Returns the value of attribute compression.
|
2364
|
+
#
|
2365
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2366
|
+
def compression; end
|
2367
|
+
|
2368
|
+
# Sets the attribute compression
|
2369
|
+
#
|
2370
|
+
# @param value the value to set the attribute compression to.
|
2371
|
+
#
|
2372
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2373
|
+
def compression=(_arg0); end
|
2374
|
+
|
2375
|
+
# Returns the content for this chunk when it gets written to a file, by
|
2376
|
+
# packing the image information variables into the correct format.
|
2377
|
+
#
|
2378
|
+
# @return [String] The 13-byte content for the header chunk.
|
2379
|
+
#
|
2380
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#158
|
2381
|
+
def content; end
|
2382
|
+
|
2383
|
+
# Returns the value of attribute depth.
|
2384
|
+
#
|
2385
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2386
|
+
def depth; end
|
2387
|
+
|
2388
|
+
# Sets the attribute depth
|
2389
|
+
#
|
2390
|
+
# @param value the value to set the attribute depth to.
|
2391
|
+
#
|
2392
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2393
|
+
def depth=(_arg0); end
|
2394
|
+
|
2395
|
+
# Returns the value of attribute filtering.
|
2396
|
+
#
|
2397
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2398
|
+
def filtering; end
|
2399
|
+
|
2400
|
+
# Sets the attribute filtering
|
2401
|
+
#
|
2402
|
+
# @param value the value to set the attribute filtering to.
|
2403
|
+
#
|
2404
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2405
|
+
def filtering=(_arg0); end
|
2406
|
+
|
2407
|
+
# Returns the value of attribute height.
|
2408
|
+
#
|
2409
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2410
|
+
def height; end
|
2411
|
+
|
2412
|
+
# Sets the attribute height
|
2413
|
+
#
|
2414
|
+
# @param value the value to set the attribute height to.
|
2415
|
+
#
|
2416
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2417
|
+
def height=(_arg0); end
|
2418
|
+
|
2419
|
+
# Returns the value of attribute interlace.
|
2420
|
+
#
|
2421
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2422
|
+
def interlace; end
|
2423
|
+
|
2424
|
+
# Sets the attribute interlace
|
2425
|
+
#
|
2426
|
+
# @param value the value to set the attribute interlace to.
|
2427
|
+
#
|
2428
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2429
|
+
def interlace=(_arg0); end
|
2430
|
+
|
2431
|
+
# Returns the value of attribute width.
|
2432
|
+
#
|
2433
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2434
|
+
def width; end
|
2435
|
+
|
2436
|
+
# Sets the attribute width
|
2437
|
+
#
|
2438
|
+
# @param value the value to set the attribute width to.
|
2439
|
+
#
|
2440
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#125
|
2441
|
+
def width=(_arg0); end
|
2442
|
+
|
2443
|
+
class << self
|
2444
|
+
# Reads the 13 bytes of content from the header chunk to set the image
|
2445
|
+
# attributes.
|
2446
|
+
#
|
2447
|
+
# @param type [String] The four character chunk type indicator (= "IHDR").
|
2448
|
+
# @param content [String] The 13 bytes of content read from the chunk.
|
2449
|
+
# @return [ChunkyPNG::Chunk::End] The new Header chunk instance with the
|
2450
|
+
# variables set to the values according to the content.
|
2451
|
+
#
|
2452
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#142
|
2453
|
+
def read(type, content); end
|
2454
|
+
end
|
2455
|
+
end
|
2456
|
+
|
2457
|
+
# An image data (IDAT) chunk holds (part of) the compressed image pixel data.
|
2458
|
+
#
|
2459
|
+
# The data of an image can be split over multiple chunks, which will have to be combined
|
2460
|
+
# and inflated in order to decode an image. See {{.combine_chunks}} to combine chunks
|
2461
|
+
# to decode, and {{.split_in_chunks}} for encoding a pixeldata stream into IDAT chunks.
|
2462
|
+
#
|
2463
|
+
# @see https://www.w3.org/TR/PNG/#11IDAT
|
2464
|
+
#
|
2465
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#271
|
2466
|
+
class ChunkyPNG::Chunk::ImageData < ::ChunkyPNG::Chunk::Generic
|
2467
|
+
class << self
|
2468
|
+
# Combines the list of IDAT chunks and inflates their contents to produce the
|
2469
|
+
# pixeldata stream for the image.
|
2470
|
+
#
|
2471
|
+
# @return [String] The combined, inflated pixeldata as binary string
|
2472
|
+
#
|
2473
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#272
|
2474
|
+
def combine_chunks(data_chunks); end
|
2475
|
+
|
2476
|
+
# Splits and compresses a pixeldata stream into a list of IDAT chunks.
|
2477
|
+
#
|
2478
|
+
# @param data [String] The binary string of pixeldata
|
2479
|
+
# @param level [Integer] The compression level to use.
|
2480
|
+
# @param chunk_size [Integer] The maximum size of a chunk.
|
2481
|
+
#
|
2482
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#286
|
2483
|
+
def split_in_chunks(data, level = T.unsafe(nil), chunk_size = T.unsafe(nil)); end
|
2484
|
+
end
|
2485
|
+
end
|
2486
|
+
|
2487
|
+
# The InternationalText (iTXt) chunk contains keyword/value metadata about the PNG
|
2488
|
+
# stream, translated to a given locale.
|
2489
|
+
#
|
2490
|
+
# The metadata in this chunk can be encoded using UTF-8 characters.
|
2491
|
+
# Moreover, it is possible to define the language of the metadata, and give
|
2492
|
+
# a translation of the keyword name. Finally, it supports bot compressed
|
2493
|
+
# and uncompressed values.
|
2494
|
+
#
|
2495
|
+
# @see https://www.w3.org/TR/PNG/#11iTXt
|
2496
|
+
# @see ChunkyPNG::Chunk::Text
|
2497
|
+
# @see ChunkyPNG::Chunk::CompressedText
|
2498
|
+
#
|
2499
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#407
|
2500
|
+
class ChunkyPNG::Chunk::InternationalText < ::ChunkyPNG::Chunk::Base
|
2501
|
+
# @return [InternationalText] a new instance of InternationalText
|
2502
|
+
#
|
2503
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#410
|
2504
|
+
def initialize(keyword, text, language_tag = T.unsafe(nil), translated_keyword = T.unsafe(nil), compressed = T.unsafe(nil), compression = T.unsafe(nil)); end
|
2505
|
+
|
2506
|
+
# Returns the value of attribute compressed.
|
2507
|
+
#
|
2508
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2509
|
+
def compressed; end
|
2510
|
+
|
2511
|
+
# Sets the attribute compressed
|
2512
|
+
#
|
2513
|
+
# @param value the value to set the attribute compressed to.
|
2514
|
+
#
|
2515
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2516
|
+
def compressed=(_arg0); end
|
2517
|
+
|
2518
|
+
# Returns the value of attribute compression.
|
2519
|
+
#
|
2520
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2521
|
+
def compression; end
|
2522
|
+
|
2523
|
+
# Sets the attribute compression
|
2524
|
+
#
|
2525
|
+
# @param value the value to set the attribute compression to.
|
2526
|
+
#
|
2527
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2528
|
+
def compression=(_arg0); end
|
2529
|
+
|
2530
|
+
# Assembles the content to write to the stream for this chunk.
|
2531
|
+
#
|
2532
|
+
# @return [String] The binary content that should be written to the datastream.
|
2533
|
+
#
|
2534
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#445
|
2535
|
+
def content; end
|
2536
|
+
|
2537
|
+
# Returns the value of attribute keyword.
|
2538
|
+
#
|
2539
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2540
|
+
def keyword; end
|
2541
|
+
|
2542
|
+
# Sets the attribute keyword
|
2543
|
+
#
|
2544
|
+
# @param value the value to set the attribute keyword to.
|
2545
|
+
#
|
2546
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2547
|
+
def keyword=(_arg0); end
|
2548
|
+
|
2549
|
+
# Returns the value of attribute language_tag.
|
2550
|
+
#
|
2551
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2552
|
+
def language_tag; end
|
2553
|
+
|
2554
|
+
# Sets the attribute language_tag
|
2555
|
+
#
|
2556
|
+
# @param value the value to set the attribute language_tag to.
|
2557
|
+
#
|
2558
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2559
|
+
def language_tag=(_arg0); end
|
2560
|
+
|
2561
|
+
# Returns the value of attribute text.
|
2562
|
+
#
|
2563
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2564
|
+
def text; end
|
2565
|
+
|
2566
|
+
# Sets the attribute text
|
2567
|
+
#
|
2568
|
+
# @param value the value to set the attribute text to.
|
2569
|
+
#
|
2570
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2571
|
+
def text=(_arg0); end
|
2572
|
+
|
2573
|
+
# Returns the value of attribute translated_keyword.
|
2574
|
+
#
|
2575
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2576
|
+
def translated_keyword; end
|
2577
|
+
|
2578
|
+
# Sets the attribute translated_keyword
|
2579
|
+
#
|
2580
|
+
# @param value the value to set the attribute translated_keyword to.
|
2581
|
+
#
|
2582
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#408
|
2583
|
+
def translated_keyword=(_arg0); end
|
2584
|
+
|
2585
|
+
class << self
|
2586
|
+
# Reads the iTXt chunk.
|
2587
|
+
#
|
2588
|
+
# @param type [String] The four character chunk type indicator (= "iTXt").
|
2589
|
+
# @param content [String] The content read from the chunk.
|
2590
|
+
# @raise [ChunkyPNG::InvalidUTF8] If the chunk contains data that is not UTF8-encoded text.
|
2591
|
+
# @raise [ChunkyPNG::NotSupported] If the chunk refers to an unsupported compression method.
|
2592
|
+
# Currently uncompressed data and deflate are supported.
|
2593
|
+
# @return [ChunkyPNG::Chunk::InternationalText] The new End chunk instance.
|
2594
|
+
#
|
2595
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#427
|
2596
|
+
def read(type, content); end
|
2597
|
+
end
|
2598
|
+
end
|
2599
|
+
|
2600
|
+
# The Palette (PLTE) chunk contains the image's palette, i.e. the
|
2601
|
+
# 8-bit RGB colors this image is using.
|
2602
|
+
#
|
2603
|
+
# @see https://www.w3.org/TR/PNG/#11PLTE
|
2604
|
+
# @see ChunkyPNG::Chunk::Transparency
|
2605
|
+
# @see ChunkyPNG::Palette
|
2606
|
+
#
|
2607
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#205
|
2608
|
+
class ChunkyPNG::Chunk::Palette < ::ChunkyPNG::Chunk::Generic; end
|
2609
|
+
|
2610
|
+
# The Physical (pHYs) chunk specifies the intended pixel size or aspect
|
2611
|
+
# ratio for display of the image.
|
2612
|
+
#
|
2613
|
+
# @see https://www.w3.org/TR/PNG/#11pHYs
|
2614
|
+
#
|
2615
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#362
|
2616
|
+
class ChunkyPNG::Chunk::Physical < ::ChunkyPNG::Chunk::Base
|
2617
|
+
# @raise [ArgumentError]
|
2618
|
+
# @return [Physical] a new instance of Physical
|
2619
|
+
#
|
2620
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#365
|
2621
|
+
def initialize(ppux, ppuy, unit = T.unsafe(nil)); end
|
2622
|
+
|
2623
|
+
# Assembles the content to write to the stream for this chunk.
|
2624
|
+
#
|
2625
|
+
# @return [String] The binary content that should be written to the datastream.
|
2626
|
+
#
|
2627
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#389
|
2628
|
+
def content; end
|
2629
|
+
|
2630
|
+
# @raise [ChunkyPNG::UnitsUnknown]
|
2631
|
+
#
|
2632
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#371
|
2633
|
+
def dpix; end
|
2634
|
+
|
2635
|
+
# @raise [ChunkyPNG::UnitsUnknown]
|
2636
|
+
#
|
2637
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#376
|
2638
|
+
def dpiy; end
|
2639
|
+
|
2640
|
+
# Returns the value of attribute ppux.
|
2641
|
+
#
|
2642
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#363
|
2643
|
+
def ppux; end
|
2644
|
+
|
2645
|
+
# Sets the attribute ppux
|
2646
|
+
#
|
2647
|
+
# @param value the value to set the attribute ppux to.
|
2648
|
+
#
|
2649
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#363
|
2650
|
+
def ppux=(_arg0); end
|
2651
|
+
|
2652
|
+
# Returns the value of attribute ppuy.
|
2653
|
+
#
|
2654
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#363
|
2655
|
+
def ppuy; end
|
2656
|
+
|
2657
|
+
# Sets the attribute ppuy
|
2658
|
+
#
|
2659
|
+
# @param value the value to set the attribute ppuy to.
|
2660
|
+
#
|
2661
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#363
|
2662
|
+
def ppuy=(_arg0); end
|
2663
|
+
|
2664
|
+
# Returns the value of attribute unit.
|
2665
|
+
#
|
2666
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#363
|
2667
|
+
def unit; end
|
2668
|
+
|
2669
|
+
# Sets the attribute unit
|
2670
|
+
#
|
2671
|
+
# @param value the value to set the attribute unit to.
|
2672
|
+
#
|
2673
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#363
|
2674
|
+
def unit=(_arg0); end
|
2675
|
+
|
2676
|
+
class << self
|
2677
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#381
|
2678
|
+
def read(type, content); end
|
2679
|
+
end
|
2680
|
+
end
|
2681
|
+
|
2682
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#393
|
2683
|
+
ChunkyPNG::Chunk::Physical::INCHES_PER_METER = T.let(T.unsafe(nil), Float)
|
2684
|
+
|
2685
|
+
# The Text (tEXt) chunk contains keyword/value metadata about the PNG
|
2686
|
+
# stream. In this chunk, the value is stored uncompressed.
|
2687
|
+
#
|
2688
|
+
# The tEXt chunk only supports Latin-1 encoded textual data. If you need
|
2689
|
+
# UTF-8 support, check out the InternationalText chunk type.
|
2690
|
+
#
|
2691
|
+
# @see https://www.w3.org/TR/PNG/#11tEXt
|
2692
|
+
# @see ChunkyPNG::Chunk::CompressedText
|
2693
|
+
# @see ChunkyPNG::Chunk::InternationalText
|
2694
|
+
#
|
2695
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#302
|
2696
|
+
class ChunkyPNG::Chunk::Text < ::ChunkyPNG::Chunk::Base
|
2697
|
+
# @return [Text] a new instance of Text
|
2698
|
+
#
|
2699
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#305
|
2700
|
+
def initialize(keyword, value); end
|
2701
|
+
|
2702
|
+
# Creates the content to write to the stream, by concatenating the
|
2703
|
+
# keyword with the value, joined by a null character.
|
2704
|
+
#
|
2705
|
+
# @return The content that should be written to the datastream.
|
2706
|
+
#
|
2707
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#319
|
2708
|
+
def content; end
|
2709
|
+
|
2710
|
+
# Returns the value of attribute keyword.
|
2711
|
+
#
|
2712
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#303
|
2713
|
+
def keyword; end
|
2714
|
+
|
2715
|
+
# Sets the attribute keyword
|
2716
|
+
#
|
2717
|
+
# @param value the value to set the attribute keyword to.
|
2718
|
+
#
|
2719
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#303
|
2720
|
+
def keyword=(_arg0); end
|
2721
|
+
|
2722
|
+
# Returns the value of attribute value.
|
2723
|
+
#
|
2724
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#303
|
2725
|
+
def value; end
|
2726
|
+
|
2727
|
+
# Sets the attribute value
|
2728
|
+
#
|
2729
|
+
# @param value the value to set the attribute value to.
|
2730
|
+
#
|
2731
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#303
|
2732
|
+
def value=(_arg0); end
|
2733
|
+
|
2734
|
+
class << self
|
2735
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#310
|
2736
|
+
def read(type, content); end
|
2737
|
+
end
|
2738
|
+
end
|
2739
|
+
|
2740
|
+
# A transparency (tRNS) chunk defines the transparency for an image.
|
2741
|
+
#
|
2742
|
+
# * For indexed images, it contains the alpha channel for the colors
|
2743
|
+
# defined in the Palette (PLTE) chunk.
|
2744
|
+
# * For grayscale images, it contains the grayscale teint that should be
|
2745
|
+
# considered fully transparent.
|
2746
|
+
# * For truecolor images, it contains the color that should be considered
|
2747
|
+
# fully transparent.
|
2748
|
+
#
|
2749
|
+
# Images having a color mode that already includes an alpha channel, this
|
2750
|
+
# chunk should not be included.
|
2751
|
+
#
|
2752
|
+
# @see https://www.w3.org/TR/PNG/#11tRNS
|
2753
|
+
# @see ChunkyPNG::Chunk::Palette
|
2754
|
+
# @see ChunkyPNG::Palette
|
2755
|
+
#
|
2756
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#230
|
2757
|
+
class ChunkyPNG::Chunk::Transparency < ::ChunkyPNG::Chunk::Generic
|
2758
|
+
# Returns the grayscale entry to be replaced by transparent pixels.
|
2759
|
+
#
|
2760
|
+
# This method should only be used for images having color mode
|
2761
|
+
# ChunkyPNG::COLOR_GRAYSCALE (0).
|
2762
|
+
#
|
2763
|
+
# @return [Integer] The (grayscale) color to replace with fully
|
2764
|
+
# transparent pixels.
|
2765
|
+
#
|
2766
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#254
|
2767
|
+
def grayscale_entry(bit_depth); end
|
2768
|
+
|
2769
|
+
# Returns the alpha channel for the palette of an indexed image.
|
2770
|
+
#
|
2771
|
+
# This method should only be used for images having color mode
|
2772
|
+
# ChunkyPNG::COLOR_INDEXED (3).
|
2773
|
+
#
|
2774
|
+
# @return [Array<Integer>] Returns an array of alpha channel values
|
2775
|
+
# [0-255].
|
2776
|
+
#
|
2777
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#231
|
2778
|
+
def palette_alpha_channel; end
|
2779
|
+
|
2780
|
+
# Returns the truecolor entry to be replaced by transparent pixels,
|
2781
|
+
#
|
2782
|
+
# This method should only be used for images having color mode
|
2783
|
+
# ChunkyPNG::COLOR_TRUECOLOR (2).
|
2784
|
+
#
|
2785
|
+
# @return [Integer] The color to replace with fully transparent pixels.
|
2786
|
+
#
|
2787
|
+
# source://chunky_png//lib/chunky_png/chunk.rb#241
|
2788
|
+
def truecolor_entry(bit_depth); end
|
2789
|
+
end
|
2790
|
+
|
2791
|
+
# The Color module defines methods for handling colors. Within the ChunkyPNG
|
2792
|
+
# library, the concepts of pixels and colors are both used, and they are
|
2793
|
+
# both represented by a Integer.
|
2794
|
+
#
|
2795
|
+
# Pixels/colors are represented in RGBA components. Each of the four
|
2796
|
+
# components is stored with a depth of 8 bits (maximum value = 255 =
|
2797
|
+
# {ChunkyPNG::Color::MAX}). Together, these components are stored in a 4-byte
|
2798
|
+
# Integer.
|
2799
|
+
#
|
2800
|
+
# A color will always be represented using these 4 components in memory.
|
2801
|
+
# When the image is encoded, a more suitable representation can be used
|
2802
|
+
# (e.g. rgb, grayscale, palette-based), for which several conversion methods
|
2803
|
+
# are provided in this module.
|
2804
|
+
#
|
2805
|
+
# source://chunky_png//lib/chunky_png/color.rb#57
|
2806
|
+
module ChunkyPNG::Color
|
2807
|
+
extend ::ChunkyPNG::Color
|
2808
|
+
|
2809
|
+
# Returns the alpha channel value for the color value.
|
2810
|
+
#
|
2811
|
+
# @param value [Integer] The color value.
|
2812
|
+
# @return [Integer] A value between 0 and MAX.
|
2813
|
+
#
|
2814
|
+
# source://chunky_png//lib/chunky_png/color.rb#299
|
2815
|
+
def a(value); end
|
2816
|
+
|
2817
|
+
# Checks whether an alpha channel value can successfully be composed
|
2818
|
+
# given the resulting color, the mask color and a background color,
|
2819
|
+
# all of which should be opaque.
|
2820
|
+
#
|
2821
|
+
# @param color [Integer] The color that was the result of compositing.
|
2822
|
+
# @param mask [Integer] The opaque variant of the color that was being
|
2823
|
+
# composed
|
2824
|
+
# @param bg [Integer] The background color on which the color was composed.
|
2825
|
+
# @param tolerance [Integer] The decomposition tolerance level, a value
|
2826
|
+
# between 0 and 255.
|
2827
|
+
# @return [Boolean] True if the alpha component can be decomposed
|
2828
|
+
# successfully.
|
2829
|
+
# @see #decompose_alpha
|
2830
|
+
#
|
2831
|
+
# source://chunky_png//lib/chunky_png/color.rb#503
|
2832
|
+
def alpha_decomposable?(color, mask, bg, tolerance = T.unsafe(nil)); end
|
2833
|
+
|
2834
|
+
# Returns the blue-component from the color value.
|
2835
|
+
#
|
2836
|
+
# @param value [Integer] The color value.
|
2837
|
+
# @return [Integer] A value between 0 and MAX.
|
2838
|
+
#
|
2839
|
+
# source://chunky_png//lib/chunky_png/color.rb#291
|
2840
|
+
def b(value); end
|
2841
|
+
|
2842
|
+
# Blends the foreground and background color by taking the average of
|
2843
|
+
# the components.
|
2844
|
+
#
|
2845
|
+
# @param fg [Integer] The foreground color.
|
2846
|
+
# @param bg [Integer] The foreground color.
|
2847
|
+
# @return [Integer] The blended color.
|
2848
|
+
#
|
2849
|
+
# source://chunky_png//lib/chunky_png/color.rb#406
|
2850
|
+
def blend(fg, bg); end
|
2851
|
+
|
2852
|
+
# Composes two colors with an alpha channel using integer math.
|
2853
|
+
#
|
2854
|
+
# This version is faster than the version based on floating point math, so
|
2855
|
+
# this compositing function is used by default.
|
2856
|
+
#
|
2857
|
+
# @param fg [Integer] The foreground color.
|
2858
|
+
# @param bg [Integer] The background color.
|
2859
|
+
# @return [Integer] The composited color.
|
2860
|
+
# @see ChunkyPNG::Color#compose_precise
|
2861
|
+
#
|
2862
|
+
# source://chunky_png//lib/chunky_png/color.rb#361
|
2863
|
+
def compose(fg, bg); end
|
2864
|
+
|
2865
|
+
# Composes two colors with an alpha channel using floating point math.
|
2866
|
+
#
|
2867
|
+
# This method uses more precise floating point math, but this precision is
|
2868
|
+
# lost when the result is converted back to an integer. Because it is
|
2869
|
+
# slower than the version based on integer math, that version is preferred.
|
2870
|
+
#
|
2871
|
+
# @param fg [Integer] The foreground color.
|
2872
|
+
# @param bg [Integer] The background color.
|
2873
|
+
# @return [Integer] The composited color.
|
2874
|
+
# @see ChunkyPNG::Color#compose_quick
|
2875
|
+
#
|
2876
|
+
# source://chunky_png//lib/chunky_png/color.rb#383
|
2877
|
+
def compose_precise(fg, bg); end
|
2878
|
+
|
2879
|
+
# Composes two colors with an alpha channel using integer math.
|
2880
|
+
#
|
2881
|
+
# This version is faster than the version based on floating point math, so
|
2882
|
+
# this compositing function is used by default.
|
2883
|
+
#
|
2884
|
+
# @param fg [Integer] The foreground color.
|
2885
|
+
# @param bg [Integer] The background color.
|
2886
|
+
# @return [Integer] The composited color.
|
2887
|
+
# @see ChunkyPNG::Color#compose_precise
|
2888
|
+
#
|
2889
|
+
# source://chunky_png//lib/chunky_png/color.rb#361
|
2890
|
+
def compose_quick(fg, bg); end
|
2891
|
+
|
2892
|
+
# Decomposes the alpha channel value given the resulting color, the mask
|
2893
|
+
# color and a background color, all of which should be opaque.
|
2894
|
+
#
|
2895
|
+
# Make sure to call {#alpha_decomposable?} first to see if the alpha
|
2896
|
+
# channel value can successfully decomposed with a given tolerance,
|
2897
|
+
# otherwise the return value of this method is undefined.
|
2898
|
+
#
|
2899
|
+
# @param color [Integer] The color that was the result of compositing.
|
2900
|
+
# @param mask [Integer] The opaque variant of the color that was being
|
2901
|
+
# composed
|
2902
|
+
# @param bg [Integer] The background color on which the color was composed.
|
2903
|
+
# @return [Integer] The best fitting alpha channel, a value between 0 and
|
2904
|
+
# 255.
|
2905
|
+
# @see #alpha_decomposable?
|
2906
|
+
#
|
2907
|
+
# source://chunky_png//lib/chunky_png/color.rb#524
|
2908
|
+
def decompose_alpha(color, mask, bg); end
|
2909
|
+
|
2910
|
+
# Decomposes an alpha channel for either the r, g or b color channel.
|
2911
|
+
#
|
2912
|
+
# @param channel [:r, :g, :b] The channel to decompose the alpha channel
|
2913
|
+
# from.
|
2914
|
+
# @param color [Integer] The color that was the result of compositing.
|
2915
|
+
# @param mask [Integer] The opaque variant of the color that was being
|
2916
|
+
# composed
|
2917
|
+
# @param bg [Integer] The background color on which the color was composed.
|
2918
|
+
# @return [Integer] The decomposed alpha value for the channel.
|
2919
|
+
#
|
2920
|
+
# source://chunky_png//lib/chunky_png/color.rb#537
|
2921
|
+
def decompose_alpha_component(channel, color, mask, bg); end
|
2922
|
+
|
2923
|
+
# Decomposes the alpha channels for the r, g and b color channel.
|
2924
|
+
#
|
2925
|
+
# @param color [Integer] The color that was the result of compositing.
|
2926
|
+
# @param mask [Integer] The opaque variant of the color that was being
|
2927
|
+
# composed
|
2928
|
+
# @param bg [Integer] The background color on which the color was composed.
|
2929
|
+
# @return [Array<Integer>] The decomposed alpha values for the r, g and b
|
2930
|
+
# channels.
|
2931
|
+
#
|
2932
|
+
# source://chunky_png//lib/chunky_png/color.rb#554
|
2933
|
+
def decompose_alpha_components(color, mask, bg); end
|
2934
|
+
|
2935
|
+
# Decomposes a color, given a color, a mask color and a background color.
|
2936
|
+
# The returned color will be a variant of the mask color, with the alpha
|
2937
|
+
# channel set to the best fitting value. This basically is the reverse
|
2938
|
+
# operation if alpha composition.
|
2939
|
+
#
|
2940
|
+
# If the color cannot be decomposed, this method will return the fully
|
2941
|
+
# transparent variant of the mask color.
|
2942
|
+
#
|
2943
|
+
# @param color [Integer] The color that was the result of compositing.
|
2944
|
+
# @param mask [Integer] The opaque variant of the color that was being
|
2945
|
+
# composed
|
2946
|
+
# @param bg [Integer] The background color on which the color was composed.
|
2947
|
+
# @param tolerance [Integer] The decomposition tolerance level, a value
|
2948
|
+
# between 0 and 255.
|
2949
|
+
# @return [Integer] The decomposed color, a variant of the masked color
|
2950
|
+
# with the alpha channel set to an appropriate value.
|
2951
|
+
#
|
2952
|
+
# source://chunky_png//lib/chunky_png/color.rb#482
|
2953
|
+
def decompose_color(color, mask, bg, tolerance = T.unsafe(nil)); end
|
2954
|
+
|
2955
|
+
# Compute the Euclidean distance between 2 colors in RGBA
|
2956
|
+
#
|
2957
|
+
# This method simply takes the Euclidean distance between the RGBA channels
|
2958
|
+
# of 2 colors, which gives us a measure of how different the two colors
|
2959
|
+
# are.
|
2960
|
+
#
|
2961
|
+
# Although it would be more perceptually accurate to calculate a proper
|
2962
|
+
# Delta E in Lab colorspace, this method should serve many use-cases while
|
2963
|
+
# avoiding the overhead of converting RGBA to Lab.
|
2964
|
+
#
|
2965
|
+
# @param pixel_after [Integer]
|
2966
|
+
# @param pixel_before [Integer]
|
2967
|
+
# @return [Float]
|
2968
|
+
#
|
2969
|
+
# source://chunky_png//lib/chunky_png/color.rb#722
|
2970
|
+
def euclidean_distance_rgba(pixel_after, pixel_before); end
|
2971
|
+
|
2972
|
+
# Lowers the intensity of a color, by lowering its alpha by a given factor.
|
2973
|
+
#
|
2974
|
+
# @param color [Integer] The color to adjust.
|
2975
|
+
# @param factor [Integer] Fade factor as an integer between 0 and 255.
|
2976
|
+
# @return [Integer] The faded color.
|
2977
|
+
#
|
2978
|
+
# source://chunky_png//lib/chunky_png/color.rb#461
|
2979
|
+
def fade(color, factor); end
|
2980
|
+
|
2981
|
+
# Creates a color by converting it from a string in hex notation.
|
2982
|
+
#
|
2983
|
+
# It supports colors with (#rrggbbaa) or without (#rrggbb) alpha channel
|
2984
|
+
# as well as the 3-digit short format (#rgb) for those without.
|
2985
|
+
# Color strings may include the prefix "0x" or "#".
|
2986
|
+
#
|
2987
|
+
# @param hex_value [String] The color in hex notation.
|
2988
|
+
# @param opacity [Integer] The opacity value for the color. Overrides any
|
2989
|
+
# opacity value given in the hex value if given.
|
2990
|
+
# @raise [ArgumentError] if the value given is not a hex color notation.
|
2991
|
+
# @return [Integer] The color value.
|
2992
|
+
#
|
2993
|
+
# source://chunky_png//lib/chunky_png/color.rb#167
|
2994
|
+
def from_hex(hex_value, opacity = T.unsafe(nil)); end
|
2995
|
+
|
2996
|
+
# Creates a new color from an HSV triple.
|
2997
|
+
#
|
2998
|
+
# Create a new color using an HSV (sometimes also called HSB) triple. The
|
2999
|
+
# words `value` and `brightness` are used interchangeably and synonymously
|
3000
|
+
# in descriptions of this colorspace. This implementation follows the modern
|
3001
|
+
# convention of 0 degrees hue indicating red.
|
3002
|
+
#
|
3003
|
+
# @param hue [Fixnum] The hue component (0-360)
|
3004
|
+
# @param saturation [Fixnum] The saturation component (0-1)
|
3005
|
+
# @param value [Fixnum] The value (brightness) component (0-1)
|
3006
|
+
# @param alpha [Fixnum] Defaults to opaque (255).
|
3007
|
+
# @raise [ArgumentError] if the hsv triple is invalid.
|
3008
|
+
# @return [Integer] The newly constructed color value.
|
3009
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3010
|
+
#
|
3011
|
+
# source://chunky_png//lib/chunky_png/color.rb#194
|
3012
|
+
def from_hsb(hue, saturation, value, alpha = T.unsafe(nil)); end
|
3013
|
+
|
3014
|
+
# Creates a new color from an HSL triple.
|
3015
|
+
#
|
3016
|
+
# This implementation follows the modern convention of 0 degrees hue
|
3017
|
+
# indicating red.
|
3018
|
+
#
|
3019
|
+
# @param hue [Fixnum] The hue component (0-360)
|
3020
|
+
# @param saturation [Fixnum] The saturation component (0-1)
|
3021
|
+
# @param lightness [Fixnum] The lightness component (0-1)
|
3022
|
+
# @param alpha [Fixnum] Defaults to opaque (255).
|
3023
|
+
# @raise [ArgumentError] if the hsl triple is invalid.
|
3024
|
+
# @return [Integer] The newly constructed color value.
|
3025
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3026
|
+
#
|
3027
|
+
# source://chunky_png//lib/chunky_png/color.rb#220
|
3028
|
+
def from_hsl(hue, saturation, lightness, alpha = T.unsafe(nil)); end
|
3029
|
+
|
3030
|
+
# Creates a new color from an HSV triple.
|
3031
|
+
#
|
3032
|
+
# Create a new color using an HSV (sometimes also called HSB) triple. The
|
3033
|
+
# words `value` and `brightness` are used interchangeably and synonymously
|
3034
|
+
# in descriptions of this colorspace. This implementation follows the modern
|
3035
|
+
# convention of 0 degrees hue indicating red.
|
3036
|
+
#
|
3037
|
+
# @param hue [Fixnum] The hue component (0-360)
|
3038
|
+
# @param saturation [Fixnum] The saturation component (0-1)
|
3039
|
+
# @param value [Fixnum] The value (brightness) component (0-1)
|
3040
|
+
# @param alpha [Fixnum] Defaults to opaque (255).
|
3041
|
+
# @raise [ArgumentError] if the hsv triple is invalid.
|
3042
|
+
# @return [Integer] The newly constructed color value.
|
3043
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3044
|
+
#
|
3045
|
+
# source://chunky_png//lib/chunky_png/color.rb#194
|
3046
|
+
def from_hsv(hue, saturation, value, alpha = T.unsafe(nil)); end
|
3047
|
+
|
3048
|
+
# Creates a color by unpacking an rgb triple from a string.
|
3049
|
+
#
|
3050
|
+
# @param stream [String] The string to load the color from. It should be
|
3051
|
+
# at least 3 + pos bytes long.
|
3052
|
+
# @param pos [Integer] The position in the string to load the triple from.
|
3053
|
+
# @return [Integer] The newly constructed color value.
|
3054
|
+
#
|
3055
|
+
# source://chunky_png//lib/chunky_png/color.rb#142
|
3056
|
+
def from_rgb_stream(stream, pos = T.unsafe(nil)); end
|
3057
|
+
|
3058
|
+
# Creates a color by unpacking an rgba triple from a string
|
3059
|
+
#
|
3060
|
+
# @param stream [String] The string to load the color from. It should be
|
3061
|
+
# at least 4 + pos bytes long.
|
3062
|
+
# @param pos [Integer] The position in the string to load the triple from.
|
3063
|
+
# @return [Integer] The newly constructed color value.
|
3064
|
+
#
|
3065
|
+
# source://chunky_png//lib/chunky_png/color.rb#152
|
3066
|
+
def from_rgba_stream(stream, pos = T.unsafe(nil)); end
|
3067
|
+
|
3068
|
+
# Returns true if this color is fully transparent.
|
3069
|
+
#
|
3070
|
+
# @param value [Integer] The color to test.
|
3071
|
+
# @return [true, false] True if the alpha channel equals 0.
|
3072
|
+
#
|
3073
|
+
# source://chunky_png//lib/chunky_png/color.rb#330
|
3074
|
+
def fully_transparent?(value); end
|
3075
|
+
|
3076
|
+
# Returns the green-component from the color value.
|
3077
|
+
#
|
3078
|
+
# @param value [Integer] The color value.
|
3079
|
+
# @return [Integer] A value between 0 and MAX.
|
3080
|
+
#
|
3081
|
+
# source://chunky_png//lib/chunky_png/color.rb#283
|
3082
|
+
def g(value); end
|
3083
|
+
|
3084
|
+
# Creates a new color using a grayscale teint.
|
3085
|
+
#
|
3086
|
+
# @param teint [Integer] The grayscale teint (0-255), will be used as r, g,
|
3087
|
+
# and b value.
|
3088
|
+
# @return [Integer] The newly constructed color value.
|
3089
|
+
#
|
3090
|
+
# source://chunky_png//lib/chunky_png/color.rb#119
|
3091
|
+
def grayscale(teint); end
|
3092
|
+
|
3093
|
+
# Returns true if this color is fully transparent.
|
3094
|
+
#
|
3095
|
+
# @param value [Integer] The color to test.
|
3096
|
+
# @return [true, false] True if the r, g and b component are equal.
|
3097
|
+
#
|
3098
|
+
# source://chunky_png//lib/chunky_png/color.rb#322
|
3099
|
+
def grayscale?(value); end
|
3100
|
+
|
3101
|
+
# Creates a new color using a grayscale teint and alpha value.
|
3102
|
+
#
|
3103
|
+
# @param teint [Integer] The grayscale teint (0-255), will be used as r, g,
|
3104
|
+
# and b value.
|
3105
|
+
# @param a [Integer] The opacity (0-255)
|
3106
|
+
# @return [Integer] The newly constructed color value.
|
3107
|
+
#
|
3108
|
+
# source://chunky_png//lib/chunky_png/color.rb#128
|
3109
|
+
def grayscale_alpha(teint, a); end
|
3110
|
+
|
3111
|
+
# Calculates the grayscale teint of an RGB color.
|
3112
|
+
#
|
3113
|
+
# @param color [Integer] The color to convert.
|
3114
|
+
# @return [Integer] The grayscale teint of the input color, 0-255.
|
3115
|
+
#
|
3116
|
+
# source://chunky_png//lib/chunky_png/color.rb#438
|
3117
|
+
def grayscale_teint(color); end
|
3118
|
+
|
3119
|
+
# Gets a color value based on a HTML color name.
|
3120
|
+
#
|
3121
|
+
# The color name is flexible. E.g. <tt>'yellowgreen'</tt>, <tt>'Yellow
|
3122
|
+
# green'</tt>, <tt>'YellowGreen'</tt>, <tt>'YELLOW_GREEN'</tt> and
|
3123
|
+
# <tt>:yellow_green</tt> will all return the same color value.
|
3124
|
+
#
|
3125
|
+
# You can include a opacity level in the color name (e.g. <tt>'red @
|
3126
|
+
# 0.5'</tt>) or give an explicit opacity value as second argument. If no
|
3127
|
+
# opacity value is given, the color will be fully opaque.
|
3128
|
+
#
|
3129
|
+
# @param color_name [Symbol, String] The color name. It may include an
|
3130
|
+
# opacity specifier like <tt>@ 0.8</tt> to set the color's opacity.
|
3131
|
+
# @param opacity [Integer] The opacity value for the color between 0 and
|
3132
|
+
# 255. Overrides any opacity value given in the color name.
|
3133
|
+
# @raise [ChunkyPNG::Exception] If the color name was not recognized.
|
3134
|
+
# @return [Integer] The color value.
|
3135
|
+
#
|
3136
|
+
# source://chunky_png//lib/chunky_png/color.rb#909
|
3137
|
+
def html_color(color_name, opacity = T.unsafe(nil)); end
|
3138
|
+
|
3139
|
+
# Multiplies two fractions using integer math, where the fractions are
|
3140
|
+
# stored using an integer between 0 and 255. This method is used as a
|
3141
|
+
# helper method for compositing colors using integer math.
|
3142
|
+
#
|
3143
|
+
# This is a quicker implementation of ((a * b) / 255.0).round.
|
3144
|
+
#
|
3145
|
+
# @param a [Integer] The first fraction.
|
3146
|
+
# @param b [Integer] The second fraction.
|
3147
|
+
# @return [Integer] The result of the multiplication.
|
3148
|
+
#
|
3149
|
+
# source://chunky_png//lib/chunky_png/color.rb#347
|
3150
|
+
def int8_mult(a, b); end
|
3151
|
+
|
3152
|
+
# Interpolates the foreground and background colors by the given alpha
|
3153
|
+
# value. This also blends the alpha channels themselves.
|
3154
|
+
#
|
3155
|
+
# A blending factor of 255 will give entirely the foreground,
|
3156
|
+
# while a blending factor of 0 will give the background.
|
3157
|
+
#
|
3158
|
+
# @param fg [Integer] The foreground color.
|
3159
|
+
# @param bg [Integer] The background color.
|
3160
|
+
# @param alpha [Integer] The blending factor (fixed 8bit)
|
3161
|
+
# @return [Integer] The interpolated color.
|
3162
|
+
#
|
3163
|
+
# source://chunky_png//lib/chunky_png/color.rb#420
|
3164
|
+
def interpolate_quick(fg, bg, alpha); end
|
3165
|
+
|
3166
|
+
# Returns the opaque value of this color by removing the alpha channel.
|
3167
|
+
#
|
3168
|
+
# @param value [Integer] The color to transform.
|
3169
|
+
# @return [Integer] The opaque color
|
3170
|
+
#
|
3171
|
+
# source://chunky_png//lib/chunky_png/color.rb#314
|
3172
|
+
def opaque!(value); end
|
3173
|
+
|
3174
|
+
# Returns true if this color is fully opaque.
|
3175
|
+
#
|
3176
|
+
# @param value [Integer] The color to test.
|
3177
|
+
# @return [true, false] True if the alpha channel equals MAX.
|
3178
|
+
#
|
3179
|
+
# source://chunky_png//lib/chunky_png/color.rb#307
|
3180
|
+
def opaque?(value); end
|
3181
|
+
|
3182
|
+
# Parses a color value given a numeric or string argument.
|
3183
|
+
#
|
3184
|
+
# It supports color numbers, colors in hex notation and named HTML colors.
|
3185
|
+
#
|
3186
|
+
# @param source [Integer, String] The color value.
|
3187
|
+
# @return [Integer] The color value, with the opacity applied if one was
|
3188
|
+
# given.
|
3189
|
+
#
|
3190
|
+
# source://chunky_png//lib/chunky_png/color.rb#86
|
3191
|
+
def parse(source); end
|
3192
|
+
|
3193
|
+
# Returns the number of bytes used for an image pass
|
3194
|
+
#
|
3195
|
+
# @param color_mode [Integer] The color mode in which the pixels are
|
3196
|
+
# stored.
|
3197
|
+
# @param depth [Integer] The color depth of the pixels.
|
3198
|
+
# @param width [Integer] The width of the image pass.
|
3199
|
+
# @param height [Integer] The height of the image pass.
|
3200
|
+
# @return [Integer] The number of bytes used per scanline in a datastream.
|
3201
|
+
#
|
3202
|
+
# source://chunky_png//lib/chunky_png/color.rb#984
|
3203
|
+
def pass_bytesize(color_mode, depth, width, height); end
|
3204
|
+
|
3205
|
+
# Returns the size in bits of a pixel when it is stored using a given color
|
3206
|
+
# mode.
|
3207
|
+
#
|
3208
|
+
# @param color_mode [Integer] The color mode in which the pixels are
|
3209
|
+
# stored.
|
3210
|
+
# @param depth [Integer] The color depth of the pixels.
|
3211
|
+
# @return [Integer] The number of bytes used per pixel in a datastream.
|
3212
|
+
#
|
3213
|
+
# source://chunky_png//lib/chunky_png/color.rb#963
|
3214
|
+
def pixel_bitsize(color_mode, depth = T.unsafe(nil)); end
|
3215
|
+
|
3216
|
+
# Returns the size in bytes of a pixel when it is stored using a given
|
3217
|
+
# color mode.
|
3218
|
+
#
|
3219
|
+
# @param color_mode [Integer] The color mode in which the pixels are
|
3220
|
+
# stored.
|
3221
|
+
# @return [Integer] The number of bytes used per pixel in a datastream.
|
3222
|
+
#
|
3223
|
+
# source://chunky_png//lib/chunky_png/color.rb#951
|
3224
|
+
def pixel_bytesize(color_mode, depth = T.unsafe(nil)); end
|
3225
|
+
|
3226
|
+
# Returns the red-component from the color value.
|
3227
|
+
#
|
3228
|
+
# @param value [Integer] The color value.
|
3229
|
+
# @return [Integer] A value between 0 and MAX.
|
3230
|
+
#
|
3231
|
+
# source://chunky_png//lib/chunky_png/color.rb#275
|
3232
|
+
def r(value); end
|
3233
|
+
|
3234
|
+
# Creates a new color using an r, g, b triple.
|
3235
|
+
#
|
3236
|
+
# @param r [Integer] The r-component (0-255)
|
3237
|
+
# @param g [Integer] The g-component (0-255)
|
3238
|
+
# @param b [Integer] The b-component (0-255)
|
3239
|
+
# @return [Integer] The newly constructed color value.
|
3240
|
+
#
|
3241
|
+
# source://chunky_png//lib/chunky_png/color.rb#111
|
3242
|
+
def rgb(r, g, b); end
|
3243
|
+
|
3244
|
+
# Creates a new color using an r, g, b triple and an alpha value.
|
3245
|
+
#
|
3246
|
+
# @param r [Integer] The r-component (0-255)
|
3247
|
+
# @param g [Integer] The g-component (0-255)
|
3248
|
+
# @param b [Integer] The b-component (0-255)
|
3249
|
+
# @param a [Integer] The opacity (0-255)
|
3250
|
+
# @return [Integer] The newly constructed color value.
|
3251
|
+
#
|
3252
|
+
# source://chunky_png//lib/chunky_png/color.rb#102
|
3253
|
+
def rgba(r, g, b, a); end
|
3254
|
+
|
3255
|
+
# Returns the number of sample values per pixel.
|
3256
|
+
#
|
3257
|
+
# @param color_mode [Integer] The color mode being used.
|
3258
|
+
# @return [Integer] The number of sample values per pixel.
|
3259
|
+
#
|
3260
|
+
# source://chunky_png//lib/chunky_png/color.rb#934
|
3261
|
+
def samples_per_pixel(color_mode); end
|
3262
|
+
|
3263
|
+
# Returns the number of bytes used per scanline.
|
3264
|
+
#
|
3265
|
+
# @param color_mode [Integer] The color mode in which the pixels are
|
3266
|
+
# stored.
|
3267
|
+
# @param depth [Integer] The color depth of the pixels.
|
3268
|
+
# @param width [Integer] The number of pixels per scanline.
|
3269
|
+
# @return [Integer] The number of bytes used per scanline in a datastream.
|
3270
|
+
#
|
3271
|
+
# source://chunky_png//lib/chunky_png/color.rb#973
|
3272
|
+
def scanline_bytesize(color_mode, depth, width); end
|
3273
|
+
|
3274
|
+
# Converts a color to a fiting grayscale value. It will conserve the alpha
|
3275
|
+
# channel.
|
3276
|
+
#
|
3277
|
+
# This method will return a full color value, with the R, G, and B value
|
3278
|
+
# set to the grayscale teint calcuated from the input color's R, G and B
|
3279
|
+
# values.
|
3280
|
+
#
|
3281
|
+
# @param color [Integer] The color to convert.
|
3282
|
+
# @return [Integer] The input color, converted to the best fitting
|
3283
|
+
# grayscale.
|
3284
|
+
# @see #grayscale_teint
|
3285
|
+
#
|
3286
|
+
# source://chunky_png//lib/chunky_png/color.rb#453
|
3287
|
+
def to_grayscale(color); end
|
3288
|
+
|
3289
|
+
# Returns an array with the grayscale teint and alpha channel values for
|
3290
|
+
# this color.
|
3291
|
+
#
|
3292
|
+
# This method expects the color to be grayscale, i.e. r, g, and b value to
|
3293
|
+
# be equal and uses only the B channel. If you need to convert a color to
|
3294
|
+
# grayscale first, see {#to_grayscale}.
|
3295
|
+
#
|
3296
|
+
# @param color [Integer] The grayscale color to convert.
|
3297
|
+
# @return [Array<Integer>] An array with 2 Integer elements.
|
3298
|
+
# @see #to_grayscale
|
3299
|
+
#
|
3300
|
+
# source://chunky_png//lib/chunky_png/color.rb#701
|
3301
|
+
def to_grayscale_alpha_bytes(color); end
|
3302
|
+
|
3303
|
+
# Returns an array with the grayscale teint value for this color.
|
3304
|
+
#
|
3305
|
+
# This method expects the r, g, and b value to be equal, and the alpha
|
3306
|
+
# channel will be discarded.
|
3307
|
+
#
|
3308
|
+
# @param color [Integer] The grayscale color to convert.
|
3309
|
+
# @return [Array<Integer>] An array with 1 Integer element.
|
3310
|
+
#
|
3311
|
+
# source://chunky_png//lib/chunky_png/color.rb#687
|
3312
|
+
def to_grayscale_bytes(color); end
|
3313
|
+
|
3314
|
+
# Returns a string representing this color using hex notation (i.e.
|
3315
|
+
# #rrggbbaa).
|
3316
|
+
#
|
3317
|
+
# @param color [Integer] The color to convert.
|
3318
|
+
# @param include_alpha [Boolean]
|
3319
|
+
# @return [String] The color in hex notation, starting with a pound sign.
|
3320
|
+
#
|
3321
|
+
# source://chunky_png//lib/chunky_png/color.rb#572
|
3322
|
+
def to_hex(color, include_alpha = T.unsafe(nil)); end
|
3323
|
+
|
3324
|
+
# Returns an array with the separate HSV components of a color.
|
3325
|
+
#
|
3326
|
+
# Because ChunkyPNG internally handles colors as Integers for performance
|
3327
|
+
# reasons, some rounding occurs when importing or exporting HSV colors
|
3328
|
+
# whose coordinates are float-based. Because of this rounding, #to_hsv and
|
3329
|
+
# #from_hsv may not be perfect inverses.
|
3330
|
+
#
|
3331
|
+
# This implementation follows the modern convention of 0 degrees hue
|
3332
|
+
# indicating red.
|
3333
|
+
#
|
3334
|
+
# @param color [Integer] The ChunkyPNG color to convert.
|
3335
|
+
# @param include_alpha [Boolean] Flag indicates whether a fourth element
|
3336
|
+
# representing alpha channel should be included in the returned array.
|
3337
|
+
# @return [Array[0]] The hue of the color (0-360)
|
3338
|
+
# @return [Array[1]] The saturation of the color (0-1)
|
3339
|
+
# @return [Array[2]] The value of the color (0-1)
|
3340
|
+
# @return [Array[3]] Optional fourth element for alpha, included if
|
3341
|
+
# include_alpha=true (0-255)
|
3342
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3343
|
+
#
|
3344
|
+
# source://chunky_png//lib/chunky_png/color.rb#595
|
3345
|
+
def to_hsb(color, include_alpha = T.unsafe(nil)); end
|
3346
|
+
|
3347
|
+
# Returns an array with the separate HSL components of a color.
|
3348
|
+
#
|
3349
|
+
# Because ChunkyPNG internally handles colors as Integers for performance
|
3350
|
+
# reasons, some rounding occurs when importing or exporting HSL colors
|
3351
|
+
# whose coordinates are float-based. Because of this rounding, #to_hsl and
|
3352
|
+
# #from_hsl may not be perfect inverses.
|
3353
|
+
#
|
3354
|
+
# This implementation follows the modern convention of 0 degrees hue indicating red.
|
3355
|
+
#
|
3356
|
+
# @param color [Integer] The ChunkyPNG color to convert.
|
3357
|
+
# @param include_alpha [Boolean] Flag indicates whether a fourth element
|
3358
|
+
# representing alpha channel should be included in the returned array.
|
3359
|
+
# @return [Array<Fixnum>[0]] The hue of the color (0-360)
|
3360
|
+
# @return [Array<Fixnum>[1]] The saturation of the color (0-1)
|
3361
|
+
# @return [Array<Fixnum>[2]] The lightness of the color (0-1)
|
3362
|
+
# @return [Array<Fixnum>[3]] Optional fourth element for alpha, included if
|
3363
|
+
# include_alpha=true (0-255)
|
3364
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3365
|
+
#
|
3366
|
+
# source://chunky_png//lib/chunky_png/color.rb#624
|
3367
|
+
def to_hsl(color, include_alpha = T.unsafe(nil)); end
|
3368
|
+
|
3369
|
+
# Returns an array with the separate HSV components of a color.
|
3370
|
+
#
|
3371
|
+
# Because ChunkyPNG internally handles colors as Integers for performance
|
3372
|
+
# reasons, some rounding occurs when importing or exporting HSV colors
|
3373
|
+
# whose coordinates are float-based. Because of this rounding, #to_hsv and
|
3374
|
+
# #from_hsv may not be perfect inverses.
|
3375
|
+
#
|
3376
|
+
# This implementation follows the modern convention of 0 degrees hue
|
3377
|
+
# indicating red.
|
3378
|
+
#
|
3379
|
+
# @param color [Integer] The ChunkyPNG color to convert.
|
3380
|
+
# @param include_alpha [Boolean] Flag indicates whether a fourth element
|
3381
|
+
# representing alpha channel should be included in the returned array.
|
3382
|
+
# @return [Array[0]] The hue of the color (0-360)
|
3383
|
+
# @return [Array[1]] The saturation of the color (0-1)
|
3384
|
+
# @return [Array[2]] The value of the color (0-1)
|
3385
|
+
# @return [Array[3]] Optional fourth element for alpha, included if
|
3386
|
+
# include_alpha=true (0-255)
|
3387
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3388
|
+
#
|
3389
|
+
# source://chunky_png//lib/chunky_png/color.rb#595
|
3390
|
+
def to_hsv(color, include_alpha = T.unsafe(nil)); end
|
3391
|
+
|
3392
|
+
# Returns an array with the separate RGBA values for this color.
|
3393
|
+
#
|
3394
|
+
# @param color [Integer] The color to convert.
|
3395
|
+
# @return [Array<Integer>] An array with 4 Integer elements.
|
3396
|
+
#
|
3397
|
+
# source://chunky_png//lib/chunky_png/color.rb#667
|
3398
|
+
def to_truecolor_alpha_bytes(color); end
|
3399
|
+
|
3400
|
+
# Returns an array with the separate RGB values for this color. The alpha
|
3401
|
+
# channel will be discarded.
|
3402
|
+
#
|
3403
|
+
# @param color [Integer] The color to convert.
|
3404
|
+
# @return [Array<Integer>] An array with 3 Integer elements.
|
3405
|
+
#
|
3406
|
+
# source://chunky_png//lib/chunky_png/color.rb#676
|
3407
|
+
def to_truecolor_bytes(color); end
|
3408
|
+
|
3409
|
+
private
|
3410
|
+
|
3411
|
+
# Convert one HSL or HSV triple and associated chroma to a scaled rgb triple
|
3412
|
+
#
|
3413
|
+
# This method encapsulates the shared mathematical operations needed to
|
3414
|
+
# convert coordinates from a cylindrical colorspace such as HSL or HSV into
|
3415
|
+
# coordinates of the RGB colorspace.
|
3416
|
+
#
|
3417
|
+
# Even though chroma values are derived from the other three coordinates,
|
3418
|
+
# the formula for calculating chroma differs for each colorspace. Since it
|
3419
|
+
# is calculated differently for each colorspace, it must be passed in as
|
3420
|
+
# a parameter.
|
3421
|
+
#
|
3422
|
+
# @param hue [Fixnum] The hue-component (0-360)
|
3423
|
+
# @param saturation [Fixnum] The saturation-component (0-1)
|
3424
|
+
# @param y_component [Fixnum] The y_component can represent either lightness
|
3425
|
+
# or brightness/value (0-1) depending on which scheme (HSV/HSL) is being used.
|
3426
|
+
# @param chroma [Fixnum] The associated chroma value.
|
3427
|
+
# @private
|
3428
|
+
# @return [Array<Fixnum>] A scaled r,g,b triple. Scheme-dependent
|
3429
|
+
# adjustments are still needed to reach the true r,g,b values.
|
3430
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV
|
3431
|
+
#
|
3432
|
+
# source://chunky_png//lib/chunky_png/color.rb#252
|
3433
|
+
def cylindrical_to_cubic(hue, saturation, y_component, chroma); end
|
3434
|
+
|
3435
|
+
# This method encapsulates the logic needed to extract hue and chroma from
|
3436
|
+
# a ChunkPNG color. This logic is shared by the cylindrical HSV/HSB and HSL
|
3437
|
+
# color space models.
|
3438
|
+
#
|
3439
|
+
# @param color [Integer] A ChunkyPNG color.
|
3440
|
+
# @private
|
3441
|
+
# @return [Fixnum] hue The hue of the color (0-360)
|
3442
|
+
# @return [Fixnum] chroma The chroma of the color (0-1)
|
3443
|
+
# @return [Fixnum] max The magnitude of the largest scaled rgb component (0-1)
|
3444
|
+
# @return [Fixnum] min The magnitude of the smallest scaled rgb component (0-1)
|
3445
|
+
#
|
3446
|
+
# source://chunky_png//lib/chunky_png/color.rb#643
|
3447
|
+
def hue_and_chroma(color); end
|
3448
|
+
end
|
3449
|
+
|
3450
|
+
# @return [Integer] Black pixel/color
|
3451
|
+
#
|
3452
|
+
# source://chunky_png//lib/chunky_png/color.rb#919
|
3453
|
+
ChunkyPNG::Color::BLACK = T.let(T.unsafe(nil), Integer)
|
3454
|
+
|
3455
|
+
# @private
|
3456
|
+
# @return [Regexp] The regexp to parse 3-digit hex color values.
|
3457
|
+
#
|
3458
|
+
# source://chunky_png//lib/chunky_png/color.rb#65
|
3459
|
+
ChunkyPNG::Color::HEX3_COLOR_REGEXP = T.let(T.unsafe(nil), Regexp)
|
3460
|
+
|
3461
|
+
# @private
|
3462
|
+
# @return [Regexp] The regexp to parse 6- and 8-digit hex color values.
|
3463
|
+
#
|
3464
|
+
# source://chunky_png//lib/chunky_png/color.rb#69
|
3465
|
+
ChunkyPNG::Color::HEX6_COLOR_REGEXP = T.let(T.unsafe(nil), Regexp)
|
3466
|
+
|
3467
|
+
# @private
|
3468
|
+
# @return [Regexp] The regexp to parse named color values.
|
3469
|
+
#
|
3470
|
+
# source://chunky_png//lib/chunky_png/color.rb#73
|
3471
|
+
ChunkyPNG::Color::HTML_COLOR_REGEXP = T.let(T.unsafe(nil), Regexp)
|
3472
|
+
|
3473
|
+
# @return [Integer] The maximum value of each color component.
|
3474
|
+
#
|
3475
|
+
# source://chunky_png//lib/chunky_png/color.rb#61
|
3476
|
+
ChunkyPNG::Color::MAX = T.let(T.unsafe(nil), Integer)
|
3477
|
+
|
3478
|
+
# Could be simplified as MAX * 2, but this format mirrors the math in
|
3479
|
+
# {#euclidean_distance_rgba}
|
3480
|
+
#
|
3481
|
+
# @return [Float] The maximum Euclidean distance of two RGBA colors.
|
3482
|
+
#
|
3483
|
+
# source://chunky_png//lib/chunky_png/color.rb#736
|
3484
|
+
ChunkyPNG::Color::MAX_EUCLIDEAN_DISTANCE_RGBA = T.let(T.unsafe(nil), Float)
|
3485
|
+
|
3486
|
+
# @return [Hash<Symbol, Integer>] All the predefined color names in HTML.
|
3487
|
+
#
|
3488
|
+
# source://chunky_png//lib/chunky_png/color.rb#743
|
3489
|
+
ChunkyPNG::Color::PREDEFINED_COLORS = T.let(T.unsafe(nil), Hash)
|
3490
|
+
|
3491
|
+
# @return [Integer] Fully transparent pixel/color
|
3492
|
+
#
|
3493
|
+
# source://chunky_png//lib/chunky_png/color.rb#925
|
3494
|
+
ChunkyPNG::Color::TRANSPARENT = T.let(T.unsafe(nil), Integer)
|
3495
|
+
|
3496
|
+
# @return [Integer] White pixel/color
|
3497
|
+
#
|
3498
|
+
# source://chunky_png//lib/chunky_png/color.rb#922
|
3499
|
+
ChunkyPNG::Color::WHITE = T.let(T.unsafe(nil), Integer)
|
3500
|
+
|
3501
|
+
# The Datastream class represents a PNG formatted datastream. It supports
|
3502
|
+
# both reading from and writing to strings, streams and files.
|
3503
|
+
#
|
3504
|
+
# A PNG datastream begins with the PNG signature, and then contains multiple
|
3505
|
+
# chunks, starting with a header (IHDR) chunk and finishing with an end
|
3506
|
+
# (IEND) chunk.
|
3507
|
+
#
|
3508
|
+
# @see ChunkyPNG::Chunk
|
3509
|
+
#
|
3510
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#12
|
3511
|
+
class ChunkyPNG::Datastream
|
3512
|
+
# Initializes a new Datastream instance.
|
3513
|
+
#
|
3514
|
+
# @return [Datastream] a new instance of Datastream
|
3515
|
+
#
|
3516
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#45
|
3517
|
+
def initialize; end
|
3518
|
+
|
3519
|
+
# Returns an enumerator instance for this datastream's chunks.
|
3520
|
+
#
|
3521
|
+
# @return [Enumerable::Enumerator] An enumerator for the :each_chunk method.
|
3522
|
+
# @see ChunkyPNG::Datastream#each_chunk
|
3523
|
+
#
|
3524
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#137
|
3525
|
+
def chunks; end
|
3526
|
+
|
3527
|
+
# The chunks that together compose the images pixel data.
|
3528
|
+
#
|
3529
|
+
# @return [Array<ChunkyPNG::Chunk::ImageData>]
|
3530
|
+
#
|
3531
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#38
|
3532
|
+
def data_chunks; end
|
3533
|
+
|
3534
|
+
# The chunks that together compose the images pixel data.
|
3535
|
+
#
|
3536
|
+
# @return [Array<ChunkyPNG::Chunk::ImageData>]
|
3537
|
+
#
|
3538
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#38
|
3539
|
+
def data_chunks=(_arg0); end
|
3540
|
+
|
3541
|
+
# Enumerates the chunks in this datastream.
|
3542
|
+
#
|
3543
|
+
# This will iterate over the chunks using the order in which the chunks
|
3544
|
+
# should appear in the PNG file.
|
3545
|
+
#
|
3546
|
+
# @see ChunkyPNG::Datastream#chunks
|
3547
|
+
# @yield [chunk] Yields the chunks in this datastream, one by one in the correct order.
|
3548
|
+
# @yieldparam chunk [ChunkyPNG::Chunk::Base] A chunk in this datastream.
|
3549
|
+
#
|
3550
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#124
|
3551
|
+
def each_chunk; end
|
3552
|
+
|
3553
|
+
# The empty chunk that signals the end of this datastream
|
3554
|
+
#
|
3555
|
+
# @return [ChunkyPNG::Chunk::Header]
|
3556
|
+
#
|
3557
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#42
|
3558
|
+
def end_chunk; end
|
3559
|
+
|
3560
|
+
# The empty chunk that signals the end of this datastream
|
3561
|
+
#
|
3562
|
+
# @return [ChunkyPNG::Chunk::Header]
|
3563
|
+
#
|
3564
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#42
|
3565
|
+
def end_chunk=(_arg0); end
|
3566
|
+
|
3567
|
+
# The header chunk of this datastream.
|
3568
|
+
#
|
3569
|
+
# @return [ChunkyPNG::Chunk::Header]
|
3570
|
+
#
|
3571
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#18
|
3572
|
+
def header_chunk; end
|
3573
|
+
|
3574
|
+
# The header chunk of this datastream.
|
3575
|
+
#
|
3576
|
+
# @return [ChunkyPNG::Chunk::Header]
|
3577
|
+
#
|
3578
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#18
|
3579
|
+
def header_chunk=(_arg0); end
|
3580
|
+
|
3581
|
+
# Returns the uncompressed image data, combined from all the IDAT chunks
|
3582
|
+
#
|
3583
|
+
# @return [String] The uncompressed image data for this datastream
|
3584
|
+
#
|
3585
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#153
|
3586
|
+
def imagedata; end
|
3587
|
+
|
3588
|
+
# Returns all the textual metadata key/value pairs as hash.
|
3589
|
+
#
|
3590
|
+
# @return [Hash] A hash containing metadata fields and their values.
|
3591
|
+
#
|
3592
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#143
|
3593
|
+
def metadata; end
|
3594
|
+
|
3595
|
+
# All other chunks in this PNG file.
|
3596
|
+
#
|
3597
|
+
# @return [Array<ChunkyPNG::Chunk::Generic>]
|
3598
|
+
#
|
3599
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#22
|
3600
|
+
def other_chunks; end
|
3601
|
+
|
3602
|
+
# All other chunks in this PNG file.
|
3603
|
+
#
|
3604
|
+
# @return [Array<ChunkyPNG::Chunk::Generic>]
|
3605
|
+
#
|
3606
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#22
|
3607
|
+
def other_chunks=(_arg0); end
|
3608
|
+
|
3609
|
+
# The chunk containing the image's palette.
|
3610
|
+
#
|
3611
|
+
# @return [ChunkyPNG::Chunk::Palette]
|
3612
|
+
#
|
3613
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#26
|
3614
|
+
def palette_chunk; end
|
3615
|
+
|
3616
|
+
# The chunk containing the image's palette.
|
3617
|
+
#
|
3618
|
+
# @return [ChunkyPNG::Chunk::Palette]
|
3619
|
+
#
|
3620
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#26
|
3621
|
+
def palette_chunk=(_arg0); end
|
3622
|
+
|
3623
|
+
# The chunk containing the physical dimensions of the PNG's pixels.
|
3624
|
+
#
|
3625
|
+
# @return [ChunkyPNG::Chunk::Physical]
|
3626
|
+
#
|
3627
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#34
|
3628
|
+
def physical_chunk; end
|
3629
|
+
|
3630
|
+
# The chunk containing the physical dimensions of the PNG's pixels.
|
3631
|
+
#
|
3632
|
+
# @return [ChunkyPNG::Chunk::Physical]
|
3633
|
+
#
|
3634
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#34
|
3635
|
+
def physical_chunk=(_arg0); end
|
3636
|
+
|
3637
|
+
# Saves this datastream as a PNG file.
|
3638
|
+
#
|
3639
|
+
# @param filename [String] The filename to use.
|
3640
|
+
#
|
3641
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#170
|
3642
|
+
def save(filename); end
|
3643
|
+
|
3644
|
+
# Encodes this datastream into a string.
|
3645
|
+
#
|
3646
|
+
# @return [String] The encoded PNG datastream.
|
3647
|
+
#
|
3648
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#176
|
3649
|
+
def to_blob; end
|
3650
|
+
|
3651
|
+
# Encodes this datastream into a string.
|
3652
|
+
#
|
3653
|
+
# @return [String] The encoded PNG datastream.
|
3654
|
+
#
|
3655
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#176
|
3656
|
+
def to_s; end
|
3657
|
+
|
3658
|
+
# Encodes this datastream into a string.
|
3659
|
+
#
|
3660
|
+
# @return [String] The encoded PNG datastream.
|
3661
|
+
#
|
3662
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#176
|
3663
|
+
def to_string; end
|
3664
|
+
|
3665
|
+
# The chunk containing the transparency information of the palette.
|
3666
|
+
#
|
3667
|
+
# @return [ChunkyPNG::Chunk::Transparency]
|
3668
|
+
#
|
3669
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#30
|
3670
|
+
def transparency_chunk; end
|
3671
|
+
|
3672
|
+
# The chunk containing the transparency information of the palette.
|
3673
|
+
#
|
3674
|
+
# @return [ChunkyPNG::Chunk::Transparency]
|
3675
|
+
#
|
3676
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#30
|
3677
|
+
def transparency_chunk=(_arg0); end
|
3678
|
+
|
3679
|
+
# Writes the datastream to the given output stream.
|
3680
|
+
#
|
3681
|
+
# @param io [IO] The output stream to write to.
|
3682
|
+
#
|
3683
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#163
|
3684
|
+
def write(io); end
|
3685
|
+
|
3686
|
+
class << self
|
3687
|
+
# Reads a PNG datastream from a string.
|
3688
|
+
#
|
3689
|
+
# @param str [String] The PNG encoded string to load from.
|
3690
|
+
# @return [ChunkyPNG::Datastream] The loaded datastream instance.
|
3691
|
+
#
|
3692
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#58
|
3693
|
+
def from_blob(str); end
|
3694
|
+
|
3695
|
+
# Reads a PNG datastream from a file.
|
3696
|
+
#
|
3697
|
+
# @param filename [String] The path of the file to load from.
|
3698
|
+
# @return [ChunkyPNG::Datastream] The loaded datastream instance.
|
3699
|
+
#
|
3700
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#67
|
3701
|
+
def from_file(filename); end
|
3702
|
+
|
3703
|
+
# Reads a PNG datastream from an input stream
|
3704
|
+
#
|
3705
|
+
# @param io [IO] The stream to read from.
|
3706
|
+
# @return [ChunkyPNG::Datastream] The loaded datastream instance.
|
3707
|
+
#
|
3708
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#76
|
3709
|
+
def from_io(io); end
|
3710
|
+
|
3711
|
+
# Reads a PNG datastream from a string.
|
3712
|
+
#
|
3713
|
+
# @param str [String] The PNG encoded string to load from.
|
3714
|
+
# @return [ChunkyPNG::Datastream] The loaded datastream instance.
|
3715
|
+
#
|
3716
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#58
|
3717
|
+
def from_string(str); end
|
3718
|
+
|
3719
|
+
# Verifies that the current stream is a PNG datastream by checking its signature.
|
3720
|
+
#
|
3721
|
+
# This method reads the PNG signature from the stream, setting the current position
|
3722
|
+
# of the stream directly after the signature, where the IHDR chunk should begin.
|
3723
|
+
#
|
3724
|
+
# @param io [IO] The stream to read the PNG signature from.
|
3725
|
+
# @raise [RuntimeError] An exception is raised if the PNG signature is not found at
|
3726
|
+
# the beginning of the stream.
|
3727
|
+
#
|
3728
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#104
|
3729
|
+
def verify_signature!(io); end
|
3730
|
+
end
|
3731
|
+
end
|
3732
|
+
|
3733
|
+
# The signature that each PNG file or stream should begin with.
|
3734
|
+
#
|
3735
|
+
# source://chunky_png//lib/chunky_png/datastream.rb#14
|
3736
|
+
ChunkyPNG::Datastream::SIGNATURE = T.let(T.unsafe(nil), String)
|
3737
|
+
|
3738
|
+
# Class that represents the dimension of something, e.g. a {ChunkyPNG::Canvas}.
|
3739
|
+
#
|
3740
|
+
# This class contains some methods to simplify performing dimension related checks.
|
3741
|
+
#
|
3742
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#68
|
3743
|
+
class ChunkyPNG::Dimension
|
3744
|
+
# Initializes a new dimension instance.
|
3745
|
+
#
|
3746
|
+
# @param width [Integer] The width-component of the new dimension.
|
3747
|
+
# @param height [Integer] The height-component of the new dimension.
|
3748
|
+
# @return [Dimension] a new instance of Dimension
|
3749
|
+
#
|
3750
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#82
|
3751
|
+
def initialize(width, height); end
|
3752
|
+
|
3753
|
+
# Compares the size of 2 dimensions.
|
3754
|
+
#
|
3755
|
+
# @param other [ChunkyPNG::Dimension] The dimension to compare with.
|
3756
|
+
# @return [-1, 0, 1] -1 if the other dimension has a larger area, 1 of this
|
3757
|
+
# dimension is larger, 0 if both are identical in size.
|
3758
|
+
#
|
3759
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#121
|
3760
|
+
def <=>(other); end
|
3761
|
+
|
3762
|
+
# Checks whether 2 dimensions are identical.
|
3763
|
+
#
|
3764
|
+
# @param other [ChunkyPNG::Dimension] The dimension to compare with.
|
3765
|
+
# @return [true, false] <tt>true</tt> iff width and height match.
|
3766
|
+
#
|
3767
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#104
|
3768
|
+
def ==(other); end
|
3769
|
+
|
3770
|
+
# Returns the area of this dimension.
|
3771
|
+
#
|
3772
|
+
# @return [Integer] The area in number of pixels.
|
3773
|
+
#
|
3774
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#88
|
3775
|
+
def area; end
|
3776
|
+
|
3777
|
+
# Checks whether 2 dimensions are identical.
|
3778
|
+
#
|
3779
|
+
# @param other [ChunkyPNG::Dimension] The dimension to compare with.
|
3780
|
+
# @return [true, false] <tt>true</tt> iff width and height match.
|
3781
|
+
#
|
3782
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#104
|
3783
|
+
def eql?(other); end
|
3784
|
+
|
3785
|
+
# Calculates a hash for the dimension object, based on width and height
|
3786
|
+
#
|
3787
|
+
# @return [Integer] A hashed value of the dimensions
|
3788
|
+
#
|
3789
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#113
|
3790
|
+
def hash; end
|
3791
|
+
|
3792
|
+
# @return [Integer] The height-component of this dimension.
|
3793
|
+
#
|
3794
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#77
|
3795
|
+
def height; end
|
3796
|
+
|
3797
|
+
# @return [Integer] The height-component of this dimension.
|
3798
|
+
#
|
3799
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#77
|
3800
|
+
def height=(_arg0); end
|
3801
|
+
|
3802
|
+
# Checks whether a point is within bounds of this dimension.
|
3803
|
+
#
|
3804
|
+
# @param point_like [ChunkyPNG::Point, ...] A point-like to bounds-check.
|
3805
|
+
# @return [true, false] True iff the x and y coordinate fall in this dimension.
|
3806
|
+
# @see ChunkyPNG.Point
|
3807
|
+
#
|
3808
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#96
|
3809
|
+
def include?(*point_like); end
|
3810
|
+
|
3811
|
+
# Casts this dimension into an array.
|
3812
|
+
#
|
3813
|
+
# @return [Array<Integer>] <tt>[width, height]</tt> for this dimension.
|
3814
|
+
#
|
3815
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#127
|
3816
|
+
def to_a; end
|
3817
|
+
|
3818
|
+
# Casts this dimension into an array.
|
3819
|
+
#
|
3820
|
+
# @return [Array<Integer>] <tt>[width, height]</tt> for this dimension.
|
3821
|
+
#
|
3822
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#127
|
3823
|
+
def to_ary; end
|
3824
|
+
|
3825
|
+
# @return [Integer] The width-component of this dimension.
|
3826
|
+
#
|
3827
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#74
|
3828
|
+
def width; end
|
3829
|
+
|
3830
|
+
# @return [Integer] The width-component of this dimension.
|
3831
|
+
#
|
3832
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#74
|
3833
|
+
def width=(_arg0); end
|
3834
|
+
end
|
3835
|
+
|
3836
|
+
# @private
|
3837
|
+
# @return [Regexp] The regexp to parse dimensions from a string.
|
3838
|
+
#
|
3839
|
+
# source://chunky_png//lib/chunky_png/dimension.rb#71
|
3840
|
+
ChunkyPNG::Dimension::DIMENSION_REGEXP = T.let(T.unsafe(nil), Regexp)
|
3841
|
+
|
3842
|
+
# Null-byte, with the encoding set correctly to ASCII-8BIT (binary) in Ruby 1.9.
|
3843
|
+
#
|
3844
|
+
# @private
|
3845
|
+
# @return [String] A binary string, consisting of one NULL-byte.
|
3846
|
+
#
|
3847
|
+
# source://chunky_png//lib/chunky_png.rb#146
|
3848
|
+
ChunkyPNG::EXTRA_BYTE = T.let(T.unsafe(nil), String)
|
3849
|
+
|
3850
|
+
# Default exception class for ChunkyPNG
|
3851
|
+
#
|
3852
|
+
# source://chunky_png//lib/chunky_png.rb#110
|
3853
|
+
class ChunkyPNG::Exception < ::StandardError; end
|
3854
|
+
|
3855
|
+
# Exception that is raised if an expectation fails.
|
3856
|
+
#
|
3857
|
+
# source://chunky_png//lib/chunky_png.rb#131
|
3858
|
+
class ChunkyPNG::ExpectationFailed < ::ChunkyPNG::Exception; end
|
3859
|
+
|
3860
|
+
# Indicates that the PNG specification's default filtering are
|
3861
|
+
# being used in the image.
|
3862
|
+
#
|
3863
|
+
# @private
|
3864
|
+
#
|
3865
|
+
# source://chunky_png//lib/chunky_png.rb#83
|
3866
|
+
ChunkyPNG::FILTERING_DEFAULT = T.let(T.unsafe(nil), Integer)
|
3867
|
+
|
3868
|
+
# Indicates that AVERAGE filtering is used for the scanline.
|
3869
|
+
#
|
3870
|
+
# @private
|
3871
|
+
#
|
3872
|
+
# source://chunky_png//lib/chunky_png.rb#99
|
3873
|
+
ChunkyPNG::FILTER_AVERAGE = T.let(T.unsafe(nil), Integer)
|
3874
|
+
|
3875
|
+
# Indicates that no filtering is used for the scanline.
|
3876
|
+
#
|
3877
|
+
# @private
|
3878
|
+
#
|
3879
|
+
# source://chunky_png//lib/chunky_png.rb#87
|
3880
|
+
ChunkyPNG::FILTER_NONE = T.let(T.unsafe(nil), Integer)
|
3881
|
+
|
3882
|
+
# Indicates that PAETH filtering is used for the scanline.
|
3883
|
+
#
|
3884
|
+
# @private
|
3885
|
+
#
|
3886
|
+
# source://chunky_png//lib/chunky_png.rb#103
|
3887
|
+
ChunkyPNG::FILTER_PAETH = T.let(T.unsafe(nil), Integer)
|
3888
|
+
|
3889
|
+
# Indicates that SUB filtering is used for the scanline.
|
3890
|
+
#
|
3891
|
+
# @private
|
3892
|
+
#
|
3893
|
+
# source://chunky_png//lib/chunky_png.rb#91
|
3894
|
+
ChunkyPNG::FILTER_SUB = T.let(T.unsafe(nil), Integer)
|
3895
|
+
|
3896
|
+
# Indicates that UP filtering is used for the scanline.
|
3897
|
+
#
|
3898
|
+
# @private
|
3899
|
+
#
|
3900
|
+
# source://chunky_png//lib/chunky_png.rb#95
|
3901
|
+
ChunkyPNG::FILTER_UP = T.let(T.unsafe(nil), Integer)
|
3902
|
+
|
3903
|
+
# Indicates that the image uses Adam7 interlacing.
|
3904
|
+
#
|
3905
|
+
# @private
|
3906
|
+
#
|
3907
|
+
# source://chunky_png//lib/chunky_png.rb#76
|
3908
|
+
ChunkyPNG::INTERLACING_ADAM7 = T.let(T.unsafe(nil), Integer)
|
3909
|
+
|
3910
|
+
# Indicates that the image does not use interlacing.
|
3911
|
+
#
|
3912
|
+
# @private
|
3913
|
+
#
|
3914
|
+
# source://chunky_png//lib/chunky_png.rb#72
|
3915
|
+
ChunkyPNG::INTERLACING_NONE = T.let(T.unsafe(nil), Integer)
|
3916
|
+
|
3917
|
+
# ChunkyPNG::Image is an extension of the {ChunkyPNG::Canvas} class, that
|
3918
|
+
# also includes support for metadata.
|
3919
|
+
#
|
3920
|
+
# @see ChunkyPNG::Canvas
|
3921
|
+
#
|
3922
|
+
# source://chunky_png//lib/chunky_png/image.rb#10
|
3923
|
+
class ChunkyPNG::Image < ::ChunkyPNG::Canvas
|
3924
|
+
# Initializes a new ChunkyPNG::Image instance.
|
3925
|
+
#
|
3926
|
+
# @param width [Integer] The width of the new image.
|
3927
|
+
# @param height [Integer] The height of the new image.
|
3928
|
+
# @param bg_color [Integer] The background color of the new image.
|
3929
|
+
# @param metadata [Hash] A hash of metadata fields and values for this image.
|
3930
|
+
# @return [Image] a new instance of Image
|
3931
|
+
# @see ChunkyPNG::Canvas#initialize
|
3932
|
+
#
|
3933
|
+
# source://chunky_png//lib/chunky_png/image.rb#22
|
3934
|
+
def initialize(width, height, bg_color = T.unsafe(nil), metadata = T.unsafe(nil)); end
|
3935
|
+
|
3936
|
+
# @return [Hash] The hash of metadata fields for this PNG image.
|
3937
|
+
#
|
3938
|
+
# source://chunky_png//lib/chunky_png/image.rb#14
|
3939
|
+
def metadata; end
|
3940
|
+
|
3941
|
+
# @return [Hash] The hash of metadata fields for this PNG image.
|
3942
|
+
#
|
3943
|
+
# source://chunky_png//lib/chunky_png/image.rb#14
|
3944
|
+
def metadata=(_arg0); end
|
3945
|
+
|
3946
|
+
# Returns the metadata for this image as PNG chunks.
|
3947
|
+
#
|
3948
|
+
# Chunks will either be of the {ChunkyPNG::Chunk::Text} type for small
|
3949
|
+
# values (in bytes), or of the {ChunkyPNG::Chunk::CompressedText} type
|
3950
|
+
# for values that are larger in size.
|
3951
|
+
#
|
3952
|
+
# @return [Array<ChunkyPNG::Chunk>] An array of metadata chunks.
|
3953
|
+
# @see ChunkyPNG::Image::METADATA_COMPRESSION_TRESHOLD
|
3954
|
+
#
|
3955
|
+
# source://chunky_png//lib/chunky_png/image.rb#43
|
3956
|
+
def metadata_chunks; end
|
3957
|
+
|
3958
|
+
# Encodes the image to a PNG datastream for saving to disk or writing to an IO stream.
|
3959
|
+
#
|
3960
|
+
# Besides encoding the canvas, it will also encode the metadata fields to text chunks.
|
3961
|
+
#
|
3962
|
+
# @param constraints [Hash] The constraints to use when encoding the canvas.
|
3963
|
+
# @return [ChunkyPNG::Datastream] The datastream that contains this image.
|
3964
|
+
# @see ChunkyPNG::Canvas::PNGEncoding#to_datastream
|
3965
|
+
# @see #metadata_chunks
|
3966
|
+
#
|
3967
|
+
# source://chunky_png//lib/chunky_png/image.rb#61
|
3968
|
+
def to_datastream(constraints = T.unsafe(nil)); end
|
3969
|
+
|
3970
|
+
private
|
3971
|
+
|
3972
|
+
# Initializes a copy of another ChunkyPNG::Image instance.
|
3973
|
+
#
|
3974
|
+
# @param other [ChunkyPNG::Image] The other image to copy.
|
3975
|
+
#
|
3976
|
+
# source://chunky_png//lib/chunky_png/image.rb#30
|
3977
|
+
def initialize_copy(other); end
|
3978
|
+
|
3979
|
+
class << self
|
3980
|
+
# Reads a ChunkyPNG::Image instance from a data stream.
|
3981
|
+
#
|
3982
|
+
# Besides decoding the canvas, this will also read the metadata fields
|
3983
|
+
# from the datastream.
|
3984
|
+
#
|
3985
|
+
# @param ds [ChunkyPNG::Datastream] The datastream to read from.
|
3986
|
+
#
|
3987
|
+
# source://chunky_png//lib/chunky_png/image.rb#73
|
3988
|
+
def from_datastream(ds); end
|
3989
|
+
end
|
3990
|
+
end
|
3991
|
+
|
3992
|
+
# The minimum size of bytes the value of a metadata field should be before compression
|
3993
|
+
# is enabled for the chunk.
|
3994
|
+
#
|
3995
|
+
# source://chunky_png//lib/chunky_png/image.rb#11
|
3996
|
+
ChunkyPNG::Image::METADATA_COMPRESSION_TRESHOLD = T.let(T.unsafe(nil), Integer)
|
3997
|
+
|
3998
|
+
# Exception that is raised if an tTXt chunk does not contain valid UTF-8 data.
|
3999
|
+
#
|
4000
|
+
# source://chunky_png//lib/chunky_png.rb#127
|
4001
|
+
class ChunkyPNG::InvalidUTF8 < ::ChunkyPNG::Exception; end
|
4002
|
+
|
4003
|
+
# Exception that is raised for an unsupported PNG image.
|
4004
|
+
#
|
4005
|
+
# source://chunky_png//lib/chunky_png.rb#114
|
4006
|
+
class ChunkyPNG::NotSupported < ::ChunkyPNG::Exception; end
|
4007
|
+
|
4008
|
+
# Exception that when provided coordinates are out of bounds for the canvas
|
4009
|
+
#
|
4010
|
+
# source://chunky_png//lib/chunky_png.rb#135
|
4011
|
+
class ChunkyPNG::OutOfBounds < ::ChunkyPNG::ExpectationFailed; end
|
4012
|
+
|
4013
|
+
# A palette describes the set of colors that is being used for an image.
|
4014
|
+
#
|
4015
|
+
# A PNG image can contain an explicit palette which defines the colors of
|
4016
|
+
# that image, but can also use an implicit palette, e.g. all truecolor colors
|
4017
|
+
# or all grayscale colors.
|
4018
|
+
#
|
4019
|
+
# This palette supports decoding colors from a palette if an explicit palette
|
4020
|
+
# is provided in a PNG datastream, and it supports encoding colors to an
|
4021
|
+
# explicit palette (stores as PLTE & tRNS chunks in a PNG file).
|
4022
|
+
#
|
4023
|
+
# @see ChunkyPNG::Color
|
4024
|
+
#
|
4025
|
+
# source://chunky_png//lib/chunky_png/palette.rb#22
|
4026
|
+
class ChunkyPNG::Palette < ::Set
|
4027
|
+
# Builds a new palette given a set (Enumerable instance) of colors.
|
4028
|
+
#
|
4029
|
+
# @param enum [Enumerable<Integer>] The set of colors to include in this
|
4030
|
+
# palette.This Enumerable can contain duplicates.
|
4031
|
+
# @param decoding_map [Array] An array of colors in the exact order at
|
4032
|
+
# which they appeared in the palette chunk, so that this array can be
|
4033
|
+
# used for decoding.
|
4034
|
+
# @return [Palette] a new instance of Palette
|
4035
|
+
#
|
4036
|
+
# source://chunky_png//lib/chunky_png/palette.rb#23
|
4037
|
+
def initialize(enum, decoding_map = T.unsafe(nil)); end
|
4038
|
+
|
4039
|
+
# Returns a color, given the position in the original palette chunk.
|
4040
|
+
#
|
4041
|
+
# @param index [Integer] The 0-based position of the color in the palette.
|
4042
|
+
# @return [ChunkyPNG::Color] The color that is stored in the palette under
|
4043
|
+
# the given index
|
4044
|
+
# @see ChunkyPNG::Palette#can_decode?
|
4045
|
+
#
|
4046
|
+
# source://chunky_png//lib/chunky_png/palette.rb#148
|
4047
|
+
def [](index); end
|
4048
|
+
|
4049
|
+
# Determines the most suitable colormode for this palette.
|
4050
|
+
#
|
4051
|
+
# @return [Integer] The colormode which would create the smallest possible
|
4052
|
+
# file for images that use this exact palette.
|
4053
|
+
#
|
4054
|
+
# source://chunky_png//lib/chunky_png/palette.rb#195
|
4055
|
+
def best_color_settings; end
|
4056
|
+
|
4057
|
+
# Check whether this palette only contains bacl and white.
|
4058
|
+
#
|
4059
|
+
# @return [true, false] True if all colors in this palette are grayscale
|
4060
|
+
# teints.
|
4061
|
+
# @see ChunkyPNG::Color#grayscale??
|
4062
|
+
#
|
4063
|
+
# source://chunky_png//lib/chunky_png/palette.rb#104
|
4064
|
+
def black_and_white?; end
|
4065
|
+
|
4066
|
+
# Checks whether this palette is suitable for decoding an image from a
|
4067
|
+
# datastream.
|
4068
|
+
#
|
4069
|
+
# This requires that the positions of the colors in the original palette
|
4070
|
+
# chunk is known, which is stored as an array in the +@decoding_map+
|
4071
|
+
# instance variable.
|
4072
|
+
#
|
4073
|
+
# @return [true, false] True if a decoding map was built when this palette
|
4074
|
+
# was loaded.
|
4075
|
+
#
|
4076
|
+
# source://chunky_png//lib/chunky_png/palette.rb#126
|
4077
|
+
def can_decode?; end
|
4078
|
+
|
4079
|
+
# Checks whether this palette is suitable for encoding an image from to
|
4080
|
+
# datastream.
|
4081
|
+
#
|
4082
|
+
# This requires that the position of the color in the future palette chunk
|
4083
|
+
# is known, which is stored as a hash in the +@encoding_map+ instance
|
4084
|
+
# variable.
|
4085
|
+
#
|
4086
|
+
# @return [true, false] True if a encoding map was built when this palette
|
4087
|
+
# was loaded.
|
4088
|
+
#
|
4089
|
+
# source://chunky_png//lib/chunky_png/palette.rb#139
|
4090
|
+
def can_encode?; end
|
4091
|
+
|
4092
|
+
# Determines the minimal bit depth required for an indexed image
|
4093
|
+
#
|
4094
|
+
# @return [Integer] Number of bits per pixel, i.e. 1, 2, 4 or 8, or nil if
|
4095
|
+
# this image cannot be saved as an indexed image.
|
4096
|
+
#
|
4097
|
+
# source://chunky_png//lib/chunky_png/palette.rb#216
|
4098
|
+
def determine_bit_depth; end
|
4099
|
+
|
4100
|
+
# Check whether this palette only contains grayscale colors.
|
4101
|
+
#
|
4102
|
+
# @return [true, false] True if all colors in this palette are grayscale
|
4103
|
+
# teints.
|
4104
|
+
# @see ChunkyPNG::Color#grayscale??
|
4105
|
+
#
|
4106
|
+
# source://chunky_png//lib/chunky_png/palette.rb#96
|
4107
|
+
def grayscale?; end
|
4108
|
+
|
4109
|
+
# Returns the position of a color in the palette
|
4110
|
+
#
|
4111
|
+
# @param color [ChunkyPNG::Color] The color for which to look up the index.
|
4112
|
+
# @return [Integer] The 0-based position of the color in the palette.
|
4113
|
+
# @see ChunkyPNG::Palette#can_encode?
|
4114
|
+
#
|
4115
|
+
# source://chunky_png//lib/chunky_png/palette.rb#156
|
4116
|
+
def index(color); end
|
4117
|
+
|
4118
|
+
# Checks whether the size of this palette is suitable for indexed storage.
|
4119
|
+
#
|
4120
|
+
# @return [true, false] True if the number of colors in this palette is at
|
4121
|
+
# most 256.
|
4122
|
+
#
|
4123
|
+
# source://chunky_png//lib/chunky_png/palette.rb#81
|
4124
|
+
def indexable?; end
|
4125
|
+
|
4126
|
+
# Check whether this palette only contains opaque colors.
|
4127
|
+
#
|
4128
|
+
# @return [true, false] True if all colors in this palette are opaque.
|
4129
|
+
# @see ChunkyPNG::Color#opaque?
|
4130
|
+
#
|
4131
|
+
# source://chunky_png//lib/chunky_png/palette.rb#88
|
4132
|
+
def opaque?; end
|
4133
|
+
|
4134
|
+
# Returns a palette with all the opaque variants of the colors in this
|
4135
|
+
# palette.
|
4136
|
+
#
|
4137
|
+
# @return [ChunkyPNG::Palette] A new Palette instance with only opaque
|
4138
|
+
# colors.
|
4139
|
+
# @see ChunkyPNG::Color#opaque!
|
4140
|
+
#
|
4141
|
+
# source://chunky_png//lib/chunky_png/palette.rb#113
|
4142
|
+
def opaque_palette; end
|
4143
|
+
|
4144
|
+
# Creates a PLTE chunk that corresponds with this palette to store the r,
|
4145
|
+
# g, and b channels of all colors.
|
4146
|
+
#
|
4147
|
+
# @note A PLTE chunk should only be included if the image is encoded using
|
4148
|
+
# index colors. After this chunk has been built, the palette becomes
|
4149
|
+
# suitable for encoding an image.
|
4150
|
+
# @return [ChunkyPNG::Chunk::Palette] The PLTE chunk.
|
4151
|
+
# @see ChunkyPNG::Palette#can_encode?
|
4152
|
+
#
|
4153
|
+
# source://chunky_png//lib/chunky_png/palette.rb#180
|
4154
|
+
def to_plte_chunk; end
|
4155
|
+
|
4156
|
+
# Creates a tRNS chunk that corresponds with this palette to store the
|
4157
|
+
# alpha channel of all colors.
|
4158
|
+
#
|
4159
|
+
# Note that this chunk can be left out of every color in the palette is
|
4160
|
+
# opaque, and the image is encoded using indexed colors.
|
4161
|
+
#
|
4162
|
+
# @return [ChunkyPNG::Chunk::Transparency] The tRNS chunk.
|
4163
|
+
#
|
4164
|
+
# source://chunky_png//lib/chunky_png/palette.rb#167
|
4165
|
+
def to_trns_chunk; end
|
4166
|
+
|
4167
|
+
class << self
|
4168
|
+
# Builds a palette instance from a given canvas.
|
4169
|
+
#
|
4170
|
+
# @param canvas [ChunkyPNG::Canvas] The canvas to create a palette for.
|
4171
|
+
# @return [ChunkyPNG::Palette] The palette instance.
|
4172
|
+
#
|
4173
|
+
# source://chunky_png//lib/chunky_png/palette.rb#63
|
4174
|
+
def from_canvas(canvas); end
|
4175
|
+
|
4176
|
+
# Builds a palette instance from a PLTE chunk and optionally a tRNS chunk
|
4177
|
+
# from a PNG datastream.
|
4178
|
+
#
|
4179
|
+
# This method will cerate a palette that is suitable for decoding an image.
|
4180
|
+
#
|
4181
|
+
# @param palette_chunk [ChunkyPNG::Chunk::Palette] The palette chunk to
|
4182
|
+
# load from
|
4183
|
+
# @param transparency_chunk [ChunkyPNG::Chunk::Transparency, nil] The
|
4184
|
+
# optional transparency chunk.
|
4185
|
+
# @return [ChunkyPNG::Palette] The loaded palette instance.
|
4186
|
+
# @see ChunkyPNG::Palette#can_decode?
|
4187
|
+
#
|
4188
|
+
# source://chunky_png//lib/chunky_png/palette.rb#41
|
4189
|
+
def from_chunks(palette_chunk, transparency_chunk = T.unsafe(nil)); end
|
4190
|
+
|
4191
|
+
# Builds a palette instance from a given set of pixels.
|
4192
|
+
#
|
4193
|
+
# @param pixels [Enumerable<Integer>] An enumeration of pixels to create a
|
4194
|
+
# palette for
|
4195
|
+
# @return [ChunkyPNG::Palette] The palette instance.
|
4196
|
+
#
|
4197
|
+
# source://chunky_png//lib/chunky_png/palette.rb#74
|
4198
|
+
def from_pixels(pixels); end
|
4199
|
+
end
|
4200
|
+
end
|
4201
|
+
|
4202
|
+
# Simple class that represents a point on a canvas using an x and y coordinate.
|
4203
|
+
#
|
4204
|
+
# This class implements some basic methods to handle comparison, the splat operator and
|
4205
|
+
# bounds checking that make it easier to work with coordinates.
|
4206
|
+
#
|
4207
|
+
# @see ChunkyPNG.Point
|
4208
|
+
#
|
4209
|
+
# source://chunky_png//lib/chunky_png/point.rb#73
|
4210
|
+
class ChunkyPNG::Point
|
4211
|
+
# Initializes a new point instance.
|
4212
|
+
#
|
4213
|
+
# @param x [Integer, :to_i] The x-coordinate.
|
4214
|
+
# @param y [Integer, :to_i] The y-coordinate.
|
4215
|
+
# @return [Point] a new instance of Point
|
4216
|
+
#
|
4217
|
+
# source://chunky_png//lib/chunky_png/point.rb#87
|
4218
|
+
def initialize(x, y); end
|
4219
|
+
|
4220
|
+
# Compares 2 points.
|
4221
|
+
#
|
4222
|
+
# It will first compare the y coordinate, and it only takes the x-coordinate into
|
4223
|
+
# account if the y-coordinates of the points are identical. This way, an array of
|
4224
|
+
# points will be sorted into the order in which they would occur in the pixels
|
4225
|
+
# array returned by {ChunkyPNG::Canvas#pixels}.
|
4226
|
+
#
|
4227
|
+
# @param other [ChunkyPNG::Point] The point to compare this point with.
|
4228
|
+
# @return [-1, 0, 1] <tt>-1</tt> If this point comes before the other one, <tt>1</tt>
|
4229
|
+
# if after, and <tt>0</tt> if the points are identical.
|
4230
|
+
#
|
4231
|
+
# source://chunky_png//lib/chunky_png/point.rb#109
|
4232
|
+
def <=>(other); end
|
4233
|
+
|
4234
|
+
# Checks whether 2 points are identical.
|
4235
|
+
#
|
4236
|
+
# @return [true, false] <tt>true</tt> iff the x and y coordinates match
|
4237
|
+
#
|
4238
|
+
# source://chunky_png//lib/chunky_png/point.rb#93
|
4239
|
+
def ==(other); end
|
4240
|
+
|
4241
|
+
# Checks whether 2 points are identical.
|
4242
|
+
#
|
4243
|
+
# @return [true, false] <tt>true</tt> iff the x and y coordinates match
|
4244
|
+
#
|
4245
|
+
# source://chunky_png//lib/chunky_png/point.rb#93
|
4246
|
+
def eql?(other); end
|
4247
|
+
|
4248
|
+
# Converts the point instance to an array.
|
4249
|
+
#
|
4250
|
+
# @return [Array] A 2-element array, i.e. <tt>[x, y]</tt>.
|
4251
|
+
#
|
4252
|
+
# source://chunky_png//lib/chunky_png/point.rb#115
|
4253
|
+
def to_a; end
|
4254
|
+
|
4255
|
+
# Converts the point instance to an array.
|
4256
|
+
#
|
4257
|
+
# @return [Array] A 2-element array, i.e. <tt>[x, y]</tt>.
|
4258
|
+
#
|
4259
|
+
# source://chunky_png//lib/chunky_png/point.rb#115
|
4260
|
+
def to_ary; end
|
4261
|
+
|
4262
|
+
# Checks whether the point falls into a dimension
|
4263
|
+
#
|
4264
|
+
# @param dimension_like [ChunkyPNG::Dimension, ...] The dimension of which the bounds
|
4265
|
+
# should be taken for the check.
|
4266
|
+
# @return [true, false] <tt>true</tt> iff the x and y coordinate fall width the width
|
4267
|
+
# and height of the dimension.
|
4268
|
+
#
|
4269
|
+
# source://chunky_png//lib/chunky_png/point.rb#126
|
4270
|
+
def within_bounds?(*dimension_like); end
|
4271
|
+
|
4272
|
+
# @return [Integer] The x-coordinate of the point.
|
4273
|
+
#
|
4274
|
+
# source://chunky_png//lib/chunky_png/point.rb#79
|
4275
|
+
def x; end
|
4276
|
+
|
4277
|
+
# @return [Integer] The x-coordinate of the point.
|
4278
|
+
#
|
4279
|
+
# source://chunky_png//lib/chunky_png/point.rb#79
|
4280
|
+
def x=(_arg0); end
|
4281
|
+
|
4282
|
+
# @return [Integer] The y-coordinate of the point.
|
4283
|
+
#
|
4284
|
+
# source://chunky_png//lib/chunky_png/point.rb#82
|
4285
|
+
def y; end
|
4286
|
+
|
4287
|
+
# @return [Integer] The y-coordinate of the point.
|
4288
|
+
#
|
4289
|
+
# source://chunky_png//lib/chunky_png/point.rb#82
|
4290
|
+
def y=(_arg0); end
|
4291
|
+
end
|
4292
|
+
|
4293
|
+
# @private
|
4294
|
+
# @return [Regexp] The regexp to parse points from a string.
|
4295
|
+
#
|
4296
|
+
# source://chunky_png//lib/chunky_png/point.rb#76
|
4297
|
+
ChunkyPNG::Point::POINT_REGEXP = T.let(T.unsafe(nil), Regexp)
|
4298
|
+
|
4299
|
+
# Exception that is raised if the PNG signature is not encountered at the
|
4300
|
+
# beginning of the file.
|
4301
|
+
#
|
4302
|
+
# source://chunky_png//lib/chunky_png.rb#119
|
4303
|
+
class ChunkyPNG::SignatureMismatch < ::ChunkyPNG::Exception; end
|
4304
|
+
|
4305
|
+
# Indicates that the PNG chunk content is not compressed
|
4306
|
+
# flag used in iTXt chunk
|
4307
|
+
#
|
4308
|
+
# @private
|
4309
|
+
#
|
4310
|
+
# source://chunky_png//lib/chunky_png.rb#63
|
4311
|
+
ChunkyPNG::UNCOMPRESSED_CONTENT = T.let(T.unsafe(nil), Integer)
|
4312
|
+
|
4313
|
+
# Exception that is raised when requesting the DPI of a PNG that doesn't
|
4314
|
+
# specify the units of its physical pixel dimensions.
|
4315
|
+
#
|
4316
|
+
# source://chunky_png//lib/chunky_png.rb#140
|
4317
|
+
class ChunkyPNG::UnitsUnknown < ::ChunkyPNG::Exception; end
|
4318
|
+
|
4319
|
+
# The current version of ChunkyPNG.
|
4320
|
+
# Set it and commit the change this before running rake release.
|
4321
|
+
#
|
4322
|
+
# source://chunky_png//lib/chunky_png/version.rb#6
|
4323
|
+
ChunkyPNG::VERSION = T.let(T.unsafe(nil), String)
|
4324
|
+
|
4325
|
+
# Class that represents a vector of points, i.e. a list of {ChunkyPNG::Point} instances.
|
4326
|
+
#
|
4327
|
+
# Vectors can be created quite flexibly. See the {ChunkyPNG.Vector} factory methods for
|
4328
|
+
# more information on how to construct vectors.
|
4329
|
+
#
|
4330
|
+
# source://chunky_png//lib/chunky_png/vector.rb#34
|
4331
|
+
class ChunkyPNG::Vector
|
4332
|
+
include ::Enumerable
|
4333
|
+
|
4334
|
+
# Initializes a vector based on a list of Point instances.
|
4335
|
+
#
|
4336
|
+
# You usually do not want to use this method directly, but call {ChunkyPNG.Vector} instead.
|
4337
|
+
#
|
4338
|
+
# @param points [Array<ChunkyPNG::Point>]
|
4339
|
+
# @return [Vector] a new instance of Vector
|
4340
|
+
# @see ChunkyPNG.Vector
|
4341
|
+
#
|
4342
|
+
# source://chunky_png//lib/chunky_png/vector.rb#46
|
4343
|
+
def initialize(points = T.unsafe(nil)); end
|
4344
|
+
|
4345
|
+
# Comparison between two vectors for quality.
|
4346
|
+
#
|
4347
|
+
# @param other [ChunkyPNG::Vector] The vector to compare with.
|
4348
|
+
# @return [true, false] true if the list of points are identical
|
4349
|
+
#
|
4350
|
+
# source://chunky_png//lib/chunky_png/vector.rb#98
|
4351
|
+
def ==(other); end
|
4352
|
+
|
4353
|
+
# Returns the point with the given indexof this vector.
|
4354
|
+
#
|
4355
|
+
# @param index [Integer] The 0-based index of the point in this vector.
|
4356
|
+
# @return [ChunkyPNG::Point] The point instance.
|
4357
|
+
#
|
4358
|
+
# source://chunky_png//lib/chunky_png/vector.rb#69
|
4359
|
+
def [](index); end
|
4360
|
+
|
4361
|
+
# Returns the dimension of the minimal bounding rectangle of the points in this vector.
|
4362
|
+
#
|
4363
|
+
# @return [ChunkyPNG::Dimension] The dimension instance with the width and height
|
4364
|
+
#
|
4365
|
+
# source://chunky_png//lib/chunky_png/vector.rb#162
|
4366
|
+
def dimension; end
|
4367
|
+
|
4368
|
+
# Iterates over all the points in this vector
|
4369
|
+
#
|
4370
|
+
# @return [void]
|
4371
|
+
# @yield [ChunkyPNG::Point] The points in the correct order.
|
4372
|
+
#
|
4373
|
+
# source://chunky_png//lib/chunky_png/vector.rb#91
|
4374
|
+
def each(&block); end
|
4375
|
+
|
4376
|
+
# Iterates over all the edges in this vector.
|
4377
|
+
#
|
4378
|
+
# An edge is a combination of two subsequent points in the vector. Together, they will form
|
4379
|
+
# a path from the first point to the last point
|
4380
|
+
#
|
4381
|
+
# @param close [true, false] Whether to close the path, i.e. return an edge that connects the last
|
4382
|
+
# point in the vector back to the first point.
|
4383
|
+
# @raise [ChunkyPNG::ExpectationFailed] if the vector contains less than two points.
|
4384
|
+
# @return [void]
|
4385
|
+
# @see #edges
|
4386
|
+
# @yield [points.last, points.first]
|
4387
|
+
#
|
4388
|
+
# source://chunky_png//lib/chunky_png/vector.rb#60
|
4389
|
+
def each_edge(close = T.unsafe(nil)); end
|
4390
|
+
|
4391
|
+
# Returns an enumerator that will iterate over all the edges in this vector.
|
4392
|
+
#
|
4393
|
+
# @param close [true, false] Whether to close the path, i.e. return an edge that connects the last
|
4394
|
+
# point in the vector back to the first point.
|
4395
|
+
# @raise [ChunkyPNG::ExpectationFailed] if the vector contains less than two points.
|
4396
|
+
# @return [Enumerator] The enumerator that iterates over the edges.
|
4397
|
+
# @see #each_edge
|
4398
|
+
#
|
4399
|
+
# source://chunky_png//lib/chunky_png/vector.rb#78
|
4400
|
+
def edges(close = T.unsafe(nil)); end
|
4401
|
+
|
4402
|
+
# Comparison between two vectors for quality.
|
4403
|
+
#
|
4404
|
+
# @param other [ChunkyPNG::Vector] The vector to compare with.
|
4405
|
+
# @return [true, false] true if the list of points are identical
|
4406
|
+
#
|
4407
|
+
# source://chunky_png//lib/chunky_png/vector.rb#98
|
4408
|
+
def eql?(other); end
|
4409
|
+
|
4410
|
+
# Returns the height of the minimal bounding box of all the points in this vector.
|
4411
|
+
#
|
4412
|
+
# @return [Integer] The y-distance between the points that are farthest from each other.
|
4413
|
+
#
|
4414
|
+
# source://chunky_png//lib/chunky_png/vector.rb#156
|
4415
|
+
def height; end
|
4416
|
+
|
4417
|
+
# Returns the number of points in this vector.
|
4418
|
+
#
|
4419
|
+
# @return [Integer] The length of the points array.
|
4420
|
+
#
|
4421
|
+
# source://chunky_png//lib/chunky_png/vector.rb#84
|
4422
|
+
def length; end
|
4423
|
+
|
4424
|
+
# Finds the highest x-coordinate in this vector.
|
4425
|
+
#
|
4426
|
+
# @return [Integer] The highest x-coordinate of all the points in the vector.
|
4427
|
+
#
|
4428
|
+
# source://chunky_png//lib/chunky_png/vector.rb#124
|
4429
|
+
def max_x; end
|
4430
|
+
|
4431
|
+
# Finds the highest y-coordinate in this vector.
|
4432
|
+
#
|
4433
|
+
# @return [Integer] The highest y-coordinate of all the points in the vector.
|
4434
|
+
#
|
4435
|
+
# source://chunky_png//lib/chunky_png/vector.rb#136
|
4436
|
+
def max_y; end
|
4437
|
+
|
4438
|
+
# Finds the lowest x-coordinate in this vector.
|
4439
|
+
#
|
4440
|
+
# @return [Integer] The lowest x-coordinate of all the points in the vector.
|
4441
|
+
#
|
4442
|
+
# source://chunky_png//lib/chunky_png/vector.rb#118
|
4443
|
+
def min_x; end
|
4444
|
+
|
4445
|
+
# Finds the lowest y-coordinate in this vector.
|
4446
|
+
#
|
4447
|
+
# @return [Integer] The lowest y-coordinate of all the points in the vector.
|
4448
|
+
#
|
4449
|
+
# source://chunky_png//lib/chunky_png/vector.rb#130
|
4450
|
+
def min_y; end
|
4451
|
+
|
4452
|
+
# Returns the offset from (0,0) of the minimal bounding box of all the
|
4453
|
+
# points in this vector
|
4454
|
+
#
|
4455
|
+
# @return [ChunkyPNG::Point] A point that describes the top left corner if a
|
4456
|
+
# minimal bounding box would be drawn around all the points in the vector.
|
4457
|
+
#
|
4458
|
+
# source://chunky_png//lib/chunky_png/vector.rb#144
|
4459
|
+
def offset; end
|
4460
|
+
|
4461
|
+
# @return [Array<ChunkyPNG::Point>] The array that holds all the points in this vector.
|
4462
|
+
#
|
4463
|
+
# source://chunky_png//lib/chunky_png/vector.rb#38
|
4464
|
+
def points; end
|
4465
|
+
|
4466
|
+
# Returns the width of the minimal bounding box of all the points in this vector.
|
4467
|
+
#
|
4468
|
+
# @return [Integer] The x-distance between the points that are farthest from each other.
|
4469
|
+
#
|
4470
|
+
# source://chunky_png//lib/chunky_png/vector.rb#150
|
4471
|
+
def width; end
|
4472
|
+
|
4473
|
+
# Returns the range in x-coordinates for all the points in this vector.
|
4474
|
+
#
|
4475
|
+
# @return [Range] The (inclusive) range of x-coordinates.
|
4476
|
+
#
|
4477
|
+
# source://chunky_png//lib/chunky_png/vector.rb#106
|
4478
|
+
def x_range; end
|
4479
|
+
|
4480
|
+
# Returns the range in y-coordinates for all the points in this vector.
|
4481
|
+
#
|
4482
|
+
# @return [Range] The (inclusive) range of y-coordinates.
|
4483
|
+
#
|
4484
|
+
# source://chunky_png//lib/chunky_png/vector.rb#112
|
4485
|
+
def y_range; end
|
4486
|
+
|
4487
|
+
class << self
|
4488
|
+
# @return [Array<ChunkyPNG::Point>] The list of points interpreted from the input array.
|
4489
|
+
#
|
4490
|
+
# source://chunky_png//lib/chunky_png/vector.rb#167
|
4491
|
+
def multiple_from_array(source); end
|
4492
|
+
|
4493
|
+
# @return [Array<ChunkyPNG::Point>] The list of points parsed from the string.
|
4494
|
+
#
|
4495
|
+
# source://chunky_png//lib/chunky_png/vector.rb#181
|
4496
|
+
def multiple_from_string(source_str); end
|
4497
|
+
end
|
4498
|
+
end
|