1 /* ************************************************************************** */
2 /* *             For conditions of distribution and use,                    * */
3 /* *                see copyright notice in libmng.h                        * */
4 /* ************************************************************************** */
5 /* *                                                                        * */
6 /* * project   : libmng                                                     * */
7 /* * file      : libmng_object_prc.h       copyright (c) 2000 G.Juyn        * */
8 /* * version   : 1.0.0                                                      * */
9 /* *                                                                        * */
10 /* * purpose   : Object processing routines (definition)                    * */
11 /* *                                                                        * */
12 /* * author    : G.Juyn                                                     * */
13 /* * web       : http://www.3-t.com                                         * */
14 /* * email     : mailto:info@3-t.com                                        * */
15 /* *                                                                        * */
16 /* * comment   : Definition of the internal object processing routines      * */
17 /* *                                                                        * */
18 /* * changes   : 0.5.1 - 05/08/2000 - G.Juyn                                * */
19 /* *             - changed strict-ANSI stuff                                * */
20 /* *                                                                        * */
21 /* *             0.5.2 - 05/24/2000 - G.Juyn                                * */
22 /* *             - added support for global color-chunks in animation       * */
23 /* *             - added support for global PLTE,tRNS,bKGD in animation     * */
24 /* *             - added SAVE & SEEK animation objects                      * */
25 /* *             0.5.2 - 05/29/2000 - G.Juyn                                * */
26 /* *             - changed ani_object create routines not to return the     * */
27 /* *               created object (wasn't necessary)                        * */
28 /* *             - added compression/filter/interlace fields to             * */
29 /* *               object-buffer for delta-image processing                 * */
30 /* *                                                                        * */
31 /* *             0.5.3 - 06/22/2000 - G.Juyn                                * */
32 /* *             - added support for PPLT chunk                             * */
33 /* *                                                                        * */
34 /* *             0.9.2 - 08/05/2000 - G.Juyn                                * */
35 /* *             - changed file-prefixes                                    * */
36 /* *                                                                        * */
37 /* *             0.9.3 - 08/26/2000 - G.Juyn                                * */
38 /* *             - added MAGN chunk                                         * */
39 /* *             0.9.3 - 10/17/2000 - G.Juyn                                * */
40 /* *             - added routine to discard "invalid" objects               * */
41 /* *                                                                        * */
42 /* ************************************************************************** */
43 
44 #if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
45 #pragma option -A                      /* force ANSI-C */
46 #endif
47 
48 #ifndef _libmng_object_prc_h_
49 #define _libmng_object_prc_h_
50 
51 /* ************************************************************************** */
52 
53 mng_retcode drop_invalid_objects   (mng_datap      pData);
54 
55 /* ************************************************************************** */
56 
57 mng_retcode create_imagedataobject (mng_datap      pData,
58                                     mng_bool       bConcrete,
59                                     mng_bool       bViewable,
60                                     mng_uint32     iWidth,
61                                     mng_uint32     iHeight,
62                                     mng_uint8      iBitdepth,
63                                     mng_uint8      iColortype,
64                                     mng_uint8      iCompression,
65                                     mng_uint8      iFilter,
66                                     mng_uint8      iInterlace,
67                                     mng_imagedatap *ppObject);
68 
69 mng_retcode free_imagedataobject   (mng_datap      pData,
70                                     mng_imagedatap pImagedata);
71 
72 mng_retcode clone_imagedataobject  (mng_datap      pData,
73                                     mng_bool       bConcrete,
74                                     mng_imagedatap pSource,
75                                     mng_imagedatap *ppClone);
76 
77 /* ************************************************************************** */
78 
79 mng_retcode create_imageobject   (mng_datap  pData,
80                                   mng_uint16 iId,
81                                   mng_bool   bConcrete,
82                                   mng_bool   bVisible,
83                                   mng_bool   bViewable,
84                                   mng_uint32 iWidth,
85                                   mng_uint32 iHeight,
86                                   mng_uint8  iBitdepth,
87                                   mng_uint8  iColortype,
88                                   mng_uint8  iCompression,
89                                   mng_uint8  iFilter,
90                                   mng_uint8  iInterlace,
91                                   mng_int32  iPosx,
92                                   mng_int32  iPosy,
93                                   mng_bool   bClipped,
94                                   mng_int32  iClipl,
95                                   mng_int32  iClipr,
96                                   mng_int32  iClipt,
97                                   mng_int32  iClipb,
98                                   mng_imagep *ppObject);
99 
100 mng_retcode free_imageobject     (mng_datap  pData,
101                                   mng_imagep pImage);
102 
103 mng_imagep  find_imageobject     (mng_datap  pData,
104                                   mng_uint16 iId);
105 
106 mng_retcode clone_imageobject    (mng_datap  pData,
107                                   mng_uint16 iId,
108                                   mng_bool   bPartial,
109                                   mng_bool   bVisible,
110                                   mng_bool   bAbstract,
111                                   mng_bool   bHasloca,
112                                   mng_uint8  iLocationtype,
113                                   mng_int32  iLocationx,
114                                   mng_int32  iLocationy,
115                                   mng_imagep pSource,
116                                   mng_imagep *ppClone);
117 
118 mng_retcode renum_imageobject    (mng_datap  pData,
119                                   mng_imagep pSource,
120                                   mng_uint16 iId,
121                                   mng_bool   bVisible,
122                                   mng_bool   bAbstract,
123                                   mng_bool   bHasloca,
124                                   mng_uint8  iLocationtype,
125                                   mng_int32  iLocationx,
126                                   mng_int32  iLocationy);
127 
128 mng_retcode reset_object_details (mng_datap  pData,
129                                   mng_imagep pImage,
130                                   mng_uint32 iWidth,
131                                   mng_uint32 iHeight,
132                                   mng_uint8  iBitdepth,
133                                   mng_uint8  iColortype,
134                                   mng_uint8  iCompression,
135                                   mng_uint8  iFilter,
136                                   mng_uint8  iInterlace,
137                                   mng_bool   bResetall);
138 
139 mng_retcode promote_imageobject  (mng_datap  pData,
140                                   mng_imagep pImage,
141                                   mng_uint8  iBitdepth,
142                                   mng_uint8  iColortype,
143                                   mng_uint8  iFilltype);
144 
145 mng_retcode magnify_imageobject  (mng_datap  pData,
146                                   mng_imagep pImage);
147 
148 /* ************************************************************************** */
149 
150 mng_retcode create_ani_image  (mng_datap      pData);
151 
152 mng_retcode create_ani_plte   (mng_datap      pData,
153                                mng_uint32     iEntrycount,
154                                mng_palette8ep paEntries);
155 
156 mng_retcode create_ani_trns   (mng_datap      pData,
157                                mng_uint32     iRawlen,
158                                mng_uint8p     pRawdata);
159 
160 mng_retcode create_ani_gama   (mng_datap      pData,
161                                mng_bool       bEmpty,
162                                mng_uint32     iGamma);
163 
164 mng_retcode create_ani_chrm   (mng_datap      pData,
165                                mng_bool       bEmpty,
166                                mng_uint32     iWhitepointx,
167                                mng_uint32     iWhitepointy,
168                                mng_uint32     iRedx,
169                                mng_uint32     iRedy,
170                                mng_uint32     iGreenx,
171                                mng_uint32     iGreeny,
172                                mng_uint32     iBluex,
173                                mng_uint32     iBluey);
174 
175 mng_retcode create_ani_srgb   (mng_datap      pData,
176                                mng_bool       bEmpty,
177                                mng_uint8      iRenderinginent);
178 
179 mng_retcode create_ani_iccp   (mng_datap      pData,
180                                mng_bool       bEmpty,
181                                mng_uint32     iProfilesize,
182                                mng_ptr        pProfile);
183 
184 mng_retcode create_ani_bkgd   (mng_datap      pData,
185                                mng_uint16     iRed,
186                                mng_uint16     iGreen,
187                                mng_uint16     iBlue);
188 
189 mng_retcode create_ani_loop   (mng_datap      pData,
190                                mng_uint8      iLevel,
191                                mng_uint32     iRepeatcount,
192                                mng_uint8      iTermcond,
193                                mng_uint32     iItermin,
194                                mng_uint32     iItermax,
195                                mng_uint32     iCount,
196                                mng_uint32p    pSignals);
197 
198 mng_retcode create_ani_endl   (mng_datap      pData,
199                                mng_uint8      iLevel);
200 
201 mng_retcode create_ani_defi   (mng_datap      pData);
202 
203 mng_retcode create_ani_basi   (mng_datap      pData,
204                                mng_uint16     iRed,
205                                mng_uint16     iGreen,
206                                mng_uint16     iBlue,
207                                mng_bool       bHasalpha,
208                                mng_uint16     iAlpha,
209                                mng_uint8      iViewable);
210 
211 mng_retcode create_ani_clon   (mng_datap      pData,
212                                mng_uint16     iCloneid,
213                                mng_uint16     iSourceid,
214                                mng_uint8      iClonetype,
215                                mng_bool       bHasdonotshow,
216                                mng_uint8      iDonotshow,
217                                mng_uint8      iConcrete,
218                                mng_bool       bHasloca,
219                                mng_uint8      iLocatype,
220                                mng_int32      iLocax,
221                                mng_int32      iLocay);
222 
223 mng_retcode create_ani_back   (mng_datap      pData,
224                                mng_uint16     iRed,
225                                mng_uint16     iGreen,
226                                mng_uint16     iBlue,
227                                mng_uint8      iMandatory,
228                                mng_uint16     iImageid,
229                                mng_uint8      iTile);
230 
231 mng_retcode create_ani_fram   (mng_datap      pData,
232                                mng_uint8      iFramemode,
233                                mng_uint8      iChangedelay,
234                                mng_uint32     iDelay,
235                                mng_uint8      iChangetimeout,
236                                mng_uint32     iTimeout,
237                                mng_uint8      iChangeclipping,
238                                mng_uint8      iCliptype,
239                                mng_int32      iClipl,
240                                mng_int32      iClipr,
241                                mng_int32      iClipt,
242                                mng_int32      iClipb);
243 
244 mng_retcode create_ani_move   (mng_datap      pData,
245                                mng_uint16     iFirstid,
246                                mng_uint16     iLastid,
247                                mng_uint8      iType,
248                                mng_int32      iLocax,
249                                mng_int32      iLocay);
250 
251 mng_retcode create_ani_clip   (mng_datap      pData,
252                                mng_uint16     iFirstid,
253                                mng_uint16     iLastid,
254                                mng_uint8      iType,
255                                mng_int32      iClipl,
256                                mng_int32      iClipr,
257                                mng_int32      iClipt,
258                                mng_int32      iClipb);
259 
260 mng_retcode create_ani_show   (mng_datap      pData,
261                                mng_uint16     iFirstid,
262                                mng_uint16     iLastid,
263                                mng_uint8      iMode);
264 
265 mng_retcode create_ani_term   (mng_datap      pData,
266                                mng_uint8      iTermaction,
267                                mng_uint8      iIteraction,
268                                mng_uint32     iDelay,
269                                mng_uint32     iItermax);
270 
271 mng_retcode create_ani_save   (mng_datap      pData);
272 mng_retcode create_ani_seek   (mng_datap      pData);
273 
274 mng_retcode create_ani_dhdr   (mng_datap      pData,
275                                mng_uint16     iObjectid,
276                                mng_uint8      iImagetype,
277                                mng_uint8      iDeltatype,
278                                mng_uint32     iBlockwidth,
279                                mng_uint32     iBlockheight,
280                                mng_uint32     iBlockx,
281                                mng_uint32     iBlocky);
282 
283 mng_retcode create_ani_prom   (mng_datap      pData,
284                                mng_uint8      iBitdepth,
285                                mng_uint8      iColortype,
286                                mng_uint8      iFilltype);
287 
288 mng_retcode create_ani_ipng   (mng_datap      pData);
289 mng_retcode create_ani_ijng   (mng_datap      pData);
290 
291 mng_retcode create_ani_pplt   (mng_datap      pData,
292                                mng_uint8      iType,
293                                mng_uint32     iCount,
294                                mng_palette8ep paIndexentries,
295                                mng_uint8p     paAlphaentries,
296                                mng_uint8p     paUsedentries);
297 
298 mng_retcode create_ani_magn   (mng_datap      pData,
299                                mng_uint16     iFirstid,
300                                mng_uint16     iLastid,
301                                mng_uint16     iMethodX,
302                                mng_uint16     iMX,
303                                mng_uint16     iMY,
304                                mng_uint16     iML,
305                                mng_uint16     iMR,
306                                mng_uint16     iMT,
307                                mng_uint16     iMB,
308                                mng_uint16     iMethodY);
309 
310 /* ************************************************************************** */
311 
312 mng_retcode free_ani_image    (mng_datap    pData,
313                                mng_objectp  pObject);
314 
315 mng_retcode free_ani_plte     (mng_datap    pData,
316                                mng_objectp  pObject);
317 mng_retcode free_ani_trns     (mng_datap    pData,
318                                mng_objectp  pObject);
319 mng_retcode free_ani_gama     (mng_datap    pData,
320                                mng_objectp  pObject);
321 mng_retcode free_ani_chrm     (mng_datap    pData,
322                                mng_objectp  pObject);
323 mng_retcode free_ani_srgb     (mng_datap    pData,
324                                mng_objectp  pObject);
325 mng_retcode free_ani_iccp     (mng_datap    pData,
326                                mng_objectp  pObject);
327 mng_retcode free_ani_bkgd     (mng_datap    pData,
328                                mng_objectp  pObject);
329 mng_retcode free_ani_loop     (mng_datap    pData,
330                                mng_objectp  pObject);
331 mng_retcode free_ani_endl     (mng_datap    pData,
332                                mng_objectp  pObject);
333 mng_retcode free_ani_defi     (mng_datap    pData,
334                                mng_objectp  pObject);
335 mng_retcode free_ani_basi     (mng_datap    pData,
336                                mng_objectp  pObject);
337 mng_retcode free_ani_clon     (mng_datap    pData,
338                                mng_objectp  pObject);
339 mng_retcode free_ani_back     (mng_datap    pData,
340                                mng_objectp  pObject);
341 mng_retcode free_ani_fram     (mng_datap    pData,
342                                mng_objectp  pObject);
343 mng_retcode free_ani_move     (mng_datap    pData,
344                                mng_objectp  pObject);
345 mng_retcode free_ani_clip     (mng_datap    pData,
346                                mng_objectp  pObject);
347 mng_retcode free_ani_show     (mng_datap    pData,
348                                mng_objectp  pObject);
349 mng_retcode free_ani_term     (mng_datap    pData,
350                                mng_objectp  pObject);
351 mng_retcode free_ani_save     (mng_datap    pData,
352                                mng_objectp  pObject);
353 mng_retcode free_ani_seek     (mng_datap    pData,
354                                mng_objectp  pObject);
355 mng_retcode free_ani_dhdr     (mng_datap    pData,
356                                mng_objectp  pObject);
357 mng_retcode free_ani_prom     (mng_datap    pData,
358                                mng_objectp  pObject);
359 mng_retcode free_ani_ipng     (mng_datap    pData,
360                                mng_objectp  pObject);
361 mng_retcode free_ani_ijng     (mng_datap    pData,
362                                mng_objectp  pObject);
363 mng_retcode free_ani_pplt     (mng_datap    pData,
364                                mng_objectp  pObject);
365 mng_retcode free_ani_magn     (mng_datap    pData,
366                                mng_objectp  pObject);
367 
368 /* ************************************************************************** */
369 
370 mng_retcode process_ani_image (mng_datap    pData,
371                                mng_objectp  pObject);
372 
373 mng_retcode process_ani_plte  (mng_datap    pData,
374                                mng_objectp  pObject);
375 mng_retcode process_ani_trns  (mng_datap    pData,
376                                mng_objectp  pObject);
377 mng_retcode process_ani_gama  (mng_datap    pData,
378                                mng_objectp  pObject);
379 mng_retcode process_ani_chrm  (mng_datap    pData,
380                                mng_objectp  pObject);
381 mng_retcode process_ani_srgb  (mng_datap    pData,
382                                mng_objectp  pObject);
383 mng_retcode process_ani_iccp  (mng_datap    pData,
384                                mng_objectp  pObject);
385 mng_retcode process_ani_bkgd  (mng_datap    pData,
386                                mng_objectp  pObject);
387 mng_retcode process_ani_loop  (mng_datap    pData,
388                                mng_objectp  pObject);
389 mng_retcode process_ani_endl  (mng_datap    pData,
390                                mng_objectp  pObject);
391 mng_retcode process_ani_defi  (mng_datap    pData,
392                                mng_objectp  pObject);
393 mng_retcode process_ani_basi  (mng_datap    pData,
394                                mng_objectp  pObject);
395 mng_retcode process_ani_clon  (mng_datap    pData,
396                                mng_objectp  pObject);
397 mng_retcode process_ani_back  (mng_datap    pData,
398                                mng_objectp  pObject);
399 mng_retcode process_ani_fram  (mng_datap    pData,
400                                mng_objectp  pObject);
401 mng_retcode process_ani_move  (mng_datap    pData,
402                                mng_objectp  pObject);
403 mng_retcode process_ani_clip  (mng_datap    pData,
404                                mng_objectp  pObject);
405 mng_retcode process_ani_show  (mng_datap    pData,
406                                mng_objectp  pObject);
407 mng_retcode process_ani_term  (mng_datap    pData,
408                                mng_objectp  pObject);
409 mng_retcode process_ani_save  (mng_datap    pData,
410                                mng_objectp  pObject);
411 mng_retcode process_ani_seek  (mng_datap    pData,
412                                mng_objectp  pObject);
413 mng_retcode process_ani_dhdr  (mng_datap    pData,
414                                mng_objectp  pObject);
415 mng_retcode process_ani_prom  (mng_datap    pData,
416                                mng_objectp  pObject);
417 mng_retcode process_ani_ipng  (mng_datap    pData,
418                                mng_objectp  pObject);
419 mng_retcode process_ani_ijng  (mng_datap    pData,
420                                mng_objectp  pObject);
421 mng_retcode process_ani_pplt  (mng_datap    pData,
422                                mng_objectp  pObject);
423 mng_retcode process_ani_magn  (mng_datap    pData,
424                                mng_objectp  pObject);
425 
426 /* ************************************************************************** */
427 
428 #endif /* _libmng_object_prc_h_ */
429 
430 /* ************************************************************************** */
431 /* * end of file                                                            * */
432 /* ************************************************************************** */
433