From 54b697cd49d3946ecd1f264c0741f36568822819 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Thu, 19 Apr 2018 10:39:46 +0000 Subject: Reorganise access to the value of the GUI scaling factor with public getter and protected, virtual setter member functions. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12858 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H | 1 + src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx | 8 +- src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx | 6 +- .../Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx | 28 +++---- src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx | 48 ++++++------ src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx | 86 +++++++++++----------- 6 files changed, 89 insertions(+), 88 deletions(-) (limited to 'src/drivers/Xlib') diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H index 4eeb742f3..584b8114a 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H @@ -107,6 +107,7 @@ public: void translate_all(int dx, int dy); void untranslate_all(); virtual void scale(float f); + float scale() {return Fl_Graphics_Driver::scale();} virtual int has_feature(driver_feature mask) { return mask & NATIVE; } virtual void *gc() { return gc_; } virtual void gc(void *value); diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx index 946f8f8c1..d01d1156b 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx @@ -77,9 +77,9 @@ void Fl_Xlib_Graphics_Driver::gc(void *value) { void Fl_Xlib_Graphics_Driver::scale(float f) { #if USE_XFT - if (f != scale_) { + if (f != scale()) { size_ = 0; - scale_ = f; + Fl_Graphics_Driver::scale(f); //fprintf(stderr, "scale=%.2f\n", scale_); line_style(FL_SOLID); // scale also default line width /* Scaling >= 2 transforms 1-pixel wide lines into wider lines. @@ -92,13 +92,13 @@ void Fl_Xlib_Graphics_Driver::scale(float f) { Setting line_delta_ to 1 and offsetting all line, rectangle, text and clip coordinates by line_delta_ achieves what is wanted until scale_ <= 3.5. */ - line_delta_ = (scale_ > 1.75 ? 1 : 0); + line_delta_ = (scale() > 1.75 ? 1 : 0); } #endif } void Fl_Xlib_Graphics_Driver::copy_offscreen(int x, int y, int w, int h, Fl_Offscreen pixmap, int srcx, int srcy) { - XCopyArea(fl_display, pixmap, fl_window, gc_, srcx*scale_, srcy*scale_, w*scale_, h*scale_, (x+offset_x_)*scale_, (y+offset_y_)*scale_); + XCopyArea(fl_display, pixmap, fl_window, gc_, srcx*scale(), srcy*scale(), w*scale(), h*scale(), (x+offset_x_)*scale(), (y+offset_y_)*scale()); } diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx index 578c6b5b0..dc35080b3 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx @@ -28,13 +28,13 @@ void Fl_Xlib_Graphics_Driver::arc_unscaled(float x,float y,float w,float h,double a1,double a2) { if (w <= 0 || h <= 0) return; - XDrawArc(fl_display, fl_window, gc_, int(x+offset_x_*scale_), int(y+offset_y_*scale_), int(w-1), int(h-1), int(a1*64),int((a2-a1)*64)); + XDrawArc(fl_display, fl_window, gc_, int(x+offset_x_*scale()), int(y+offset_y_*scale()), int(w-1), int(h-1), int(a1*64),int((a2-a1)*64)); } void Fl_Xlib_Graphics_Driver::pie_unscaled(float x,float y,float w,float h,double a1,double a2) { if (w <= 0 || h <= 0) return; - x += offset_x_*scale_; - y += offset_y_*scale_; + x += offset_x_*scale(); + y += offset_y_*scale(); XDrawArc(fl_display, fl_window, gc_, x,y,w-1,h-1, int(a1*64),int((a2-a1)*64)); XFillArc(fl_display, fl_window, gc_, x,y,w-1,h-1, int(a1*64),int((a2-a1)*64)); } diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx index e5d62492a..932a0e9ef 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx @@ -129,21 +129,21 @@ Fl_Fontsize Fl_Xlib_Graphics_Driver::size_unscaled() { return (Fl_Fontsize)(size_); } -static void correct_extents (float scale_, int &dx, int &dy, int &w, int &h) { - if (int(scale_) == scale_) { // correct for extents non divisible by integral scale_ - int delta = dx - int(dx/scale_)*scale_; +static void correct_extents (float s, int &dx, int &dy, int &w, int &h) { + if (int(s) == s) { // correct for extents non divisible by integral s + int delta = dx - int(dx/s)*s; if (delta) { dx -= delta; w += delta; } - delta = -dy - int((-dy)/scale_)*scale_; + delta = -dy - int((-dy)/s)*s; if (delta) { dy -= delta; h += delta; } - delta = h - int(h/scale_)*scale_; + delta = h - int(h/s)*s; if (delta) { h += delta; } - delta = w - int(w/scale_)*scale_; + delta = w - int(w/s)*s; if (delta) { w += delta; } @@ -778,7 +778,7 @@ void Fl_Xlib_Graphics_Driver::text_extents_unscaled(const char *c, int n, int &d h = gi.height; dx = -gi.x + line_delta_; dy = -gi.y + line_delta_; - correct_extents(scale_, dx, dy, w, h); + correct_extents(scale(), dx, dy, w, h); } void Fl_Xlib_Graphics_Driver::draw_unscaled(const char *str, int n, int x, int y) { @@ -814,9 +814,9 @@ void Fl_Xlib_Graphics_Driver::draw_unscaled(const char *str, int n, int x, int y const wchar_t *buffer = utf8reformat(str, n); #ifdef __CYGWIN__ - XftDrawString16(draw_, &color, ((Fl_Xlib_Font_Descriptor*)font_descriptor())->font, x+offset_x_*scale_+line_delta_, y+offset_y_*scale_+line_delta_, (XftChar16 *)buffer, n); + XftDrawString16(draw_, &color, ((Fl_Xlib_Font_Descriptor*)font_descriptor())->font, x+offset_x_*scale()+line_delta_, y+offset_y_*scale()+line_delta_, (XftChar16 *)buffer, n); #else - XftDrawString32(draw_, &color, ((Fl_Xlib_Font_Descriptor*)font_descriptor())->font, x+offset_x_*scale_+line_delta_, y+offset_y_*scale_+line_delta_, (XftChar32 *)buffer, n); + XftDrawString32(draw_, &color, ((Fl_Xlib_Font_Descriptor*)font_descriptor())->font, x+offset_x_*scale()+line_delta_, y+offset_y_*scale()+line_delta_, (XftChar32 *)buffer, n); #endif } } @@ -858,7 +858,7 @@ void Fl_Xlib_Graphics_Driver::drawUCS4(const void *str, int n, int x, int y) { color.color.blue = ((int)b)*0x101; color.color.alpha = 0xffff; - XftDrawString32(draw_, &color, ((Fl_Xlib_Font_Descriptor*)font_descriptor())->font, x+offset_x_*scale_+line_delta_, y+offset_y_*scale_+line_delta_, (FcChar32 *)str, n); + XftDrawString32(draw_, &color, ((Fl_Xlib_Font_Descriptor*)font_descriptor())->font, x+offset_x_*scale()+line_delta_, y+offset_y_*scale()+line_delta_, (FcChar32 *)str, n); } @@ -1223,12 +1223,12 @@ void Fl_Xlib_Graphics_Driver::font_unscaled(Fl_Font fnum, Fl_Fontsize size) { } void Fl_Xlib_Graphics_Driver::draw_unscaled(const char *str, int n, int x, int y) { - do_draw(0, str, n, x+offset_x_*scale_, y+offset_y_*scale_); + do_draw(0, str, n, x+offset_x_*scale(), y+offset_y_*scale()); } void Fl_Xlib_Graphics_Driver::draw_unscaled(int angle, const char *str, int n, int x, int y) { PangoMatrix mat = PANGO_MATRIX_INIT; // 1.6 - pango_matrix_translate(&mat, x+offset_x_*scale_, y+offset_y_*scale_); // 1.6 + pango_matrix_translate(&mat, x+offset_x_*scale(), y+offset_y_*scale()); // 1.6 double l = width_unscaled(str, n); pango_matrix_rotate(&mat, angle); // 1.6 pango_context_set_matrix(pctxt_, &mat); // 1.6 @@ -1242,7 +1242,7 @@ void Fl_Xlib_Graphics_Driver::draw_unscaled(int angle, const char *str, int n, i } void Fl_Xlib_Graphics_Driver::rtl_draw_unscaled(const char* str, int n, int x, int y) { - do_draw(1, str, n, x+offset_x_*scale_, y+offset_y_*scale_); + do_draw(1, str, n, x+offset_x_*scale(), y+offset_y_*scale()); } /* Compute dx, dy, w, h so that fl_rect(x+dx, y+dy, w, h) is the bounding box @@ -1332,7 +1332,7 @@ void Fl_Xlib_Graphics_Driver::text_extents_unscaled(const char *str, int n, int int y_correction; fl_pango_layout_get_pixel_extents(playout_, dx, dy, w, h, descent_unscaled(), height_unscaled(), y_correction); dy -= y_correction; - correct_extents(scale_, dx, dy, w, h); + correct_extents(scale(), dx, dy, w, h); } int Fl_Xlib_Graphics_Driver::height_unscaled() { diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx index 80fe2c8ce..05f3bd598 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx @@ -582,7 +582,7 @@ void Fl_Xlib_Graphics_Driver::draw_image_unscaled(const uchar* buf, int x, int y if (alpha) d ^= FL_IMAGE_WITH_ALPHA; const int mono = (d>-3 && d<3); - innards(buf,x+offset_x_*scale_,y+offset_y_*scale_,w,h,d,l,mono,0,0,alpha,gc_); + innards(buf,x+offset_x_*scale(),y+offset_y_*scale(),w,h,d,l,mono,0,0,alpha,gc_); } void Fl_Xlib_Graphics_Driver::draw_image_unscaled(Fl_Draw_Image_Cb cb, void* data, @@ -592,16 +592,16 @@ void Fl_Xlib_Graphics_Driver::draw_image_unscaled(Fl_Draw_Image_Cb cb, void* dat if (alpha) d ^= FL_IMAGE_WITH_ALPHA; const int mono = (d>-3 && d<3); - innards(0,x+offset_x_*scale_,y+offset_y_*scale_,w,h,d,0,mono,cb,data,alpha,gc_); + innards(0,x+offset_x_*scale(),y+offset_y_*scale(),w,h,d,0,mono,cb,data,alpha,gc_); } void Fl_Xlib_Graphics_Driver::draw_image_mono_unscaled(const uchar* buf, int x, int y, int w, int h, int d, int l){ - innards(buf,x+offset_x_*scale_,y+offset_y_*scale_,w,h,d,l,1,0,0,0,gc_); + innards(buf,x+offset_x_*scale(),y+offset_y_*scale(),w,h,d,l,1,0,0,0,gc_); } void Fl_Xlib_Graphics_Driver::draw_image_mono_unscaled(Fl_Draw_Image_Cb cb, void* data, int x, int y, int w, int h,int d) { - innards(0,x+offset_x_*scale_,y+offset_y_*scale_,w,h,d,0,1,cb,data,0,gc_); + innards(0,x+offset_x_*scale(),y+offset_y_*scale(),w,h,d,0,1,cb,data,0,gc_); } void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b) { @@ -625,13 +625,13 @@ void Fl_Xlib_Graphics_Driver::delete_bitmask(Fl_Bitmask bm) { } void Fl_Xlib_Graphics_Driver::draw_fixed(Fl_Bitmap *bm, int X, int Y, int W, int H, int cx, int cy) { - X = (X+offset_x_)*scale_; - Y = (Y+offset_y_)*scale_; + X = (X+offset_x_)*scale(); + Y = (Y+offset_y_)*scale(); cache_size(bm, W, H); - cx *= scale_; cy *= scale_; + cx *= scale(); cy *= scale(); XSetStipple(fl_display, gc_, *Fl_Graphics_Driver::id(bm)); - int ox = X-cx; if (ox < 0) ox += bm->w()*scale_; - int oy = Y-cy; if (oy < 0) oy += bm->h()*scale_; + int ox = X-cx; if (ox < 0) ox += bm->w()*scale(); + int oy = Y-cy; if (oy < 0) oy += bm->h()*scale(); XSetTSOrigin(fl_display, gc_, ox, oy); XSetFillStyle(fl_display, gc_, FillStippled); XFillRectangle(fl_display, fl_window, gc_, X, Y, W, H); @@ -723,17 +723,17 @@ void Fl_Xlib_Graphics_Driver::cache(Fl_RGB_Image *img) { void Fl_Xlib_Graphics_Driver::draw_fixed(Fl_RGB_Image *img, int X, int Y, int W, int H, int cx, int cy) { - X = (X+offset_x_)*scale_; - Y = (Y+offset_y_)*scale_; + X = (X+offset_x_)*scale(); + Y = (Y+offset_y_)*scale(); cache_size(img, W, H); - cx *= scale_; cy *= scale_; + cx *= scale(); cy *= scale(); if (img->d() == 1 || img->d() == 3) { XCopyArea(fl_display, *Fl_Graphics_Driver::id(img), fl_window, gc_, cx, cy, W, H, X, Y); return; } // Composite image with alpha manually each time... - float s = scale_; - scale_ = 1; + float s = scale(); + Fl_Graphics_Driver::scale(1); int ox = offset_x_, oy = offset_y_; offset_x_ = offset_y_ = 0; Fl_X11_Screen_Driver *d = (Fl_X11_Screen_Driver*)Fl::screen_driver(); @@ -744,7 +744,7 @@ void Fl_Xlib_Graphics_Driver::draw_fixed(Fl_RGB_Image *img, int X, int Y, int W, alpha_blend(img, X, Y, W, H, cx, cy); pop_clip(); d->scale(nscreen, keep); - scale_ = s; + Fl_Graphics_Driver::scale(s); offset_x_ = ox; offset_y_ = oy; } @@ -764,8 +764,8 @@ void Fl_Xlib_Graphics_Driver::draw_rgb(Fl_RGB_Image *rgb, int XP, int YP, int WP } cache_size(rgb, W, H); scale_and_render_pixmap( *Fl_Graphics_Driver::id(rgb), rgb->d(), - rgb->data_w() / double(rgb->w()*scale_), rgb->data_h() / double(rgb->h()*scale_), - cx*scale_, cy*scale_, (X + offset_x_)*scale_, (Y + offset_y_)*scale_, W, H); + rgb->data_w() / double(rgb->w()*scale()), rgb->data_h() / double(rgb->h()*scale()), + cx*scale(), cy*scale(), (X + offset_x_)*scale(), (Y + offset_y_)*scale(), W, H); } /* Draws with Xrender an Fl_Offscreen with optional scaling and accounting for transparency if necessary. @@ -783,7 +783,7 @@ int Fl_Xlib_Graphics_Driver::scale_and_render_pixmap(Fl_Offscreen pixmap, int de fprintf(stderr, "Failed to create Render pictures (%lu %lu)\n", src, dst); return 0; } - Fl_Region r = scale_clip(scale_); + Fl_Region r = scale_clip(scale()); const Fl_Region clipr = clip_region(); if (clipr) XRenderSetPictureClipRegion(fl_display, dst, clipr); @@ -822,11 +822,11 @@ void Fl_Xlib_Graphics_Driver::cache(Fl_Bitmap *bm) { } void Fl_Xlib_Graphics_Driver::draw_fixed(Fl_Pixmap *pxm, int X, int Y, int W, int H, int cx, int cy) { - X = (X+offset_x_)*scale_; - Y = (Y+offset_y_)*scale_; + X = (X+offset_x_)*scale(); + Y = (Y+offset_y_)*scale(); cache_size(pxm, W, H); - cx *= scale_; cy *= scale_; - Fl_Region r2 = scale_clip(scale_); + cx *= scale(); cy *= scale(); + Fl_Region r2 = scale_clip(scale()); if (*Fl_Graphics_Driver::mask(pxm)) { // make X use the bitmap as a mask: XSetClipMask(fl_display, gc_, *Fl_Graphics_Driver::mask(pxm)); @@ -857,9 +857,9 @@ void Fl_Xlib_Graphics_Driver::draw_fixed(Fl_Pixmap *pxm, int X, int Y, int W, in } // put the old clip region back XSetClipOrigin(fl_display, gc_, 0, 0); - float s = scale_; scale_ = 1; + float s = scale(); Fl_Graphics_Driver::scale(1); restore_clip(); - scale_ = s; + Fl_Graphics_Driver::scale(s); } else XCopyArea(fl_display, *Fl_Graphics_Driver::id(pxm), fl_window, gc_, cx, cy, W, H, X, Y); unscale_clip(r2); diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx index 7ba5490b5..1d6e2752f 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx @@ -214,8 +214,8 @@ void Fl_Xlib_Graphics_Driver::XDestroyRegion(Fl_Region r) { // called only when scale_ has integer value void Fl_Xlib_Graphics_Driver::rect_unscaled(float fx, float fy, float fw, float fh) { if (fw<=0 || fh<=0) return; - int deltaf = scale_ >= 2 ? scale_-1 : 0; - fx += offset_x_*scale_; fy += offset_y_*scale_; + int deltaf = scale() >= 2 ? scale()-1 : 0; + fx += offset_x_*scale(); fy += offset_y_*scale(); int x = fx; int y = fy; int w = int(fw) - 1 - deltaf; int h = int(fh) - 1 - deltaf; @@ -225,21 +225,21 @@ void Fl_Xlib_Graphics_Driver::rect_unscaled(float fx, float fy, float fw, float void Fl_Xlib_Graphics_Driver::rectf_unscaled(float fx, float fy, float fw, float fh) { if (fw<=0 || fh<=0) return; - int deltaf = scale_ >= 2 ? scale_/2 : 0; - fx += offset_x_*scale_; fy += offset_y_*scale_; + int deltaf = scale() >= 2 ? scale()/2 : 0; + fx += offset_x_*scale(); fy += offset_y_*scale(); int x = fx-deltaf; int y = fy-deltaf; // make sure no unfilled area lies between rectf(x,y,w,h) and rectf(x+w,y,1,h) or rectf(x,y+w,w,1) - int w = int(int(fx/scale_+fw/scale_+0.5)*scale_) - int(fx); - int h = int(int(fy/scale_+fh/scale_+0.5)*scale_) - int(fy); + int w = int(int(fx/scale()+fw/scale()+0.5)*scale()) - int(fx); + int h = int(int(fy/scale()+fh/scale()+0.5)*scale()) - int(fy); if (!clip_rect(x, y, w, h)) XFillRectangle(fl_display, fl_window, gc_, x+line_delta_, y+line_delta_, w, h); } void Fl_Xlib_Graphics_Driver::point_unscaled(float fx, float fy) { - int deltaf = scale_ >= 2 ? scale_/2 : 0; - int x = fx+offset_x_*scale_-deltaf; - int y = fy+offset_y_*scale_-deltaf; - int width = scale_ >= 1 ? scale_ : 1; + int deltaf = scale() >= 2 ? scale()/2 : 0; + int x = fx+offset_x_*scale()-deltaf; + int y = fy+offset_y_*scale()-deltaf; + int width = scale() >= 1 ? scale() : 1; // *FIXME* This needs X coordinate clipping: XFillRectangle(fl_display, fl_window, gc_, x+line_delta_, y+line_delta_, width, width); } @@ -247,75 +247,75 @@ void Fl_Xlib_Graphics_Driver::point_unscaled(float fx, float fy) { void Fl_Xlib_Graphics_Driver::line_unscaled(float x, float y, float x1, float y1) { if (x == x1) yxline_unscaled(x, y, y1); else if (y == y1) xyline_unscaled(x, y, x1); - else draw_clipped_line(x+offset_x_*scale_+line_delta_, y+offset_y_*scale_+line_delta_, x1+offset_x_*scale_+line_delta_, y1+offset_y_*scale_+line_delta_); + else draw_clipped_line(x+offset_x_*scale()+line_delta_, y+offset_y_*scale()+line_delta_, x1+offset_x_*scale()+line_delta_, y1+offset_y_*scale()+line_delta_); } void Fl_Xlib_Graphics_Driver::line_unscaled(float x, float y, float x1, float y1, float x2, float y2) { XPoint p[3]; - p[0].x = x+offset_x_*scale_+line_delta_; p[0].y = y+offset_y_*scale_+line_delta_; - p[1].x = x1+offset_x_*scale_+line_delta_; p[1].y = y1+offset_y_*scale_+line_delta_; - p[2].x = x2+offset_x_*scale_+line_delta_; p[2].y = y2+offset_y_*scale_+line_delta_; + p[0].x = x+offset_x_*scale()+line_delta_; p[0].y = y+offset_y_*scale()+line_delta_; + p[1].x = x1+offset_x_*scale()+line_delta_; p[1].y = y1+offset_y_*scale()+line_delta_; + p[2].x = x2+offset_x_*scale()+line_delta_; p[2].y = y2+offset_y_*scale()+line_delta_; // *FIXME* This needs X coordinate clipping! XDrawLines(fl_display, fl_window, gc_, p, 3, 0); } void Fl_Xlib_Graphics_Driver::xyline_unscaled(float x, float y, float x1) { - x+=offset_x_*scale_; y+=offset_y_*scale_; x1 += offset_x_*scale_; + x+=offset_x_*scale(); y+=offset_y_*scale(); x1 += offset_x_*scale(); int tw = line_width_ ? line_width_ : 1; // true line width if (x > x1) { float exch = x; x = x1; x1 = exch; } - int ix = clip_xy(x+line_delta_); if (scale_ >= 2) ix -= int(scale_/2); + int ix = clip_xy(x+line_delta_); if (scale() >= 2) ix -= int(scale()/2); int iy = clip_xy(y+line_delta_); // make sure that line output by xyline(a,b,c) extends to pixel just at left of where xyline(c+1,b,d) begins - int ix1 = int(x1/scale_+1.5)*scale_-1; - ix1 += line_delta_; if (scale_ >= 4) ix1 -= 1; + int ix1 = int(x1/scale()+1.5)*scale()-1; + ix1 += line_delta_; if (scale() >= 4) ix1 -= 1; draw_clipped_line(ix, iy, ix1, iy); // make sure no unfilled area lies between xyline(x,y,x1) and xyline(x,y+1,x1) - if (y+line_delta_ + scale_ >= iy + tw+1 - 0.001 ) + if (y+line_delta_ + scale() >= iy + tw+1 - 0.001 ) draw_clipped_line(ix, iy+1, ix1, iy+1); } void Fl_Xlib_Graphics_Driver::yxline_unscaled(float x, float y, float y1) { - x+=offset_x_*scale_; y+=offset_y_*scale_; y1 += offset_y_*scale_; + x+=offset_x_*scale(); y+=offset_y_*scale(); y1 += offset_y_*scale(); int tw = line_width_ ? line_width_ : 1; // true line width if (y > y1) { float exch = y; y = y1; y1 = exch; } int ix = clip_xy(x+line_delta_); - int iy = clip_xy(y+line_delta_); if (scale_ >= 2) iy -= int(scale_/2); - int iy1 = int(y1/scale_+1.5)*scale_-1; + int iy = clip_xy(y+line_delta_); if (scale() >= 2) iy -= int(scale()/2); + int iy1 = int(y1/scale()+1.5)*scale()-1; // make sure that line output by yxline(a,b,c) extends to pixel just above where yxline(a,c+1,d) begins - iy1 += line_delta_; if (scale_ >= 4) iy1 -= 1; + iy1 += line_delta_; if (scale() >= 4) iy1 -= 1; draw_clipped_line(ix, iy, ix, iy1); // make sure no unfilled area lies between yxline(x,y,y1) and yxline(x+1,y,y1) - if (x+line_delta_+scale_ >= ix + tw+1 -0.001) + if (x+line_delta_+scale() >= ix + tw+1 -0.001) draw_clipped_line(ix+1, iy, ix+1, iy1); } void Fl_Xlib_Graphics_Driver::loop_unscaled(float x, float y, float x1, float y1, float x2, float y2) { XPoint p[4]; - p[0].x = x +offset_x_*scale_+line_delta_; p[0].y = y +offset_y_*scale_+line_delta_; - p[1].x = x1 +offset_x_*scale_+line_delta_; p[1].y = y1 +offset_y_*scale_+line_delta_; - p[2].x = x2 +offset_x_*scale_+line_delta_; p[2].y = y2 +offset_y_*scale_+line_delta_; - p[3].x = x +offset_x_*scale_+line_delta_; p[3].y = y +offset_y_*scale_+line_delta_; + p[0].x = x +offset_x_*scale()+line_delta_; p[0].y = y +offset_y_*scale()+line_delta_; + p[1].x = x1 +offset_x_*scale()+line_delta_; p[1].y = y1 +offset_y_*scale()+line_delta_; + p[2].x = x2 +offset_x_*scale()+line_delta_; p[2].y = y2 +offset_y_*scale()+line_delta_; + p[3].x = x +offset_x_*scale()+line_delta_; p[3].y = y +offset_y_*scale()+line_delta_; // *FIXME* This needs X coordinate clipping! XDrawLines(fl_display, fl_window, gc_, p, 4, 0); } void Fl_Xlib_Graphics_Driver::loop_unscaled(float x, float y, float x1, float y1, float x2, float y2, float x3, float y3) { XPoint p[5]; - p[0].x = x+offset_x_*scale_+line_delta_; p[0].y = y+offset_y_*scale_+line_delta_; - p[1].x = x1 +offset_x_*scale_+line_delta_; p[1].y = y1+offset_y_*scale_+line_delta_; - p[2].x = x2+offset_x_*scale_+line_delta_; p[2].y = y2+offset_y_*scale_+line_delta_; - p[3].x = x3+offset_x_*scale_+line_delta_; p[3].y = y3+offset_y_*scale_+line_delta_; - p[4].x = x+offset_x_*scale_+line_delta_; p[4].y = y+offset_y_*scale_+line_delta_; + p[0].x = x+offset_x_*scale()+line_delta_; p[0].y = y+offset_y_*scale()+line_delta_; + p[1].x = x1 +offset_x_*scale()+line_delta_; p[1].y = y1+offset_y_*scale()+line_delta_; + p[2].x = x2+offset_x_*scale()+line_delta_; p[2].y = y2+offset_y_*scale()+line_delta_; + p[3].x = x3+offset_x_*scale()+line_delta_; p[3].y = y3+offset_y_*scale()+line_delta_; + p[4].x = x+offset_x_*scale()+line_delta_; p[4].y = y+offset_y_*scale()+line_delta_; // *FIXME* This needs X coordinate clipping! XDrawLines(fl_display, fl_window, gc_, p, 5, 0); } void Fl_Xlib_Graphics_Driver::polygon_unscaled(float x, float y, float x1, float y1, float x2, float y2) { XPoint p[4]; - p[0].x = x+offset_x_*scale_+line_delta_; p[0].y = y+offset_y_*scale_+line_delta_; - p[1].x = x1+offset_x_*scale_+line_delta_; p[1].y = y1+offset_y_*scale_+line_delta_; - p[2].x = x2+offset_x_*scale_+line_delta_; p[2].y = y2+offset_y_*scale_+line_delta_; - p[3].x = x+offset_x_*scale_+line_delta_; p[3].y = y+offset_y_*scale_+line_delta_; + p[0].x = x+offset_x_*scale()+line_delta_; p[0].y = y+offset_y_*scale()+line_delta_; + p[1].x = x1+offset_x_*scale()+line_delta_; p[1].y = y1+offset_y_*scale()+line_delta_; + p[2].x = x2+offset_x_*scale()+line_delta_; p[2].y = y2+offset_y_*scale()+line_delta_; + p[3].x = x+offset_x_*scale()+line_delta_; p[3].y = y+offset_y_*scale()+line_delta_; // *FIXME* This needs X coordinate clipping! XFillPolygon(fl_display, fl_window, gc_, p, 3, Convex, 0); XDrawLines(fl_display, fl_window, gc_, p, 4, 0); @@ -323,11 +323,11 @@ void Fl_Xlib_Graphics_Driver::polygon_unscaled(float x, float y, float x1, float void Fl_Xlib_Graphics_Driver::polygon_unscaled(float x, float y, float x1, float y1, float x2, float y2, float x3, float y3) { XPoint p[5]; - p[0].x = x+offset_x_*scale_+line_delta_; p[0].y = y+offset_y_*scale_+line_delta_; - p[1].x = x1+offset_x_*scale_+line_delta_; p[1].y = y1+offset_y_*scale_+line_delta_; - p[2].x = x2+offset_x_*scale_+line_delta_; p[2].y = y2+offset_y_*scale_+line_delta_; - p[3].x = x3+offset_x_*scale_+line_delta_; p[3].y = y3+offset_y_*scale_+line_delta_; - p[4].x = x+offset_x_*scale_+line_delta_; p[4].y = y+offset_y_*scale_+line_delta_; + p[0].x = x+offset_x_*scale()+line_delta_; p[0].y = y+offset_y_*scale()+line_delta_; + p[1].x = x1+offset_x_*scale()+line_delta_; p[1].y = y1+offset_y_*scale()+line_delta_; + p[2].x = x2+offset_x_*scale()+line_delta_; p[2].y = y2+offset_y_*scale()+line_delta_; + p[3].x = x3+offset_x_*scale()+line_delta_; p[3].y = y3+offset_y_*scale()+line_delta_; + p[4].x = x+offset_x_*scale()+line_delta_; p[4].y = y+offset_y_*scale()+line_delta_; // *FIXME* This needs X coordinate clipping! XFillPolygon(fl_display, fl_window, gc_, p, 4, Convex, 0); XDrawLines(fl_display, fl_window, gc_, p, 5, 0); @@ -418,7 +418,7 @@ void Fl_Xlib_Graphics_Driver::restore_clip() { if (gc_) { Region r = rstack[rstackptr]; if (r) { - Region r2 = scale_clip(scale_); + Region r2 = scale_clip(scale()); XSetRegion(fl_display, gc_, rstack[rstackptr]); unscale_clip(r2); } -- cgit v1.2.3