~cosme/ubuntu/precise/freeimage/freeimage-3.15.1

« back to all changes in this revision

Viewing changes to Source/FreeImage/Conversion8.cpp

  • Committer: Stefano Rivera
  • Date: 2010-07-24 15:35:51 UTC
  • mto: This revision was merged to the branch mainline in revision 5.
  • Revision ID: stefanor@ubuntu.com-20100724153551-6s3fth1653huk31a
Tags: upstream-3.13.1
ImportĀ upstreamĀ versionĀ 3.31.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
103
103
FreeImage_ConvertTo8Bits(FIBITMAP *dib) {
104
104
        if(!dib) return NULL;
105
105
 
106
 
        int bpp = FreeImage_GetBPP(dib);
 
106
        const int bpp = FreeImage_GetBPP(dib);
107
107
 
108
 
        FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(dib);
 
108
        const FREE_IMAGE_TYPE image_type = FreeImage_GetImageType(dib);
109
109
        if((image_type != FIT_BITMAP) && (image_type != FIT_UINT16)) {
110
110
                return NULL;
111
111
        }
112
112
 
113
113
        if(bpp != 8) {
114
 
                int width  = FreeImage_GetWidth(dib);
115
 
                int height = FreeImage_GetHeight(dib);
 
114
                const int width  = FreeImage_GetWidth(dib);
 
115
                const int height = FreeImage_GetHeight(dib);
116
116
                FIBITMAP *new_dib = FreeImage_Allocate(width, height, 8);
117
117
 
118
118
                if(new_dib == NULL) {
119
119
                        return NULL;
120
120
                }
121
121
 
 
122
                // copy metadata from src to dst
 
123
                FreeImage_CloneMetadata(new_dib, dib);
 
124
 
122
125
                // Build a greyscale palette (*always* needed for image processing)
123
126
 
124
127
                RGBQUAD *new_pal = FreeImage_GetPalette(new_dib);
155
158
 
156
159
                                        // Expand and copy the bitmap data
157
160
 
158
 
                                        for (int rows = 0; rows < height; rows++)
 
161
                                        for (int rows = 0; rows < height; rows++) {
159
162
                                                FreeImage_ConvertLine1To8(FreeImage_GetScanLine(new_dib, rows), FreeImage_GetScanLine(dib, rows), width);
160
 
                                                
 
163
                                        }
161
164
                                        return new_dib;
162
165
                                }
163
166
 
178
181
 
179
182
                                        // Expand and copy the bitmap data
180
183
 
181
 
                                        for (int rows = 0; rows < height; rows++)
 
184
                                        for (int rows = 0; rows < height; rows++) {
182
185
                                                FreeImage_ConvertLine4To8(FreeImage_GetScanLine(new_dib, rows), FreeImage_GetScanLine(dib, rows), width);                                       
183
 
 
 
186
                                        }
184
187
                                        return new_dib;
185
188
                                }
186
189
 
203
206
                                {
204
207
                                        // Expand and copy the bitmap data
205
208
 
206
 
                                        for (int rows = 0; rows < height; rows++)
 
209
                                        for (int rows = 0; rows < height; rows++) {
207
210
                                                FreeImage_ConvertLine24To8(FreeImage_GetScanLine(new_dib, rows), FreeImage_GetScanLine(dib, rows), width);                                      
208
 
 
 
211
                                        }
209
212
                                        return new_dib;
210
213
                                }
211
214
 
213
216
                                {
214
217
                                        // Expand and copy the bitmap data
215
218
 
216
 
                                        for (int rows = 0; rows < height; rows++)
 
219
                                        for (int rows = 0; rows < height; rows++) {
217
220
                                                FreeImage_ConvertLine32To8(FreeImage_GetScanLine(new_dib, rows), FreeImage_GetScanLine(dib, rows), width);
218
 
                                        
 
221
                                        }
219
222
                                        return new_dib;
220
223
                                }
221
224
                        }
222
225
 
223
226
                } else if(image_type == FIT_UINT16) {
224
227
 
225
 
                        unsigned src_pitch = FreeImage_GetPitch(dib);
226
 
                        unsigned dst_pitch = FreeImage_GetPitch(new_dib);
227
 
                        BYTE *src_bits = FreeImage_GetBits(dib);
 
228
                        const unsigned src_pitch = FreeImage_GetPitch(dib);
 
229
                        const unsigned dst_pitch = FreeImage_GetPitch(new_dib);
 
230
                        const BYTE *src_bits = FreeImage_GetBits(dib);
228
231
                        BYTE *dst_bits = FreeImage_GetBits(new_dib);
229
232
                        for (int rows = 0; rows < height; rows++) {
230
 
                                WORD *src_pixel = (WORD*)src_bits;
 
233
                                const WORD *src_pixel = (WORD*)src_bits;
231
234
                                BYTE *dst_pixel = (BYTE*)dst_bits;
232
235
                                for(int cols = 0; cols < width; cols++) {
233
236
                                        dst_pixel[cols] = (BYTE)(src_pixel[cols] >> 8);
249
252
FreeImage_ConvertToGreyscale(FIBITMAP *dib) {
250
253
        if(!dib) return NULL;
251
254
 
252
 
        FREE_IMAGE_COLOR_TYPE color_type = FreeImage_GetColorType(dib);
253
 
        int bpp = FreeImage_GetBPP(dib);
 
255
        const FREE_IMAGE_COLOR_TYPE color_type = FreeImage_GetColorType(dib);
 
256
        const int bpp = FreeImage_GetBPP(dib);
254
257
 
255
258
        if((color_type == FIC_PALETTE) || (color_type == FIC_MINISWHITE)) {
256
 
                int width  = FreeImage_GetWidth(dib);
257
 
                int height = FreeImage_GetHeight(dib);
 
259
                const int width  = FreeImage_GetWidth(dib);
 
260
                const int height = FreeImage_GetHeight(dib);
258
261
                FIBITMAP *new_dib = FreeImage_Allocate(width, height, 8);
259
262
 
260
263
                if(new_dib == NULL) {
261
264
                        return NULL;
262
265
                }
263
266
 
 
267
                // copy metadata from src to dst
 
268
                FreeImage_CloneMetadata(new_dib, dib);
 
269
 
264
270
                // Build a greyscale palette
265
271
 
266
272
                RGBQUAD *new_pal = FreeImage_GetPalette(new_dib);