summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/clipboard.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/examples/clipboard.cxx b/examples/clipboard.cxx
index f21586367..156c520d2 100644
--- a/examples/clipboard.cxx
+++ b/examples/clipboard.cxx
@@ -37,6 +37,9 @@ Fl_Box *image_box;
Fl_Box *image_size;
Fl_Text_Display *display;
+inline int fl_min(int a, int b) { return (a < b ? a : b); }
+
+
class chess : public Fl_Box { // a box with a chess-like pattern below its image
public:
chess(int x, int y, int w, int h) : Fl_Box(FL_FLAT_BOX,x,y,w,h,0) {
@@ -95,8 +98,11 @@ public:
#endif
Fl_Shared_Image *oldim = (Fl_Shared_Image*)image_box->image();
if (oldim) oldim->release();
+ float scale = fl_graphics_driver->scale();
Fl_Shared_Image *shared = Fl_Shared_Image::get(im);
- shared->scale(image_box->w(), image_box->h());
+ int width = fl_min(image_box->w(), im->w()/scale);
+ int height = fl_min(image_box->h(), im->h()/scale);
+ shared->scale(width, height);
image_box->image(shared); // show the scaled image
image_size->copy_label(title);
value(image_box->parent());