Author: manolo
Date: 2012-05-18 06:18:58 -0700 (Fri, 18 May 2012)
New Revision: 9528
Log:
Fixed fltk3::ColorChooser under WIN2 & X11 for group-relative coordinates.
Modified:
branches/branch-3.0/src/fltk3/Image.cxx
branches/branch-3.0/src/fltk3/draw_image.cxx
branches/branch-3.0/src/fltk3/win32_draw_image.cxx
Modified: branches/branch-3.0/src/fltk3/Image.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/Image.cxx 2012-05-18 09:58:22 UTC (rev
9527)
+++ branches/branch-3.0/src/fltk3/Image.cxx 2012-05-18 13:18:58 UTC (rev
9528)
@@ -520,6 +520,7 @@
}
if (!img->id_) {
img->id_ = fl_create_offscreen(img->w(), img->h());
+ fltk3::push_origin(); fltk3::origin(0,0);
if ((img->d() == 2 || img->d() == 4) && can_do_alpha_blending()) {
fl_begin_offscreen((fltk3::Offscreen)img->id_);
fltk3::draw_image(img->array, 0, 0, img->w(), img->h(),
img->d()|fltk3::IMAGE_WITH_ALPHA, img->ld());
@@ -532,6 +533,7 @@
img->mask_ = fl_create_alphamask(img->w(), img->h(), img->d(),
img->ld(), img->array);
}
}
+ fltk3::pop_origin();
}
if (img->mask_) {
HDC new_gc = CreateCompatibleDC(fl_gc);
@@ -564,7 +566,9 @@
if (img->d() == 1 || img->d() == 3) {
img->id_ = fl_create_offscreen(img->w(), img->h());
fl_begin_offscreen((fltk3::Offscreen)img->id_);
+ fltk3::push_origin(); fltk3::origin(0,0);
fltk3::draw_image(img->array, 0, 0, img->w(), img->h(), img->d(),
img->ld());
+ fltk3::pop_origin();
fl_end_offscreen();
}
}
Modified: branches/branch-3.0/src/fltk3/draw_image.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/draw_image.cxx 2012-05-18 09:58:22 UTC
(rev 9527)
+++ branches/branch-3.0/src/fltk3/draw_image.cxx 2012-05-18 13:18:58 UTC
(rev 9528)
@@ -462,13 +462,14 @@
int delta, int linedelta, int mono,
fltk3::DrawImageCb cb, void* userdata)
{
+ // here, X,Y are window-relative coordinates
if (!linedelta) linedelta = W*delta;
int dx, dy, w, h;
-
fltk3::clip_box(X-fltk3::graphics_driver->origin_x(),Y-fltk3::graphics_driver->origin_y(),W,H,dx,dy,w,h);
+ fltk3::push_origin(); fltk3::origin(0,0);
+ fltk3::clip_box(X,Y,W,H,dx,dy,w,h);
+ fltk3::pop_origin();
if (w<=0 || h<=0) return;
- dx += fltk3::graphics_driver->origin_x();
- dy += fltk3::graphics_driver->origin_y();
dx -= X;
dy -= Y;
@@ -548,18 +549,18 @@
}
void fltk3::XlibGraphicsDriver::draw_image(const uchar* buf, int x, int y, int
w, int h, int d, int l){
- innards(buf,x,y,w,h,d,l,(d<3&&d>-3),0,0);
+ innards(buf,x+origin_x(),y+origin_y(),w,h,d,l,(d<3&&d>-3),0,0);
}
void fltk3::XlibGraphicsDriver::draw_image(fltk3::DrawImageCb cb, void* data,
int x, int y, int w, int h,int d) {
- innards(0,x,y,w,h,d,0,(d<3&&d>-3),cb,data);
+ innards(0,x+origin_x(),y+origin_y(),w,h,d,0,(d<3&&d>-3),cb,data);
}
void fltk3::XlibGraphicsDriver::draw_image_mono(const uchar* buf, int x, int
y, int w, int h, int d, int l){
- innards(buf,x,y,w,h,d,l,1,0,0);
+ innards(buf,x+origin_x(),y+origin_y(),w,h,d,l,1,0,0);
}
void fltk3::XlibGraphicsDriver::draw_image_mono(fltk3::DrawImageCb cb, void*
data,
int x, int y, int w, int h,int d) {
- innards(0,x,y,w,h,d,0,1,cb,data);
+ innards(0,x+origin_x(),y+origin_y(),w,h,d,0,1,cb,data);
}
void fltk3::rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) {
@@ -569,7 +570,7 @@
} else {
uchar c[3];
c[0] = r; c[1] = g; c[2] = b;
- innards(c,x,y,w,h,0,0,0,0,0);
+ innards(c,x+origin_x(),y+origin_y(),w,h,0,0,0,0,0);
}
}
Modified: branches/branch-3.0/src/fltk3/win32_draw_image.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/win32_draw_image.cxx 2012-05-18 09:58:22 UTC
(rev 9527)
+++ branches/branch-3.0/src/fltk3/win32_draw_image.cxx 2012-05-18 13:18:58 UTC
(rev 9528)
@@ -129,7 +129,9 @@
if (!linedelta) linedelta = W*delta;
int x, y, w, h;
+ fltk3::push_origin(); fltk3::origin(0,0);
fltk3::clip_box(X,Y,W,H,x,y,w,h);
+ fltk3::pop_origin();
if (w<=0 || h<=0) return;
if (buf) buf += (x-X)*delta + (y-Y)*linedelta;
@@ -289,6 +291,7 @@
static int fl_abs(int v) { return v<0 ? -v : v; }
void fltk3::GDIGraphicsDriver::draw_image(const uchar* buf, int x, int y, int
w, int h, int d, int l){
+ x += origin_x(); y += origin_y();
if (fl_abs(d)&fltk3::IMAGE_WITH_ALPHA) {
d ^= fltk3::IMAGE_WITH_ALPHA;
innards(buf,x,y,w,h,d,l,fl_abs(d),0,0);
@@ -299,6 +302,7 @@
void fltk3::GDIGraphicsDriver::draw_image(fltk3::DrawImageCb cb, void* data,
int x, int y, int w, int h,int d) {
+ x += origin_x(); y += origin_y();
if (fl_abs(d)&fltk3::IMAGE_WITH_ALPHA) {
d ^= fltk3::IMAGE_WITH_ALPHA;
innards(0,x,y,w,h,d,0,(d<3&&d>-3),cb,data);
@@ -308,6 +312,7 @@
}
void fltk3::GDIGraphicsDriver::draw_image_mono(const uchar* buf, int x, int y,
int w, int h, int d, int l){
+ x += origin_x(); y += origin_y();
if (fl_abs(d)&fltk3::IMAGE_WITH_ALPHA) {
d ^= fltk3::IMAGE_WITH_ALPHA;
innards(buf,x,y,w,h,d,l,1,0,0);
@@ -318,6 +323,7 @@
void fltk3::GDIGraphicsDriver::draw_image_mono(fltk3::DrawImageCb cb, void*
data,
int x, int y, int w, int h,int d) {
+ x += origin_x(); y += origin_y();
if (fl_abs(d)&fltk3::IMAGE_WITH_ALPHA) {
d ^= fltk3::IMAGE_WITH_ALPHA;
innards(0,x,y,w,h,d,0,1,cb,data);
@@ -332,7 +338,7 @@
if (fl_palette) {
uchar c[3];
c[0] = r; c[1] = g; c[2] = b;
- innards(c,x,y,w,h,0,0,0,0,0);
+ innards(c,x+origin_x(),y+origin_y(),w,h,0,0,0,0,0);
return;
}
#endif
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit