1 moduledmagick.c.composite;
2 3 importdmagick.c.image;
4 importdmagick.c.magickType;
5 6 aliasptrdiff_tssize_t;
7 8 extern(C)
9 {
10 /**
11 * Select the image composition algorithm used to compose a
12 * composite image with a image.
13 */14 enumCompositeOperator15 {
16 /** */17 UndefinedCompositeOp,
18 19 /**
20 * No composite operator has been specified.
21 */22 NoCompositeOp,
23 24 /**
25 * The result of composite image + image,
26 * with overflow wrapping around (mod 256).
27 */28 ModulusAddCompositeOp,
29 30 /**
31 * The result is the same shape as image, with composite image
32 * obscuring image where the image shapes overlap. Note that this
33 * differs from OverCompositeOp because the portion of composite
34 * image outside of image's shape does not appear in the result.
35 */36 AtopCompositeOp,
37 38 /**
39 * Merges images together such that both images are treated
40 * equally (being just added together), according to the percentage
41 * arguments given.
42 */43 BlendCompositeOp,
44 45 /**
46 * The result image shaded by composite image.
47 */48 BumpmapCompositeOp,
49 50 /**
51 * Replace any destination pixel that is the similar to the source
52 * image's pixel (as defined by the current fuzz factor),
53 * with transparency.
54 */55 ChangeMaskCompositeOp,
56 57 /**
58 * Make the target image transparent. The composite image is ignored.
59 */60 ClearCompositeOp,
61 62 /**
63 * Darkens the destination color to reflect the source color.
64 * Painting with white produces no change.
65 */66 ColorBurnCompositeOp,
67 68 /**
69 * Brightens the destination color to reflect the source color.
70 * Painting with black produces no change.
71 */72 ColorDodgeCompositeOp,
73 74 /**
75 * Each pixel in the result image is the combination of the
76 * brightness of the target image and the saturation and hue of the
77 * composite image. This is the opposite of LuminizeCompositeOp.
78 */79 ColorizeCompositeOp,
80 81 /**
82 * Copy the black channel from the composite image to the target image.
83 */84 CopyBlackCompositeOp,
85 86 /**
87 * Copy the blue channel from the composite image to the target image.
88 */89 CopyBlueCompositeOp,
90 91 /**
92 * Replace the target image with the composite image.
93 */94 CopyCompositeOp,
95 96 /**
97 * Copy the cyan channel from the composite image to the target image.
98 */99 CopyCyanCompositeOp,
100 101 /**
102 * Copy the green channel from the composite image to the target image.
103 */104 CopyGreenCompositeOp,
105 106 /**
107 * Copy the magenta channel from the composite image to the target image.
108 */109 CopyMagentaCompositeOp,
110 111 /**
112 * If the composite image's matte attribute is true, copy the
113 * opacity channel from the composite image to the target image.
114 * Otherwise, set the target image pixel's opacity to the intensity
115 * of the corresponding pixel in the composite image.
116 */117 CopyOpacityCompositeOp,
118 119 /**
120 * Copy the red channel from the composite image to the target image.
121 */122 CopyRedCompositeOp,
123 124 /**
125 * Copy the yellow channel from the composite image to the target image.
126 */127 CopyYellowCompositeOp,
128 129 /**
130 * Replace target image pixels with darker
131 * pixels from the composite image.
132 */133 DarkenCompositeOp,
134 135 /**
136 * The part of the destination lying inside of the source is
137 * composited over the source and replaces the destination.
138 */139 DstAtopCompositeOp,
140 141 /**
142 * The destination is left untouched.
143 */144 DstCompositeOp,
145 146 /**
147 * The part of the destination lying inside of
148 * the source replaces the destination.
149 */150 DstInCompositeOp,
151 152 /**
153 * The part of the destination lying outside of
154 * the source replaces the destination.
155 */156 DstOutCompositeOp,
157 158 /**
159 * The destination is composited over the source
160 * and the result replaces the destination.
161 */162 DstOverCompositeOp,
163 164 /**
165 * The result of abs(composite image - image). This is useful
166 * for comparing two very similar images.
167 */168 DifferenceCompositeOp,
169 170 /**
171 * Displace target image pixels as defined by a displacement map.
172 * The operator used by the displace method.
173 */174 DisplaceCompositeOp,
175 176 /**
177 * The operator used in the dissolve method.
178 */179 DissolveCompositeOp,
180 181 /**
182 * Produces an effect similar to that of 'difference', but appears
183 * as lower contrast. Painting with white inverts the destination
184 * color. Painting with black produces no change.
185 */186 ExclusionCompositeOp,
187 188 /**
189 * Multiplies or screens the colors, dependent on the source color
190 * value. If the source color is lighter than 0.5, the destination
191 * is lightened as if it were screened. If the source color is darker
192 * than 0.5, the destination is darkened, as if it were multiplied.
193 * The degree of lightening or darkening is proportional to the
194 * difference between the source color and 0.5. If it is equal to
195 * 0.5 the destination is unchanged. Painting with pure black or
196 * white produces black or white.
197 */198 HardLightCompositeOp,
199 200 /**
201 * Each pixel in the result image is the combination of the hue of
202 * the target image and the saturation and brightness of the
203 * composite image.
204 */205 HueCompositeOp,
206 207 /**
208 * The result is simply composite image cut by the shape of image.
209 * None of the image data of image is included in the result.
210 */211 InCompositeOp,
212 213 /**
214 * Replace target image pixels with lighter
215 * pixels from the composite image.
216 */217 LightenCompositeOp,
218 219 /**
220 * Increase contrast slightly with an impact on the foreground's
221 * tonal values.
222 */223 LinearLightCompositeOp,
224 225 /**
226 * Each pixel in the result image is the combination of the
227 * brightness of the composite image and the saturation and hue
228 * of the target image. This is the opposite of ColorizeCompositeOp.
229 */230 LuminizeCompositeOp,
231 232 /**
233 * The result of composite image - image, with overflow cropped
234 * to zero. The matte chanel is ignored (set to 255, full coverage).
235 */236 MinusDstCompositeOp,
237 238 /**
239 * Used by the watermark method.
240 */241 ModulateCompositeOp,
242 243 /**
244 * Multiplies the color of each target image pixel by the color
245 * of the corresponding composite image pixel. The result color
246 * is always darker.
247 */248 MultiplyCompositeOp,
249 250 /**
251 * The resulting image is composite image
252 * with the shape of image cut out.
253 */254 OutCompositeOp,
255 256 /**
257 * The result is the union of the the two image shapes with composite
258 * image obscuring image in the region of overlap. The matte channel
259 * of the composite image is respected, so that if the composite
260 * pixel is part or all transparent, the corresponding image pixel
261 * will show through.
262 */263 OverCompositeOp,
264 265 /**
266 * Multiplies or screens the colors, dependent on the destination
267 * color. Source colors overlay the destination whilst preserving
268 * its highlights and shadows. The destination color is not replaced,
269 * but is mixed with the source color to reflect the lightness or
270 * darkness of the destination.
271 */272 OverlayCompositeOp,
273 274 /**
275 * The result is just the sum of the image data. Output values are
276 * cropped to 255 (no overflow). This operation is independent of
277 * the matte channels.
278 */279 PlusCompositeOp,
280 281 /**
282 * The resulting image is image replaced with composite image.
283 * Here the matte information is ignored.
284 */285 ReplaceCompositeOp,
286 287 /**
288 * Each pixel in the result image is the combination of the
289 * saturation of the target image and the hue and brightness
290 * of the composite image.
291 */292 SaturateCompositeOp,
293 294 /**
295 * Multiplies the inverse of each image's color information.
296 */297 ScreenCompositeOp,
298 299 /**
300 * Darkens or lightens the colors, dependent on the source color
301 * value. If the source color is lighter than 0.5, the destination
302 * is lightened. If the source color is darker than 0.5, the
303 * destination is darkened, as if it were burned in. The degree of
304 * darkening or lightening is proportional to the difference between
305 * the source color and 0.5. If it is equal to 0.5, the destination
306 * is unchanged. Painting with pure black or white produces a
307 * distinctly darker or lighter area, but does not result in pure
308 * black or white.
309 */310 SoftLightCompositeOp,
311 312 /**
313 * The part of the source lying inside of the destination is
314 * composited onto the destination.
315 */316 SrcAtopCompositeOp,
317 318 /**
319 * The source is copied to the destination.
320 * The destination is not used as input.
321 */322 SrcCompositeOp,
323 324 /**
325 * The part of the source lying inside of the destination
326 * replaces the destination.
327 */328 SrcInCompositeOp,
329 330 /**
331 * The part of the source lying outside of the destination
332 * replaces the destination.
333 */334 SrcOutCompositeOp,
335 336 /**
337 * The source is composited over the destination.
338 */339 SrcOverCompositeOp,
340 341 /**
342 * The result of composite image - image, with underflow wrapping
343 * around (mod 256). The add and subtract operators can be used to
344 * perform reversable transformations.
345 */346 ModulusSubtractCompositeOp,
347 348 /** */349 ThresholdCompositeOp,
350 351 /**
352 * The result is the image data from both composite image and image
353 * that is outside the overlap region. The overlap region will
354 * be blank.
355 */356 XorCompositeOp,
357 358 /*
359 * These are new operators, added after the above was last sorted.
360 * The list should be re-sorted only when a new library version is
361 * created.
362 */363 364 /**
365 * The two images are divided from each other, Src / Dest.
366 */367 DivideDstCompositeOp,
368 369 /**
370 * Distort an image, using the given method
371 * and its required arguments.
372 */373 DistortCompositeOp,
374 375 /**
376 * Provides you with a method of replacing each individual pixel by
377 * a Elliptical Gaussian Average (a blur) of the neighbouring pixels,
378 * according to a mapping image.
379 */380 BlurCompositeOp,
381 382 /**
383 * Almost equivalent to SoftLightCompositeOp, but using
384 * a continuious mathematical formula rather than two conditionally
385 * selected formulae.
386 */387 PegtopLightCompositeOp,
388 389 /**
390 * A modified LinearLightCompositeOp designed to preserve very
391 * stong primary and secondary colors in the image.
392 */393 VividLightCompositeOp,
394 395 /**
396 * Similar to HardLightCompositeOp, but using sharp linear shadings,
397 * to similate the effects of a strong 'pinhole' light source.
398 */399 PinLightCompositeOp,
400 401 /**
402 * This is equivelent to PlusCompositeOp in that the color channels
403 * are simply added, however it does not "plus" the alpha channel,
404 * but uses the normal OverCompositeOp alpha blending, which
405 * transparencies are involved. Produces a sort of additive
406 * multiply-like result.
407 */408 LinearDodgeCompositeOp,
409 410 /**
411 * Same as LinearDodgeCompositeOp, but also subtract one from the
412 * result. Sort of a additive 'Screen' of the images
413 */414 LinearBurnCompositeOp,
415 416 /**
417 * This composite method takes 4 numerical values to allow the user
418 * to define many different Mathematical Compose Methods.
419 */420 MathematicsCompositeOp,
421 422 /**
423 * The two images are divided from each other, Dest / Src.
424 */425 DivideSrcCompositeOp,
426 427 /**
428 * The result of image - composite image, with overflow cropped
429 * to zero. The matte chanel is ignored (set to 255, full coverage).
430 */431 MinusSrcCompositeOp,
432 433 /**
434 * Compare the source and destination image color values and
435 * take the darker value.
436 */437 DarkenIntensityCompositeOp,
438 439 /**
440 * Compare the source and destination image color values and
441 * take the lighter value.
442 */443 LightenIntensityCompositeOp,
444 445 /** */446 HardMixCompositeOp,
447 448 /* Depreciated (renamed) Method Names for backward compatibility */449 AddCompositeOp = ModulusAddCompositeOp,
450 SubtractCompositeOp = ModulusSubtractCompositeOp,
451 MinusCompositeOp = MinusDstCompositeOp,
452 DivideCompositeOp = DivideDstCompositeOp453 }
454 455 MagickBooleanTypeCompositeImage(Image*, constCompositeOperator, const(Image)*, constssize_t, constssize_t);
456 MagickBooleanTypeCompositeImageChannel(Image*, constChannelType, constCompositeOperator, const(Image)*, constssize_t, constssize_t);
457 MagickBooleanTypeTextureImage(Image*, const(Image)*);
458 }