00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef _FL_BOXTYPE_H_
00023 #define _FL_BOXTYPE_H_
00024 
00025 #include "Fl_Color.h"
00026 #include "Fl_Flags.h"
00027 
00029 class FL_API Fl_Boxtype_
00030 {
00031 public:
00032     Fl_Boxtype_() : name(0) { }
00033     Fl_Boxtype_(const char* n) : name(n), next(first) { first = this; }
00034 
00035     int fills_rectangle() const { return fills_rectangle_; }
00036     int dx() const { return dx_; }
00037     int dy() const { return dy_; }
00038     int dw() const { return dw_; }
00039     int dh() const { return dh_; }
00040     void inset(int&X,int&Y,int&W,int&H) const { X+=dx_; Y+=dy_; W-=dw_; H-=dh_; }
00041 
00042     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const = 0;
00043 
00044     const char *name;
00045     static const Fl_Boxtype_ *first;
00046     static const Fl_Boxtype_ *find(const char* name);
00047     const Fl_Boxtype_ *next;
00048 
00049 protected:
00050     int dx_, dy_, dw_, dh_;
00051     int fills_rectangle_;
00052 };
00053 
00055 typedef const Fl_Boxtype_* Fl_Boxtype;
00056 
00057 
00058 
00059 class FL_API Fl_Frame_Box : public Fl_Boxtype_
00060 {
00061 public:
00062     Fl_Frame_Box(const char* n, const char* c, const Fl_Frame_Box* d=0);
00063 
00064     const char* data() const { return data_; }
00065     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00066 
00067 protected:
00068     const char* data_;
00069     const Fl_Frame_Box* down;
00070 };
00071 
00072 extern FL_API const Fl_Frame_Box fl_up_box;
00073 #define FL_UP_BOX (&fl_up_box)
00074 #define FL_NORMAL_BOX (&fl_up_box)
00075 
00076 extern FL_API const Fl_Frame_Box fl_div_up_box;
00077 #define FL_DIV_UP_BOX (&fl_div_up_box)
00078 
00079 extern FL_API const Fl_Frame_Box fl_down_box;
00080 #define FL_DOWN_BOX (&fl_down_box)
00081 
00082 extern FL_API const Fl_Frame_Box fl_thin_up_box;
00083 #define FL_THIN_UP_BOX (&fl_thin_up_box)
00084 #define FL_THIN_BOX (&fl_thin_up_box)
00085 
00086 extern FL_API const Fl_Frame_Box fl_thin_down_box;
00087 #define FL_THIN_DOWN_BOX (&fl_thin_down_box)
00088 
00089 extern FL_API const Fl_Frame_Box fl_engraved_box;
00090 #define FL_ENGRAVED_BOX (&fl_engraved_box)
00091 
00092 extern FL_API const Fl_Frame_Box fl_embossed_box;
00093 #define FL_EMBOSSED_BOX (&fl_embossed_box)
00094 
00095 extern FL_API const Fl_Frame_Box fl_border_box;
00096 #define FL_BORDER_BOX (&fl_border_box)
00097 
00098 
00099 class FL_API Fl_Flat_Box : public Fl_Boxtype_ {
00100 public:
00101     Fl_Flat_Box(const char* n);
00102     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00103 };
00104 extern FL_API const Fl_Flat_Box fl_flat_box;
00105 #define FL_FLAT_BOX (&fl_flat_box)
00106 
00107 
00108 class FL_API Fl_Highlight_Box : public Fl_Flat_Box {
00109 public:
00110     Fl_Highlight_Box(const char* n, const Fl_Boxtype_* d);
00111     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00112 
00113 private:
00114     const Fl_Boxtype_* down;
00115 };
00116 extern FL_API const Fl_Highlight_Box fl_highlight_up_box;
00117 #define FL_HIGHLIGHT_UP_BOX (&fl_highlight_up_box)
00118 #define FL_FLAT_UP_BOX (&fl_highlight_up_box)
00119 #define FL_HIGHLIGHT_BOX (&fl_highlight_up_box)
00120 
00121 extern FL_API const Fl_Highlight_Box fl_highlight_down_box;
00122 #define FL_HIGHLIGHT_DOWN_BOX (&fl_highlight_down_box)
00123 #define FL_FLAT_DOWN_BOX (&fl_highlight_down_box)
00124 
00125 
00126 class FL_API Fl_Round_Box : public Fl_Frame_Box {
00127 public:
00128     Fl_Round_Box(const char* n, const char* c, const Fl_Frame_Box* d=0);
00129     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00130 };
00131 
00132 extern FL_API const Fl_Round_Box fl_round_up_box;
00133 #define FL_ROUND_UP_BOX (&fl_round_up_box)
00134 #define FL_ROUND_BOX (&fl_round_up_box)
00135 
00136 extern FL_API const Fl_Round_Box fl_round_down_box;
00137 #define FL_ROUND_DOWN_BOX (&fl_round_down_box)
00138 
00139 
00140 class FL_API Fl_Diamond_Box : public Fl_Frame_Box {
00141 public:
00142     Fl_Diamond_Box(const char* n, const char* c, const Fl_Frame_Box* d=0);
00143     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00144 };
00145 
00146 extern FL_API const Fl_Diamond_Box fl_diamond_up_box;
00147 #define FL_DIAMOND_UP_BOX (&fl_diamond_up_box)
00148 #define FL_DIAMOND_BOX (&fl_diamond_up_box)
00149 
00150 extern FL_API const Fl_Diamond_Box fl_diamond_down_box;
00151 #define FL_DIAMOND_DOWN_BOX (&fl_diamond_down_box)
00152 
00153 
00154 class FL_API Fl_Plastic_Box : public Fl_Frame_Box {
00155 public:
00156     Fl_Plastic_Box(const char* n, const char* c, const Fl_Frame_Box* d=0);
00157     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00158 };
00159 
00160 extern FL_API const Fl_Plastic_Box fl_plastic_up_box;
00161 #define FL_PLASTIC_UP_BOX (&fl_plastic_up_box)
00162 #define FL_PLASTIC_BOX (&fl_plastic_up_box)
00163 
00164 extern FL_API const Fl_Plastic_Box fl_plastic_down_box;
00165 #define FL_PLASTIC_DOWN_BOX (&fl_plastic_down_box)
00166 
00167 
00168 class FL_API Fl_No_Box : public Fl_Boxtype_ {
00169 public:
00170     Fl_No_Box(const char* n);
00171     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00172 };
00173 
00174 extern FL_API const Fl_No_Box fl_no_box;
00175 #define FL_NO_BOX (&fl_no_box)
00176 
00177 class FL_API Fl_Shadow_Box : public Fl_Boxtype_ {
00178 public:
00179     Fl_Shadow_Box(const char* n);
00180     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00181 };
00182 
00183 extern FL_API const Fl_Shadow_Box fl_shadow_box;
00184 #define FL_SHADOW_BOX (&fl_shadow_box)
00185 
00186 class FL_API Fl_Rounded_Box : public Fl_Boxtype_ {
00187 public:
00188     Fl_Rounded_Box(const char* n);
00189     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00190 };
00191 
00192 extern FL_API const Fl_Rounded_Box fl_rounded_box;
00193 #define FL_ROUNDED_BOX (&fl_rounded_box)
00194 
00195 class FL_API Fl_RShadow_Box : public Fl_Boxtype_ {
00196 public:
00197     Fl_RShadow_Box(const char* n);
00198     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00199 };
00200 
00201 extern FL_API const Fl_RShadow_Box fl_rshadow_box;
00202 #define FL_RSHADOW_BOX (&fl_rshadow_box)
00203 
00204 class FL_API Fl_RFlat_Box : public Fl_Boxtype_ {
00205 public:
00206     Fl_RFlat_Box(const char* n);
00207     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00208 };
00209 
00210 extern FL_API const Fl_RFlat_Box fl_rflat_box;
00211 #define FL_RFLAT_BOX (&fl_rflat_box)
00212 
00213 class FL_API Fl_Oval_Box : public Fl_Boxtype_ {
00214 public:
00215     Fl_Oval_Box(const char* n);
00216     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00217 };
00218 
00219 extern FL_API const Fl_Oval_Box fl_oval_box;
00220 #define FL_OVAL_BOX (&fl_oval_box)
00221 
00222 class FL_API Fl_Oval_Shadow_Box : public Fl_Boxtype_ {
00223 public:
00224     Fl_Oval_Shadow_Box(const char* n);
00225     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00226 };
00227 extern FL_API const Fl_Oval_Shadow_Box fl_oval_shadow_box;
00228 #define FL_OSHADOW_BOX (&fl_oval_shadow_box)
00229 
00230 class FL_API Fl_Oval_Flat_Box : public Fl_Boxtype_ {
00231 public:
00232     Fl_Oval_Flat_Box(const char* n);
00233     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00234 };
00235 
00236 extern FL_API const Fl_Oval_Flat_Box fl_oval_flat_box;
00237 #define FL_OFLAT_BOX (&fl_oval_flat_box)
00238 
00239 class FL_API Fl_Border_Frame : public Fl_Boxtype_ {
00240 public:
00241     Fl_Border_Frame(const char* n);
00242     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00243 };
00244 
00245 extern FL_API const Fl_Border_Frame fl_border_frame;
00246 #define FL_BORDER_FRAME (&fl_border_frame)
00247 
00248 class FL_API Fl_Dotted_Frame : public Fl_Boxtype_ {
00249 public:
00250     Fl_Dotted_Frame(const char* n);
00251     virtual void draw(int,int,int,int, Fl_Color, Fl_Flags=0) const;
00252 };
00253 
00254 extern FL_API const Fl_Dotted_Frame fl_dotted_frame;
00255 #define FL_DOTTED_FRAME (&fl_dotted_frame)
00256 
00257 class Fl_Hor_Shade_Box : public Fl_Flat_Box {
00258 public:
00259     Fl_Hor_Shade_Box(const char* n, const Fl_Boxtype_ *up, const Fl_Boxtype_ *down, Fl_Color end=0);
00260     virtual void draw(int x,int y,int w,int h, Fl_Color color, Fl_Flags f) const;
00261 
00262     Fl_Color end_color; 
00263 protected:
00264     const Fl_Boxtype_ *up_, *down_;
00265 };
00266 
00267 class Fl_Vert_Shade_Box : public Fl_Hor_Shade_Box {
00268 public:
00269     Fl_Vert_Shade_Box(const char* n, const Fl_Boxtype_ *up, const Fl_Boxtype_ *down, Fl_Color end=0) : Fl_Hor_Shade_Box(n,up,down,end) { }
00270     virtual void draw(int x,int y,int w,int h, Fl_Color color, Fl_Flags f) const;
00271 };
00272 
00273 extern FL_API const Fl_Vert_Shade_Box vert_up_shade_box;
00274 extern FL_API const Fl_Hor_Shade_Box hor_up_shade_box;
00275 #define FL_VERT_SHADE_UP_BOX (&vert_up_shade_box)
00276 #define FL_HOR_SHADE_UP_BOX (&hor_up_shade_box)
00277 
00278 extern FL_API const Fl_Vert_Shade_Box vert_flat_shade_box;
00279 extern FL_API const Fl_Hor_Shade_Box hor_flat_shade_box;
00280 #define FL_VERT_SHADE_FLAT_BOX (&vert_flat_shade_box)
00281 #define FL_HOR_SHADE_FLAT_BOX (&hor_flat_shade_box)
00282 
00283 
00284 extern FL_API const Fl_Frame_Box thick_up_box;
00285 #define FL_THICK_UP_BOX (&thick_up_box)
00286 
00287 #endif