1
/* ************************************************************************** */
2
/* * For conditions of distribution and use, * */
3
/* * see copyright notice in libmng.h * */
4
/* ************************************************************************** */
6
/* * project : libmng * */
7
/* * file : libmng_pixels.h copyright (c) 2000-2004 G.Juyn * */
8
/* * version : 1.0.9 * */
10
/* * purpose : Pixel-row management routines (definition) * */
12
/* * author : G.Juyn * */
14
/* * comment : Definition of the pixel-row management routines * */
16
/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
17
/* * - changed strict-ANSI stuff * */
19
/* * 0.5.2 - 05/22/2000 - G.Juyn * */
20
/* * - added some JNG definitions * */
21
/* * - added delta-image row-processing routines * */
22
/* * 0.5.2 - 06/05/2000 - G.Juyn * */
23
/* * - added support for RGB8_A8 canvasstyle * */
25
/* * 0.5.3 - 06/16/2000 - G.Juyn * */
26
/* * - changed progressive-display processing * */
28
/* * 0.9.2 - 08/05/2000 - G.Juyn * */
29
/* * - changed file-prefixes * */
31
/* * 0.9.3 - 08/26/2000 - G.Juyn * */
32
/* * - added MAGN support * */
33
/* * 0.9.3 - 09/07/2000 - G.Juyn * */
34
/* * - added support for new filter_types * */
35
/* * 0.9.3 - 10/16/2000 - G.Juyn * */
36
/* * - added optional support for bKGD for PNG images * */
37
/* * - added support for JDAA * */
38
/* * 0.9.3 - 10/19/2000 - G.Juyn * */
39
/* * - implemented delayed delta-processing * */
41
/* * 0.9.4 - 1/18/2001 - G.Juyn * */
42
/* * - added "new" MAGN methods 3, 4 & 5 * */
44
/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
45
/* * - added BGRA8 canvas with premultiplied alpha * */
47
/* * 1.0.5 - 08/15/2002 - G.Juyn * */
48
/* * - completed PROM support * */
49
/* * - completed delta-image support * */
50
/* * 1.0.5 - 08/16/2002 - G.Juyn * */
51
/* * - completed MAGN support (16-bit functions) * */
52
/* * 1.0.5 - 08/19/2002 - G.Juyn * */
53
/* * - B597134 - libmng pollutes the linker namespace * */
54
/* * 1.0.5 - 09/22/2002 - G.Juyn * */
55
/* * - added bgrx8 canvas (filler byte) * */
56
/* * 1.0.5 - 09/23/2002 - G.Juyn * */
57
/* * - added compose over/under routines for PAST processing * */
58
/* * - added flip & tile routines for PAST processing * */
60
/* * 1.0.6 - 03/09/2003 - G.Juyn * */
61
/* * - hiding 12-bit JPEG stuff * */
62
/* * 1.0.6 - 05/11/2003 - G. Juyn * */
63
/* * - added conditionals around canvas update routines * */
64
/* * 1.0.6 - 06/09/2003 - G. R-P * */
65
/* * - added conditionals around 8-bit magn routines * */
66
/* * 1.0.6 - 07/07/2003 - G. R-P * */
67
/* * - removed conditionals around 8-bit magn routines * */
68
/* * - added conditionals around 16-bit and delta-PNG * */
69
/* * supporting code * */
70
/* * 1.0.6 - 07/29/2003 - G.R-P * */
71
/* * - added SKIPCHUNK conditionals around PAST chunk support * */
72
/* * 1.0.6 - 08/18/2003 - G.R-P * */
73
/* * - added conditionals around 1, 2, and 4-bit prototypes * */
75
/* * 1.0.7 - 11/27/2003 - R.A * */
76
/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
77
/* * 1.0.7 - 12/06/2003 - R.A * */
78
/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
79
/* * 1.0.7 - 01/25/2004 - J.S * */
80
/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
82
/* * 1.0.9 - 10/10/2004 - G.R-P. * */
83
/* * - added MNG_NO_1_2_4BIT_SUPPORT * */
84
/* * 1.0.9 - 10/14/2004 - G.Juyn * */
85
/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
87
/* ************************************************************************** */
89
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
90
#pragma option -A /* force ANSI-C */
93
#ifndef _libmng_pixels_h_
94
#define _libmng_pixels_h_
96
/* ************************************************************************** */
98
/* * Progressive display check - checks to see if progressive display is * */
99
/* * in order & indicates so * */
101
/* * The routine is called after a call to one of the display_xxx routines * */
102
/* * if appropriate * */
104
/* * The refresh is warrented in the read_chunk routine (mng_read.c) * */
105
/* * and only during read&display processing, since there's not much point * */
106
/* * doing it from memory! * */
108
/* ************************************************************************** */
110
mng_retcode mng_display_progressive_check (mng_datap pData);
112
/* ************************************************************************** */
114
/* * Display routines - convert rowdata (which is already color-corrected) * */
115
/* * to the output canvas, respecting any transparency information * */
117
/* ************************************************************************** */
119
#ifndef MNG_SKIPCANVAS_RGB8
120
mng_retcode mng_display_rgb8 (mng_datap pData);
122
#ifndef MNG_SKIPCANVAS_RGBA8
123
mng_retcode mng_display_rgba8 (mng_datap pData);
125
#ifndef MNG_SKIPCANVAS_RGBA8_PM
126
mng_retcode mng_display_rgba8_pm (mng_datap pData);
128
#ifndef MNG_SKIPCANVAS_ARGB8
129
mng_retcode mng_display_argb8 (mng_datap pData);
131
#ifndef MNG_SKIPCANVAS_ARGB8_PM
132
mng_retcode mng_display_argb8_pm (mng_datap pData);
134
#ifndef MNG_SKIPCANVAS_RGB8_A8
135
mng_retcode mng_display_rgb8_a8 (mng_datap pData);
137
#ifndef MNG_SKIPCANVAS_BGR8
138
mng_retcode mng_display_bgr8 (mng_datap pData);
140
#ifndef MNG_SKIPCANVAS_BGRX8
141
mng_retcode mng_display_bgrx8 (mng_datap pData);
143
#ifndef MNG_SKIPCANVAS_BGRA8
144
mng_retcode mng_display_bgra8 (mng_datap pData);
146
#ifndef MNG_SKIPCANVAS_BGRA8_PM
147
mng_retcode mng_display_bgra8_pm (mng_datap pData);
149
#ifndef MNG_SKIPCANVAS_ABGR8
150
mng_retcode mng_display_abgr8 (mng_datap pData);
152
#ifndef MNG_SKIPCANVAS_ABGR8_PM
153
mng_retcode mng_display_abgr8_pm (mng_datap pData);
155
#ifndef MNG_SKIPCANVAS_RGB565
156
mng_retcode mng_display_rgb565 (mng_datap pData);
158
#ifndef MNG_SKIPCANVAS_RGBA565
159
mng_retcode mng_display_rgba565 (mng_datap pData);
161
#ifndef MNG_SKIPCANVAS_BGR565
162
mng_retcode mng_display_bgr565 (mng_datap pData);
164
#ifndef MNG_SKIPCANVAS_BGRA565
165
mng_retcode mng_display_bgra565 (mng_datap pData);
167
#ifndef MNG_SKIPCANVAS_BGR565_A8
168
mng_retcode mng_display_bgr565_a8 (mng_datap pData);
171
/* ************************************************************************** */
173
/* * Background restore routines - restore the background with info from * */
174
/* * the BACK and/or bKGD chunk and/or the app's background canvas * */
176
/* ************************************************************************** */
178
mng_retcode mng_restore_bkgd_backimage (mng_datap pData);
179
mng_retcode mng_restore_bkgd_backcolor (mng_datap pData);
180
mng_retcode mng_restore_bkgd_bkgd (mng_datap pData);
181
mng_retcode mng_restore_bkgd_bgcolor (mng_datap pData);
182
#ifndef MNG_SKIPCANVAS_RGB8
183
mng_retcode mng_restore_bkgd_rgb8 (mng_datap pData);
185
#ifndef MNG_SKIPCANVAS_BGR8
186
mng_retcode mng_restore_bkgd_bgr8 (mng_datap pData);
188
#ifndef MNG_SKIPCANVAS_BGRX8
189
mng_retcode mng_restore_bkgd_bgrx8 (mng_datap pData);
191
#ifndef MNG_SKIPCANVAS_RGB565
192
mng_retcode mng_restore_bkgd_rgb565 (mng_datap pData);
194
#ifndef MNG_SKIPCANVAS_BGR565
195
mng_retcode mng_restore_bkgd_bgr565 (mng_datap pData);
198
/* ************************************************************************** */
200
/* * Row retrieval routines - retrieve processed & uncompressed row-data * */
201
/* * from the current "object" * */
203
/* ************************************************************************** */
205
mng_retcode mng_retrieve_g8 (mng_datap pData);
206
mng_retcode mng_retrieve_rgb8 (mng_datap pData);
207
mng_retcode mng_retrieve_idx8 (mng_datap pData);
208
mng_retcode mng_retrieve_ga8 (mng_datap pData);
209
mng_retcode mng_retrieve_rgba8 (mng_datap pData);
210
#ifndef MNG_NO_16BIT_SUPPORT
211
mng_retcode mng_retrieve_g16 (mng_datap pData);
212
mng_retcode mng_retrieve_ga16 (mng_datap pData);
213
mng_retcode mng_retrieve_rgb16 (mng_datap pData);
214
mng_retcode mng_retrieve_rgba16 (mng_datap pData);
217
/* ************************************************************************** */
219
/* * Row storage routines - store processed & uncompressed row-data * */
220
/* * into the current "object" * */
222
/* ************************************************************************** */
224
#ifndef MNG_NO_1_2_4BIT_SUPPORT
225
mng_retcode mng_store_g1 (mng_datap pData);
226
mng_retcode mng_store_g2 (mng_datap pData);
227
mng_retcode mng_store_g4 (mng_datap pData);
228
mng_retcode mng_store_idx1 (mng_datap pData);
229
mng_retcode mng_store_idx2 (mng_datap pData);
230
mng_retcode mng_store_idx4 (mng_datap pData);
232
mng_retcode mng_store_idx8 (mng_datap pData);
233
mng_retcode mng_store_rgb8 (mng_datap pData);
234
mng_retcode mng_store_g8 (mng_datap pData);
235
mng_retcode mng_store_ga8 (mng_datap pData);
236
mng_retcode mng_store_rgba8 (mng_datap pData);
237
#ifndef MNG_NO_16BIT_SUPPORT
238
mng_retcode mng_store_g16 (mng_datap pData);
239
mng_retcode mng_store_ga16 (mng_datap pData);
240
mng_retcode mng_store_rgb16 (mng_datap pData);
241
mng_retcode mng_store_rgba16 (mng_datap pData);
244
/* ************************************************************************** */
246
/* * Row storage routines (JPEG) - store processed & uncompressed row-data * */
247
/* * into the current "object" * */
249
/* ************************************************************************** */
251
#ifdef MNG_INCLUDE_JNG
252
mng_retcode mng_store_jpeg_g8 (mng_datap pData);
253
mng_retcode mng_store_jpeg_rgb8 (mng_datap pData);
254
mng_retcode mng_store_jpeg_ga8 (mng_datap pData);
255
mng_retcode mng_store_jpeg_rgba8 (mng_datap pData);
257
#ifdef MNG_SUPPORT_JPEG12
258
mng_retcode mng_store_jpeg_g12 (mng_datap pData);
259
mng_retcode mng_store_jpeg_rgb12 (mng_datap pData);
260
mng_retcode mng_store_jpeg_ga12 (mng_datap pData);
261
mng_retcode mng_store_jpeg_rgba12 (mng_datap pData);
264
mng_retcode mng_store_jpeg_g8_alpha (mng_datap pData);
265
mng_retcode mng_store_jpeg_rgb8_alpha (mng_datap pData);
267
#ifndef MNG_NO_1_2_4BIT_SUPPORT
268
mng_retcode mng_store_jpeg_g8_a1 (mng_datap pData);
269
mng_retcode mng_store_jpeg_g8_a2 (mng_datap pData);
270
mng_retcode mng_store_jpeg_g8_a4 (mng_datap pData);
272
mng_retcode mng_store_jpeg_g8_a8 (mng_datap pData);
273
#ifndef MNG_NO_16BIT_SUPPORT
274
mng_retcode mng_store_jpeg_g8_a16 (mng_datap pData);
277
#ifndef MNG_NO_1_2_4BIT_SUPPORT
278
mng_retcode mng_store_jpeg_rgb8_a1 (mng_datap pData);
279
mng_retcode mng_store_jpeg_rgb8_a2 (mng_datap pData);
280
mng_retcode mng_store_jpeg_rgb8_a4 (mng_datap pData);
282
mng_retcode mng_store_jpeg_rgb8_a8 (mng_datap pData);
283
#ifndef MNG_NO_16BIT_SUPPORT
284
mng_retcode mng_store_jpeg_rgb8_a16 (mng_datap pData);
287
#ifdef MNG_SUPPORT_JPEG12
288
#ifndef MNG_NO_1_2_4BIT_SUPPORT
289
mng_retcode mng_store_jpeg_g12_a1 (mng_datap pData);
290
mng_retcode mng_store_jpeg_g12_a2 (mng_datap pData);
291
mng_retcode mng_store_jpeg_g12_a4 (mng_datap pData);
293
mng_retcode mng_store_jpeg_g12_a8 (mng_datap pData);
294
#ifndef MNG_NO_16BIT_SUPPORT
295
mng_retcode mng_store_jpeg_g12_a16 (mng_datap pData);
298
#ifndef MNG_NO_1_2_4BIT_SUPPORT
299
mng_retcode mng_store_jpeg_rgb12_a1 (mng_datap pData);
300
mng_retcode mng_store_jpeg_rgb12_a2 (mng_datap pData);
301
mng_retcode mng_store_jpeg_rgb12_a4 (mng_datap pData);
303
mng_retcode mng_store_jpeg_rgb12_a8 (mng_datap pData);
304
#ifndef MNG_NO_16BIT_SUPPORT
305
mng_retcode mng_store_jpeg_rgb12_a16 (mng_datap pData);
310
/* ************************************************************************** */
312
/* * Delta-image row routines - apply the processed & uncompressed row-data * */
313
/* * onto the target "object" * */
315
/* ************************************************************************** */
317
#ifndef MNG_NO_DELTA_PNG
318
#ifndef MNG_NO_1_2_4BIT_SUPPORT
319
mng_retcode mng_delta_g1 (mng_datap pData);
320
mng_retcode mng_delta_g2 (mng_datap pData);
321
mng_retcode mng_delta_g4 (mng_datap pData);
323
mng_retcode mng_delta_g8 (mng_datap pData);
324
mng_retcode mng_delta_g16 (mng_datap pData);
325
mng_retcode mng_delta_rgb8 (mng_datap pData);
326
#ifndef MNG_NO_16BIT_SUPPORT
327
mng_retcode mng_delta_rgb16 (mng_datap pData);
329
#ifndef MNG_NO_1_2_4BIT_SUPPORT
330
mng_retcode mng_delta_idx1 (mng_datap pData);
331
mng_retcode mng_delta_idx2 (mng_datap pData);
332
mng_retcode mng_delta_idx4 (mng_datap pData);
334
mng_retcode mng_delta_idx8 (mng_datap pData);
335
mng_retcode mng_delta_ga8 (mng_datap pData);
336
mng_retcode mng_delta_rgba8 (mng_datap pData);
337
#ifndef MNG_NO_16BIT_SUPPORT
338
mng_retcode mng_delta_ga16 (mng_datap pData);
339
mng_retcode mng_delta_rgba16 (mng_datap pData);
342
/* ************************************************************************** */
344
/* * Delta-image row routines - apply the source row onto the target * */
346
/* ************************************************************************** */
348
#ifndef MNG_NO_1_2_4BIT_SUPPORT
349
mng_retcode mng_delta_g1_g1 (mng_datap pData);
350
mng_retcode mng_delta_g2_g2 (mng_datap pData);
351
mng_retcode mng_delta_g4_g4 (mng_datap pData);
353
mng_retcode mng_delta_g8_g8 (mng_datap pData);
354
#ifndef MNG_NO_16BIT_SUPPORT
355
mng_retcode mng_delta_g16_g16 (mng_datap pData);
357
mng_retcode mng_delta_ga8_ga8 (mng_datap pData);
358
mng_retcode mng_delta_ga8_g8 (mng_datap pData);
359
mng_retcode mng_delta_ga8_a8 (mng_datap pData);
360
mng_retcode mng_delta_rgba8_rgb8 (mng_datap pData);
361
mng_retcode mng_delta_rgba8_a8 (mng_datap pData);
362
#ifndef MNG_NO_16BIT_SUPPORT
363
mng_retcode mng_delta_ga16_ga16 (mng_datap pData);
364
mng_retcode mng_delta_ga16_g16 (mng_datap pData);
365
mng_retcode mng_delta_ga16_a16 (mng_datap pData);
366
mng_retcode mng_delta_rgba16_a16 (mng_datap pData);
367
mng_retcode mng_delta_rgba16_rgb16 (mng_datap pData);
369
#endif /* MNG_NO_DELTA_PNG */
370
mng_retcode mng_delta_rgb8_rgb8 (mng_datap pData); /* Used for PAST */
371
mng_retcode mng_delta_rgba8_rgba8 (mng_datap pData);
372
#ifndef MNG_NO_16BIT_SUPPORT
373
mng_retcode mng_delta_rgb16_rgb16 (mng_datap pData);
374
mng_retcode mng_delta_rgba16_rgba16 (mng_datap pData);
377
#ifndef MNG_NO_DELTA_PNG
378
/* ************************************************************************** */
380
/* * Delta-image row routines - scale the delta to bitdepth of target * */
382
/* ************************************************************************** */
384
#ifndef MNG_NO_1_2_4BIT_SUPPORT
385
mng_retcode mng_scale_g1_g2 (mng_datap pData);
386
mng_retcode mng_scale_g1_g4 (mng_datap pData);
387
mng_retcode mng_scale_g1_g8 (mng_datap pData);
388
mng_retcode mng_scale_g2_g4 (mng_datap pData);
389
mng_retcode mng_scale_g2_g8 (mng_datap pData);
390
mng_retcode mng_scale_g4_g8 (mng_datap pData);
392
#ifndef MNG_NO_16BIT_SUPPORT
393
#ifndef MNG_NO_1_2_4BIT_SUPPORT
394
mng_retcode mng_scale_g1_g16 (mng_datap pData);
395
mng_retcode mng_scale_g2_g16 (mng_datap pData);
396
mng_retcode mng_scale_g4_g16 (mng_datap pData);
398
mng_retcode mng_scale_g8_g16 (mng_datap pData);
399
mng_retcode mng_scale_ga8_ga16 (mng_datap pData);
400
mng_retcode mng_scale_rgb8_rgb16 (mng_datap pData);
401
mng_retcode mng_scale_rgba8_rgba16 (mng_datap pData);
404
#ifndef MNG_NO_1_2_4BIT_SUPPORT
405
mng_retcode mng_scale_g2_g1 (mng_datap pData);
406
mng_retcode mng_scale_g4_g1 (mng_datap pData);
407
mng_retcode mng_scale_g8_g1 (mng_datap pData);
408
mng_retcode mng_scale_g4_g2 (mng_datap pData);
409
mng_retcode mng_scale_g8_g2 (mng_datap pData);
410
mng_retcode mng_scale_g8_g4 (mng_datap pData);
412
#ifndef MNG_NO_16BIT_SUPPORT
413
#ifndef MNG_NO_1_2_4BIT_SUPPORT
414
mng_retcode mng_scale_g16_g1 (mng_datap pData);
415
mng_retcode mng_scale_g16_g2 (mng_datap pData);
416
mng_retcode mng_scale_g16_g4 (mng_datap pData);
418
mng_retcode mng_scale_g16_g8 (mng_datap pData);
419
mng_retcode mng_scale_ga16_ga8 (mng_datap pData);
420
mng_retcode mng_scale_rgb16_rgb8 (mng_datap pData);
421
mng_retcode mng_scale_rgba16_rgba8 (mng_datap pData);
423
#endif /* MNG_NO_DELTA_PNG */
425
/* ************************************************************************** */
427
/* * Delta-image bit routines - promote bit_depth * */
429
/* ************************************************************************** */
431
mng_uint8 mng_promote_replicate_1_2 (mng_uint8 iB);
432
mng_uint8 mng_promote_replicate_1_4 (mng_uint8 iB);
433
mng_uint8 mng_promote_replicate_1_8 (mng_uint8 iB);
434
mng_uint8 mng_promote_replicate_2_4 (mng_uint8 iB);
435
mng_uint8 mng_promote_replicate_2_8 (mng_uint8 iB);
436
mng_uint8 mng_promote_replicate_4_8 (mng_uint8 iB);
437
#ifndef MNG_NO_16BIT_SUPPORT
438
mng_uint16 mng_promote_replicate_1_16 (mng_uint8 iB);
439
mng_uint16 mng_promote_replicate_2_16 (mng_uint8 iB);
440
mng_uint16 mng_promote_replicate_4_16 (mng_uint8 iB);
441
mng_uint16 mng_promote_replicate_8_16 (mng_uint8 iB);
444
/* ************************************************************************** */
446
#ifndef MNG_NO_DELTA_PNG
447
mng_uint8 mng_promote_zerofill_1_2 (mng_uint8 iB);
448
mng_uint8 mng_promote_zerofill_1_4 (mng_uint8 iB);
449
mng_uint8 mng_promote_zerofill_1_8 (mng_uint8 iB);
450
mng_uint8 mng_promote_zerofill_2_4 (mng_uint8 iB);
451
mng_uint8 mng_promote_zerofill_2_8 (mng_uint8 iB);
452
mng_uint8 mng_promote_zerofill_4_8 (mng_uint8 iB);
453
#ifndef MNG_NO_16BIT_SUPPORT
454
mng_uint16 mng_promote_zerofill_1_16 (mng_uint8 iB);
455
mng_uint16 mng_promote_zerofill_2_16 (mng_uint8 iB);
456
mng_uint16 mng_promote_zerofill_4_16 (mng_uint8 iB);
457
mng_uint16 mng_promote_zerofill_8_16 (mng_uint8 iB);
459
#endif /* MNG_NO_DELTA_PNG */
461
/* ************************************************************************** */
463
/* * Delta-image row routines - promote color_type * */
465
/* ************************************************************************** */
467
mng_retcode mng_promote_g8_g8 (mng_datap pData);
468
#ifndef MNG_NO_16BIT_SUPPORT
469
mng_retcode mng_promote_g8_g16 (mng_datap pData);
470
mng_retcode mng_promote_g16_g16 (mng_datap pData);
473
mng_retcode mng_promote_g8_ga8 (mng_datap pData);
474
#ifndef MNG_NO_16BIT_SUPPORT
475
mng_retcode mng_promote_g8_ga16 (mng_datap pData);
476
mng_retcode mng_promote_g16_ga16 (mng_datap pData);
479
mng_retcode mng_promote_g8_rgb8 (mng_datap pData);
480
#ifndef MNG_NO_16BIT_SUPPORT
481
mng_retcode mng_promote_g8_rgb16 (mng_datap pData);
482
mng_retcode mng_promote_g16_rgb16 (mng_datap pData);
485
mng_retcode mng_promote_g8_rgba8 (mng_datap pData);
486
#ifndef MNG_NO_16BIT_SUPPORT
487
mng_retcode mng_promote_g8_rgba16 (mng_datap pData);
488
mng_retcode mng_promote_g16_rgba16 (mng_datap pData);
490
mng_retcode mng_promote_ga8_ga16 (mng_datap pData);
493
mng_retcode mng_promote_ga8_rgba8 (mng_datap pData);
494
#ifndef MNG_NO_16BIT_SUPPORT
495
mng_retcode mng_promote_ga8_rgba16 (mng_datap pData);
496
mng_retcode mng_promote_ga16_rgba16 (mng_datap pData);
499
#ifndef MNG_NO_16BIT_SUPPORT
500
mng_retcode mng_promote_rgb8_rgb16 (mng_datap pData);
503
mng_retcode mng_promote_rgb8_rgba8 (mng_datap pData);
504
#ifndef MNG_NO_16BIT_SUPPORT
505
mng_retcode mng_promote_rgb8_rgba16 (mng_datap pData);
506
mng_retcode mng_promote_rgb16_rgba16 (mng_datap pData);
509
mng_retcode mng_promote_idx8_rgb8 (mng_datap pData);
510
#ifndef MNG_NO_16BIT_SUPPORT
511
mng_retcode mng_promote_idx8_rgb16 (mng_datap pData);
514
mng_retcode mng_promote_idx8_rgba8 (mng_datap pData);
515
#ifndef MNG_NO_16BIT_SUPPORT
516
mng_retcode mng_promote_idx8_rgba16 (mng_datap pData);
518
mng_retcode mng_promote_rgba8_rgba16 (mng_datap pData);
521
/* ************************************************************************** */
523
/* * Row processing routines - convert uncompressed data from zlib to * */
524
/* * managable row-data which serves as input to the color-management * */
527
/* ************************************************************************** */
529
#ifndef MNG_NO_1_2_4BIT_SUPPORT
530
mng_retcode mng_process_g1 (mng_datap pData);
531
mng_retcode mng_process_g2 (mng_datap pData);
532
mng_retcode mng_process_g4 (mng_datap pData);
534
mng_retcode mng_process_g8 (mng_datap pData);
535
mng_retcode mng_process_rgb8 (mng_datap pData);
536
#ifndef MNG_NO_1_2_4BIT_SUPPORT
537
mng_retcode mng_process_idx1 (mng_datap pData);
538
mng_retcode mng_process_idx2 (mng_datap pData);
539
mng_retcode mng_process_idx4 (mng_datap pData);
541
mng_retcode mng_process_idx8 (mng_datap pData);
542
mng_retcode mng_process_ga8 (mng_datap pData);
543
mng_retcode mng_process_rgba8 (mng_datap pData);
544
#ifndef MNG_NO_16BIT_SUPPORT
545
mng_retcode mng_process_g16 (mng_datap pData);
546
mng_retcode mng_process_ga16 (mng_datap pData);
547
mng_retcode mng_process_rgb16 (mng_datap pData);
548
mng_retcode mng_process_rgba16 (mng_datap pData);
551
/* ************************************************************************** */
553
/* * Row processing initialization routines - set up the variables needed * */
554
/* * to process uncompressed row-data * */
556
/* ************************************************************************** */
558
#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
559
#ifndef MNG_NO_1_2_4BIT_SUPPORT
560
mng_retcode mng_init_g1_i (mng_datap pData);
561
mng_retcode mng_init_g2_i (mng_datap pData);
562
mng_retcode mng_init_g4_i (mng_datap pData);
564
mng_retcode mng_init_g8_i (mng_datap pData);
565
mng_retcode mng_init_rgb8_i (mng_datap pData);
566
#ifndef MNG_NO_1_2_4BIT_SUPPORT
567
mng_retcode mng_init_idx1_i (mng_datap pData);
568
mng_retcode mng_init_idx2_i (mng_datap pData);
569
mng_retcode mng_init_idx4_i (mng_datap pData);
571
mng_retcode mng_init_idx8_i (mng_datap pData);
572
mng_retcode mng_init_ga8_i (mng_datap pData);
573
mng_retcode mng_init_rgba8_i (mng_datap pData);
574
#ifndef MNG_NO_1_2_4BIT_SUPPORT
575
mng_retcode mng_init_g1_ni (mng_datap pData);
576
mng_retcode mng_init_g2_ni (mng_datap pData);
577
mng_retcode mng_init_g4_ni (mng_datap pData);
579
mng_retcode mng_init_g8_ni (mng_datap pData);
580
mng_retcode mng_init_rgb8_ni (mng_datap pData);
581
#ifndef MNG_NO_1_2_4BIT_SUPPORT
582
mng_retcode mng_init_idx1_ni (mng_datap pData);
583
mng_retcode mng_init_idx2_ni (mng_datap pData);
584
mng_retcode mng_init_idx4_ni (mng_datap pData);
586
mng_retcode mng_init_idx8_ni (mng_datap pData);
587
mng_retcode mng_init_ga8_ni (mng_datap pData);
588
mng_retcode mng_init_rgba8_ni (mng_datap pData);
589
#ifndef MNG_NO_16BIT_SUPPORT
590
mng_retcode mng_init_g16_i (mng_datap pData);
591
mng_retcode mng_init_rgb16_i (mng_datap pData);
592
mng_retcode mng_init_ga16_i (mng_datap pData);
593
mng_retcode mng_init_rgba16_i (mng_datap pData);
594
mng_retcode mng_init_g16_ni (mng_datap pData);
595
mng_retcode mng_init_rgb16_ni (mng_datap pData);
596
mng_retcode mng_init_ga16_ni (mng_datap pData);
597
mng_retcode mng_init_rgba16_ni (mng_datap pData);
601
/* ************************************************************************** */
603
/* * Row processing initialization routines (JPEG) - set up the variables * */
604
/* * needed to process uncompressed row-data * */
606
/* ************************************************************************** */
608
#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
609
#ifdef MNG_INCLUDE_JNG
610
#ifndef MNG_NO_1_2_4BIT_SUPPORT
611
mng_retcode mng_init_jpeg_a1_ni (mng_datap pData);
612
mng_retcode mng_init_jpeg_a2_ni (mng_datap pData);
613
mng_retcode mng_init_jpeg_a4_ni (mng_datap pData);
615
mng_retcode mng_init_jpeg_a8_ni (mng_datap pData);
616
#ifndef MNG_NO_16BIT_SUPPORT
617
mng_retcode mng_init_jpeg_a16_ni (mng_datap pData);
622
/* ************************************************************************** */
624
/* * General row processing routines * */
626
/* ************************************************************************** */
628
mng_retcode mng_init_rowproc (mng_datap pData);
629
mng_retcode mng_next_row (mng_datap pData);
630
#ifdef MNG_INCLUDE_JNG
631
mng_retcode mng_next_jpeg_alpharow (mng_datap pData);
632
mng_retcode mng_next_jpeg_row (mng_datap pData);
634
mng_retcode mng_cleanup_rowproc (mng_datap pData);
636
/* ************************************************************************** */
638
/* * Magnification row routines - apply magnification transforms * */
640
/* ************************************************************************** */
642
#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
643
mng_retcode mng_magnify_g8_x1 (mng_datap pData,
649
mng_uint8p pDstline);
650
mng_retcode mng_magnify_g8_x2 (mng_datap pData,
656
mng_uint8p pDstline);
657
mng_retcode mng_magnify_g8_x3 (mng_datap pData,
663
mng_uint8p pDstline);
664
mng_retcode mng_magnify_rgb8_x1 (mng_datap pData,
670
mng_uint8p pDstline);
671
mng_retcode mng_magnify_rgb8_x2 (mng_datap pData,
677
mng_uint8p pDstline);
678
mng_retcode mng_magnify_rgb8_x3 (mng_datap pData,
684
mng_uint8p pDstline);
685
mng_retcode mng_magnify_ga8_x1 (mng_datap pData,
691
mng_uint8p pDstline);
692
mng_retcode mng_magnify_ga8_x2 (mng_datap pData,
698
mng_uint8p pDstline);
699
mng_retcode mng_magnify_ga8_x3 (mng_datap pData,
705
mng_uint8p pDstline);
706
mng_retcode mng_magnify_ga8_x4 (mng_datap pData,
712
mng_uint8p pDstline);
713
mng_retcode mng_magnify_ga8_x5 (mng_datap pData,
719
mng_uint8p pDstline);
721
mng_retcode mng_magnify_rgba8_x1 (mng_datap pData,
727
mng_uint8p pDstline);
728
mng_retcode mng_magnify_rgba8_x2 (mng_datap pData,
734
mng_uint8p pDstline);
735
mng_retcode mng_magnify_rgba8_x3 (mng_datap pData,
741
mng_uint8p pDstline);
742
mng_retcode mng_magnify_rgba8_x4 (mng_datap pData,
748
mng_uint8p pDstline);
749
mng_retcode mng_magnify_rgba8_x5 (mng_datap pData,
755
mng_uint8p pDstline);
756
#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
757
mng_retcode mng_magnify_g8_y1 (mng_datap pData,
761
mng_uint8p pSrcline1,
762
mng_uint8p pSrcline2,
763
mng_uint8p pDstline);
764
mng_retcode mng_magnify_g8_y2 (mng_datap pData,
768
mng_uint8p pSrcline1,
769
mng_uint8p pSrcline2,
770
mng_uint8p pDstline);
771
mng_retcode mng_magnify_g8_y3 (mng_datap pData,
775
mng_uint8p pSrcline1,
776
mng_uint8p pSrcline2,
777
mng_uint8p pDstline);
778
mng_retcode mng_magnify_rgb8_y1 (mng_datap pData,
782
mng_uint8p pSrcline1,
783
mng_uint8p pSrcline2,
784
mng_uint8p pDstline);
785
mng_retcode mng_magnify_rgb8_y2 (mng_datap pData,
789
mng_uint8p pSrcline1,
790
mng_uint8p pSrcline2,
791
mng_uint8p pDstline);
792
mng_retcode mng_magnify_rgb8_y3 (mng_datap pData,
796
mng_uint8p pSrcline1,
797
mng_uint8p pSrcline2,
798
mng_uint8p pDstline);
799
mng_retcode mng_magnify_ga8_y1 (mng_datap pData,
803
mng_uint8p pSrcline1,
804
mng_uint8p pSrcline2,
805
mng_uint8p pDstline);
806
mng_retcode mng_magnify_ga8_y2 (mng_datap pData,
810
mng_uint8p pSrcline1,
811
mng_uint8p pSrcline2,
812
mng_uint8p pDstline);
813
mng_retcode mng_magnify_ga8_y3 (mng_datap pData,
817
mng_uint8p pSrcline1,
818
mng_uint8p pSrcline2,
819
mng_uint8p pDstline);
820
mng_retcode mng_magnify_ga8_y4 (mng_datap pData,
824
mng_uint8p pSrcline1,
825
mng_uint8p pSrcline2,
826
mng_uint8p pDstline);
827
mng_retcode mng_magnify_ga8_y5 (mng_datap pData,
831
mng_uint8p pSrcline1,
832
mng_uint8p pSrcline2,
833
mng_uint8p pDstline);
835
mng_retcode mng_magnify_rgba8_y1 (mng_datap pData,
839
mng_uint8p pSrcline1,
840
mng_uint8p pSrcline2,
841
mng_uint8p pDstline);
842
mng_retcode mng_magnify_rgba8_y2 (mng_datap pData,
846
mng_uint8p pSrcline1,
847
mng_uint8p pSrcline2,
848
mng_uint8p pDstline);
849
mng_retcode mng_magnify_rgba8_y3 (mng_datap pData,
853
mng_uint8p pSrcline1,
854
mng_uint8p pSrcline2,
855
mng_uint8p pDstline);
856
mng_retcode mng_magnify_rgba8_y4 (mng_datap pData,
860
mng_uint8p pSrcline1,
861
mng_uint8p pSrcline2,
862
mng_uint8p pDstline);
863
mng_retcode mng_magnify_rgba8_y5 (mng_datap pData,
867
mng_uint8p pSrcline1,
868
mng_uint8p pSrcline2,
869
mng_uint8p pDstline);
871
/* ************************************************************************** */
872
#ifndef MNG_NO_16BIT_SUPPORT
873
#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
874
mng_retcode mng_magnify_g16_x1 (mng_datap pData,
880
mng_uint8p pDstline);
881
mng_retcode mng_magnify_g16_x2 (mng_datap pData,
887
mng_uint8p pDstline);
888
mng_retcode mng_magnify_g16_x3 (mng_datap pData,
894
mng_uint8p pDstline);
895
mng_retcode mng_magnify_rgb16_x1 (mng_datap pData,
901
mng_uint8p pDstline);
902
mng_retcode mng_magnify_rgb16_x2 (mng_datap pData,
908
mng_uint8p pDstline);
909
mng_retcode mng_magnify_rgb16_x3 (mng_datap pData,
915
mng_uint8p pDstline);
916
mng_retcode mng_magnify_ga16_x1 (mng_datap pData,
922
mng_uint8p pDstline);
923
mng_retcode mng_magnify_ga16_x2 (mng_datap pData,
929
mng_uint8p pDstline);
930
mng_retcode mng_magnify_ga16_x3 (mng_datap pData,
936
mng_uint8p pDstline);
937
mng_retcode mng_magnify_ga16_x4 (mng_datap pData,
943
mng_uint8p pDstline);
944
mng_retcode mng_magnify_ga16_x5 (mng_datap pData,
950
mng_uint8p pDstline);
951
mng_retcode mng_magnify_rgba16_x1 (mng_datap pData,
957
mng_uint8p pDstline);
958
mng_retcode mng_magnify_rgba16_x2 (mng_datap pData,
964
mng_uint8p pDstline);
965
mng_retcode mng_magnify_rgba16_x3 (mng_datap pData,
971
mng_uint8p pDstline);
972
mng_retcode mng_magnify_rgba16_x4 (mng_datap pData,
978
mng_uint8p pDstline);
979
mng_retcode mng_magnify_rgba16_x5 (mng_datap pData,
985
mng_uint8p pDstline);
987
mng_retcode mng_magnify_g16_y1 (mng_datap pData,
991
mng_uint8p pSrcline1,
992
mng_uint8p pSrcline2,
993
mng_uint8p pDstline);
994
mng_retcode mng_magnify_g16_y2 (mng_datap pData,
998
mng_uint8p pSrcline1,
999
mng_uint8p pSrcline2,
1000
mng_uint8p pDstline);
1001
mng_retcode mng_magnify_g16_y3 (mng_datap pData,
1005
mng_uint8p pSrcline1,
1006
mng_uint8p pSrcline2,
1007
mng_uint8p pDstline);
1008
mng_retcode mng_magnify_rgb16_y1 (mng_datap pData,
1012
mng_uint8p pSrcline1,
1013
mng_uint8p pSrcline2,
1014
mng_uint8p pDstline);
1015
mng_retcode mng_magnify_rgb16_y2 (mng_datap pData,
1019
mng_uint8p pSrcline1,
1020
mng_uint8p pSrcline2,
1021
mng_uint8p pDstline);
1022
mng_retcode mng_magnify_rgb16_y3 (mng_datap pData,
1026
mng_uint8p pSrcline1,
1027
mng_uint8p pSrcline2,
1028
mng_uint8p pDstline);
1029
mng_retcode mng_magnify_ga16_y1 (mng_datap pData,
1033
mng_uint8p pSrcline1,
1034
mng_uint8p pSrcline2,
1035
mng_uint8p pDstline);
1036
mng_retcode mng_magnify_ga16_y2 (mng_datap pData,
1040
mng_uint8p pSrcline1,
1041
mng_uint8p pSrcline2,
1042
mng_uint8p pDstline);
1043
mng_retcode mng_magnify_ga16_y3 (mng_datap pData,
1047
mng_uint8p pSrcline1,
1048
mng_uint8p pSrcline2,
1049
mng_uint8p pDstline);
1050
mng_retcode mng_magnify_ga16_y4 (mng_datap pData,
1054
mng_uint8p pSrcline1,
1055
mng_uint8p pSrcline2,
1056
mng_uint8p pDstline);
1057
mng_retcode mng_magnify_ga16_y5 (mng_datap pData,
1061
mng_uint8p pSrcline1,
1062
mng_uint8p pSrcline2,
1063
mng_uint8p pDstline);
1064
mng_retcode mng_magnify_rgba16_y1 (mng_datap pData,
1068
mng_uint8p pSrcline1,
1069
mng_uint8p pSrcline2,
1070
mng_uint8p pDstline);
1071
mng_retcode mng_magnify_rgba16_y2 (mng_datap pData,
1075
mng_uint8p pSrcline1,
1076
mng_uint8p pSrcline2,
1077
mng_uint8p pDstline);
1078
mng_retcode mng_magnify_rgba16_y3 (mng_datap pData,
1082
mng_uint8p pSrcline1,
1083
mng_uint8p pSrcline2,
1084
mng_uint8p pDstline);
1085
mng_retcode mng_magnify_rgba16_y4 (mng_datap pData,
1089
mng_uint8p pSrcline1,
1090
mng_uint8p pSrcline2,
1091
mng_uint8p pDstline);
1092
mng_retcode mng_magnify_rgba16_y5 (mng_datap pData,
1096
mng_uint8p pSrcline1,
1097
mng_uint8p pSrcline2,
1098
mng_uint8p pDstline);
1102
/* ************************************************************************** */
1104
/* * PAST composition routines - compose over/under with a target object * */
1106
/* ************************************************************************** */
1108
mng_retcode mng_composeover_rgba8 (mng_datap pData);
1109
#ifndef MNG_SKIPCHUNK_PAST
1110
mng_retcode mng_composeunder_rgba8 (mng_datap pData);
1111
#ifndef MNG_NO_16BIT_SUPPORT
1112
mng_retcode mng_composeover_rgba16 (mng_datap pData);
1113
mng_retcode mng_composeunder_rgba16 (mng_datap pData);
1117
/* ************************************************************************** */
1119
/* * PAST flip & tile routines - flip or tile a row of pixels * */
1121
/* ************************************************************************** */
1123
#ifndef MNG_SKIPCHUNK_PAST
1124
mng_retcode mng_flip_rgba8 (mng_datap pData);
1125
mng_retcode mng_tile_rgba8 (mng_datap pData);
1126
#ifndef MNG_NO_16BIT_SUPPORT
1127
mng_retcode mng_flip_rgba16 (mng_datap pData);
1128
mng_retcode mng_tile_rgba16 (mng_datap pData);
1132
/* ************************************************************************** */
1134
#endif /* _libmng_pixels_h_ */
1136
/* ************************************************************************** */
1137
/* * end of file * */
1138
/* ************************************************************************** */