00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef Fl_Image_H
00032 # define Fl_Image_H
00033
00034 # include "Enumerations.H"
00035
00036 class Fl_Widget;
00037 struct Fl_Menu_Item;
00038 struct Fl_Label;
00039
00051 class FL_EXPORT Fl_Image {
00052 int w_, h_, d_, ld_, count_;
00053 const char * const *data_;
00054
00055
00056 Fl_Image & operator=(const Fl_Image &);
00057 Fl_Image(const Fl_Image &);
00058
00059 protected:
00060
00068 void w(int W) {w_ = W;}
00076 void h(int H) {h_ = H;}
00085 void d(int D) {d_ = D;}
00087 void ld(int LD) {ld_ = LD;}
00089 void data(const char * const *p, int c) {data_ = p; count_ = c;}
00090 void draw_empty(int X, int Y);
00091
00092 static void labeltype(const Fl_Label *lo, int lx, int ly, int lw, int lh, Fl_Align la);
00093 static void measure(const Fl_Label *lo, int &lw, int &lh);
00094
00095 public:
00096
00098 int w() const {return w_;}
00100 int h() const {return h_;}
00109 int d() const {return d_;}
00118 int ld() const {return ld_;}
00125 int count() const {return count_;}
00134 const char * const *data() const {return data_;}
00135
00142 Fl_Image(int W, int H, int D) {w_ = W; h_ = H; d_ = D; ld_ = 0; count_ = 0; data_ = 0;}
00143 virtual ~Fl_Image();
00144 virtual Fl_Image *copy(int W, int H);
00152 Fl_Image *copy() { return copy(w(), h()); }
00153 virtual void color_average(Fl_Color c, float i);
00160 void inactive() { color_average(FL_GRAY, .33f); }
00161 virtual void desaturate();
00162 virtual void label(Fl_Widget*w);
00163 virtual void label(Fl_Menu_Item*m);
00170 virtual void draw(int X, int Y, int W, int H, int cx=0, int cy=0);
00175 void draw(int X, int Y) {draw(X, Y, w(), h(), 0, 0);}
00176 virtual void uncache();
00177 };
00178
00190 class FL_EXPORT Fl_RGB_Image : public Fl_Image {
00191 friend class Fl_Quartz_Graphics_Driver;
00192 friend class Fl_GDI_Graphics_Driver;
00193 friend class Fl_Xlib_Graphics_Driver;
00194 public:
00195
00196 const uchar *array;
00197 int alloc_array;
00198
00199 private:
00200
00201 #if defined(__APPLE__) || defined(WIN32)
00202 void *id_;
00203 void *mask_;
00204 #else
00205 unsigned id_;
00206 unsigned mask_;
00207 #endif // __APPLE__ || WIN32
00208
00209 public:
00210
00212 Fl_RGB_Image(const uchar *bits, int W, int H, int D=3, int LD=0) :
00213 Fl_Image(W,H,D), array(bits), alloc_array(0), id_(0), mask_(0) {data((const char **)&array, 1); ld(LD);}
00214 virtual ~Fl_RGB_Image();
00215 virtual Fl_Image *copy(int W, int H);
00216 Fl_Image *copy() { return copy(w(), h()); }
00217 virtual void color_average(Fl_Color c, float i);
00218 virtual void desaturate();
00219 virtual void draw(int X, int Y, int W, int H, int cx=0, int cy=0);
00220 void draw(int X, int Y) {draw(X, Y, w(), h(), 0, 0);}
00221 virtual void label(Fl_Widget*w);
00222 virtual void label(Fl_Menu_Item*m);
00223 virtual void uncache();
00224 };
00225
00226 #endif // !Fl_Image_H
00227
00228
00229
00230