diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-04-27 09:09:08 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-04-27 09:09:08 +0200 |
| commit | 3bc90179703b06dbdfaf3553faaab4a26c206ce6 (patch) | |
| tree | b91cb003cb3bc3413dd17164a976c49e064a37de /src | |
| parent | 6e70afc81111590413aaab8ed1507465cc77fcb1 (diff) | |
Slightly simplify gl_texture_fifo::compute_texture()
The font size is set to the value necessary for the GL scene before
computing the string width.
Virtual Fl_Gl_Window_Driver::effective_size() becomes unnecessary.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Gl_Window_Driver.H | 1 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx | 5 | ||||
| -rw-r--r-- | src/gl_draw.cxx | 21 |
3 files changed, 10 insertions, 17 deletions
diff --git a/src/Fl_Gl_Window_Driver.H b/src/Fl_Gl_Window_Driver.H index 10cd3f11b..bebde10fc 100644 --- a/src/Fl_Gl_Window_Driver.H +++ b/src/Fl_Gl_Window_Driver.H @@ -97,7 +97,6 @@ public: static void draw_string_with_texture(const char* str, int n); // cross-platform // support for gl_draw(). The cross-platform version may be enough. virtual char *alpha_mask_for_string(const char *str, int n, int w, int h, Fl_Fontsize fs); - virtual Fl_Fontsize effective_size(); virtual int genlistsize() { return 0; } // support for gl_draw() virtual Fl_Font_Descriptor** fontnum_to_fontdescriptor(int fnum); virtual Fl_RGB_Image* capture_gl_rectangle(int x, int y, int w, int h); diff --git a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx index 84541e0fa..a11aca1e8 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx +++ b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.cxx @@ -53,7 +53,6 @@ class Fl_Cocoa_Gl_Window_Driver : public Fl_Gl_Window_Driver { virtual void make_overlay_current(); virtual void redraw_overlay(); virtual void gl_start(); - virtual Fl_Fontsize effective_size(); virtual char *alpha_mask_for_string(const char *str, int n, int w, int h, Fl_Fontsize fs); virtual Fl_RGB_Image* capture_gl_rectangle(int x, int y, int w, int h); }; @@ -220,10 +219,6 @@ void Fl_Cocoa_Gl_Window_Driver::resize(int is_a_resize, int w, int h) { /* Some old Apple hardware doesn't implement the GL_EXT_texture_rectangle extension. For it, draw_string_legacy_glut() is used to draw text. */ -Fl_Fontsize Fl_Cocoa_Gl_Window_Driver::effective_size() { - return (Fl_Fontsize)round(fl_graphics_driver->size() * gl_scale); -} - char *Fl_Cocoa_Gl_Window_Driver::alpha_mask_for_string(const char *str, int n, int w, int h, Fl_Fontsize fs) { // write str to a bitmap just big enough diff --git a/src/gl_draw.cxx b/src/gl_draw.cxx index f802376cb..6bda5670d 100644 --- a/src/gl_draw.cxx +++ b/src/gl_draw.cxx @@ -405,16 +405,18 @@ int gl_texture_fifo::compute_texture(const char* str, int n) memcpy(fifo[current].utf8, str, n); fifo[current].utf8[n] = 0; fifo[current].str_len = n; // record length of text in utf8 - fl_graphics_driver->font_descriptor(gl_fontsize); - int w, h; - w = int(ceil(fl_width(fifo[current].utf8, n) * Fl_Gl_Window_Driver::gl_scale)); - // Hack - make w be aligned - w = (w + 3) & (~3); - h = int(ceil(fl_height() * Fl_Gl_Window_Driver::gl_scale)); - + Fl_Fontsize fs = fl_size(); + float s = fl_graphics_driver->scale(); + fl_graphics_driver->Fl_Graphics_Driver::scale(1); // temporarily remove scaling factor + fl_font(fl_font(), fs * Fl_Gl_Window_Driver::gl_scale); // the font size to use in the GL scene + int w = (int)ceil( fl_width(fifo[current].utf8, n) ); + w = ((w + 3) / 4) * 4; // make w a multiple of 4 + int h = fl_height(); + fl_graphics_driver->Fl_Graphics_Driver::scale(s); // re-install scaling factor + fl_font(fl_font(), fs); + fs *= Fl_Gl_Window_Driver::gl_scale; fifo[current].scale = Fl_Gl_Window_Driver::gl_scale; fifo[current].fdesc = gl_fontsize; - Fl_Fontsize fs = Fl_Gl_Window_Driver::global()->effective_size(); char *alpha_buf = Fl_Gl_Window_Driver::global()->alpha_mask_for_string(str, n, w, h, fs); // save GL parameters GL_UNPACK_ROW_LENGTH and GL_UNPACK_ALIGNMENT @@ -499,9 +501,6 @@ void Fl_Gl_Window_Driver::draw_string_with_texture(const char* str, int n) gl_fifo->display_texture(index); } -Fl_Fontsize Fl_Gl_Window_Driver::effective_size() { - return fl_graphics_driver->font_descriptor()->size; -} char *Fl_Gl_Window_Driver::alpha_mask_for_string(const char *str, int n, int w, int h, Fl_Fontsize fs) { |
