diff options
author | David Walter Seikel | 2013-01-13 18:54:10 +1000 |
---|---|---|
committer | David Walter Seikel | 2013-01-13 18:54:10 +1000 |
commit | 959831f4ef5a3e797f576c3de08cd65032c997ad (patch) | |
tree | e7351908be5995f0b325b2ebeaa02d5a34b82583 /libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h | |
parent | Add info about changes to Irrlicht. (diff) | |
download | SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.zip SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.gz SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.bz2 SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.xz |
Remove damned ancient DOS line endings from Irrlicht. Hopefully I did not go overboard.
Diffstat (limited to 'libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h')
-rw-r--r-- | libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h | 426 |
1 files changed, 213 insertions, 213 deletions
diff --git a/libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h b/libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h index 6e4d65a..9aa0af3 100644 --- a/libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h +++ b/libraries/irrlicht-1.8/source/Irrlicht/jpeglib/transupp.h | |||
@@ -1,213 +1,213 @@ | |||
1 | /* | 1 | /* |
2 | * transupp.h | 2 | * transupp.h |
3 | * | 3 | * |
4 | * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding. | 4 | * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding. |
5 | * This file is part of the Independent JPEG Group's software. | 5 | * This file is part of the Independent JPEG Group's software. |
6 | * For conditions of distribution and use, see the accompanying README file. | 6 | * For conditions of distribution and use, see the accompanying README file. |
7 | * | 7 | * |
8 | * This file contains declarations for image transformation routines and | 8 | * This file contains declarations for image transformation routines and |
9 | * other utility code used by the jpegtran sample application. These are | 9 | * other utility code used by the jpegtran sample application. These are |
10 | * NOT part of the core JPEG library. But we keep these routines separate | 10 | * NOT part of the core JPEG library. But we keep these routines separate |
11 | * from jpegtran.c to ease the task of maintaining jpegtran-like programs | 11 | * from jpegtran.c to ease the task of maintaining jpegtran-like programs |
12 | * that have other user interfaces. | 12 | * that have other user interfaces. |
13 | * | 13 | * |
14 | * NOTE: all the routines declared here have very specific requirements | 14 | * NOTE: all the routines declared here have very specific requirements |
15 | * about when they are to be executed during the reading and writing of the | 15 | * about when they are to be executed during the reading and writing of the |
16 | * source and destination files. See the comments in transupp.c, or see | 16 | * source and destination files. See the comments in transupp.c, or see |
17 | * jpegtran.c for an example of correct usage. | 17 | * jpegtran.c for an example of correct usage. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | /* If you happen not to want the image transform support, disable it here */ | 20 | /* If you happen not to want the image transform support, disable it here */ |
21 | #ifndef TRANSFORMS_SUPPORTED | 21 | #ifndef TRANSFORMS_SUPPORTED |
22 | #define TRANSFORMS_SUPPORTED 1 /* 0 disables transform code */ | 22 | #define TRANSFORMS_SUPPORTED 1 /* 0 disables transform code */ |
23 | #endif | 23 | #endif |
24 | 24 | ||
25 | /* | 25 | /* |
26 | * Although rotating and flipping data expressed as DCT coefficients is not | 26 | * Although rotating and flipping data expressed as DCT coefficients is not |
27 | * hard, there is an asymmetry in the JPEG format specification for images | 27 | * hard, there is an asymmetry in the JPEG format specification for images |
28 | * whose dimensions aren't multiples of the iMCU size. The right and bottom | 28 | * whose dimensions aren't multiples of the iMCU size. The right and bottom |
29 | * image edges are padded out to the next iMCU boundary with junk data; but | 29 | * image edges are padded out to the next iMCU boundary with junk data; but |
30 | * no padding is possible at the top and left edges. If we were to flip | 30 | * no padding is possible at the top and left edges. If we were to flip |
31 | * the whole image including the pad data, then pad garbage would become | 31 | * the whole image including the pad data, then pad garbage would become |
32 | * visible at the top and/or left, and real pixels would disappear into the | 32 | * visible at the top and/or left, and real pixels would disappear into the |
33 | * pad margins --- perhaps permanently, since encoders & decoders may not | 33 | * pad margins --- perhaps permanently, since encoders & decoders may not |
34 | * bother to preserve DCT blocks that appear to be completely outside the | 34 | * bother to preserve DCT blocks that appear to be completely outside the |
35 | * nominal image area. So, we have to exclude any partial iMCUs from the | 35 | * nominal image area. So, we have to exclude any partial iMCUs from the |
36 | * basic transformation. | 36 | * basic transformation. |
37 | * | 37 | * |
38 | * Transpose is the only transformation that can handle partial iMCUs at the | 38 | * Transpose is the only transformation that can handle partial iMCUs at the |
39 | * right and bottom edges completely cleanly. flip_h can flip partial iMCUs | 39 | * right and bottom edges completely cleanly. flip_h can flip partial iMCUs |
40 | * at the bottom, but leaves any partial iMCUs at the right edge untouched. | 40 | * at the bottom, but leaves any partial iMCUs at the right edge untouched. |
41 | * Similarly flip_v leaves any partial iMCUs at the bottom edge untouched. | 41 | * Similarly flip_v leaves any partial iMCUs at the bottom edge untouched. |
42 | * The other transforms are defined as combinations of these basic transforms | 42 | * The other transforms are defined as combinations of these basic transforms |
43 | * and process edge blocks in a way that preserves the equivalence. | 43 | * and process edge blocks in a way that preserves the equivalence. |
44 | * | 44 | * |
45 | * The "trim" option causes untransformable partial iMCUs to be dropped; | 45 | * The "trim" option causes untransformable partial iMCUs to be dropped; |
46 | * this is not strictly lossless, but it usually gives the best-looking | 46 | * this is not strictly lossless, but it usually gives the best-looking |
47 | * result for odd-size images. Note that when this option is active, | 47 | * result for odd-size images. Note that when this option is active, |
48 | * the expected mathematical equivalences between the transforms may not hold. | 48 | * the expected mathematical equivalences between the transforms may not hold. |
49 | * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim | 49 | * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim |
50 | * followed by -rot 180 -trim trims both edges.) | 50 | * followed by -rot 180 -trim trims both edges.) |
51 | * | 51 | * |
52 | * We also offer a lossless-crop option, which discards data outside a given | 52 | * We also offer a lossless-crop option, which discards data outside a given |
53 | * image region but losslessly preserves what is inside. Like the rotate and | 53 | * image region but losslessly preserves what is inside. Like the rotate and |
54 | * flip transforms, lossless crop is restricted by the JPEG format: the upper | 54 | * flip transforms, lossless crop is restricted by the JPEG format: the upper |
55 | * left corner of the selected region must fall on an iMCU boundary. If this | 55 | * left corner of the selected region must fall on an iMCU boundary. If this |
56 | * does not hold for the given crop parameters, we silently move the upper left | 56 | * does not hold for the given crop parameters, we silently move the upper left |
57 | * corner up and/or left to make it so, simultaneously increasing the region | 57 | * corner up and/or left to make it so, simultaneously increasing the region |
58 | * dimensions to keep the lower right crop corner unchanged. (Thus, the | 58 | * dimensions to keep the lower right crop corner unchanged. (Thus, the |
59 | * output image covers at least the requested region, but may cover more.) | 59 | * output image covers at least the requested region, but may cover more.) |
60 | * The adjustment of the region dimensions may be optionally disabled. | 60 | * The adjustment of the region dimensions may be optionally disabled. |
61 | * | 61 | * |
62 | * We also provide a lossless-resize option, which is kind of a lossless-crop | 62 | * We also provide a lossless-resize option, which is kind of a lossless-crop |
63 | * operation in the DCT coefficient block domain - it discards higher-order | 63 | * operation in the DCT coefficient block domain - it discards higher-order |
64 | * coefficients and losslessly preserves lower-order coefficients of a | 64 | * coefficients and losslessly preserves lower-order coefficients of a |
65 | * sub-block. | 65 | * sub-block. |
66 | * | 66 | * |
67 | * Rotate/flip transform, resize, and crop can be requested together in a | 67 | * Rotate/flip transform, resize, and crop can be requested together in a |
68 | * single invocation. The crop is applied last --- that is, the crop region | 68 | * single invocation. The crop is applied last --- that is, the crop region |
69 | * is specified in terms of the destination image after transform/resize. | 69 | * is specified in terms of the destination image after transform/resize. |
70 | * | 70 | * |
71 | * We also offer a "force to grayscale" option, which simply discards the | 71 | * We also offer a "force to grayscale" option, which simply discards the |
72 | * chrominance channels of a YCbCr image. This is lossless in the sense that | 72 | * chrominance channels of a YCbCr image. This is lossless in the sense that |
73 | * the luminance channel is preserved exactly. It's not the same kind of | 73 | * the luminance channel is preserved exactly. It's not the same kind of |
74 | * thing as the rotate/flip transformations, but it's convenient to handle it | 74 | * thing as the rotate/flip transformations, but it's convenient to handle it |
75 | * as part of this package, mainly because the transformation routines have to | 75 | * as part of this package, mainly because the transformation routines have to |
76 | * be aware of the option to know how many components to work on. | 76 | * be aware of the option to know how many components to work on. |
77 | */ | 77 | */ |
78 | 78 | ||
79 | 79 | ||
80 | /* Short forms of external names for systems with brain-damaged linkers. */ | 80 | /* Short forms of external names for systems with brain-damaged linkers. */ |
81 | 81 | ||
82 | #ifdef NEED_SHORT_EXTERNAL_NAMES | 82 | #ifdef NEED_SHORT_EXTERNAL_NAMES |
83 | #define jtransform_parse_crop_spec jTrParCrop | 83 | #define jtransform_parse_crop_spec jTrParCrop |
84 | #define jtransform_request_workspace jTrRequest | 84 | #define jtransform_request_workspace jTrRequest |
85 | #define jtransform_adjust_parameters jTrAdjust | 85 | #define jtransform_adjust_parameters jTrAdjust |
86 | #define jtransform_execute_transform jTrExec | 86 | #define jtransform_execute_transform jTrExec |
87 | #define jtransform_perfect_transform jTrPerfect | 87 | #define jtransform_perfect_transform jTrPerfect |
88 | #define jcopy_markers_setup jCMrkSetup | 88 | #define jcopy_markers_setup jCMrkSetup |
89 | #define jcopy_markers_execute jCMrkExec | 89 | #define jcopy_markers_execute jCMrkExec |
90 | #endif /* NEED_SHORT_EXTERNAL_NAMES */ | 90 | #endif /* NEED_SHORT_EXTERNAL_NAMES */ |
91 | 91 | ||
92 | 92 | ||
93 | /* | 93 | /* |
94 | * Codes for supported types of image transformations. | 94 | * Codes for supported types of image transformations. |
95 | */ | 95 | */ |
96 | 96 | ||
97 | typedef enum { | 97 | typedef enum { |
98 | JXFORM_NONE, /* no transformation */ | 98 | JXFORM_NONE, /* no transformation */ |
99 | JXFORM_FLIP_H, /* horizontal flip */ | 99 | JXFORM_FLIP_H, /* horizontal flip */ |
100 | JXFORM_FLIP_V, /* vertical flip */ | 100 | JXFORM_FLIP_V, /* vertical flip */ |
101 | JXFORM_TRANSPOSE, /* transpose across UL-to-LR axis */ | 101 | JXFORM_TRANSPOSE, /* transpose across UL-to-LR axis */ |
102 | JXFORM_TRANSVERSE, /* transpose across UR-to-LL axis */ | 102 | JXFORM_TRANSVERSE, /* transpose across UR-to-LL axis */ |
103 | JXFORM_ROT_90, /* 90-degree clockwise rotation */ | 103 | JXFORM_ROT_90, /* 90-degree clockwise rotation */ |
104 | JXFORM_ROT_180, /* 180-degree rotation */ | 104 | JXFORM_ROT_180, /* 180-degree rotation */ |
105 | JXFORM_ROT_270 /* 270-degree clockwise (or 90 ccw) */ | 105 | JXFORM_ROT_270 /* 270-degree clockwise (or 90 ccw) */ |
106 | } JXFORM_CODE; | 106 | } JXFORM_CODE; |
107 | 107 | ||
108 | /* | 108 | /* |
109 | * Codes for crop parameters, which can individually be unspecified, | 109 | * Codes for crop parameters, which can individually be unspecified, |
110 | * positive or negative for xoffset or yoffset, | 110 | * positive or negative for xoffset or yoffset, |
111 | * positive or forced for width or height. | 111 | * positive or forced for width or height. |
112 | */ | 112 | */ |
113 | 113 | ||
114 | typedef enum { | 114 | typedef enum { |
115 | JCROP_UNSET, | 115 | JCROP_UNSET, |
116 | JCROP_POS, | 116 | JCROP_POS, |
117 | JCROP_NEG, | 117 | JCROP_NEG, |
118 | JCROP_FORCE | 118 | JCROP_FORCE |
119 | } JCROP_CODE; | 119 | } JCROP_CODE; |
120 | 120 | ||
121 | /* | 121 | /* |
122 | * Transform parameters struct. | 122 | * Transform parameters struct. |
123 | * NB: application must not change any elements of this struct after | 123 | * NB: application must not change any elements of this struct after |
124 | * calling jtransform_request_workspace. | 124 | * calling jtransform_request_workspace. |
125 | */ | 125 | */ |
126 | 126 | ||
127 | typedef struct { | 127 | typedef struct { |
128 | /* Options: set by caller */ | 128 | /* Options: set by caller */ |
129 | JXFORM_CODE transform; /* image transform operator */ | 129 | JXFORM_CODE transform; /* image transform operator */ |
130 | boolean perfect; /* if TRUE, fail if partial MCUs are requested */ | 130 | boolean perfect; /* if TRUE, fail if partial MCUs are requested */ |
131 | boolean trim; /* if TRUE, trim partial MCUs as needed */ | 131 | boolean trim; /* if TRUE, trim partial MCUs as needed */ |
132 | boolean force_grayscale; /* if TRUE, convert color image to grayscale */ | 132 | boolean force_grayscale; /* if TRUE, convert color image to grayscale */ |
133 | boolean crop; /* if TRUE, crop source image */ | 133 | boolean crop; /* if TRUE, crop source image */ |
134 | 134 | ||
135 | /* Crop parameters: application need not set these unless crop is TRUE. | 135 | /* Crop parameters: application need not set these unless crop is TRUE. |
136 | * These can be filled in by jtransform_parse_crop_spec(). | 136 | * These can be filled in by jtransform_parse_crop_spec(). |
137 | */ | 137 | */ |
138 | JDIMENSION crop_width; /* Width of selected region */ | 138 | JDIMENSION crop_width; /* Width of selected region */ |
139 | JCROP_CODE crop_width_set; /* (forced disables adjustment) */ | 139 | JCROP_CODE crop_width_set; /* (forced disables adjustment) */ |
140 | JDIMENSION crop_height; /* Height of selected region */ | 140 | JDIMENSION crop_height; /* Height of selected region */ |
141 | JCROP_CODE crop_height_set; /* (forced disables adjustment) */ | 141 | JCROP_CODE crop_height_set; /* (forced disables adjustment) */ |
142 | JDIMENSION crop_xoffset; /* X offset of selected region */ | 142 | JDIMENSION crop_xoffset; /* X offset of selected region */ |
143 | JCROP_CODE crop_xoffset_set; /* (negative measures from right edge) */ | 143 | JCROP_CODE crop_xoffset_set; /* (negative measures from right edge) */ |
144 | JDIMENSION crop_yoffset; /* Y offset of selected region */ | 144 | JDIMENSION crop_yoffset; /* Y offset of selected region */ |
145 | JCROP_CODE crop_yoffset_set; /* (negative measures from bottom edge) */ | 145 | JCROP_CODE crop_yoffset_set; /* (negative measures from bottom edge) */ |
146 | 146 | ||
147 | /* Internal workspace: caller should not touch these */ | 147 | /* Internal workspace: caller should not touch these */ |
148 | int num_components; /* # of components in workspace */ | 148 | int num_components; /* # of components in workspace */ |
149 | jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */ | 149 | jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */ |
150 | JDIMENSION output_width; /* cropped destination dimensions */ | 150 | JDIMENSION output_width; /* cropped destination dimensions */ |
151 | JDIMENSION output_height; | 151 | JDIMENSION output_height; |
152 | JDIMENSION x_crop_offset; /* destination crop offsets measured in iMCUs */ | 152 | JDIMENSION x_crop_offset; /* destination crop offsets measured in iMCUs */ |
153 | JDIMENSION y_crop_offset; | 153 | JDIMENSION y_crop_offset; |
154 | int iMCU_sample_width; /* destination iMCU size */ | 154 | int iMCU_sample_width; /* destination iMCU size */ |
155 | int iMCU_sample_height; | 155 | int iMCU_sample_height; |
156 | } jpeg_transform_info; | 156 | } jpeg_transform_info; |
157 | 157 | ||
158 | 158 | ||
159 | #if TRANSFORMS_SUPPORTED | 159 | #if TRANSFORMS_SUPPORTED |
160 | 160 | ||
161 | /* Parse a crop specification (written in X11 geometry style) */ | 161 | /* Parse a crop specification (written in X11 geometry style) */ |
162 | EXTERN(boolean) jtransform_parse_crop_spec | 162 | EXTERN(boolean) jtransform_parse_crop_spec |
163 | JPP((jpeg_transform_info *info, const char *spec)); | 163 | JPP((jpeg_transform_info *info, const char *spec)); |
164 | /* Request any required workspace */ | 164 | /* Request any required workspace */ |
165 | EXTERN(boolean) jtransform_request_workspace | 165 | EXTERN(boolean) jtransform_request_workspace |
166 | JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info)); | 166 | JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info)); |
167 | /* Adjust output image parameters */ | 167 | /* Adjust output image parameters */ |
168 | EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters | 168 | EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters |
169 | JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, | 169 | JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, |
170 | jvirt_barray_ptr *src_coef_arrays, | 170 | jvirt_barray_ptr *src_coef_arrays, |
171 | jpeg_transform_info *info)); | 171 | jpeg_transform_info *info)); |
172 | /* Execute the actual transformation, if any */ | 172 | /* Execute the actual transformation, if any */ |
173 | EXTERN(void) jtransform_execute_transform | 173 | EXTERN(void) jtransform_execute_transform |
174 | JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, | 174 | JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, |
175 | jvirt_barray_ptr *src_coef_arrays, | 175 | jvirt_barray_ptr *src_coef_arrays, |
176 | jpeg_transform_info *info)); | 176 | jpeg_transform_info *info)); |
177 | /* Determine whether lossless transformation is perfectly | 177 | /* Determine whether lossless transformation is perfectly |
178 | * possible for a specified image and transformation. | 178 | * possible for a specified image and transformation. |
179 | */ | 179 | */ |
180 | EXTERN(boolean) jtransform_perfect_transform | 180 | EXTERN(boolean) jtransform_perfect_transform |
181 | JPP((JDIMENSION image_width, JDIMENSION image_height, | 181 | JPP((JDIMENSION image_width, JDIMENSION image_height, |
182 | int MCU_width, int MCU_height, | 182 | int MCU_width, int MCU_height, |
183 | JXFORM_CODE transform)); | 183 | JXFORM_CODE transform)); |
184 | 184 | ||
185 | /* jtransform_execute_transform used to be called | 185 | /* jtransform_execute_transform used to be called |
186 | * jtransform_execute_transformation, but some compilers complain about | 186 | * jtransform_execute_transformation, but some compilers complain about |
187 | * routine names that long. This macro is here to avoid breaking any | 187 | * routine names that long. This macro is here to avoid breaking any |
188 | * old source code that uses the original name... | 188 | * old source code that uses the original name... |
189 | */ | 189 | */ |
190 | #define jtransform_execute_transformation jtransform_execute_transform | 190 | #define jtransform_execute_transformation jtransform_execute_transform |
191 | 191 | ||
192 | #endif /* TRANSFORMS_SUPPORTED */ | 192 | #endif /* TRANSFORMS_SUPPORTED */ |
193 | 193 | ||
194 | 194 | ||
195 | /* | 195 | /* |
196 | * Support for copying optional markers from source to destination file. | 196 | * Support for copying optional markers from source to destination file. |
197 | */ | 197 | */ |
198 | 198 | ||
199 | typedef enum { | 199 | typedef enum { |
200 | JCOPYOPT_NONE, /* copy no optional markers */ | 200 | JCOPYOPT_NONE, /* copy no optional markers */ |
201 | JCOPYOPT_COMMENTS, /* copy only comment (COM) markers */ | 201 | JCOPYOPT_COMMENTS, /* copy only comment (COM) markers */ |
202 | JCOPYOPT_ALL /* copy all optional markers */ | 202 | JCOPYOPT_ALL /* copy all optional markers */ |
203 | } JCOPY_OPTION; | 203 | } JCOPY_OPTION; |
204 | 204 | ||
205 | #define JCOPYOPT_DEFAULT JCOPYOPT_COMMENTS /* recommended default */ | 205 | #define JCOPYOPT_DEFAULT JCOPYOPT_COMMENTS /* recommended default */ |
206 | 206 | ||
207 | /* Setup decompression object to save desired markers in memory */ | 207 | /* Setup decompression object to save desired markers in memory */ |
208 | EXTERN(void) jcopy_markers_setup | 208 | EXTERN(void) jcopy_markers_setup |
209 | JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option)); | 209 | JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option)); |
210 | /* Copy markers saved in the given source object to the destination object */ | 210 | /* Copy markers saved in the given source object to the destination object */ |
211 | EXTERN(void) jcopy_markers_execute | 211 | EXTERN(void) jcopy_markers_execute |
212 | JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, | 212 | JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, |
213 | JCOPY_OPTION option)); | 213 | JCOPY_OPTION option)); |