1 /* ************************************************************************** */
2 /* *             For conditions of distribution and use,                    * */
3 /* *                see copyright notice in libmng.h                        * */
4 /* ************************************************************************** */
5 /* *                                                                        * */
6 /* * project   : libmng                                                     * */
7 /* * file      : libmng_display.h          copyright (c) 2000-2007 G.Juyn   * */
8 /* * version   : 1.0.10                                                     * */
9 /* *                                                                        * */
10 /* * purpose   : Display management (definition)                            * */
11 /* *                                                                        * */
12 /* * author    : G.Juyn                                                     * */
13 /* *                                                                        * */
14 /* * comment   : Definition of the display managament routines              * */
15 /* *                                                                        * */
16 /* * changes   : 0.5.1 - 05/08/2000 - G.Juyn                                * */
17 /* *             - changed strict-ANSI stuff                                * */
18 /* *                                                                        * */
19 /* *             0.5.2 - 05/20/2000 - G.Juyn                                * */
20 /* *             - added JNG support stuff                                  * */
21 /* *                                                                        * */
22 /* *             0.5.3 - 06/16/2000 - G.Juyn                                * */
23 /* *             - changed progressive-display processing                   * */
24 /* *             0.5.3 - 06/22/2000 - G.Juyn                                * */
25 /* *             - added support for delta-image processing                 * */
26 /* *             - added support for PPLT chunk processing                  * */
27 /* *                                                                        * */
28 /* *             0.9.2 - 08/05/2000 - G.Juyn                                * */
29 /* *             - changed file-prefixes                                    * */
30 /* *             0.9.3 - 08/07/2000 - G.Juyn                                * */
31 /* *             - B111300 - fixup for improved portability                 * */
32 /* *             0.9.3 - 08/26/2000 - G.Juyn                                * */
33 /* *             - added MAGN chunk                                         * */
34 /* *             0.9.3 - 10/16/2000 - G.Juyn                                * */
35 /* *             - added JDAA chunk                                         * */
36 /* *                                                                        * */
37 /* *             0.9.4 - 11/24/2000 - G.Juyn                                * */
38 /* *             - moved restore of object 0 to libmng_display              * */
39 /* *                                                                        * */
40 /* *             1.0.5 - 08/19/2002 - G.Juyn                                * */
41 /* *             - B597134 - libmng pollutes the linker namespace           * */
42 /* *             1.0.5 - 09/13/2002 - G.Juyn                                * */
43 /* *             - fixed read/write of MAGN chunk                           * */
44 /* *             1.0.5 - 09/20/2002 - G.Juyn                                * */
45 /* *             - added support for PAST                                   * */
46 /* *             1.0.5 - 10/07/2002 - G.Juyn                                * */
47 /* *             - added proposed change in handling of TERM- & if-delay    * */
48 /* *             1.0.5 - 10/20/2002 - G.Juyn                                * */
49 /* *             - fixed display of visible target of PAST operation        * */
50 /* *                                                                        * */
51 /* *             1.0.7 - 03/24/2004 - G.R-P.                                * */
52 /* *             - added some SKIPCHUNK conditionals                        * */
53 /* *                                                                        * */
54 /* *             1.0.9 - 12/11/2004 - G.Juyn                                * */
55 /* *             - added conditional MNG_OPTIMIZE_DISPLAYCALLS              * */
56 /* *                                                                        * */
57 /* *             1.0.10 - 04/08/2007 - G.Juyn                               * */
58 /* *             - added support for mPNG proposal                          * */
59 /* *             1.0.10 - 04/12/2007 - G.Juyn                               * */
60 /* *             - added support for ANG proposal                           * */
61 /* *                                                                        * */
62 /* ************************************************************************** */
63 
64 #if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
65 #pragma option -A                      /* force ANSI-C */
66 #endif
67 
68 #ifndef _libmng_display_h_
69 #define _libmng_display_h_
70 
71 /* ************************************************************************** */
72 
73 #ifdef MNG_INCLUDE_DISPLAY_PROCS
74 
75 /* ************************************************************************** */
76 
77 mng_retcode mng_display_progressive_refresh (mng_datap  pData,
78                                              mng_uint32 iInterval);
79 
80 /* ************************************************************************** */
81 
82 mng_retcode mng_reset_objzero         (mng_datap      pData);
83 
84 mng_retcode mng_display_image         (mng_datap      pData,
85                                        mng_imagep     pImage,
86                                        mng_bool       bLayeradvanced);
87 
88 mng_retcode mng_execute_delta_image   (mng_datap      pData,
89                                        mng_imagep     pTarget,
90                                        mng_imagep     pDelta);
91 
92 /* ************************************************************************** */
93 
94 mng_retcode mng_process_display       (mng_datap      pData);
95 
96 /* ************************************************************************** */
97 
98 #ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
99 png_imgtype mng_png_imgtype           (mng_uint8      colortype,
100                                        mng_uint8      bitdepth);
101 #endif
102 
103 /* ************************************************************************** */
104 
105 #ifndef MNG_OPTIMIZE_DISPLAYCALLS
106 
107 mng_retcode mng_process_display_ihdr  (mng_datap      pData);
108 
109 #ifdef MNG_INCLUDE_MPNG_PROPOSAL
110 mng_retcode mng_process_display_mpng  (mng_datap      pData);
111 #endif
112 
113 #ifdef MNG_INCLUDE_ANG_PROPOSAL
114 mng_retcode mng_process_display_ang   (mng_datap      pData);
115 #endif
116 
117 mng_retcode mng_process_display_idat  (mng_datap      pData,
118                                        mng_uint32     iRawlen,
119                                        mng_uint8p     pRawdata);
120 
121 mng_retcode mng_process_display_iend  (mng_datap      pData);
122 mng_retcode mng_process_display_mend  (mng_datap      pData);
123 mng_retcode mng_process_display_mend2 (mng_datap      pData);
124 mng_retcode mng_process_display_defi  (mng_datap      pData);
125 
126 #ifndef MNG_SKIPCHUNK_BASI
127 mng_retcode mng_process_display_basi  (mng_datap      pData,
128                                        mng_uint16     iRed,
129                                        mng_uint16     iGreen,
130                                        mng_uint16     iBlue,
131                                        mng_bool       bHasalpha,
132                                        mng_uint16     iAlpha,
133                                        mng_uint8      iViewable);
134 #endif
135 
136 #ifndef MNG_SKIPCHUNK_CLON
137 mng_retcode mng_process_display_clon  (mng_datap      pData,
138                                        mng_uint16     iSourceid,
139                                        mng_uint16     iCloneid,
140                                        mng_uint8      iClonetype,
141                                        mng_bool       bHasdonotshow,
142                                        mng_uint8      iDonotshow,
143                                        mng_uint8      iConcrete,
144                                        mng_bool       bHasloca,
145                                        mng_uint8      iLocationtype,
146                                        mng_int32      iLocationx,
147                                        mng_int32      iLocationy);
148 mng_retcode mng_process_display_clon2 (mng_datap      pData);
149 #endif
150 
151 #ifndef MNG_SKIPCHUNK_DISC
152 mng_retcode mng_process_display_disc  (mng_datap      pData,
153                                        mng_uint32     iCount,
154                                        mng_uint16p    pIds);
155 #endif
156 
157 #ifndef MNG_SKIPCHUNK_FRAM
158 mng_retcode mng_process_display_fram  (mng_datap      pData,
159                                        mng_uint8      iFramemode,
160                                        mng_uint8      iChangedelay,
161                                        mng_uint32     iDelay,
162                                        mng_uint8      iChangetimeout,
163                                        mng_uint32     iTimeout,
164                                        mng_uint8      iChangeclipping,
165                                        mng_uint8      iCliptype,
166                                        mng_int32      iClipl,
167                                        mng_int32      iClipr,
168                                        mng_int32      iClipt,
169                                        mng_int32      iClipb);
170 mng_retcode mng_process_display_fram2 (mng_datap      pData);
171 #endif
172 
173 #ifndef MNG_SKIPCHUNK_MOVE
174 mng_retcode mng_process_display_move  (mng_datap      pData,
175                                        mng_uint16     iFromid,
176                                        mng_uint16     iToid,
177                                        mng_uint8      iMovetype,
178                                        mng_int32      iMovex,
179                                        mng_int32      iMovey);
180 #endif
181 
182 #ifndef MNG_SKIPCHUNK_CLIP
183 mng_retcode mng_process_display_clip  (mng_datap      pData,
184                                        mng_uint16     iFromid,
185                                        mng_uint16     iToid,
186                                        mng_uint8      iCliptype,
187                                        mng_int32      iClipl,
188                                        mng_int32      iClipr,
189                                        mng_int32      iClipt,
190                                        mng_int32      iClipb);
191 #endif
192 
193 #ifndef MNG_SKIPCHUNK_SHOW
194 mng_retcode mng_process_display_show  (mng_datap      pData);
195 #endif
196 #ifndef MNG_SKIPCHUNK_SAVE
197 mng_retcode mng_process_display_save  (mng_datap      pData);
198 #endif
199 #ifndef MNG_SKIPCHUNK_SEEK
200 mng_retcode mng_process_display_seek  (mng_datap      pData);
201 #endif
202 #ifdef MNG_INCLUDE_JNG
203 mng_retcode mng_process_display_jhdr  (mng_datap      pData);
204 
205 mng_retcode mng_process_display_jdaa  (mng_datap      pData,
206                                        mng_uint32     iRawlen,
207                                        mng_uint8p     pRawdata);
208 
209 mng_retcode mng_process_display_jdat  (mng_datap      pData,
210                                        mng_uint32     iRawlen,
211                                        mng_uint8p     pRawdata);
212 
213 #endif
214 #ifndef MNG_NO_DELTA_PNG
215 mng_retcode mng_process_display_dhdr  (mng_datap      pData,
216                                        mng_uint16     iObjectid,
217                                        mng_uint8      iImagetype,
218                                        mng_uint8      iDeltatype,
219                                        mng_uint32     iBlockwidth,
220                                        mng_uint32     iBlockheight,
221                                        mng_uint32     iBlockx,
222                                        mng_uint32     iBlocky);
223 
224 mng_retcode mng_process_display_prom  (mng_datap      pData,
225                                        mng_uint8      iBitdepth,
226                                        mng_uint8      iColortype,
227                                        mng_uint8      iFilltype);
228 
229 mng_retcode mng_process_display_ipng  (mng_datap      pData);
230 #ifdef MNG_INCLUDE_JNG
231 mng_retcode mng_process_display_ijng  (mng_datap      pData);
232 #endif
233 
234 mng_retcode mng_process_display_pplt  (mng_datap      pData,
235                                        mng_uint8      iType,
236                                        mng_uint32     iCount,
237                                        mng_palette8ep paIndexentries,
238                                        mng_uint8p     paAlphaentries,
239                                        mng_uint8p     paUsedentries);
240 #endif
241 
242 #ifndef MNG_SKIPCHUNK_MAGN
243 mng_retcode mng_process_display_magn  (mng_datap      pData,
244                                        mng_uint16     iFirstid,
245                                        mng_uint16     iLastid,
246                                        mng_uint8      iMethodX,
247                                        mng_uint16     iMX,
248                                        mng_uint16     iMY,
249                                        mng_uint16     iML,
250                                        mng_uint16     iMR,
251                                        mng_uint16     iMT,
252                                        mng_uint16     iMB,
253                                        mng_uint8      iMethodY);
254 mng_retcode mng_process_display_magn2 (mng_datap      pData);
255 #endif
256 
257 #ifndef MNG_SKIPCHUNK_PAST
258 mng_retcode mng_process_display_past  (mng_datap      pData,
259                                        mng_uint16     iTargetid,
260                                        mng_uint8      iTargettype,
261                                        mng_int32      iTargetx,
262                                        mng_int32      iTargety,
263                                        mng_uint32     iCount,
264                                        mng_ptr        pSources);
265 mng_retcode mng_process_display_past2 (mng_datap      pData);
266 #endif
267 
268 #else /* MNG_OPTIMIZE_DISPLAYCALLS */
269 
270 mng_retcode mng_process_display_ihdr  (mng_datap      pData);
271 #ifdef MNG_INCLUDE_MPNG_PROPOSAL
272 mng_retcode mng_process_display_mpng  (mng_datap      pData);
273 #endif
274 mng_retcode mng_process_display_idat  (mng_datap      pData);
275 mng_retcode mng_process_display_iend  (mng_datap      pData);
276 mng_retcode mng_process_display_mend  (mng_datap      pData);
277 mng_retcode mng_process_display_mend2 (mng_datap      pData);
278 mng_retcode mng_process_display_defi  (mng_datap      pData);
279 #ifndef MNG_SKIPCHUNK_BASI
280 mng_retcode mng_process_display_basi  (mng_datap      pData);
281 #endif
282 #ifndef MNG_SKIPCHUNK_CLON
283 mng_retcode mng_process_display_clon  (mng_datap      pData);
284 mng_retcode mng_process_display_clon2 (mng_datap      pData);
285 #endif
286 #ifndef MNG_SKIPCHUNK_DISC
287 mng_retcode mng_process_display_disc  (mng_datap      pData);
288 #endif
289 #ifndef MNG_SKIPCHUNK_FRAM
290 mng_retcode mng_process_display_fram  (mng_datap      pData);
291 mng_retcode mng_process_display_fram2 (mng_datap      pData);
292 #endif
293 #ifndef MNG_SKIPCHUNK_MOVE
294 mng_retcode mng_process_display_move  (mng_datap      pData);
295 #endif
296 #ifndef MNG_SKIPCHUNK_CLIP
297 mng_retcode mng_process_display_clip  (mng_datap      pData);
298 #endif
299 #ifndef MNG_SKIPCHUNK_SHOW
300 mng_retcode mng_process_display_show  (mng_datap      pData);
301 #endif
302 #ifndef MNG_SKIPCHUNK_SAVE
303 mng_retcode mng_process_display_save  (mng_datap      pData);
304 #endif
305 #ifndef MNG_SKIPCHUNK_SEEK
306 mng_retcode mng_process_display_seek  (mng_datap      pData);
307 #endif
308 #ifdef MNG_INCLUDE_JNG
309 mng_retcode mng_process_display_jhdr  (mng_datap      pData);
310 mng_retcode mng_process_display_jdaa  (mng_datap      pData);
311 mng_retcode mng_process_display_jdat  (mng_datap      pData);
312 #endif
313 #ifndef MNG_NO_DELTA_PNG
314 mng_retcode mng_process_display_dhdr  (mng_datap      pData);
315 mng_retcode mng_process_display_prom  (mng_datap      pData);
316 mng_retcode mng_process_display_ipng  (mng_datap      pData);
317 #ifdef MNG_INCLUDE_JNG
318 mng_retcode mng_process_display_ijng  (mng_datap      pData);
319 #endif
320 mng_retcode mng_process_display_pplt  (mng_datap      pData);
321 #endif
322 #ifndef MNG_SKIPCHUNK_MAGN
323 mng_retcode mng_process_display_magn  (mng_datap      pData);
324 mng_retcode mng_process_display_magn2 (mng_datap      pData);
325 #endif
326 #ifndef MNG_SKIPCHUNK_PAST
327 mng_retcode mng_process_display_past  (mng_datap      pData);
328 mng_retcode mng_process_display_past2 (mng_datap      pData);
329 #endif
330 
331 #endif /* MNG_OPTIMIZE_DISPLAYCALLS */
332 
333 /* ************************************************************************** */
334 
335 #endif /* MNG_INCLUDE_DISPLAY_PROCS */
336 
337 /* ************************************************************************** */
338 
339 #endif /* _libmng_display_h_ */
340 
341 /* ************************************************************************** */
342 /* * end of file                                                            * */
343 /* ************************************************************************** */
344