Author: manolo
Date: 2012-05-07 07:37:36 -0700 (Mon, 07 May 2012)
New Revision: 9456
Log:
Fixed use of widget-relative coordinates for WIN32 image drawing.

Modified:
   branches/branch-3.0/src/fltk3/Bitmap.cxx
   branches/branch-3.0/src/fltk3/Image.cxx
   branches/branch-3.0/src/fltk3/Pixmap.cxx
   branches/branch-3.0/src/fltk3/vertex.cxx
   branches/branch-3.0/src/fltk3/win32_font.cxx

Modified: branches/branch-3.0/src/fltk3/Bitmap.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/Bitmap.cxx    2012-05-07 14:00:31 UTC (rev 
9455)
+++ branches/branch-3.0/src/fltk3/Bitmap.cxx    2012-05-07 14:37:36 UTC (rev 
9456)
@@ -336,7 +336,7 @@
     fl_end_offscreen(); // offscreen data is in tmp_id
     SelectObject(tempdc, (HGDIOBJ)tmp_id); // use offscreen data
     // draw it to printer context with background color as transparent
-    fl_TransparentBlt(fl_gc, X,Y,W,H, tempdc, cx, cy, bm->w(), bm->h(), RGB(r, 
g, b) ); 
+    fl_TransparentBlt(fl_gc, X+origin_x(),Y+origin_y(),W,H, tempdc, cx, cy, 
bm->w(), bm->h(), RGB(r, g, b) ); 
     fl_delete_offscreen(tmp_id);
   }
   else { // algorithm for bitmap output to display
@@ -345,7 +345,7 @@
     SelectObject(tempdc, (HGDIOBJ)bm->id_);
     SelectObject(fl_gc, fl_brush());
     // secret bitblt code found in old MSWindows reference manual:
-    BitBlt(fl_gc, X, Y, W, H, tempdc, cx, cy, 0xE20746L);
+    BitBlt(fl_gc, X+origin_x(), Y+origin_y(), W, H, tempdc, cx, cy, 0xE20746L);
   }
   RestoreDC(tempdc, save);
   DeleteDC(tempdc);

Modified: branches/branch-3.0/src/fltk3/Image.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/Image.cxx     2012-05-07 14:00:31 UTC (rev 
9455)
+++ branches/branch-3.0/src/fltk3/Image.cxx     2012-05-07 14:37:36 UTC (rev 
9456)
@@ -537,15 +537,15 @@
     HDC new_gc = CreateCompatibleDC(fl_gc);
     int save = SaveDC(new_gc);
     SelectObject(new_gc, (void*)img->mask_);
-    BitBlt(fl_gc, X, Y, W, H, new_gc, cx, cy, SRCAND);
+    BitBlt(fl_gc, X+origin_x(), Y+origin_y(), W, H, new_gc, cx, cy, SRCAND);
     SelectObject(new_gc, (void*)img->id_);
-    BitBlt(fl_gc, X, Y, W, H, new_gc, cx, cy, SRCPAINT);
+    BitBlt(fl_gc, X+origin_x(), Y+origin_y(), W, H, new_gc, cx, cy, SRCPAINT);
     RestoreDC(new_gc,save);
     DeleteDC(new_gc);
   } else if (img->d()==2 || img->d()==4) {
-    copy_offscreen_with_alpha(X, Y, W, H, (fltk3::Offscreen)img->id_, cx, cy);
+    copy_offscreen_with_alpha(X+origin_x(), Y+origin_y(), W, H, 
(fltk3::Offscreen)img->id_, cx, cy);
   } else {
-    copy_offscreen(X, Y, W, H, (fltk3::Offscreen)img->id_, cx, cy);
+    copy_offscreen(X+origin_x(), Y+origin_y(), W, H, 
(fltk3::Offscreen)img->id_, cx, cy);
   }
 }
 

Modified: branches/branch-3.0/src/fltk3/Pixmap.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/Pixmap.cxx    2012-05-07 14:00:31 UTC (rev 
9455)
+++ branches/branch-3.0/src/fltk3/Pixmap.cxx    2012-05-07 14:37:36 UTC (rev 
9456)
@@ -156,13 +156,13 @@
     HDC new_gc = CreateCompatibleDC(fl_gc);
     int save = SaveDC(new_gc);
     SelectObject(new_gc, (void*)pxm->mask_);
