00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef INCL_IBUF8
00023 #define INCL_IBUF8 1
00024
00025 #include "imagebuf.h"
00026
00027
00028
00029
00030 class Image_buffer8 : public Image_buffer
00031 {
00032
00033 Image_buffer8(unsigned int w, unsigned int h, Image_buffer *)
00034 : Image_buffer(w, h, 8)
00035 { }
00036 public:
00037 Image_buffer8(unsigned int w, unsigned int h)
00038 : Image_buffer(w, h, 8)
00039 { bits = new unsigned char[w*h]; }
00040 friend class Image_window8;
00041
00042
00043
00044 virtual Image_buffer *create_another(int w, int h)
00045 { return new Image_buffer8(w, h); }
00046
00047 virtual void copy(int srcx, int srcy, int srcw, int srch,
00048 int destx, int desty);
00049
00050 virtual void get(Image_buffer *dest, int srcx, int srcy);
00051
00052 virtual void put(Image_buffer *src, int destx, int desty);
00053
00054 virtual void fill_static(int black, int gray, int white);
00055
00056
00057
00058
00059
00060 virtual void fill8(unsigned char val);
00061
00062 virtual void fill8(unsigned char val, int srcw, int srch,
00063 int destx, int desty);
00064
00065 virtual void fill_line8(unsigned char val, int srcw,
00066 int destx, int desty);
00067
00068 virtual void copy8(unsigned char *src_pixels,
00069 int srcw, int srch, int destx, int desty);
00070
00071 virtual void copy_line8(unsigned char *src_pixels, int srcw,
00072 int destx, int desty);
00073
00074 virtual void copy_line_translucent8(
00075 unsigned char *src_pixels, int srcw,
00076 int destx, int desty, int first_translucent,
00077 int last_translucent, Xform_palette *xforms);
00078
00079 virtual void fill_line_translucent8(unsigned char val,
00080 int srcw, int destx, int desty, Xform_palette& xform);
00081
00082 virtual void fill_translucent8(unsigned char val, int srcw, int srch,
00083 int destx, int desty, Xform_palette& xform);
00084
00085 virtual void copy_transparent8(unsigned char *src_pixels, int srcw,
00086 int srch, int destx, int desty);
00087
00088 unsigned char get_pixel8(int x, int y)
00089 { return bits[y*line_width + x]; }
00090 void put_pixel8(unsigned char pix, int x, int y)
00091 {
00092 if (x >= clipx && x < clipx + clipw &&
00093 y >= clipy && y < clipy + cliph)
00094 bits[y*line_width + x] = pix;
00095 }
00096
00097 void paint_rle (int xoff, int yoff, unsigned char *in);
00098
00099 unsigned char *rgba(unsigned char *pal, unsigned char transp,
00100 int first_translucent = 256,
00101 int last_translucent = 256, Xform_palette *xforms = 0);
00102 };
00103
00104 #endif