00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "machine.h"
00024
00025 #ifdef BIG_ENDIAN
00026 #define SWAB(shrt) (shrt = ((shrt >> 8) & 0xff) | ((shrt << 8) & 0xff00))
00027 #else
00028 #define SWAB(shrt)
00029 #endif
00030
00031
00032 #define RSkipLinesOp 1
00033 #define RSetColorOp 2
00034 #define RSkipPixelsOp 3
00035 #define RByteDataOp 5
00036 #define RRunDataOp 6
00037
00038
00039 #define LONG 0x40
00040
00041
00042 #define NO_BOX_SAVE (1<<0)
00043 #define NO_COLORMAP (1<<1)
00044 #define NO_IMAGE (1<<2)
00045
00046 typedef struct
00047 {
00048 short h_xpos, h_ypos;
00049 short h_xlen, h_ylen;
00050 char h_flags;
00051 #define H_CLEARFIRST 0x1
00052 #define H_BOXSAVE 0x0
00053 char h_ncolors;
00054 #define H_LD_CMAP_ONLY 0
00055 #define H_B_W 1
00056 #define H_RGB 3
00057 char h_pixelbits;
00058 char h_ncmap;
00059 char h_cmaplen;
00060 unsigned char h_background[3];
00061 } Xtnd_Rle_Header;
00062
00063 typedef struct
00064 {
00065
00066 short xpos, ypos;
00067 short xsize, ysize;
00068 unsigned char bg_r;
00069 unsigned char bg_g;
00070 unsigned char bg_b;
00071 char map;
00072 } Old_Rle_Header;
00073
00074 typedef struct
00075 {
00076 #if __STDC__ || defined(__convexc__)
00077
00078
00079 unsigned int datum:12, opcode:4;
00080 #else
00081 unsigned short datum:12, opcode:4;
00082 #endif
00083 } Old_Inst;
00084
00085 typedef struct
00086 {
00087 #if __STDC__ || defined(__convexc__)
00088
00089
00090 int opcode:8, datum:8;
00091 #else
00092 short opcode:8, datum:8;
00093 #endif
00094 } Xtnd_Inst;
00095
00096 #define OPCODE(inst) (inst.opcode & ~LONG)
00097 #define LONGP(inst) (inst.opcode & LONG)
00098 #define DATUM(inst) (0x00ff & inst.datum)
00099
00100
00101 #define RMAGIC ('R' << 8)
00102 #define WMAGIC ('W' << 8)
00103
00104 #define XtndRMAGIC ((short)0xcc52)
00105
00106 #define STRIDE (sizeof(RGBpixel))
00107
00108
00109 extern int _bg_flag;
00110 extern int _bw_flag;
00111 extern int _cm_flag;
00112 extern RGBpixel _bg_pixel;
00113
00114
00115 extern int rle_debug;
00116 extern int rle_verbose;
00117
00118
00119 void rle_rlen(), rle_wlen(), rle_rpos(), rle_wpos();
00120 int rle_rhdr(), rle_whdr(), rle_rmap(), rle_wmap();
00121 int rle_decode_ln(), rle_encode_ln();
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132