--- parser3/src/classes/gd/Attic/gif.h 2001/05/10 17:28:08 1.9 +++ parser3/src/classes/gd/Attic/gif.h 2003/01/31 12:34:28 1.23.2.4 @@ -1,11 +1,8 @@ /** @file Parser: image manipulations decls. - Author: Alexander Petrosyan (http://design.ru/paf) - - $Id: gif.h,v 1.9 2001/05/10 17:28:08 paf Exp $ - - + Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) + Author: Alexandr Petrosian (http://paf.design.ru) based on: gd.h: declarations file for the gifdraw module. @@ -19,7 +16,9 @@ */ #ifndef GIF_H -#define GIF_H 1 +#define GIF_H + +static const char* IDENT_GIF_H="$Date: 2003/01/31 12:34:28 $"; #include "pa_config_includes.h" @@ -29,29 +28,24 @@ #define gdMaxColors 0x100 #define HSIZE 5003 /* 80% occupancy */ -/* For backwards compatibility only. Use gdImageSetStyle() for MUCH more flexible line drawing. Also see gdImageSetBrush(). */ -#define gdDashSize 4 - - /** Image type. See functions below; you will not need to change the elements directly. Use the provided macros to access sx, sy, the color table, and colorsTotal for read-only purposes. */ -class gdImage : public Pooled { +class gdImage: public PA_Object { public: //@{ /// @name Functions to manipulate images - gdImage(Pool& pool) : Pooled(pool) {} void Create(int asx, int asy); bool CreateFromGif(FILE *fd); void SetPixel(int x, int y, int color); int GetPixel(int x, int y); void Line(int x1, int y1, int x2, int y2, int color); - void DashedLine(int x1, int y1, int x2, int y2, int color); + void StyledLine(int x1, int y1, int x2, int y2, int color, const char* lineStyle); void Rectangle(int x1, int y1, int x2, int y2, int color); void LineReplaceColor(int x1, int y1, int x2, int y2, int a, int b); void FilledRectangle(int x1, int y1, int x2, int y2, int color); @@ -62,12 +56,12 @@ public: int x, y; }; - void Polygon(Point *p, int n, int c); + void Polygon(Point *p, int n, int c, bool closed=true); void FilledPolygon(Point *p, int n, int c); void FilledPolygonReplaceColor(Point *p, int n, int a, int b); int ColorAllocate(int r, int g, int b); - int ColorClosest(int r, int g, int b); + int ColorClosest(int r, int g, int b, int tolerance=0); int ColorExact(int r, int g, int b); int ColorRGB(int r, int g, int b); int Color(unsigned int rgb); @@ -77,13 +71,15 @@ public: int BoundsSafe(int x, int y); void DoSetPixel(int x, int y, int color); - void Gif(String& out); + void Gif(Pool& pool, String& out); void Arc(int cx, int cy, int w, int h, int s, int e, int color); + void Sector(int cx, int cy, int w, int h, int s, int e, int color); void FillToBorder(int x, int y, int border, int color); void Fill(int x, int y, int color); void Copy(gdImage& dst, int dstX, int dstY, int srcX, int srcY, int w, int h); - void CopyResized(gdImage& dst, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH); - void SetStyle(int width); + void CopyResampled(gdImage& dst, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH, int tolerance); + void SetLineWidth(int width); + void SetLineStyle(const char* aLineStyle); void SetInterlace(int interlaceArg); /* On or off(1 or 0) */ public: @@ -113,7 +109,7 @@ private: int transparent; int *polyInts; int polyAllocated; - int styleWidth; + int lineWidth; const char* lineStyle; int interlace; private: // read gif @@ -129,12 +125,13 @@ private: // read gif int ZeroDataBlock; }; +DECLARE_OBJECT_PTR(gdImage); /// used by gdImage::Gif to produce buffer with bytes in GIF format -class gdGifEncoder : public Pooled { +class gdGifEncoder: public PA_Object { public: - gdGifEncoder(Pool& pool, gdImage& aim, String& afp); + gdGifEncoder(Pool& apool, gdImage& aim, String& afp); void encode( int GWidth, int GHeight, @@ -143,15 +140,17 @@ public: int *Red, int *Green, int *Blue); private: + + Pool& pool; /// a code_int must be able to hold 2**GIFBITS values of type int, and also -1 typedef int code_int; - #ifdef SIGNED_COMPARE_SLOW +#ifdef SIGNED_COMPARE_SLOW typedef unsigned long int count_int; typedef unsigned short int count_short; - #else /*SIGNED_COMPARE_SLOW*/ +#else typedef long int count_int; - #endif /*SIGNED_COMPARE_SLOW*/ +#endif private: @@ -230,5 +229,6 @@ inline int gdImage::BoundsSafe(int x, in inline /*paf int*/void gdImage::DoSetPixel(int x, int y, int color){ if(BoundsSafe(x, y)) pixels[x][y] = color; } +DECLARE_OBJECT_PTR(gdGifEncoder); #endif