summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/PostScript/Fl_PostScript.cxx26
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H1
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx4
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx4
4 files changed, 16 insertions, 19 deletions
diff --git a/src/drivers/PostScript/Fl_PostScript.cxx b/src/drivers/PostScript/Fl_PostScript.cxx
index 9027faca4..d25915a5a 100644
--- a/src/drivers/PostScript/Fl_PostScript.cxx
+++ b/src/drivers/PostScript/Fl_PostScript.cxx
@@ -16,9 +16,7 @@
// http://www.fltk.org/str.php
//
-#include <config.h>
#include <FL/Fl.H>
-#include <FL/x.H>
#include <FL/fl_ask.H>
#include <FL/fl_draw.H>
#include <stdio.h>
@@ -26,12 +24,6 @@
#include <FL/Fl_Native_File_Chooser.H>
#include <FL/Fl_System_Driver.H>
#include <stdarg.h>
-#if defined(USE_X11)
-#include <src/Fl_Font.H>
-#if USE_XFT
-#include <X11/Xft/Xft.h>
-#endif
-#endif
/** \brief Label of the PostScript file chooser window */
const char *Fl_PostScript_File_Device::file_chooser_title = "Select a .ps file";
@@ -1041,12 +1033,8 @@ static uchar *calc_mask(uchar *img, int w, int h, Fl_Color bg)
// write to PostScript a bitmap image of a UTF8 string
void Fl_PostScript_Graphics_Driver::transformed_draw_extra(const char* str, int n, double x, double y, int w, bool rtl)
{
- // scale for bitmask computation
-#if defined(USE_X11) && !USE_XFT
- float scale = 1; // don't scale because we can't expect to have scalable fonts
-#else
- float scale = 2;
-#endif
+ // scale for bitmask computation is set to 1 when we can't expect to have scalable fonts
+ float scale = Fl_Display_Device::display_device()->driver()->scale_bitmap_for_PostScript();
Fl_Fontsize old_size = size();
Fl_Font fontnum = Fl_Graphics_Driver::font();
int w_scaled = (int)(w * (scale + 0.5));
@@ -1060,11 +1048,11 @@ void Fl_PostScript_Graphics_Driver::transformed_draw_extra(const char* str, int
// color offscreen background with a shade contrasting with the text color
fl_rectf(0, 0, w_scaled, (int)(h+3*scale) );
fl_color(text_color);
-#if defined(USE_X11) && !USE_XFT
- // force seeing this font as new so it's applied to the offscreen graphics context
- fl_graphics_driver->font_descriptor(NULL);
- fl_font(fontnum, 0);
-#endif
+ if (scale < 1.5) {
+ // force seeing this font as new so it's applied to the offscreen graphics context
+ fl_graphics_driver->font_descriptor(NULL);
+ fl_font(fontnum, 0);
+ }
fl_font(fontnum, (Fl_Fontsize)(scale * old_size) );
int w2 = (int)fl_width(str, n);
// draw string in offscreen
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
index eb5662245..808900677 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.H
@@ -128,6 +128,7 @@ protected:
Fl_Color color() { return color_; }
void color(uchar r, uchar g, uchar b);
virtual float scale_font_for_PostScript(Fl_Font_Descriptor *desc, int s);
+ virtual float scale_bitmap_for_PostScript();
};
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx
index bf14b4923..25e28bc24 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx
@@ -693,6 +693,10 @@ float Fl_Xlib_Graphics_Driver::scale_font_for_PostScript(Fl_Font_Descriptor *des
return ps_size;
}
+float Fl_Xlib_Graphics_Driver::scale_bitmap_for_PostScript() {
+ return 1;
+}
+
#endif // FL_DOXYGEN
//
// End of "$Id$".
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 fd6d24b47..582870e85 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
@@ -1097,6 +1097,10 @@ float Fl_Xlib_Graphics_Driver::scale_font_for_PostScript(Fl_Font_Descriptor *des
return ps_size;
}
+float Fl_Xlib_Graphics_Driver::scale_bitmap_for_PostScript() {
+ return 2;
+}
+
#endif // FL_DOXYGEN
//