rmagick 2.8.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rmagick might be problematic. Click here for more details.
- data/ChangeLog +10 -2
- data/README.html +7 -7
- data/doc/comtasks.html +2 -2
- data/doc/constants.html +5 -5
- data/doc/draw.html +131 -20
- data/doc/ex/InitialCoords.rb +1 -1
- data/doc/ex/NewCoordSys.rb +2 -2
- data/doc/ex/OrigCoordSys.rb +1 -1
- data/doc/ex/RotateScale.rb +2 -2
- data/doc/ex/Skew.rb +2 -2
- data/doc/ex/ViewBox.rb +1 -1
- data/doc/ex/arc.rb +4 -2
- data/doc/ex/arcs02.rb +1 -1
- data/doc/ex/bounding_box.rb +3 -0
- data/doc/ex/cbezier1.rb +2 -0
- data/doc/ex/cbezier2.rb +2 -0
- data/doc/ex/cbezier3.rb +2 -0
- data/doc/ex/cbezier4.rb +2 -0
- data/doc/ex/cbezier5.rb +2 -0
- data/doc/ex/cbezier6.rb +2 -0
- data/doc/ex/channel.rb +1 -0
- data/doc/ex/circle.rb +2 -0
- data/doc/ex/cubic01.rb +1 -1
- data/doc/ex/cubic02.rb +1 -1
- data/doc/ex/ellipse.rb +2 -0
- data/doc/ex/font_styles.rb +12 -10
- data/doc/ex/get_type_metrics.rb +2 -0
- data/doc/ex/grav.rb +2 -0
- data/doc/ex/image.rb +1 -1
- data/doc/ex/line.rb +2 -0
- data/doc/ex/opacity.rb +6 -4
- data/doc/ex/path.rb +2 -0
- data/doc/ex/polaroid.rb +2 -0
- data/doc/ex/qbezierpath.rb +3 -0
- data/doc/ex/rectangle.rb +2 -0
- data/doc/ex/rotate.rb +2 -0
- data/doc/ex/roundrect.rb +2 -0
- data/doc/ex/skewx.rb +2 -0
- data/doc/ex/skewy.rb +2 -0
- data/doc/ex/stroke_dasharray.rb +2 -0
- data/doc/ex/stroke_width.rb +2 -0
- data/doc/ex/text.rb +3 -2
- data/doc/ex/text01.rb +1 -1
- data/doc/ex/text_styles.rb +1 -1
- data/doc/ex/text_undercolor.rb +2 -0
- data/doc/ex/translate.rb +3 -1
- data/doc/ilist.html +2 -2
- data/doc/image1.html +2 -2
- data/doc/image2.html +2 -2
- data/doc/image3.html +37 -6
- data/doc/imageattrs.html +2 -2
- data/doc/imusage.html +3 -3
- data/doc/index.html +3 -3
- data/doc/info.html +2 -2
- data/doc/magick.html +2 -2
- data/doc/optequiv.html +24 -2
- data/doc/rvg.html +2 -2
- data/doc/rvgclip.html +2 -2
- data/doc/rvggroup.html +2 -2
- data/doc/rvgimage.html +2 -2
- data/doc/rvgpattern.html +2 -2
- data/doc/rvgshape.html +2 -2
- data/doc/rvgstyle.html +2 -2
- data/doc/rvgtext.html +2 -2
- data/doc/rvgtspan.html +2 -2
- data/doc/rvgtut.html +2 -2
- data/doc/rvguse.html +2 -2
- data/doc/rvgxform.html +2 -2
- data/doc/struct.html +2 -2
- data/doc/usage.html +6 -4
- data/ext/RMagick/MANIFEST +6 -1
- data/ext/RMagick/extconf.rb +18 -2
- data/ext/RMagick/rmagick.c +312 -0
- data/ext/RMagick/rmagick.h +137 -61
- data/ext/RMagick/rmdraw.c +271 -377
- data/ext/RMagick/rmenum.c +1016 -0
- data/ext/RMagick/rmimage.c +172 -16
- data/ext/RMagick/rminfo.c +5 -5
- data/ext/RMagick/rmmain.c +50 -303
- data/ext/RMagick/rmmontage.c +386 -0
- data/ext/RMagick/rmpixel.c +816 -0
- data/ext/RMagick/rmstruct.c +887 -0
- data/ext/RMagick/rmutil.c +25 -2634
- data/lib/RMagick.rb +46 -2
- data/lib/rvg/misc.rb +5 -4
- data/lib/rvg/stylable.rb +7 -1
- data/rmagick.gemspec +1 -1
- metadata +7 -2
data/ext/RMagick/extconf.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "mkmf"
|
2
2
|
require "date"
|
3
3
|
|
4
|
-
RMAGICK_VERS = "2.
|
4
|
+
RMAGICK_VERS = "2.9.0"
|
5
5
|
MIN_RUBY_VERS = "1.8.2"
|
6
6
|
MIN_RUBY_VERS_NO = MIN_RUBY_VERS.tr(".","").to_i
|
7
7
|
MIN_IM_VERS = "6.3.0"
|
@@ -287,6 +287,8 @@ end
|
|
287
287
|
have_struct_member("ImageInfo", "profile", headers) # 6.3.2
|
288
288
|
have_struct_member("Image", "tile_offset", headers) # 6.3.4
|
289
289
|
have_struct_member("Image", "type", headers) # ???
|
290
|
+
have_struct_member("DrawInfo", "kerning", headers) # 6.4.7-8
|
291
|
+
have_struct_member("DrawInfo", "interword_spacing", headers) # 6.4.8-0
|
290
292
|
have_type("AlphaChannelType", headers) # 6.3.5
|
291
293
|
have_type("DitherMethod", headers) # 6.4.2
|
292
294
|
have_type("ImageLayerMethod", headers) # 6.3.6 replaces MagickLayerMethod
|
@@ -328,7 +330,21 @@ have_enum_value("InterpolatePixelMethod", "SplineInterpolatePixel", headers) # 6
|
|
328
330
|
have_enum_values("InterlaceType", ["GIFInterlace", # 6.3.4
|
329
331
|
"JPEGInterlace", # 6.3.4
|
330
332
|
"PNGInterlace"], headers) # 6.3.4
|
331
|
-
|
333
|
+
have_enum_values("MagickEvaluateOperator", ["PowEvaluateOperator", # 6.4.1-9
|
334
|
+
"LogEvaluateOperator", # 6.4.2
|
335
|
+
"ThresholdEvaluateOperator", # 6.4.3
|
336
|
+
"ThresholdBlackEvaluateOperator", # 6.4.3
|
337
|
+
"ThresholdWhiteEvaluateOperator", # 6.4.3
|
338
|
+
"GaussianNoiseEvaluateOperator", # 6.4.3
|
339
|
+
"ImpulseNoiseEvaluateOperator", # 6.4.3
|
340
|
+
"LaplacianNoiseEvaluateOperator", # 6.4.3
|
341
|
+
"MultiplicativeNoiseEvaluateOperator", # 6.4.3
|
342
|
+
"PoissonNoiseEvaluateOperator", # 6.4.3
|
343
|
+
"UniformNoiseEvaluateOperator", # 6.4.3
|
344
|
+
"CosineEvaluateOperator", # 6.4.8-5
|
345
|
+
"SineEvaluateOperator", # 6.4.8-5
|
346
|
+
"AddModulusEvaluateOperator"], # 6.4.8-5
|
347
|
+
headers)
|
332
348
|
have_enum_values("MagickLayerMethod", ["OptimizeTransLayer", # 6.3.3-4
|
333
349
|
"RemoveDupsLayer", # 6.3.3-6
|
334
350
|
"RemoveZeroLayer", # 6.3.3-6
|
@@ -0,0 +1,312 @@
|
|
1
|
+
/* $Id: rmagick.c,v 1.2 2008/12/27 17:16:03 rmagick Exp $ */
|
2
|
+
/*============================================================================\
|
3
|
+
| Copyright (C) 2008 by Timothy P. Hunter
|
4
|
+
| Name: rmagick.c
|
5
|
+
| Author: Tim Hunter
|
6
|
+
| Purpose: Contains Magick module methods.
|
7
|
+
\============================================================================*/
|
8
|
+
|
9
|
+
|
10
|
+
#include "rmagick.h"
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
/*
|
16
|
+
Method: Magick::colors [ { |colorinfo| } ]
|
17
|
+
Purpose: If called with the optional block, iterates over the colors,
|
18
|
+
otherwise returns an array of Magick::Color objects
|
19
|
+
Notes: There are 3 implementations
|
20
|
+
|
21
|
+
*/
|
22
|
+
VALUE
|
23
|
+
Magick_colors(VALUE class)
|
24
|
+
{
|
25
|
+
const ColorInfo **color_info_list;
|
26
|
+
unsigned long number_colors, x;
|
27
|
+
volatile VALUE ary;
|
28
|
+
ExceptionInfo exception;
|
29
|
+
|
30
|
+
GetExceptionInfo(&exception);
|
31
|
+
|
32
|
+
color_info_list = GetColorInfoList("*", &number_colors, &exception);
|
33
|
+
CHECK_EXCEPTION()
|
34
|
+
(void) DestroyExceptionInfo(&exception);
|
35
|
+
|
36
|
+
|
37
|
+
if (rb_block_given_p())
|
38
|
+
{
|
39
|
+
for (x = 0; x < number_colors; x++)
|
40
|
+
{
|
41
|
+
(void) rb_yield(Import_ColorInfo(color_info_list[x]));
|
42
|
+
}
|
43
|
+
magick_free((void *)color_info_list);
|
44
|
+
return class;
|
45
|
+
}
|
46
|
+
else
|
47
|
+
{
|
48
|
+
ary = rb_ary_new2((long) number_colors);
|
49
|
+
for (x = 0; x < number_colors; x++)
|
50
|
+
{
|
51
|
+
(void) rb_ary_push(ary, Import_ColorInfo(color_info_list[x]));
|
52
|
+
}
|
53
|
+
|
54
|
+
magick_free((void *)color_info_list);
|
55
|
+
return ary;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
|
60
|
+
/*
|
61
|
+
Method: Magick::fonts [ { |fontinfo| } ]
|
62
|
+
Purpose: If called with the optional block, iterates over the fonts,
|
63
|
+
otherwise returns an array of Magick::Font objects
|
64
|
+
*/
|
65
|
+
VALUE
|
66
|
+
Magick_fonts(VALUE class)
|
67
|
+
{
|
68
|
+
const TypeInfo **type_info;
|
69
|
+
unsigned long number_types, x;
|
70
|
+
volatile VALUE ary;
|
71
|
+
ExceptionInfo exception;
|
72
|
+
|
73
|
+
GetExceptionInfo(&exception);
|
74
|
+
type_info = GetTypeInfoList("*", &number_types, &exception);
|
75
|
+
CHECK_EXCEPTION()
|
76
|
+
(void) DestroyExceptionInfo(&exception);
|
77
|
+
|
78
|
+
if (rb_block_given_p())
|
79
|
+
{
|
80
|
+
for (x = 0; x < number_types; x++)
|
81
|
+
{
|
82
|
+
(void) rb_yield(Import_TypeInfo((const TypeInfo *)type_info[x]));
|
83
|
+
}
|
84
|
+
magick_free((void *)type_info);
|
85
|
+
return class;
|
86
|
+
}
|
87
|
+
else
|
88
|
+
{
|
89
|
+
ary = rb_ary_new2((long)number_types);
|
90
|
+
for (x = 0; x < number_types; x++)
|
91
|
+
{
|
92
|
+
(void) rb_ary_push(ary, Import_TypeInfo((const TypeInfo *)type_info[x]));
|
93
|
+
}
|
94
|
+
magick_free((void *)type_info);
|
95
|
+
return ary;
|
96
|
+
}
|
97
|
+
|
98
|
+
}
|
99
|
+
|
100
|
+
|
101
|
+
/*
|
102
|
+
Method: Magick.init_formats
|
103
|
+
Purpose: Build the @@formats hash
|
104
|
+
|
105
|
+
The hash keys are image formats. The hash values
|
106
|
+
specify the format "mode string", i.e. a description of what
|
107
|
+
ImageMagick can do with that format. The mode string is in the
|
108
|
+
form "BRWA", where
|
109
|
+
"B" is "*" if the format has native blob support, or " " otherwise.
|
110
|
+
"R" is "r" if ImageMagick can read that format, or "-" otherwise.
|
111
|
+
"W" is "w" if ImageMagick can write that format, or "-" otherwise.
|
112
|
+
"A" is "+" if the format supports multi-image files, or "-" otherwise.
|
113
|
+
Notes: Only called once.
|
114
|
+
There are 3 implementations.
|
115
|
+
*/
|
116
|
+
|
117
|
+
static VALUE
|
118
|
+
MagickInfo_to_format(const MagickInfo *magick_info)
|
119
|
+
{
|
120
|
+
char mode[4];
|
121
|
+
|
122
|
+
mode[0] = magick_info->blob_support ? '*': ' ';
|
123
|
+
mode[1] = magick_info->decoder ? 'r' : '-';
|
124
|
+
mode[2] = magick_info->encoder ? 'w' : '-';
|
125
|
+
mode[3] = magick_info->encoder && magick_info->adjoin ? '+' : '-';
|
126
|
+
|
127
|
+
return rb_str_new(mode, sizeof(mode));
|
128
|
+
}
|
129
|
+
|
130
|
+
|
131
|
+
VALUE
|
132
|
+
Magick_init_formats(VALUE class)
|
133
|
+
{
|
134
|
+
const MagickInfo **magick_info;
|
135
|
+
unsigned long number_formats, x;
|
136
|
+
volatile VALUE formats;
|
137
|
+
ExceptionInfo exception;
|
138
|
+
|
139
|
+
class = class; // defeat "never referenced" message from icc
|
140
|
+
formats = rb_hash_new();
|
141
|
+
|
142
|
+
// IM 6.1.3 added an exception argument to GetMagickInfoList
|
143
|
+
GetExceptionInfo(&exception);
|
144
|
+
magick_info = GetMagickInfoList("*", &number_formats, &exception);
|
145
|
+
CHECK_EXCEPTION()
|
146
|
+
(void) DestroyExceptionInfo(&exception);
|
147
|
+
|
148
|
+
|
149
|
+
for (x = 0; x < number_formats; x++)
|
150
|
+
{
|
151
|
+
(void) rb_hash_aset(formats
|
152
|
+
, rb_str_new2(magick_info[x]->name)
|
153
|
+
, MagickInfo_to_format((const MagickInfo *)magick_info[x]));
|
154
|
+
}
|
155
|
+
return formats;
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
/*
|
160
|
+
Method: Magick.limit_resource(resource[, limit])
|
161
|
+
Purpose: Get/set resource limits. If a limit is specified the old limit
|
162
|
+
is set to the new value. Either way the current/old limit is returned.
|
163
|
+
*/
|
164
|
+
VALUE
|
165
|
+
Magick_limit_resource(int argc, VALUE *argv, VALUE class)
|
166
|
+
{
|
167
|
+
volatile VALUE resource, limit;
|
168
|
+
ResourceType res = UndefinedResource;
|
169
|
+
char *str;
|
170
|
+
ID id;
|
171
|
+
unsigned long cur_limit;
|
172
|
+
|
173
|
+
rb_scan_args(argc, argv, "11", &resource, &limit);
|
174
|
+
|
175
|
+
switch (TYPE(resource))
|
176
|
+
{
|
177
|
+
case T_NIL:
|
178
|
+
return class;
|
179
|
+
|
180
|
+
case T_SYMBOL:
|
181
|
+
id = (ID)SYM2ID(resource);
|
182
|
+
if (id == rb_intern("area"))
|
183
|
+
{
|
184
|
+
res = AreaResource;
|
185
|
+
}
|
186
|
+
else if (id == rb_intern("memory"))
|
187
|
+
{
|
188
|
+
res = MemoryResource;
|
189
|
+
}
|
190
|
+
else if (id == rb_intern("map"))
|
191
|
+
{
|
192
|
+
res = MapResource;
|
193
|
+
}
|
194
|
+
else if (id == rb_intern("disk"))
|
195
|
+
{
|
196
|
+
res = DiskResource;
|
197
|
+
}
|
198
|
+
else if (id == rb_intern("file"))
|
199
|
+
{
|
200
|
+
res = FileResource;
|
201
|
+
}
|
202
|
+
else
|
203
|
+
{
|
204
|
+
rb_raise(rb_eArgError, "unknown resource: `:%s'", rb_id2name(id));
|
205
|
+
}
|
206
|
+
break;
|
207
|
+
|
208
|
+
default:
|
209
|
+
str = StringValuePtr(resource);
|
210
|
+
if (*str == '\0')
|
211
|
+
{
|
212
|
+
return class;
|
213
|
+
}
|
214
|
+
else if (rm_strcasecmp("area", str) == 0)
|
215
|
+
{
|
216
|
+
res = AreaResource;
|
217
|
+
}
|
218
|
+
else if (rm_strcasecmp("memory", str) == 0)
|
219
|
+
{
|
220
|
+
res = MemoryResource;
|
221
|
+
}
|
222
|
+
else if (rm_strcasecmp("map", str) == 0)
|
223
|
+
{
|
224
|
+
res = MapResource;
|
225
|
+
}
|
226
|
+
else if (rm_strcasecmp("disk", str) == 0)
|
227
|
+
{
|
228
|
+
res = DiskResource;
|
229
|
+
}
|
230
|
+
else if (rm_strcasecmp("file", str) == 0)
|
231
|
+
{
|
232
|
+
res = FileResource;
|
233
|
+
}
|
234
|
+
else
|
235
|
+
{
|
236
|
+
rb_raise(rb_eArgError, "unknown resource: `%s'", str);
|
237
|
+
}
|
238
|
+
break;
|
239
|
+
}
|
240
|
+
|
241
|
+
cur_limit = GetMagickResourceLimit(res);
|
242
|
+
|
243
|
+
if (argc > 1)
|
244
|
+
{
|
245
|
+
(void) SetMagickResourceLimit(res, (MagickSizeType)NUM2ULONG(limit));
|
246
|
+
}
|
247
|
+
|
248
|
+
return ULONG2NUM(cur_limit);
|
249
|
+
}
|
250
|
+
|
251
|
+
|
252
|
+
/*
|
253
|
+
Method Magick.set_cache_threshold(megabytes)
|
254
|
+
Purpose: sets the amount of free memory allocated for the
|
255
|
+
pixel cache. Once this threshold is exceeded, all
|
256
|
+
subsequent pixels cache operations are to/from disk.
|
257
|
+
Notes: singleton method
|
258
|
+
*/
|
259
|
+
VALUE
|
260
|
+
Magick_set_cache_threshold(VALUE class, VALUE threshold)
|
261
|
+
{
|
262
|
+
unsigned long thrshld = NUM2ULONG(threshold);
|
263
|
+
(void) SetMagickResourceLimit(MemoryResource, (MagickSizeType)thrshld);
|
264
|
+
(void) SetMagickResourceLimit(MapResource, (MagickSizeType)(2*thrshld));
|
265
|
+
return class;
|
266
|
+
}
|
267
|
+
|
268
|
+
|
269
|
+
/*
|
270
|
+
Method: Magick.set_log_event_mask(event,...) -> Magick
|
271
|
+
Notes: "event" is one of "all", "annotate", "blob", "cache",
|
272
|
+
"coder", "configure", "deprecate", "locale", "none",
|
273
|
+
"render", "transform", "user", "x11". Multiple events
|
274
|
+
can be specified. Event names may be capitalized.
|
275
|
+
*/
|
276
|
+
VALUE
|
277
|
+
Magick_set_log_event_mask(int argc, VALUE *argv, VALUE class)
|
278
|
+
{
|
279
|
+
int x;
|
280
|
+
|
281
|
+
if (argc == 0)
|
282
|
+
{
|
283
|
+
rb_raise(rb_eArgError, "wrong number of arguments (at least 1 required)");
|
284
|
+
}
|
285
|
+
for (x = 0; x < argc; x++)
|
286
|
+
{
|
287
|
+
(void) SetLogEventMask(StringValuePtr(argv[x]));
|
288
|
+
}
|
289
|
+
return class;
|
290
|
+
}
|
291
|
+
|
292
|
+
/*
|
293
|
+
Method: Magick.set_log_format(format) -> Magick
|
294
|
+
Notes: Format is a string containing one or more of:
|
295
|
+
%t - current time
|
296
|
+
%r - elapsed time
|
297
|
+
%u - user time
|
298
|
+
%p - pid
|
299
|
+
%m - module (source file name)
|
300
|
+
%f - function name
|
301
|
+
%l - line number
|
302
|
+
%d - event domain (one of the events listed above)
|
303
|
+
%e - event name
|
304
|
+
Plus other characters, including \n, etc.
|
305
|
+
*/
|
306
|
+
VALUE
|
307
|
+
Magick_set_log_format(VALUE class, VALUE format)
|
308
|
+
{
|
309
|
+
SetLogFormat(StringValuePtr(format));
|
310
|
+
return class;
|
311
|
+
}
|
312
|
+
|
data/ext/RMagick/rmagick.h
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* $Id: rmagick.h,v 1.
|
1
|
+
/* $Id: rmagick.h,v 1.268 2009/01/12 23:08:35 rmagick Exp $ */
|
2
2
|
/*=============================================================================
|
3
3
|
| Copyright (C) 2008 by Timothy P. Hunter
|
4
4
|
| Name: rmagick.h
|
@@ -109,7 +109,7 @@
|
|
109
109
|
#define OpenFile rb_io_t
|
110
110
|
#endif
|
111
111
|
|
112
|
-
// These macros are
|
112
|
+
// These macros are required in 1.9.1 but aren't defined prior to 1.8.6.
|
113
113
|
#if !defined(RSTRING_LEN)
|
114
114
|
#define RSTRING_LEN(s) (RSTRING((s))->len)
|
115
115
|
#endif
|
@@ -126,6 +126,20 @@
|
|
126
126
|
#define RARRAY_PTR(a) RARRAY((a))->ptr
|
127
127
|
#endif
|
128
128
|
|
129
|
+
|
130
|
+
// Convert a C string to a Ruby symbol. Used in marshal_dump/marshal_load methods
|
131
|
+
#define CSTR2SYM(s) ID2SYM(rb_intern(s))
|
132
|
+
// Convert a C string to a Ruby String, or nil if the ptr is NULL
|
133
|
+
#define MAGICK_STRING_TO_OBJ(f) (f) ? rb_str_new2(f) : Qnil
|
134
|
+
// Copy the C string in a Ruby String object to ImageMagick memory, or set
|
135
|
+
// the pointer to NULL if the object is nil.
|
136
|
+
#define OBJ_TO_MAGICK_STRING(f, obj) \
|
137
|
+
if ((obj) != Qnil)\
|
138
|
+
magick_clone_string(&f, RSTRING_PTR(obj));\
|
139
|
+
else\
|
140
|
+
f = NULL;
|
141
|
+
|
142
|
+
|
129
143
|
// These two functions are defined in IM starting with 6.3.2.
|
130
144
|
#if !defined(HAVE_GETSTRINGINFODATUM)
|
131
145
|
#define GetStringInfoDatum(p) (unsigned char *)((p)->datum)
|
@@ -247,6 +261,45 @@ typedef enum _QuantumExpressionOperator
|
|
247
261
|
#if defined(HAVE_ENUM_POWEVALUATEOPERATOR)
|
248
262
|
PowQuantumOperator,
|
249
263
|
#endif
|
264
|
+
#if defined(HAVE_ENUM_LOGEVALUATEOPERATOR)
|
265
|
+
LogQuantumOperator,
|
266
|
+
#endif
|
267
|
+
#if defined(HAVE_ENUM_THRESHOLDEVALUATEOPERATOR)
|
268
|
+
ThresholdQuantumOperator,
|
269
|
+
#endif
|
270
|
+
#if defined(HAVE_ENUM_THRESHOLDBLACKEVALUATEOPERATOR)
|
271
|
+
ThresholdBlackQuantumOperator,
|
272
|
+
#endif
|
273
|
+
#if defined(HAVE_ENUM_THRESHOLDWHITEEVALUATEOPERATOR)
|
274
|
+
ThresholdWhiteQuantumOperator,
|
275
|
+
#endif
|
276
|
+
#if defined(HAVE_ENUM_GAUSSIANNOISEEVALUATEOPERATOR)
|
277
|
+
GaussianNoiseQuantumOperator,
|
278
|
+
#endif
|
279
|
+
#if defined(HAVE_ENUM_IMPULSENOISEEVALUATEOPERATOR)
|
280
|
+
ImpulseNoiseQuantumOperator,
|
281
|
+
#endif
|
282
|
+
#if defined(HAVE_ENUM_LAPLACIANNOISEEVALUATEOPERATOR)
|
283
|
+
LaplacianNoiseQuantumOperator,
|
284
|
+
#endif
|
285
|
+
#if defined(HAVE_ENUM_MULTIPLICATIVENOISEEVALUATEOPERATOR)
|
286
|
+
MultiplicativeNoiseQuantumOperator,
|
287
|
+
#endif
|
288
|
+
#if defined(HAVE_ENUM_POISSONNOISEEVALUATEOPERATOR)
|
289
|
+
PoissonNoiseQuantumOperator,
|
290
|
+
#endif
|
291
|
+
#if defined(HAVE_ENUM_UNIFORMNOISEEVALUATEOPERATOR)
|
292
|
+
UniformNoiseQuantumOperator,
|
293
|
+
#endif
|
294
|
+
#if defined(HAVE_ENUM_COSINEEVALUATEOPERATOR)
|
295
|
+
CosineQuantumOperator,
|
296
|
+
#endif
|
297
|
+
#if defined(HAVE_ENUM_SINEEVALUATEOPERATOR)
|
298
|
+
SineQuantumOperator,
|
299
|
+
#endif
|
300
|
+
#if defined(HAVE_ENUM_ADDMODULUSEVALUATEOPERATOR)
|
301
|
+
AddModulusQuantumOperator
|
302
|
+
#endif
|
250
303
|
} QuantumExpressionOperator ;
|
251
304
|
|
252
305
|
|
@@ -561,10 +614,16 @@ Pixel_##_cmyk_channel_(VALUE self) \
|
|
561
614
|
|
562
615
|
// rmmain.c
|
563
616
|
extern void Init_RMagick2(void);
|
617
|
+
|
618
|
+
|
619
|
+
// rmagick.c
|
564
620
|
extern VALUE Magick_colors(VALUE);
|
565
621
|
extern VALUE Magick_fonts(VALUE);
|
566
622
|
extern VALUE Magick_init_formats(VALUE);
|
567
|
-
|
623
|
+
extern VALUE Magick_limit_resource(int, VALUE *, VALUE);
|
624
|
+
extern VALUE Magick_set_cache_threshold(VALUE, VALUE);
|
625
|
+
extern VALUE Magick_set_log_event_mask(int, VALUE *, VALUE);
|
626
|
+
extern VALUE Magick_set_log_format(VALUE, VALUE);
|
568
627
|
|
569
628
|
// rmdraw.c
|
570
629
|
ATTR_WRITER(Draw, affine)
|
@@ -581,6 +640,8 @@ ATTR_WRITER(Draw, font_stretch)
|
|
581
640
|
ATTR_WRITER(Draw, font_style)
|
582
641
|
ATTR_WRITER(Draw, font_weight)
|
583
642
|
ATTR_WRITER(Draw, gravity)
|
643
|
+
ATTR_WRITER(Draw, interword_spacing)
|
644
|
+
ATTR_WRITER(Draw, kerning)
|
584
645
|
ATTR_WRITER(Draw, pointsize)
|
585
646
|
ATTR_WRITER(Draw, rotation)
|
586
647
|
ATTR_WRITER(Draw, stroke)
|
@@ -589,6 +650,7 @@ ATTR_WRITER(Draw, stroke_width)
|
|
589
650
|
ATTR_WRITER(Draw, text_antialias)
|
590
651
|
ATTR_WRITER(Draw, tile)
|
591
652
|
ATTR_WRITER(Draw, undercolor)
|
653
|
+
extern VALUE Draw_alloc(VALUE);
|
592
654
|
extern VALUE Draw_annotate(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
|
593
655
|
extern VALUE Draw_clone(VALUE);
|
594
656
|
extern VALUE Draw_composite(int, VALUE *, VALUE);
|
@@ -599,12 +661,21 @@ extern VALUE Draw_get_type_metrics(int, VALUE *, VALUE);
|
|
599
661
|
extern VALUE Draw_init_copy(VALUE, VALUE);
|
600
662
|
extern VALUE Draw_initialize(VALUE);
|
601
663
|
extern VALUE Draw_inspect(VALUE);
|
602
|
-
extern VALUE
|
603
|
-
extern VALUE
|
664
|
+
extern VALUE Draw_marshal_dump(VALUE);
|
665
|
+
extern VALUE Draw_marshal_load(VALUE, VALUE);
|
604
666
|
extern VALUE Draw_primitive(VALUE, VALUE);
|
667
|
+
extern VALUE DrawOptions_alloc(VALUE);
|
605
668
|
extern VALUE DrawOptions_initialize(VALUE);
|
606
669
|
|
607
670
|
|
671
|
+
extern VALUE PolaroidOptions_alloc(VALUE);
|
672
|
+
extern VALUE PolaroidOptions_initialize(VALUE);
|
673
|
+
extern VALUE rm_polaroid_new(void);
|
674
|
+
ATTR_WRITER(PolaroidOptions, shadow_color);
|
675
|
+
ATTR_WRITER(PolaroidOptions, border_color);
|
676
|
+
|
677
|
+
|
678
|
+
// rmmontage.c
|
608
679
|
ATTR_WRITER(Montage, background_color)
|
609
680
|
ATTR_WRITER(Montage, border_color)
|
610
681
|
ATTR_WRITER(Montage, border_width)
|
@@ -627,14 +698,7 @@ extern VALUE Montage_alloc(VALUE);
|
|
627
698
|
extern VALUE rm_montage_new(void);
|
628
699
|
|
629
700
|
|
630
|
-
|
631
|
-
extern VALUE PolaroidOptions_initialize(VALUE);
|
632
|
-
extern VALUE rm_polaroid_new(void);
|
633
|
-
ATTR_WRITER(PolaroidOptions, shadow_color);
|
634
|
-
ATTR_WRITER(PolaroidOptions, border_color);
|
635
|
-
|
636
|
-
|
637
|
-
// rmilist.c
|
701
|
+
// rmilist.c
|
638
702
|
extern VALUE ImageList_animate(int, VALUE *, VALUE);
|
639
703
|
extern VALUE ImageList_append(VALUE, VALUE);
|
640
704
|
extern VALUE ImageList_average(VALUE);
|
@@ -914,6 +978,8 @@ extern VALUE Image__load(VALUE, VALUE);
|
|
914
978
|
extern VALUE Image_magnify(VALUE);
|
915
979
|
extern VALUE Image_magnify_bang(VALUE);
|
916
980
|
extern VALUE Image_map(int, VALUE *, VALUE);
|
981
|
+
extern VALUE Image_marshal_dump(VALUE);
|
982
|
+
extern VALUE Image_marshal_load(VALUE, VALUE);
|
917
983
|
extern VALUE Image_mask(int, VALUE *, VALUE);
|
918
984
|
extern VALUE Image_matte_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
|
919
985
|
extern VALUE Image_median_filter(int, VALUE *, VALUE);
|
@@ -1026,28 +1092,8 @@ extern VALUE TextureFill_initialize(VALUE, VALUE);
|
|
1026
1092
|
extern VALUE TextureFill_fill(VALUE, VALUE);
|
1027
1093
|
|
1028
1094
|
|
1029
|
-
//
|
1030
|
-
extern VALUE ChromaticityInfo_to_s(VALUE);
|
1031
|
-
extern VALUE ChromaticityInfo_new(ChromaticityInfo *);
|
1032
|
-
extern void Color_to_PixelPacket(PixelPacket *, VALUE);
|
1033
|
-
extern void Color_to_MagickPixelPacket(Image *, MagickPixelPacket *, VALUE);
|
1034
|
-
extern VALUE Color_to_s(VALUE);
|
1035
|
-
extern VALUE Color_from_ColorInfo(const ColorInfo *);
|
1036
|
-
extern VALUE ClassType_new(ClassType);
|
1037
|
-
extern VALUE ColorspaceType_new(ColorspaceType);
|
1038
|
-
extern VALUE CompositeOperator_new(CompositeOperator);
|
1039
|
-
extern VALUE CompressionType_new(CompressionType);
|
1040
|
-
extern VALUE DisposeType_new(DisposeType);
|
1041
|
-
extern VALUE EndianType_new(EndianType);
|
1042
|
-
extern VALUE FilterTypes_new(FilterTypes);
|
1043
|
-
extern VALUE GravityType_new(GravityType);
|
1044
|
-
extern VALUE Font_to_s(VALUE);
|
1045
|
-
extern VALUE rm_cur_image(VALUE);
|
1046
|
-
extern VALUE ImageMagickError_initialize(int, VALUE *, VALUE);
|
1047
|
-
extern VALUE ImageType_new(ImageType);
|
1048
|
-
extern VALUE InterlaceType_new(InterlaceType);
|
1095
|
+
// rmpixel.c
|
1049
1096
|
|
1050
|
-
extern VALUE Pixel_alloc(VALUE);
|
1051
1097
|
|
1052
1098
|
ATTR_ACCESSOR(Pixel, red)
|
1053
1099
|
ATTR_ACCESSOR(Pixel, green)
|
@@ -1057,6 +1103,8 @@ ATTR_ACCESSOR(Pixel, cyan)
|
|
1057
1103
|
ATTR_ACCESSOR(Pixel, magenta)
|
1058
1104
|
ATTR_ACCESSOR(Pixel, yellow)
|
1059
1105
|
ATTR_ACCESSOR(Pixel, black)
|
1106
|
+
extern void destroy_Pixel(Pixel *);
|
1107
|
+
extern VALUE Pixel_alloc(VALUE);
|
1060
1108
|
extern VALUE Pixel_case_eq(VALUE, VALUE);
|
1061
1109
|
extern VALUE Pixel_clone(VALUE);
|
1062
1110
|
extern VALUE Pixel_dup(VALUE);
|
@@ -1069,59 +1117,87 @@ extern VALUE Pixel_hash(VALUE);
|
|
1069
1117
|
extern VALUE Pixel_initialize(int, VALUE *, VALUE);
|
1070
1118
|
extern VALUE Pixel_init_copy(VALUE, VALUE);
|
1071
1119
|
extern VALUE Pixel_intensity(VALUE);
|
1120
|
+
extern VALUE Pixel_marshal_dump(VALUE);
|
1121
|
+
extern VALUE Pixel_marshal_load(VALUE, VALUE);
|
1072
1122
|
extern VALUE Pixel_spaceship(VALUE, VALUE);
|
1073
1123
|
extern VALUE Pixel_to_color(int, VALUE *, VALUE);
|
1074
1124
|
extern VALUE Pixel_to_HSL(VALUE);
|
1075
1125
|
extern VALUE Pixel_to_hsla(VALUE);
|
1076
1126
|
extern VALUE Pixel_to_s(VALUE);
|
1077
|
-
extern VALUE PixelPacket_to_Color_Name(Image *, PixelPacket *);
|
1078
|
-
extern VALUE PixelPacket_to_Color_Name_Info(Info *, PixelPacket *);
|
1079
|
-
extern VALUE Pixel_from_PixelPacket(const PixelPacket *);
|
1080
1127
|
|
1081
|
-
|
1082
|
-
|
1128
|
+
|
1129
|
+
// rmenum.c
|
1130
|
+
extern VALUE Enum_alloc(VALUE);
|
1131
|
+
extern VALUE Enum_initialize(VALUE, VALUE, VALUE);
|
1132
|
+
extern VALUE Enum_to_s(VALUE);
|
1133
|
+
extern VALUE Enum_to_i(VALUE);
|
1134
|
+
extern VALUE Enum_spaceship(VALUE, VALUE);
|
1135
|
+
extern VALUE Enum_case_eq(VALUE, VALUE);
|
1136
|
+
extern VALUE Enum_type_initialize(VALUE, VALUE, VALUE);
|
1137
|
+
extern VALUE Enum_type_each(VALUE);
|
1138
|
+
extern VALUE rm_enum_new(VALUE, VALUE, VALUE);
|
1139
|
+
|
1140
|
+
|
1141
|
+
// rmstruct.c
|
1142
|
+
extern VALUE ChromaticityInfo_to_s(VALUE);
|
1143
|
+
extern VALUE ChromaticityInfo_new(ChromaticityInfo *);
|
1144
|
+
extern void Color_to_PixelPacket(PixelPacket *, VALUE);
|
1145
|
+
extern void Color_to_MagickPixelPacket(Image *, MagickPixelPacket *, VALUE);
|
1146
|
+
extern VALUE Color_to_s(VALUE);
|
1147
|
+
extern VALUE Import_ColorInfo(const ColorInfo *);
|
1148
|
+
extern VALUE ClassType_new(ClassType);
|
1149
|
+
extern VALUE ColorspaceType_new(ColorspaceType);
|
1150
|
+
extern VALUE CompositeOperator_new(CompositeOperator);
|
1151
|
+
extern VALUE CompressionType_new(CompressionType);
|
1152
|
+
extern VALUE DisposeType_new(DisposeType);
|
1153
|
+
extern VALUE EndianType_new(EndianType);
|
1154
|
+
extern VALUE FilterTypes_new(FilterTypes);
|
1155
|
+
extern VALUE GravityType_new(GravityType);
|
1156
|
+
extern VALUE Font_to_s(VALUE);
|
1157
|
+
extern VALUE ImageType_new(ImageType);
|
1158
|
+
extern VALUE InterlaceType_new(InterlaceType);
|
1159
|
+
extern VALUE Pixel_from_MagickPixelPacket(const MagickPixelPacket *);
|
1160
|
+
extern VALUE Pixel_from_PixelPacket(const PixelPacket *);
|
1161
|
+
extern void Export_PointInfo(PointInfo *, VALUE);
|
1162
|
+
extern VALUE Import_PointInfo(PointInfo *);
|
1083
1163
|
extern VALUE PrimaryInfo_to_s(VALUE);
|
1084
|
-
extern VALUE
|
1164
|
+
extern VALUE Import_PrimaryInfo(PrimaryInfo *);
|
1085
1165
|
extern VALUE RectangleInfo_to_s(VALUE);
|
1086
|
-
extern VALUE
|
1166
|
+
extern VALUE Import_RectangleInfo(RectangleInfo *);
|
1087
1167
|
extern VALUE RenderingIntent_new(RenderingIntent);
|
1088
1168
|
extern VALUE ResolutionType_new(ResolutionType);
|
1089
1169
|
extern VALUE SegmentInfo_to_s(VALUE);
|
1090
|
-
extern VALUE
|
1091
|
-
extern void
|
1092
|
-
extern
|
1093
|
-
extern void
|
1170
|
+
extern VALUE Import_SegmentInfo(SegmentInfo *);
|
1171
|
+
extern void Export_AffineMatrix(AffineMatrix *, VALUE);
|
1172
|
+
extern VALUE Import_AffineMatrix(AffineMatrix *);
|
1173
|
+
extern void Export_ChromaticityInfo(ChromaticityInfo *, VALUE);
|
1174
|
+
extern void Export_ColorInfo(ColorInfo *, VALUE);
|
1094
1175
|
extern VALUE InterpolatePixelMethod_new(InterpolatePixelMethod);
|
1095
1176
|
extern VALUE OrientationType_new(OrientationType);
|
1096
|
-
extern void
|
1097
|
-
extern void
|
1098
|
-
extern void
|
1177
|
+
extern void Export_PrimaryInfo(PrimaryInfo *, VALUE);
|
1178
|
+
extern void Export_RectangleInfo(RectangleInfo *, VALUE);
|
1179
|
+
extern void Export_SegmentInfo(SegmentInfo *, VALUE);
|
1099
1180
|
extern void Font_to_TypeInfo(TypeInfo *, VALUE);
|
1100
|
-
extern void
|
1101
|
-
extern VALUE
|
1181
|
+
extern void Export_TypeMetric(TypeMetric *, VALUE);
|
1182
|
+
extern VALUE Import_TypeInfo(const TypeInfo *);
|
1102
1183
|
extern VALUE TypeMetric_to_s(VALUE);
|
1103
|
-
extern VALUE
|
1184
|
+
extern VALUE Import_TypeMetric(TypeMetric *);
|
1104
1185
|
extern const char *StorageType_name(StorageType);
|
1105
1186
|
extern VALUE VirtualPixelMethod_new(VirtualPixelMethod);
|
1106
1187
|
extern VALUE LAYERMETHODTYPE_NEW(LAYERMETHODTYPE);
|
1107
1188
|
|
1108
|
-
extern VALUE Enum_alloc(VALUE);
|
1109
|
-
extern VALUE Enum_initialize(VALUE, VALUE, VALUE);
|
1110
|
-
extern VALUE Enum_to_s(VALUE);
|
1111
|
-
extern VALUE Enum_to_i(VALUE);
|
1112
|
-
extern VALUE Enum_spaceship(VALUE, VALUE);
|
1113
|
-
extern VALUE Enum_case_eq(VALUE, VALUE);
|
1114
|
-
extern VALUE Enum_type_initialize(VALUE, VALUE, VALUE);
|
1115
|
-
extern VALUE Enum_type_each(VALUE);
|
1116
|
-
|
1117
1189
|
|
1190
|
+
// rmutil.c
|
1191
|
+
extern VALUE ImageMagickError_initialize(int, VALUE *, VALUE);
|
1118
1192
|
extern void *magick_malloc(const size_t);
|
1119
1193
|
extern void *magick_safe_malloc(const size_t, const size_t);
|
1120
1194
|
extern void magick_free(void *);
|
1121
1195
|
extern void *magick_realloc(void *, const size_t);
|
1122
1196
|
extern void *magick_safe_realloc(void *, const size_t, const size_t);
|
1123
1197
|
extern void magick_clone_string(char **, const char *);
|
1124
|
-
extern VALUE
|
1198
|
+
extern VALUE rm_cur_image(VALUE);
|
1199
|
+
extern VALUE rm_pixelpacket_to_color_name(Image *, PixelPacket *);
|
1200
|
+
extern VALUE rm_pixelpacket_to_color_name_info(Info *, PixelPacket *);
|
1125
1201
|
extern VALUE rm_no_freeze(VALUE);
|
1126
1202
|
extern int rm_strcasecmp(const char *, const char *);
|
1127
1203
|
extern int rm_strncasecmp(const char *, const char *, size_t);
|