diff options
Diffstat (limited to 'src/Fl_Image.cxx')
| -rw-r--r-- | src/Fl_Image.cxx | 62 |
1 files changed, 26 insertions, 36 deletions
diff --git a/src/Fl_Image.cxx b/src/Fl_Image.cxx index 843a88963..1c62e2fea 100644 --- a/src/Fl_Image.cxx +++ b/src/Fl_Image.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Image.cxx,v 1.5.2.3 2001/01/22 15:13:39 easysw Exp $" +// "$Id: Fl_Image.cxx,v 1.5.2.3.2.1 2001/08/05 23:58:54 easysw Exp $" // // Image drawing code for the Fast Light Tool Kit (FLTK). // @@ -30,61 +30,51 @@ #include <FL/Fl_Menu_Item.H> #include <FL/Fl_Image.H> +Fl_Image::~Fl_Image() { +} + void Fl_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) { +} + +void Fl_Image::label(Fl_Widget* w) { + w->image(this); +} + +void Fl_Image::label(Fl_Menu_Item* m) { +} + +Fl_RGB_Image::~Fl_RGB_Image() { + if (id) fl_delete_offscreen((Fl_Offscreen)id); +} + +void Fl_RGB_Image::draw(int XP, int YP, int WP, int HP, int cx, int cy) { // account for current clip region (faster on Irix): int X,Y,W,H; fl_clip_box(XP,YP,WP,HP,X,Y,W,H); cx += X-XP; cy += Y-YP; // clip the box down to the size of image, quit if empty: if (cx < 0) {W += cx; X -= cx; cx = 0;} - if (cx+W > w) W = w-cx; + if (cx+W > w()) W = w()-cx; if (W <= 0) return; if (cy < 0) {H += cy; Y -= cy; cy = 0;} - if (cy+H > h) H = h-cy; + if (cy+H > h()) H = h()-cy; if (H <= 0) return; if (!id) { - id = (ulong)fl_create_offscreen(w, h); + id = (ulong)fl_create_offscreen(w(), h()); fl_begin_offscreen((Fl_Offscreen)id); - fl_draw_image(array, 0, 0, w, h, d, ld); + fl_draw_image(array, 0, 0, w(), h(), d, ld); fl_end_offscreen(); } fl_copy_offscreen(X, Y, W, H, (Fl_Offscreen)id, cx, cy); } -Fl_Image::~Fl_Image() { - if (id) fl_delete_offscreen((Fl_Offscreen)id); +void Fl_RGB_Image::label(Fl_Widget* w) { + w->image(this); } -static void image_labeltype( - const Fl_Label* o, int x, int y, int w, int h, Fl_Align a) -{ - Fl_Image* b = (Fl_Image*)(o->value); - int cx; - if (a & FL_ALIGN_LEFT) cx = 0; - else if (a & FL_ALIGN_RIGHT) cx = b->w-w; - else cx = (b->w-w)/2; - int cy; - if (a & FL_ALIGN_TOP) cy = 0; - else if (a & FL_ALIGN_BOTTOM) cy = b->h-h; - else cy = (b->h-h)/2; - b->draw(x,y,w,h,cx,cy); +void Fl_RGB_Image::label(Fl_Menu_Item* m) { } -static void image_measure(const Fl_Label* o, int& w, int& h) { - Fl_Image* b = (Fl_Image*)(o->value); - w = b->w; - h = b->h; -} - -void Fl_Image::label(Fl_Widget* o) { - Fl::set_labeltype(_FL_IMAGE_LABEL, image_labeltype, image_measure); - o->label(_FL_IMAGE_LABEL, (const char*)this); -} - -void Fl_Image::label(Fl_Menu_Item* o) { - Fl::set_labeltype(_FL_IMAGE_LABEL, image_labeltype, image_measure); - o->label(_FL_IMAGE_LABEL, (const char*)this); -} // -// End of "$Id: Fl_Image.cxx,v 1.5.2.3 2001/01/22 15:13:39 easysw Exp $". +// End of "$Id: Fl_Image.cxx,v 1.5.2.3.2.1 2001/08/05 23:58:54 easysw Exp $". // |