-    BitBlt(fl_gc, X, Y, W, H, new_gc, cx, cy, SRCAND);
+    BitBlt(fl_gc, X+origin_x(), Y+origin_y(), W, H, new_gc, cx, cy, SRCAND);
     SelectObject(new_gc, (void*)pxm->id_);
-    BitBlt(fl_gc, X, Y, W, H, new_gc, cx, cy, SRCPAINT);
+    BitBlt(fl_gc, X+origin_x(), Y+origin_y(), W, H, new_gc, cx, cy, SRCPAINT);
     RestoreDC(new_gc,save);
     DeleteDC(new_gc);
   } else {
-    copy_offscreen(X, Y, W, H, (fltk3::Offscreen)pxm->id_, cx, cy);
+    copy_offscreen(X+origin_x(), Y+origin_y(), W, H, 
(fltk3::Offscreen)pxm->id_, cx, cy);
   }
 }
 
@@ -181,12 +181,12 @@
     int save = SaveDC(new_gc);
     SelectObject(new_gc, (void*)pxm->id_);
     // print all of offscreen but its parts in background color
-    fl_TransparentBlt(fl_gc, X, Y, W, H, new_gc, cx, cy, pxm->w(), pxm->h(), 
pxm->pixmap_bg_color );
+    fl_TransparentBlt(fl_gc, X+origin_x(), Y+origin_y(), W, H, new_gc, cx, cy, 
pxm->w(), pxm->h(), pxm->pixmap_bg_color );
     RestoreDC(new_gc,save);
     DeleteDC(new_gc);
   }
   else {
-    copy_offscreen(X, Y, W, H, (fltk3::Offscreen)pxm->id_, cx, cy);
+    copy_offscreen(X+origin_x(), Y+origin_y(), W, H, 
(fltk3::Offscreen)pxm->id_, cx, cy);
   }
 }
 

Modified: branches/branch-3.0/src/fltk3/vertex.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/vertex.cxx    2012-05-07 14:00:31 UTC (rev 
9455)
+++ branches/branch-3.0/src/fltk3/vertex.cxx    2012-05-07 14:37:36 UTC (rev 
9456)
@@ -361,9 +361,9 @@
   prepare_circle(x, y, r, llx, lly, w, h, xt, yt);
   if (vertex_kind()==POLYGON) {
     SelectObject(fl_gc, fl_brush());
-    Pie(fl_gc, llx, lly, llx+w, lly+h, 0,0, 0,0); 
+    Pie(fl_gc, llx+origin_x(), lly+origin_y(), llx+w, lly+h, 0,0, 0,0); 
   } else
-    Arc(fl_gc, llx, lly, llx+w, lly+h, 0,0, 0,0); 
+    Arc(fl_gc, llx+origin_x(), lly+origin_y(), llx+w, lly+h, 0,0, 0,0); 
 }
 #else
 void fltk3::XlibGraphicsDriver::circle(double x, double y, double r) {

Modified: branches/branch-3.0/src/fltk3/win32_font.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/win32_font.cxx        2012-05-07 14:00:31 UTC 
(rev 9455)
+++ branches/branch-3.0/src/fltk3/win32_font.cxx        2012-05-07 14:37:36 UTC 
(rev 9456)
@@ -396,7 +396,7 @@
     wstr_len = wn + 1;
     wn = fltk3::utf8toUtf16(str, n, wstr, wstr_len);
   }
-  TextOutW(fl_gc, x, y, (WCHAR*)wstr, wn);
+  TextOutW(fl_gc, x+origin_x(), y+origin_y(), (WCHAR*)wstr, wn);
   SetTextColor(fl_gc, oldColor); // restore initial state
 }
 
@@ -411,7 +411,7 @@
     wstr_len = wn + 1;
     wn = fltk3::utf8toUtf16(str, n, wstr, wstr_len); // respin the translation
   }
-  TextOutW(fl_gc, x, y, (WCHAR*)wstr, wn);
+  TextOutW(fl_gc, x+origin_x(), y+origin_y(), (WCHAR*)wstr, wn);
   SetTextColor(fl_gc, oldColor);
   ::set_font(this, GraphicsDriver::font(), size(), 0);
 }
@@ -427,6 +427,8 @@
 
   COLORREF oldColor = SetTextColor(fl_gc, fl_RGB());
   SelectObject(fl_gc, font_descriptor()->fid);
+  x += origin_x();
+  y += origin_y();
 #ifdef RTL_CHAR_BY_CHAR
   int i = 0;
   int lx = 0;

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to