pixel.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. /*
  2. Copyright 1999 ImageMagick Studio LLC, a non-profit organization
  3. dedicated to making software imaging solutions freely available.
  4. You may not use this file except in compliance with the License. You may
  5. obtain a copy of the License at
  6. https://imagemagick.org/script/license.php
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. MagickCore image constitute methods.
  13. */
  14. #ifndef MAGICKCORE_PIXEL_H
  15. #define MAGICKCORE_PIXEL_H
  16. #include "magick/colorspace.h"
  17. #include "magick/constitute.h"
  18. #if defined(__cplusplus) || defined(c_plusplus)
  19. extern "C" {
  20. #endif
  21. /*
  22. Pixel enum declarations.
  23. */
  24. typedef enum
  25. {
  26. UndefinedInterpolatePixel,
  27. AverageInterpolatePixel, /* Average 4 nearest neighbours */
  28. BicubicInterpolatePixel, /* Catmull-Rom interpolation */
  29. BilinearInterpolatePixel, /* Triangular filter interpolation */
  30. FilterInterpolatePixel, /* Use resize filter - (very slow) */
  31. IntegerInterpolatePixel, /* Integer (floor) interpolation */
  32. MeshInterpolatePixel, /* Triangular mesh interpolation */
  33. NearestNeighborInterpolatePixel, /* Nearest neighbour only */
  34. SplineInterpolatePixel, /* Cubic Spline (blurred) interpolation */
  35. Average9InterpolatePixel, /* Average 9 nearest neighbours */
  36. Average16InterpolatePixel, /* Average 16 nearest neighbours */
  37. BlendInterpolatePixel, /* blend of nearest 1, 2 or 4 pixels */
  38. BackgroundInterpolatePixel, /* just return background color */
  39. CatromInterpolatePixel /* Catmull-Rom interpolation */
  40. } InterpolatePixelMethod;
  41. typedef enum
  42. {
  43. PixelRed = 0,
  44. PixelCyan = 0,
  45. PixelGray = 0,
  46. PixelY = 0,
  47. PixelGreen = 1,
  48. PixelMagenta = 1,
  49. PixelCb = 1,
  50. PixelBlue = 2,
  51. PixelYellow = 2,
  52. PixelCr = 2,
  53. PixelAlpha = 3,
  54. PixelBlack = 4,
  55. PixelIndex = 4,
  56. MaskPixelComponent = 5
  57. } PixelComponent;
  58. typedef enum
  59. {
  60. UndefinedPixelIntensityMethod = 0,
  61. AveragePixelIntensityMethod,
  62. BrightnessPixelIntensityMethod,
  63. LightnessPixelIntensityMethod,
  64. Rec601LumaPixelIntensityMethod,
  65. Rec601LuminancePixelIntensityMethod,
  66. Rec709LumaPixelIntensityMethod,
  67. Rec709LuminancePixelIntensityMethod,
  68. RMSPixelIntensityMethod,
  69. MSPixelIntensityMethod
  70. } PixelIntensityMethod;
  71. /*
  72. Pixel typedef declarations.
  73. */
  74. typedef struct _DoublePixelPacket
  75. {
  76. double
  77. red,
  78. green,
  79. blue,
  80. opacity,
  81. index;
  82. } DoublePixelPacket;
  83. typedef struct _LongPixelPacket
  84. {
  85. unsigned int
  86. red,
  87. green,
  88. blue,
  89. opacity,
  90. index;
  91. } LongPixelPacket;
  92. typedef struct _MagickPixelPacket
  93. {
  94. ClassType
  95. storage_class;
  96. ColorspaceType
  97. colorspace;
  98. MagickBooleanType
  99. matte;
  100. double
  101. fuzz;
  102. size_t
  103. depth;
  104. MagickRealType
  105. red,
  106. green,
  107. blue,
  108. opacity,
  109. index;
  110. } MagickPixelPacket;
  111. typedef Quantum IndexPacket;
  112. typedef struct _PixelPacket
  113. {
  114. #if defined(MAGICKCORE_WORDS_BIGENDIAN)
  115. #define MAGICK_PIXEL_RGBA 1
  116. Quantum
  117. red,
  118. green,
  119. blue,
  120. opacity;
  121. #else
  122. #define MAGICK_PIXEL_BGRA 1
  123. Quantum
  124. blue,
  125. green,
  126. red,
  127. opacity;
  128. #endif
  129. } PixelPacket;
  130. typedef struct _QuantumPixelPacket
  131. {
  132. Quantum
  133. red,
  134. green,
  135. blue,
  136. opacity,
  137. index;
  138. } QuantumPixelPacket;
  139. typedef struct _CacheView
  140. CacheView_;
  141. /*
  142. Pixel method declarations.
  143. */
  144. extern MagickExport MagickBooleanType
  145. ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
  146. const size_t,const char *,const StorageType,void *,ExceptionInfo *),
  147. ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
  148. const size_t,const char *,const StorageType,const void *),
  149. InterpolateMagickPixelPacket(const Image *magick_restrict,const CacheView_ *,
  150. const InterpolatePixelMethod,const double,const double,MagickPixelPacket *,
  151. ExceptionInfo *);
  152. extern MagickExport MagickPixelPacket
  153. *CloneMagickPixelPacket(const MagickPixelPacket *);
  154. extern MagickExport MagickRealType
  155. DecodePixelGamma(const MagickRealType) magick_hot_spot,
  156. EncodePixelGamma(const MagickRealType) magick_hot_spot,
  157. GetMagickPixelIntensity(const Image *image,
  158. const MagickPixelPacket *magick_restrict) magick_hot_spot,
  159. GetPixelIntensity(const Image *image,const PixelPacket *magick_restrict)
  160. magick_hot_spot;
  161. extern MagickExport void
  162. ConformMagickPixelPacket(Image *,const MagickPixelPacket *,
  163. MagickPixelPacket *,ExceptionInfo *),
  164. GetMagickPixelPacket(const Image *,MagickPixelPacket *);
  165. #if defined(__cplusplus) || defined(c_plusplus)
  166. }
  167. #endif
  168. #endif