00001
00002
00003
00004
00005
00006
00007 #ifndef _GDC_H
00008 #define _GDC_H
00009
00010 #include <math.h>
00011 #ifdef GDC_INCL
00012 #include "gd.h"
00013 #include "gdfonts.h"
00014 #include "gdfontt.h"
00015 #include "gdfontmb.h"
00016 #include "gdfontg.h"
00017 #include "gdfontl.h"
00018 #endif
00019
00020 #ifndef TRUE
00021 #define TRUE 1
00022 #define FALSE 0
00023 #endif
00024
00025 #define GDC_NOVALUE -MAXFLOAT
00026 #define GDC_NULL GDC_NOVALUE
00027
00028 #define ABS( x ) ( (x)<0.0? -(x): (x) )
00029 #define MAX( x, y ) ( (x)>(y)?(x):(y) )
00030 #define MIN( x, y ) ( (x)<(y)?(x):(y) )
00031
00032 #define GDC_NOCOLOR 0x1000000L
00033 #define GDC_DFLTCOLOR 0x2000000L
00034 #define PVRED 0x00FF0000
00035 #define PVGRN 0x0000FF00
00036 #define PVBLU 0x000000FF
00037 #define l2gdcal( c ) ((c)&PVRED)>>16 , ((c)&PVGRN)>>8 , ((c)&0x000000FF)
00038 #define l2gdshd( c ) (((c)&PVRED)>>16)/2 , (((c)&PVGRN)>>8)/2 , (((c)&0x000000FF))/2
00039 static int _gdccfoo1;
00040 static unsigned long _gdccfoo2;
00041 #define _gdcntrst(bg) ( ((bg)&0x800000?0x000000:0xFF0000)| \
00042 ((bg)&0x008000?0x000000:0x00FF00)| \
00043 ((bg)&0x000080?0x000000:0x0000FF) )
00044 #define _clrallocate( im, rawclr, bgc ) \
00045 ( (_gdccfoo2=rawclr==GDC_DFLTCOLOR? _gdcntrst(bgc): rawclr), \
00046 (_gdccfoo1=gdImageColorExact(im,l2gdcal(_gdccfoo2))) != -1? \
00047 _gdccfoo1: \
00048 gdImageColorsTotal(im) == gdMaxColors? \
00049 gdImageColorClosest(im,l2gdcal(_gdccfoo2)): \
00050 gdImageColorAllocate(im,l2gdcal(_gdccfoo2)) )
00051 #define _clrshdallocate( im, rawclr, bgc ) \
00052 ( (_gdccfoo2=rawclr==GDC_DFLTCOLOR? _gdcntrst(bgc): rawclr), \
00053 (_gdccfoo1=gdImageColorExact(im,l2gdshd(_gdccfoo2))) != -1? \
00054 _gdccfoo1: \
00055 gdImageColorsTotal(im) == gdMaxColors? \
00056 gdImageColorClosest(im,l2gdshd(_gdccfoo2)): \
00057 gdImageColorAllocate(im,l2gdshd(_gdccfoo2)) )
00058
00059
00060 enum GDC_font_size { GDC_pad = 0,
00061 GDC_TINY = 1,
00062 GDC_SMALL = 2,
00063 GDC_MEDBOLD = 3,
00064 GDC_LARGE = 4,
00065 GDC_GIANT = 5,
00066 GDC_numfonts= 6 };
00067
00068 typedef enum {
00069 GDC_DESTROY_IMAGE = 0,
00070 GDC_EXPOSE_IMAGE = 1,
00071 GDC_REUSE_IMAGE = 2
00072 } GDC_HOLD_IMAGE_T;
00073
00074 #ifdef GDC_INCL
00075 struct GDC_FONT_T {
00076 gdFontPtr f;
00077 char h;
00078 char w;
00079 };
00080
00081 typedef enum { GDC_JUSTIFY_RIGHT,
00082 GDC_JUSTIFY_CENTER,
00083 GDC_JUSTIFY_LEFT } GDC_justify_t;
00084
00085 void GDCImageStringNL( gdImagePtr, struct GDC_FONT_T*, int, int, char*, int, GDC_justify_t );
00086 void load_font_conversions();
00087 short cnt_nl( char*, int* );
00088 #endif
00089
00090 #ifdef GDC_LIB
00091 #define EXTERND extern
00092 #define DEFAULTO(val)
00093 extern struct GDC_FONT_T GDC_fontc[];
00094 #else
00095 #define EXTERND extern
00096 #define DEFAULTO(val)
00097 #endif
00098
00099
00100 #ifndef _GDC_COMMON_OPTIONS
00101 #define _GDC_COMMON_OPTIONS
00102
00103 #define EXTERND extern
00104
00105
00106
00107
00108
00109
00110 extern char GDC_generate_gif;
00111 extern GDC_HOLD_IMAGE_T GDC_hold_img;
00112 extern void *GDC_image;
00113 #endif
00114
00115
00116
00117
00118 void GDC_destroy_image( void* );
00119 void out_err( int GIFWIDTH,
00120 int GIFHEIGHT,
00121 FILE*,
00122 unsigned long BGColor,
00123 unsigned long LineColor,
00124 char *str );
00125
00126 #endif