From a2688fc7a224599bcd44a305b1e6460d3a668e2a Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Wed, 4 Dec 2013 02:00:45 +0100 Subject: Recognize scale when plotting fonts --- atari/font.c | 43 +++++++++++++++++++++++++++++++++++++------ atari/plot/plot.c | 9 ++++++++- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/atari/font.c b/atari/font.c index 7640f6106..c55aca05a 100755 --- a/atari/font.c +++ b/atari/font.c @@ -57,22 +57,53 @@ extern FONT_PLOTTER fplotter; static bool atari_font_position_in_string(const plot_font_style_t * fstyle,const char *string, size_t length,int x, size_t *char_offset, int *actual_x ) -{ - fplotter->pixel_pos(fplotter, fstyle, string, length, x, char_offset, actual_x ); +{ + float scale = plot_get_scale(); + + if (scale != 1.0) { + plot_font_style_t newstyle = *fstyle; + newstyle.size = (int)((float)fstyle->size*scale); + fplotter->pixel_pos(fplotter, &newstyle, string, length, x, char_offset, actual_x); + } else { + fplotter->pixel_pos(fplotter, fstyle, string, length, x, char_offset, actual_x); + } + return( true ); } static bool atari_font_split( const plot_font_style_t * fstyle, const char *string, size_t length,int x, size_t *char_offset, int *actual_x ) -{ - fplotter->str_split( fplotter, fstyle, string, length, x, char_offset, actual_x ); +{ + float scale = plot_get_scale(); + + if (scale != 1.0) { + plot_font_style_t newstyle = *fstyle; + newstyle.size = (int)((float)fstyle->size*scale); + fplotter->str_split(fplotter, &newstyle, string, length, x, char_offset, + actual_x); + } else { + fplotter->str_split(fplotter, fstyle, string, length, x, char_offset, + actual_x); + } + + return( true ); } static bool atari_font_width( const plot_font_style_t *fstyle, const char * str, size_t length, int * width ) -{ - fplotter->str_width( fplotter, fstyle, str, length, width ); +{ + float scale = plot_get_scale(); + + if (scale != 1.0) { + plot_font_style_t newstyle = *fstyle; + newstyle.size = (int)((float)fstyle->size*scale); + fplotter->str_width(fplotter, &newstyle, str, length, width); + } else { + fplotter->str_width(fplotter, fstyle, str, length, width); + } + + return( true ); } diff --git a/atari/plot/plot.c b/atari/plot/plot.c index 5896a6841..80551f968 100755 --- a/atari/plot/plot.c +++ b/atari/plot/plot.c @@ -2004,7 +2004,14 @@ void plot_set_text_plotter(FONT_PLOTTER font_plotter) static bool plot_text(int x, int y, const char *text, size_t length, const plot_font_style_t *fstyle ) { - fplotter->text(fplotter, x, y, text, length, fstyle); + if (view.scale != 1.0) { + plot_font_style_t newstyle = *fstyle; + newstyle.size = (int)((float)fstyle->size*view.scale); + fplotter->text(fplotter, x, y, text, length, &newstyle); + } else { + fplotter->text(fplotter, x, y, text, length, fstyle); + } + return ( true ); } -- cgit v1.2.3