MagickCore  6.9.12-38
Convert, Edit, Or Compose Bitmap Images
gem.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2021 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. You may
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 private graphic gems methods.
17 */
18 #ifndef MAGICKCORE_GEM_H
19 #define MAGICKCORE_GEM_H
20 
21 #include "magick/random_.h"
22 #include "magick/visual-effects.h"
23 
24 #if defined(__cplusplus) || defined(c_plusplus)
25 extern "C" {
26 #endif
27 
28 extern MagickExport double
31  const MagickRealType);
32 
33 extern MagickExport size_t
34  GetOptimalKernelWidth(const double,const double),
35  GetOptimalKernelWidth1D(const double,const double),
36  GetOptimalKernelWidth2D(const double,const double);
37 
38 extern MagickExport void
39  ConvertHCLToRGB(const double,const double,const double,Quantum *,Quantum *,
40  Quantum *),
41  ConvertHCLpToRGB(const double,const double,const double,Quantum *,Quantum *,
42  Quantum *),
43  ConvertHSBToRGB(const double,const double,const double,Quantum *,Quantum *,
44  Quantum *),
45  ConvertHSIToRGB(const double,const double,const double,Quantum *,Quantum *,
46  Quantum *),
47  ConvertHSLToRGB(const double,const double,const double,Quantum *,Quantum *,
48  Quantum *),
49  ConvertHSVToRGB(const double,const double,const double,Quantum *,Quantum *,
50  Quantum *),
51  ConvertHWBToRGB(const double,const double,const double,Quantum *,Quantum *,
52  Quantum *),
53  ConvertLCHabToRGB(const double,const double,const double,Quantum *,Quantum *,
54  Quantum *),
55  ConvertLCHuvToRGB(const double,const double,const double,Quantum *,Quantum *,
56  Quantum *),
57  ConvertRGBToHCL(const Quantum,const Quantum,const Quantum,double *,double *,
58  double *),
59  ConvertRGBToHCLp(const Quantum,const Quantum,const Quantum,double *,double *,
60  double *),
61  ConvertRGBToHSB(const Quantum,const Quantum,const Quantum,double *,double *,
62  double *),
63  ConvertRGBToHSI(const Quantum,const Quantum,const Quantum,double *,double *,
64  double *),
65  ConvertRGBToHSL(const Quantum,const Quantum,const Quantum,double *,double *,
66  double *),
67  ConvertRGBToHSV(const Quantum,const Quantum,const Quantum,double *,double *,
68  double *),
69  ConvertRGBToHWB(const Quantum,const Quantum,const Quantum,double *,double *,
70  double *),
71  ConvertRGBToLCHab(const Quantum,const Quantum,const Quantum,double *,double *,
72  double *),
73  ConvertRGBToLCHuv(const Quantum,const Quantum,const Quantum,double *,double *,
74  double *);
75 
76 #if defined(__cplusplus) || defined(c_plusplus)
77 }
78 #endif
79 
80 #endif
QuantumScale
#define QuantumScale
Definition: magick-type.h:120
MagickExport
#define MagickExport
Definition: method-attribute.h:80
_AffineMatrix
Definition: geometry.h:96
GetOptimalKernelWidth2D
MagickExport size_t GetOptimalKernelWidth2D(const double radius, const double sigma)
Definition: gem.c:1663
ConvertLCHabToRGB
MagickExport void ConvertLCHabToRGB(const double luma, const double chroma, const double hue, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:761
GetMagickModule
#define GetMagickModule()
Definition: log.h:29
SigmaImpulse
#define SigmaImpulse
visual-effects.h
ConvertRGBToHSB
MagickExport void ConvertRGBToHSB(const Quantum, const Quantum, const Quantum, double *, double *, double *)
ConvertHWBToRGB
MagickExport void ConvertHWBToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
SigmaLaplacian
#define SigmaLaplacian
ConvertHSVToRGB
MagickExport void ConvertHSVToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
ConvertHSBToRGB
MagickExport void ConvertHSBToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
ConvertXYZToLuv
static void ConvertXYZToLuv(const double X, const double Y, const double Z, double *L, double *u, double *v)
Definition: gem-private.h:65
ConvertRGBToHSV
MagickExport void ConvertRGBToHSV(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *saturation, double *value)
Definition: gem.c:1199
ConvertRGBToHSL
MagickExport void ConvertRGBToHSL(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *saturation, double *lightness)
Definition: gem.c:1127
ConvertXYZToRGB
static void ConvertXYZToRGB(const double X, const double Y, const double Z, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem-private.h:154
image-private.h
ConvertHCLpToRGB
MagickExport void ConvertHCLpToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
ConvertRGBToHCLp
MagickExport void ConvertRGBToHCLp(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *chroma, double *luma)
Definition: gem.c:927
MagickSQ2PI
#define MagickSQ2PI
Definition: image-private.h:43
ConvertHSIToRGB
MagickExport void ConvertHSIToRGB(const double hue, const double saturation, const double intensity, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:387
ConvertRGBToHCL
MagickExport void ConvertRGBToHCL(const Quantum, const Quantum, const Quantum, double *, double *, double *)
ExpandAffine
MagickExport double ExpandAffine(const AffineMatrix *affine)
Definition: gem.c:1451
SigmaUniform
#define SigmaUniform
TauGaussian
#define TauGaussian
Magick2PI
#define Magick2PI
Definition: image-private.h:34
gem-private.h
NoiseType
NoiseType
Definition: visual-effects.h:28
GaussianNoise
@ GaussianNoise
Definition: visual-effects.h:31
ConvertLCHabToRGB
MagickExport void ConvertLCHabToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
random_.h
quantum.h
ConvertRGBToXYZ
static void ConvertRGBToXYZ(const Quantum red, const Quantum green, const Quantum blue, double *X, double *Y, double *Z)
Definition: gem-private.h:86
ImpulseNoise
@ ImpulseNoise
Definition: visual-effects.h:33
GetOptimalKernelWidth2D
MagickExport size_t GetOptimalKernelWidth2D(const double, const double)
Definition: gem.c:1663
ConvertRGBToHSV
MagickExport void ConvertRGBToHSV(const Quantum, const Quantum, const Quantum, double *, double *, double *)
ClampToQuantum
static Quantum ClampToQuantum(const MagickRealType quantum)
Definition: quantum.h:88
ConvertHSIToRGB
MagickExport void ConvertHSIToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
ConvertLabToXYZ
static void ConvertLabToXYZ(const double L, const double a, const double b, double *X, double *Y, double *Z)
Definition: gem-private.h:34
ConvertRGBToLCHuv
MagickExport void ConvertRGBToLCHuv(const Quantum red, const Quantum green, const Quantum blue, double *luma, double *chroma, double *hue)
Definition: gem.c:1406
TraceEvent
@ TraceEvent
Definition: log.h:38
ConvertLuvToXYZ
static void ConvertLuvToXYZ(const double L, const double u, const double v, double *X, double *Y, double *Z)
Definition: gem-private.h:133
GenerateDifferentialNoise
MagickExport double GenerateDifferentialNoise(RandomInfo *, const Quantum, const NoiseType, const MagickRealType)
Definition: gem.c:1487
ConvertRGBToHSB
MagickExport void ConvertRGBToHSB(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *saturation, double *brightness)
Definition: gem.c:994
MagickMax
#define MagickMax(x, y)
Definition: image-private.h:36
MagickPI
#define MagickPI
Definition: image-private.h:40
PoissonNoise
@ PoissonNoise
Definition: visual-effects.h:35
ConvertHSBToRGB
MagickExport void ConvertHSBToRGB(const double hue, const double saturation, const double brightness, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:284
ConvertRGBToHWB
MagickExport void ConvertRGBToHWB(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *whiteness, double *blackness)
Definition: gem.c:1268
ConvertHSVToRGB
MagickExport void ConvertHSVToRGB(const double hue, const double saturation, const double value, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:570
resize.h
CastDoubleToLong
static ssize_t CastDoubleToLong(const double x)
Definition: image-private.h:53
ConvertXYZToLCHab
static void ConvertXYZToLCHab(const double X, const double Y, const double Z, double *luma, double *chroma, double *hue)
Definition: gem.c:1331
pixel-private.h
ConvertRGBToLCHab
MagickExport void ConvertRGBToLCHab(const Quantum red, const Quantum green, const Quantum blue, double *luma, double *chroma, double *hue)
Definition: gem.c:1345
image.h
ConvertHCLpToRGB
MagickExport void ConvertHCLpToRGB(const double hue, const double chroma, const double luma, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:179
ConvertHWBToRGB
MagickExport void ConvertHWBToRGB(const double hue, const double whiteness, const double blackness, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:677
ConvertLCHabToXYZ
static void ConvertLCHabToXYZ(const double luma, const double chroma, const double hue, double *X, double *Y, double *Z)
Definition: gem.c:754
SigmaPoisson
#define SigmaPoisson
ConvertXYZToLab
static void ConvertXYZToLab(const double X, const double Y, const double Z, double *L, double *a, double *b)
Definition: gem-private.h:105
GetPseudoRandomValue
MagickExport double GetPseudoRandomValue(RandomInfo *magick_restrict random_info)
Definition: random.c:582
ConvertRGBToLCHuv
MagickExport void ConvertRGBToLCHuv(const Quantum, const Quantum, const Quantum, double *, double *, double *)
Definition: gem.c:1406
_AffineMatrix::sy
double sy
Definition: geometry.h:101
GenerateDifferentialNoise
MagickExport double GenerateDifferentialNoise(RandomInfo *random_info, const Quantum pixel, const NoiseType noise_type, const MagickRealType attenuate)
Definition: gem.c:1487
_AffineMatrix::sx
double sx
Definition: geometry.h:98
MultiplicativeGaussianNoise
@ MultiplicativeGaussianNoise
Definition: visual-effects.h:32
color-private.h
draw.h
PerceptibleReciprocal
static double PerceptibleReciprocal(const double x)
Definition: pixel-accessor.h:124
ConvertRGBToHCLp
MagickExport void ConvertRGBToHCLp(const Quantum, const Quantum, const Quantum, double *, double *, double *)
QuantumRange
#define QuantumRange
Definition: magick-type.h:86
SigmaGaussian
#define SigmaGaussian
log.h
SigmaMultiplicativeGaussian
#define SigmaMultiplicativeGaussian
ConvertHSLToRGB
MagickExport void ConvertHSLToRGB(const double hue, const double saturation, const double lightness, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:460
GetOptimalKernelWidth1D
MagickExport size_t GetOptimalKernelWidth1D(const double, const double)
ConvertRGBToLCHab
MagickExport void ConvertRGBToLCHab(const Quantum, const Quantum, const Quantum, double *, double *, double *)
random_info
static RandomInfo * random_info
Definition: resource.c:112
studio.h
ConvertHSLToRGB
MagickExport void ConvertHSLToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
UniformNoise
@ UniformNoise
Definition: visual-effects.h:30
MagickRealType
MagickDoubleType MagickRealType
Definition: magick-type.h:125
ConvertHCLToRGB
MagickExport void ConvertHCLToRGB(const double hue, const double chroma, const double luma, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:86
SigmaRandom
#define SigmaRandom
GetOptimalKernelWidth
MagickExport size_t GetOptimalKernelWidth(const double radius, const double sigma)
Definition: gem.c:1704
ConvertRGBToHSI
MagickExport void ConvertRGBToHSI(const Quantum, const Quantum, const Quantum, double *, double *, double *)
transform.h
memory_.h
signature-private.h
ConvertRGBToHSL
MagickExport void ConvertRGBToHSL(const Quantum, const Quantum, const Quantum, double *, double *, double *)
ExpandAffine
MagickExport double ExpandAffine(const AffineMatrix *)
MagickEpsilon
#define MagickEpsilon
Definition: magick-type.h:115
ConvertLCHuvToXYZ
static void ConvertLCHuvToXYZ(const double luma, const double chroma, const double hue, double *X, double *Y, double *Z)
Definition: gem.c:807
ConvertXYZToLCHuv
static void ConvertXYZToLCHuv(const double X, const double Y, const double Z, double *luma, double *chroma, double *hue)
Definition: gem.c:1392
_AffineMatrix::ry
double ry
Definition: geometry.h:100
GetOptimalKernelWidth
MagickExport size_t GetOptimalKernelWidth(const double, const double)
ConvertRGBToHCL
MagickExport void ConvertRGBToHCL(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *chroma, double *luma)
Definition: gem.c:860
ConvertLCHuvToRGB
MagickExport void ConvertLCHuvToRGB(const double luma, const double chroma, const double hue, Quantum *red, Quantum *green, Quantum *blue)
Definition: gem.c:814
ConvertLCHuvToRGB
MagickExport void ConvertLCHuvToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
GetOptimalKernelWidth1D
MagickExport size_t GetOptimalKernelWidth1D(const double radius, const double sigma)
Definition: gem.c:1622
ConvertHCLToRGB
MagickExport void ConvertHCLToRGB(const double, const double, const double, Quantum *, Quantum *, Quantum *)
ConvertRGBToHSI
MagickExport void ConvertRGBToHSI(const Quantum red, const Quantum green, const Quantum blue, double *hue, double *saturation, double *intensity)
Definition: gem.c:1070
LaplacianNoise
@ LaplacianNoise
Definition: visual-effects.h:34
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:1420
MagickMin
#define MagickMin(x, y)
Definition: image-private.h:37
_AffineMatrix::rx
double rx
Definition: geometry.h:99
RandomNoise
@ RandomNoise
Definition: visual-effects.h:36
ConvertRGBToHWB
MagickExport void ConvertRGBToHWB(const Quantum, const Quantum, const Quantum, double *, double *, double *)
_RandomInfo
Definition: random.c:78
Quantum
unsigned short Quantum
Definition: magick-type.h:85