summaryrefslogtreecommitdiff
path: root/src/drivers/Xlib
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2018-04-19 10:39:46 +0000
committerManolo Gouy <Manolo>2018-04-19 10:39:46 +0000
commit54b697cd49d3946ecd1f264c0741f36568822819 (patch)
tree399901a93956b7558be6d5e77ba62cb93ee7141d /src/drivers/Xlib
parentd375918a5ea3210d0d148ec215f1494cbfbd927e (diff)
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
Diffstat (limited to 'src/drivers/Xlib')
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H1
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx8
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx6
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx28
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx48
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx86
6 files changed, 89 insertions, 88 deletions
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);
}