Add Russian translation provided by Валерий Крувялис <valkru@mail.ru>
[xiph-mirror.git] / vp32 / CoreLibs / Include / dxl_main.h
blob6bbe0b81a46e9039653ed5125b7f43972fff95ad
1 //==========================================================================
2 //
3 // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
4 // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
5 // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
6 // PURPOSE.
7 //
8 // Copyright (c) 1999 - 2001 On2 Technologies Inc. All Rights Reserved.
9 //
10 //--------------------------------------------------------------------------
13 #ifndef _dxl_main_h
14 #define _dxl_main_h
16 #if defined(__cplusplus)
17 extern "C" {
18 #endif
20 struct vScreen;
21 struct tXImage;
23 struct tAudioBuff;
24 struct tXAudioSource;
26 #if defined(__cplusplus)
28 #endif
30 #include "dkpltfrm.h"
31 //#include "duktypes.h"
32 #include "duck_dxl.h"
34 #if defined(__cplusplus)
35 extern "C" {
36 #endif
38 #define TMRTType 5
40 #define validate(x) {if (!x) return (int ) DXL_NULLSOURCE; if (!x->dkFlags.inUse) return (int ) DXL_NOTINUSE ;}
42 typedef void *blitFunc;
43 /*typedef void (*blitFunc2)(DXL_XIMAGE_HANDLE,DXL_VSCREEN_HANDLE); */
45 typedef int DXL_BLIT_FORMAT;
47 enum DKOBJECTTYPE {
48 DXUNUSED = 0,
49 DXXIMAGE = 1,
50 DXVSCREEN = 2
53 enum COLORDEPTH {
54 PALETTE8 = 0,
55 RGB555 = 1,
56 RGB555A = 2,
57 RGB888 = 3,
58 RGBA8888 = 4
61 typedef struct tagflgs {
62 unsigned inUse : 1;
63 unsigned DXed : 1;
64 unsigned clutOwner: 1;
65 unsigned doCompleteBlit : 1;
66 unsigned keyFrame : 1;
67 unsigned nullFrame : 1;
68 unsigned interframe : 1;
69 unsigned logo : 1;
70 unsigned allocated : 1;
71 } dkInfoFlags;
73 typedef struct vflgs {
74 unsigned clipped : 1;
75 unsigned showInfoDots : 1;
76 } vFlags;
78 typedef struct frameheader {
79 unsigned char hdrSize;
80 unsigned char Type;
81 unsigned char DeltaSet;
82 unsigned char Table;
83 unsigned short Ysize;
84 unsigned short Xsize;
85 unsigned short CheckSum;
86 unsigned char CVersion;
87 unsigned char metaType;
88 unsigned char Frameinfo;
89 unsigned char Control;
90 unsigned short xoff,yoff,width,height;
91 } FRAMEHEADER;
93 typedef struct DXINFOSTRUCT{
94 int imwidth;
95 int imheight;
96 int blockpower;
97 int lpbmione;
98 int block2x;
99 unsigned char *vectbl;
100 int hinterp;
101 int interframe;
102 int iskeyframe;
103 int sprite;
104 int bitcnt;
105 int hdrSize;
106 int drawing;
107 int fmt;
108 FRAMEHEADER f;
109 int algorithm;
110 } dxInfoStruct;
113 base "class" for xImage(s):
115 enum DKOBJECTTYPE dkObjectType; // type of object
116 dkInfoFlags dkFlags; // universal flags
117 enum COLORDEPTH cDepth; // colorDepth
118 short imWidth,imHeight; // internal width & height
119 short x,y,w,h; // location and dx'd dimensions
120 unsigned char *addr; // pointer to compressed data
121 DXL_VSCREEN_HANDLE lVScreen; // last know destination
122 DXL_XIMAGE_HANDLE (*create)(void); // creator (constructor)
123 DXL_XIMAGE_HANDLE (*recreate)(void); // recreate base w/h/type/etc.
124 int (*destroy)(void); // destroyer (destructor)
125 int (*seedData)(void); // reseed with new compressed data
126 int (*dx)(void); // decompress (to vScreen)
127 int (*blit)(void); // blit from internal state
131 char *(*perfStats)(DXL_XIMAGE_HANDLE, char *storage); \
134 #define xImageBaseStruct \
135 enum DKOBJECTTYPE dkObjectType; \
136 dkInfoFlags dkFlags; \
137 enum COLORDEPTH colorDepth; \
138 short imWidth,imHeight; \
139 short x,y,w,h; \
140 unsigned char *addr; \
141 DXL_VSCREEN_HANDLE lVScreen; \
142 enum BITDEPTH *bdPrefs; \
143 DXL_XIMAGE_HANDLE (*create)(void *); \
144 DXL_XIMAGE_HANDLE (*recreate)(DXL_XIMAGE_HANDLE,void *,int,int,int,int); \
145 int (*destroy)(DXL_XIMAGE_HANDLE); \
146 int (*seedData)(DXL_XIMAGE_HANDLE); \
147 int (*dx)(DXL_XIMAGE_HANDLE, DXL_VSCREEN_HANDLE); \
148 int (*blit)(DXL_XIMAGE_HANDLE, DXL_VSCREEN_HANDLE); \
149 int (*internalFormat)(DXL_XIMAGE_HANDLE, DXL_VSCREEN_HANDLE); \
150 int (*verify)(DXL_XIMAGE_HANDLE, DXL_VSCREEN_HANDLE); \
151 int fSize; \
152 long (*GetXImageCSize)(DXL_XIMAGE_HANDLE); \
153 void *(*getFrameBuffer)(DXL_XIMAGE_HANDLE)
155 typedef struct tXImage{
156 xImageBaseStruct;
157 } DXL_XIMAGE;
159 typedef struct tXImage1{
160 xImageBaseStruct;
162 /********** TM1 specific follows **********/
163 enum IMAGETYPE imType;
165 unsigned char *lineBuffer;
166 int lineBufferSize;
168 unsigned long *chromaBuffer;
169 int chromaBufferSize;
171 short dxCount; /* number of lines left to decompress */
172 short lw,lh;
174 enum BGMODE sprMode;
175 short sprColor; /* sprite mode and color for blending */
177 dxInfoStruct dxInfo;
178 } DXL_XIMAGE_1,*DXL_XIMAGE_1HANDLE;
180 typedef struct vScreen{
181 enum DKOBJECTTYPE dkObjectType;
182 unsigned char *addr,*laddr; /* address of destination and what it was the last time */
183 unsigned char *bAddr,*bOffsetAddr; /* address of sprite background */
184 enum BITDEPTH bd; /* format of destination */
185 enum BLITQUALITY bq; /* blit translation mode */
186 short pitch,height; /* pitch and height of dest */
187 short bx,by,bPitch; /* x,y, and pitch of background */
188 short viewX,viewY; /* offset/clipping viewport within destination */
189 short viewW,viewH;
190 short clipX,clipY; /* clipping rectangle within viewport */
191 short clipW,clipH;
192 dkInfoFlags dkFlags;
193 DXL_XIMAGE_HANDLE lXImage; /* last XImage decompressed here, useful for smart blitting */
194 unsigned char *clut1,*clut2;
195 DXL_BLIT_FORMAT blitFormat;
197 void *blitSetup;
198 void *blitter;
199 void *blitExit;
201 int vesaMode;
202 unsigned char *drawAddr;
203 short drawW,drawH;
204 vFlags flags;
206 } DXL_VSCREEN;
208 /* private functions */
209 int decodeHeader(void *data,register dxInfoStruct *dxInfo);
212 #define MAX_CDEPTHS DXMAX
213 #define MAX_BQUALITIES DXBLITMAX
215 typedef enum tDXL_INTERNAL_FORMAT {
216 DXL_NULL_IFORMAT = -1,
217 DXL_LINE16 = 0,
218 DXL_LINE16i = 1,
219 DXL_LINE16hi = 2,
220 DXL_LINE16spr = 3,
221 DXL_LINE8 = 4,
222 TM2_BLOCK24 = 5,
223 TM1_24 = 6,
224 TORQ_YUY2 = 7,
225 TORQ_YUY2hi = 8,
226 YV12 = 9,
227 SWET_YUV = 10,
228 DXL_MAX_IFORMATS
229 } DXL_INTERNAL_FORMAT;
231 DXL_BLIT_FORMAT DXL_ReserveBlitter(void);
232 DXL_BLIT_FORMAT DXL_OverrideBlitter(enum BLITQUALITY bq,enum BITDEPTH bd);
233 int DXL_RegisterBlitter(DXL_BLIT_FORMAT dFormat, DXL_INTERNAL_FORMAT ,
234 blitFunc blit, blitFunc setup, blitFunc exit);
236 blitFunc DXL_GetBlitFunc(DXL_XIMAGE_HANDLE ,DXL_VSCREEN_HANDLE );
237 blitFunc DXL_GetBlitSetupFunc(DXL_XIMAGE_HANDLE ,DXL_VSCREEN_HANDLE );
238 blitFunc DXL_GetBlitExitFunc(DXL_XIMAGE_HANDLE ,DXL_VSCREEN_HANDLE );
240 blitFunc DXL_GetVBlitFunc(DXL_VSCREEN_HANDLE ,DXL_VSCREEN_HANDLE );
241 blitFunc DXL_GetVBlitSetupFunc(DXL_VSCREEN_HANDLE ,DXL_VSCREEN_HANDLE );
242 blitFunc DXL_GetVBlitExitFunc(DXL_VSCREEN_HANDLE ,DXL_VSCREEN_HANDLE );
244 DXL_BLIT_FORMAT DXL_GetVScreenBlitFormat(DXL_VSCREEN_HANDLE );
245 DXL_INTERNAL_FORMAT DXL_GetXImageInternalFormat(DXL_XIMAGE_HANDLE ,DXL_VSCREEN_HANDLE );
247 DXL_INTERNAL_FORMAT DXL_GetVScreenInternalFormat(DXL_VSCREEN_HANDLE vScreen);
249 int dxl_GetAlgHandle(unsigned long fourcc);
250 int dxl_RegisterInternalFormat(int xHandle, DXL_INTERNAL_FORMAT xFormat);
252 int DXL_VScreenInfoDots(DXL_XIMAGE_HANDLE src, DXL_VSCREEN_HANDLE dst);
254 int DXL_GetVScreenSizeOfPixel(DXL_VSCREEN_HANDLE );
255 unsigned char *DXL_GetDestAddress(DXL_XIMAGE_HANDLE src, DXL_VSCREEN_HANDLE dst);
257 int DXL_GetXImageOffset(DXL_XIMAGE_HANDLE,int *,int *);
259 typedef DXL_XIMAGE_HANDLE (*createFunc)(unsigned char *data);
260 int DXL_RegisterXImage(createFunc creator,unsigned long fourcc,DXL_INTERNAL_FORMAT iForm);
262 void registerDuckBlitters(void);
263 void resetBlitters(void);
265 void dxv_logo( unsigned char *dst, int width, int height, int pitch,
266 enum BITDEPTH format, int dci, enum BLITQUALITY bq);
268 void dxl_24c(void *compaddr, void *scrnaddr,
269 int dstPitch,int iskeyframe,
270 int hinterp,int doublesize,
271 int scrnwidth,int scrnheight,
272 int blockpower, int block2x,
273 int forceheight, char *lastdecomp,
274 char *lastcdecomp);
276 #define DXL_MKFOURCC( ch0, ch1, ch2, ch3 ) \
277 ( (unsigned long)(unsigned char)(ch0) | ( (unsigned long)(unsigned char)(ch1) << 8 ) | \
278 ( (unsigned long)(unsigned char)(ch2) << 16 ) | ( (unsigned long)(unsigned char)(ch3) << 24 ) )
280 #if defined(__cplusplus)
282 #endif
284 #endif