MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
distort.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization
3  dedicated to making software imaging solutions freely available.
4 
5  You may not use this file except in compliance with the License.
6  obtain a copy of the License at
7 
8  https://imagemagick.org/script/license.php
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 
16  MagickCore image distortion methods.
17 */
18 #ifndef MAGICKCORE_DISTORT_H
19 #define MAGICKCORE_DISTORT_H
20 
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24 
25 /*
26  These two enum are linked, with common enumerated values. Both
27  DistortImages() and SparseColor() often share code to determine functional
28  coefficients for common methods.
29 
30  Caution should be taken to ensure that only the common methods contain the
31  same enumerated value, while all others remain unique across both
32  enumerations.
33 */
34 typedef enum
35 {
57 
58 typedef enum
59 {
65  /*
66  Methods unique to SparseColor().
67  */
72 
73 extern MagickExport Image
75  *DistortImage(const Image *,const DistortImageMethod,const size_t,
76  const double *,MagickBooleanType,ExceptionInfo *exception),
77  *DistortResizeImage(const Image *,const size_t,const size_t,ExceptionInfo *),
78  *RotateImage(const Image *,const double,ExceptionInfo *),
80  const size_t,const double *,ExceptionInfo *);
81 
82 #if defined(__cplusplus) || defined(c_plusplus)
83 }
84 #endif
85 
86 #endif
_Image::colorspace
ColorspaceType colorspace
Definition: image.h:158
BarrelInverseDistortion
@ BarrelInverseDistortion
Definition: distort.h:52
ResizeDistortion
@ ResizeDistortion
Definition: distort.h:54
MagickExport
#define MagickExport
Definition: method-attribute.h:80
_Image::debug
MagickBooleanType debug
Definition: image.h:290
_Image::filename
char filename[MaxTextExtent]
Definition: image.h:278
_Image::background_color
PixelPacket background_color
Definition: image.h:181
_Image::progress_monitor
MagickProgressMonitor progress_monitor
Definition: image.h:264
DistortImage
MagickExport Image * DistortImage(const Image *, const DistortImageMethod, const size_t, const double *, MagickBooleanType, ExceptionInfo *exception)
_RectangleInfo::x
ssize_t x
Definition: geometry.h:129
CloneImage
MagickExport Image * CloneImage(const Image *image, const size_t columns, const size_t rows, const MagickBooleanType detach, ExceptionInfo *exception)
Definition: image.c:788
poly_basis_str
static const char * poly_basis_str(ssize_t n)
Definition: distort.c:183
_AffineMatrix
Definition: geometry.h:94
_Image::matte
MagickBooleanType matte
Definition: image.h:171
SetImageProgress
MagickExport MagickBooleanType SetImageProgress(const Image *image, const char *tag, const MagickOffsetType offset, const MagickSizeType extent)
Definition: monitor.c:136
SparseColorImage
MagickExport Image * SparseColorImage(const Image *image, const ChannelType channel, const SparseColorMethod method, const size_t number_arguments, const double *arguments, ExceptionInfo *exception)
Definition: distort.c:2952
OpaqueOpacity
#define OpaqueOpacity
Definition: image.h:27
_MagickPixelPacket::red
MagickRealType red
Definition: pixel.h:122
DirectClass
@ DirectClass
Definition: magick-type.h:187
BlueChannel
@ BlueChannel
Definition: magick-type.h:165
MagickMaximumValue
#define MagickMaximumValue
Definition: magick-type.h:116
GetMagickModule
#define GetMagickModule()
Definition: log.h:29
VirtualPixelMethod
VirtualPixelMethod
Definition: cache-view.h:27
DestroyCacheView
MagickExport CacheView * DestroyCacheView(CacheView *cache_view)
Definition: cache-view.c:256
GetMagickPixelPacket
MagickExport void GetMagickPixelPacket(const Image *image, MagickPixelPacket *pixel)
Definition: pixel.c:2242
MagickStatusType
unsigned int MagickStatusType
Definition: magick-type.h:127
RedChannel
@ RedChannel
Definition: magick-type.h:160
AffineArgsToCoefficients
static void AffineArgsToCoefficients(double *affine)
Definition: distort.c:81
PerspectiveDistortion
@ PerspectiveDistortion
Definition: distort.h:40
distort.h
ChannelType
ChannelType
Definition: magick-type.h:157
DistortImageTag
#define DistortImageTag
CropImage
MagickExport Image * CropImage(const Image *image, const RectangleInfo *geometry, ExceptionInfo *exception)
Definition: transform.c:613
SparseColorImage
MagickExport Image * SparseColorImage(const Image *, const ChannelType, const SparseColorMethod, const size_t, const double *, ExceptionInfo *)
Definition: distort.c:2952
SetAlphaChannel
@ SetAlphaChannel
Definition: image.h:40
MagickCoreSignature
#define MagickCoreSignature
Definition: method-attribute.h:86
FormatLocaleString
MagickExport ssize_t FormatLocaleString(char *magick_restrict string, const size_t length, const char *magick_restrict format,...)
Definition: locale.c:502
OptionWarning
@ OptionWarning
Definition: exception.h:34
_RectangleInfo::height
size_t height
Definition: geometry.h:126
resample-private.h
MagickPixelCompositeBlend
static void MagickPixelCompositeBlend(const MagickPixelPacket *p, const MagickRealType alpha, const MagickPixelPacket *q, const MagickRealType beta, MagickPixelPacket *composite)
Definition: composite-private.h:138
channel.h
IndexChannel
@ IndexChannel
Definition: magick-type.h:171
ShepardsDistortion
@ ShepardsDistortion
Definition: distort.h:53
GetCacheViewAuthenticPixels
MagickExport PixelPacket * GetCacheViewAuthenticPixels(CacheView *cache_view, const ssize_t x, const ssize_t y, const size_t columns, const size_t rows, ExceptionInfo *exception)
Definition: cache-view.c:473
UndefinedColorInterpolate
@ UndefinedColorInterpolate
Definition: distort.h:60
poly_basis_fn
static double poly_basis_fn(ssize_t n, double x, double y)
Definition: distort.c:155
ResamplePixelColor
MagickExport MagickBooleanType ResamplePixelColor(ResampleFilter *resample_filter, const double u0, const double v0, MagickPixelPacket *pixel)
Definition: resample.c:319
magick_restrict
#define magick_restrict
Definition: MagickCore.h:41
_RectangleInfo
Definition: geometry.h:122
ManhattanColorInterpolate
@ ManhattanColorInterpolate
Definition: distort.h:70
DePolarDistortion
@ DePolarDistortion
Definition: distort.h:48
_Image::columns
size_t columns
Definition: image.h:174
artifact.h
InverseColorInterpolate
@ InverseColorInterpolate
Definition: distort.h:69
DistortResizeImage
MagickExport Image * DistortResizeImage(const Image *, const size_t, const size_t, ExceptionInfo *)
Plane2CylinderDistortion
@ Plane2CylinderDistortion
Definition: distort.h:50
ScaleFilter
#define ScaleFilter(F, A, B, C, D)
IndexPacket
Quantum IndexPacket
Definition: pixel.h:129
resource_.h
ConvertRGBToCMYK
static void ConvertRGBToCMYK(MagickPixelPacket *pixel)
Definition: colorspace-private.h:40
Magick2PI
#define Magick2PI
Definition: image-private.h:29
sRGBColorspace
@ sRGBColorspace
Definition: colorspace.h:40
GetImageVirtualPixelMethod
MagickExport VirtualPixelMethod GetImageVirtualPixelMethod(const Image *image)
Definition: image.c:1629
IsPixelGray
static MagickBooleanType IsPixelGray(const PixelPacket *pixel)
Definition: pixel-accessor.h:186
ResourceLimitError
@ ResourceLimitError
Definition: exception.h:55
pixel.h
_CacheView
Definition: cache-view.c:65
InvertPerspectiveCoefficients
static void InvertPerspectiveCoefficients(const double *coeff, double *inverse)
Definition: distort.c:110
AcquireMagickMatrix
MagickExport double ** AcquireMagickMatrix(const size_t number_rows, const size_t size)
Definition: matrix.c:314
string_.h
PolynomialDistortion
@ PolynomialDistortion
Definition: distort.h:45
MagickTrue
@ MagickTrue
Definition: magick-type.h:194
QueueCacheViewAuthenticPixels
MagickExport PixelPacket * QueueCacheViewAuthenticPixels(CacheView *cache_view, const ssize_t x, const ssize_t y, const size_t columns, const size_t rows, ExceptionInfo *exception)
Definition: cache-view.c:883
semaphore.h
_RectangleInfo::y
ssize_t y
Definition: geometry.h:130
OpaqueAlphaChannel
@ OpaqueAlphaChannel
Definition: image.h:38
UndefinedDistortion
@ UndefinedDistortion
Definition: distort.h:36
_Image::compose
CompositeOperator compose
Definition: image.h:235
_MagickPixelPacket::index
MagickRealType index
Definition: pixel.h:126
SyncCacheViewAuthenticPixels
MagickExport MagickBooleanType SyncCacheViewAuthenticPixels(CacheView *magick_restrict cache_view, ExceptionInfo *exception)
Definition: cache-view.c:1000
_MagickPixelPacket::blue
MagickRealType blue
Definition: pixel.h:124
ParseAbsoluteGeometry
MagickExport MagickStatusType ParseAbsoluteGeometry(const char *geometry, RectangleInfo *region_info)
Definition: geometry.c:707
ExpandBounds
#define ExpandBounds(p)
RelinquishMagickMatrix
MagickExport double ** RelinquishMagickMatrix(double **matrix, const size_t number_rows)
Definition: matrix.c:1064
AffineProjectionDistortion
@ AffineProjectionDistortion
Definition: distort.h:38
thread-private.h
hashmap.h
AffineTransformImage
MagickExport Image * AffineTransformImage(const Image *image, const AffineMatrix *affine_matrix, ExceptionInfo *exception)
Definition: distort.c:285
matrix.h
TraceEvent
@ TraceEvent
Definition: log.h:38
AffineTransformImage
MagickExport Image * AffineTransformImage(const Image *, const AffineMatrix *, ExceptionInfo *)
InvertAffineCoefficients
static void InvertAffineCoefficients(const double *coeff, double *inverse)
Definition: distort.c:96
FormatLocaleFile
MagickExport ssize_t FormatLocaleFile(FILE *file, const char *magick_restrict format,...)
Definition: locale.c:407
SetImageAlphaChannel
MagickExport MagickBooleanType SetImageAlphaChannel(Image *image, const AlphaChannelType alpha_type)
Definition: channel.c:652
LeastSquaresAddTerms
MagickExport void LeastSquaresAddTerms(double **matrix, double **vectors, const double *terms, const double *results, const size_t rank, const size_t number_vectors)
Definition: matrix.c:826
ClampPixel
static Quantum ClampPixel(const MagickRealType value)
Definition: pixel-accessor.h:111
_Image
Definition: image.h:152
CoefficientsToAffineArgs
static void CoefficientsToAffineArgs(double *coeff)
Definition: distort.c:89
SparseColorMethod
SparseColorMethod
Definition: distort.h:58
GetCacheViewAuthenticIndexQueue
MagickExport IndexPacket * GetCacheViewAuthenticIndexQueue(CacheView *cache_view)
Definition: cache-view.c:564
BilinearReverseDistortion
@ BilinearReverseDistortion
Definition: distort.h:44
CopyOpacityCompositeOp
@ CopyOpacityCompositeOp
Definition: composite.h:44
AcquireAuthenticCacheView
MagickExport CacheView * AcquireAuthenticCacheView(const Image *image, ExceptionInfo *exception)
Definition: cache-view.c:111
_MagickPixelPacket
Definition: pixel.h:104
TrueAlphaChannel
@ TrueAlphaChannel
Definition: magick-type.h:177
PolynomialColorInterpolate
@ PolynomialColorInterpolate
Definition: distort.h:63
MagickMax
#define MagickMax(x, y)
Definition: image-private.h:26
MagickPI
#define MagickPI
Definition: image-private.h:28
PerspectiveProjectionDistortion
@ PerspectiveProjectionDistortion
Definition: distort.h:41
OpacityChannel
@ OpacityChannel
Definition: magick-type.h:168
MagickRound
static double MagickRound(double x)
Definition: distort.c:364
RotateImage
MagickExport Image * RotateImage(const Image *image, const double degrees, ExceptionInfo *exception)
Definition: distort.c:2865
_Image::exception
ExceptionInfo exception
Definition: image.h:287
OptionError
@ OptionError
Definition: exception.h:57
poly_basis_dy
static double poly_basis_dy(ssize_t n, double x, double y)
Definition: distort.c:239
MagickFalse
@ MagickFalse
Definition: magick-type.h:193
MagickProgressMonitor
MagickBooleanType(* MagickProgressMonitor)(const char *, const MagickOffsetType, const MagickSizeType, void *)
Definition: monitor.h:26
VoronoiColorInterpolate
@ VoronoiColorInterpolate
Definition: distort.h:68
pixel-private.h
image.h
_AffineMatrix::tx
double tx
Definition: geometry.h:101
DistortImageMethod
DistortImageMethod
Definition: distort.h:34
_Image::matte_color
PixelPacket matte_color
Definition: image.h:183
_AffineMatrix::sy
double sy
Definition: geometry.h:100
registry.h
_AffineMatrix::ty
double ty
Definition: geometry.h:102
_PixelPacket::opacity
Quantum opacity
Definition: pixel.h:146
_AffineMatrix::sx
double sx
Definition: geometry.h:97
color-private.h
CompositeImage
MagickExport MagickBooleanType CompositeImage(Image *image, const CompositeOperator compose, const Image *source_image, const ssize_t x_offset, const ssize_t y_offset)
Definition: composite.c:1587
PerceptibleReciprocal
static double PerceptibleReciprocal(const double x)
Definition: pixel-accessor.h:124
BilinearColorInterpolate
@ BilinearColorInterpolate
Definition: distort.h:62
QuantumRange
#define QuantumRange
Definition: magick-type.h:86
CMYKColorspace
@ CMYKColorspace
Definition: colorspace.h:39
PolarDistortion
@ PolarDistortion
Definition: distort.h:47
_Image::rows
size_t rows
Definition: image.h:175
SeparateImageChannel
MagickExport MagickBooleanType SeparateImageChannel(Image *image, const ChannelType channel)
Definition: channel.c:383
cache-view.h
cache.h
SetMagickPixelPacket
static void SetMagickPixelPacket(const Image *image, const PixelPacket *color, const IndexPacket *index, MagickPixelPacket *pixel)
Definition: pixel-private.h:78
_ExceptionInfo::signature
size_t signature
Definition: exception.h:124
colorspace.h
AcquireResampleFilterThreadSet
static ResampleFilter ** AcquireResampleFilterThreadSet(const Image *image, const VirtualPixelMethod method, const MagickBooleanType interpolate, ExceptionInfo *exception)
Definition: resample-private.h:41
_Image::signature
size_t signature
Definition: image.h:307
UndefinedVirtualPixelMethod
@ UndefinedVirtualPixelMethod
Definition: cache-view.h:29
MagickBooleanType
MagickBooleanType
Definition: magick-type.h:191
StringToDouble
static double StringToDouble(const char *magick_restrict string, char **magick_restrict sentinal)
Definition: string-private.h:42
composite-private.h
RelinquishMagickMemory
MagickExport void * RelinquishMagickMemory(void *memory)
Definition: memory.c:1077
IntegralRotateImage
MagickExport Image * IntegralRotateImage(const Image *image, size_t rotations, ExceptionInfo *exception)
Definition: shear.c:708
DestroyResampleFilterThreadSet
static ResampleFilter ** DestroyResampleFilterThreadSet(ResampleFilter **filter)
Definition: resample-private.h:27
_ExceptionInfo
Definition: exception.h:102
CommandOptionToMnemonic
const MagickExport char * CommandOptionToMnemonic(const CommandOption option, const ssize_t type)
Definition: option.c:2292
DegreesToRadians
static double DegreesToRadians(const double degrees)
Definition: image-private.h:56
_RectangleInfo::width
size_t width
Definition: geometry.h:125
studio.h
SparseColorTag
#define SparseColorTag
BarycentricColorInterpolate
@ BarycentricColorInterpolate
Definition: distort.h:61
resample.h
Cylinder2PlaneDistortion
@ Cylinder2PlaneDistortion
Definition: distort.h:49
BilinearForwardDistortion
@ BilinearForwardDistortion
Definition: distort.h:42
poly_basis_dx
static double poly_basis_dx(ssize_t n, double x, double y)
Definition: distort.c:211
MagickRealType
MagickDoubleType MagickRealType
Definition: magick-type.h:125
ScaleRotateTranslateDistortion
@ ScaleRotateTranslateDistortion
Definition: distort.h:39
_PointInfo::y
double y
Definition: draw.h:142
monitor-private.h
ArcDistortion
@ ArcDistortion
Definition: distort.h:46
shear.h
_ResampleFilter
Definition: resample.c:91
MagickDistortOptions
@ MagickDistortOptions
Definition: option.h:48
DestroyImage
MagickExport Image * DestroyImage(Image *image)
Definition: image.c:1187
TransparentVirtualPixelMethod
@ TransparentVirtualPixelMethod
Definition: cache-view.h:37
transform.h
NoValue
@ NoValue
Definition: geometry.h:28
DeactivateAlphaChannel
@ DeactivateAlphaChannel
Definition: image.h:36
memory_.h
GetMagickPrecision
MagickExport int GetMagickPrecision(void)
Definition: magick.c:681
_PointInfo
Definition: draw.h:138
MagickEpsilon
#define MagickEpsilon
Definition: magick-type.h:115
pixel-accessor.h
_AffineMatrix::ry
double ry
Definition: geometry.h:99
exception-private.h
InitalBounds
#define InitalBounds(p)
AffineDistortion
@ AffineDistortion
Definition: distort.h:37
SentinelDistortion
@ SentinelDistortion
Definition: distort.h:55
ThrowMagickException
MagickExport MagickBooleanType ThrowMagickException(ExceptionInfo *exception, const char *module, const char *function, const size_t line, const ExceptionType severity, const char *tag, const char *format,...)
Definition: exception.c:1068
exception.h
poly_number_terms
static size_t poly_number_terms(double order)
Definition: distort.c:146
option.h
SetImageStorageClass
MagickExport MagickBooleanType SetImageStorageClass(Image *image, const ClassType storage_class)
Definition: image.c:2610
list.h
ShepardsColorInterpolate
@ ShepardsColorInterpolate
Definition: distort.h:64
SetImageVirtualPixelMethod
MagickExport VirtualPixelMethod SetImageVirtualPixelMethod(const Image *image, const VirtualPixelMethod virtual_pixel_method)
Definition: image.c:3300
gem.h
LogMagickEvent
MagickExport MagickBooleanType LogMagickEvent(const LogEventType type, const char *module, const char *function, const size_t line, const char *format,...)
Definition: log.c:1399
MaxTextExtent
#define MaxTextExtent
Definition: method-attribute.h:89
string-private.h
colorspace-private.h
GenerateCoefficients
static double * GenerateCoefficients(const Image *image, DistortImageMethod *method, const size_t number_arguments, const double *arguments, size_t number_values, ExceptionInfo *exception)
Definition: distort.c:374
BackgroundVirtualPixelMethod
@ BackgroundVirtualPixelMethod
Definition: cache-view.h:30
GetImageArtifact
const MagickExport char * GetImageArtifact(const Image *image, const char *artifact)
Definition: artifact.c:266
token.h
InheritException
MagickExport void InheritException(ExceptionInfo *exception, const ExceptionInfo *relative)
Definition: exception.c:633
RotateImage
MagickExport Image * RotateImage(const Image *, const double, ExceptionInfo *)
DistortResizeImage
MagickExport Image * DistortResizeImage(const Image *image, const size_t columns, const size_t rows, ExceptionInfo *exception)
Definition: distort.c:1463
MagickMin
#define MagickMin(x, y)
Definition: image-private.h:27
_AffineMatrix::rx
double rx
Definition: geometry.h:98
_Image::page
RectangleInfo page
Definition: image.h:213
_MagickPixelPacket::opacity
MagickRealType opacity
Definition: pixel.h:125
_PointInfo::x
double x
Definition: draw.h:141
_MagickPixelPacket::green
MagickRealType green
Definition: pixel.h:123
BilinearDistortion
@ BilinearDistortion
Definition: distort.h:43
GreenChannel
@ GreenChannel
Definition: magick-type.h:163
GaussJordanElimination
MagickExport MagickBooleanType GaussJordanElimination(double **matrix, double **vectors, const size_t rank, const size_t number_vectors)
Definition: matrix.c:477
MagickPI2
#define MagickPI2
Definition: image-private.h:31
_PixelPacket
Definition: pixel.h:131
DistortImage
MagickExport Image * DistortImage(const Image *image, DistortImageMethod method, const size_t number_arguments, const double *arguments, MagickBooleanType bestfit, ExceptionInfo *exception)
Definition: distort.c:1679
SetPixelPacket
static void SetPixelPacket(const Image *image, const MagickPixelPacket *pixel, PixelPacket *color, IndexPacket *index)
Definition: pixel-private.h:103
IsGrayColorspace
static MagickBooleanType IsGrayColorspace(const ColorspaceType colorspace)
Definition: colorspace-private.h:96
AcquireQuantumMemory
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
Definition: memory.c:544
MagickOffsetType
ssize_t MagickOffsetType
Definition: magick-type.h:135
GetOpenMPThreadId
static int GetOpenMPThreadId(void)
Definition: thread-private.h:120
BarrelDistortion
@ BarrelDistortion
Definition: distort.h:51
SetImageColorspace
MagickExport MagickBooleanType SetImageColorspace(Image *image, const ColorspaceType colorspace)
Definition: colorspace.c:1189