From edaa9c29f22a550ddc7c8e1f02ff6d9dedf9a5b1 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Mon, 13 Feb 2017 00:18:32 +0000 Subject: Remove use of global context data from Amiga frontend --- frontends/amiga/font_diskfont.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'frontends/amiga/font_diskfont.c') diff --git a/frontends/amiga/font_diskfont.c b/frontends/amiga/font_diskfont.c index 8593f81b2..7abc4379b 100644 --- a/frontends/amiga/font_diskfont.c +++ b/frontends/amiga/font_diskfont.c @@ -41,6 +41,7 @@ static plot_font_style_t *prev_fstyle = NULL; static struct TextFont *prev_font = NULL; +static struct RastPort temp_rp; static struct TextFont *ami_font_bm_open(struct RastPort *rp, const plot_font_style_t *fstyle) { @@ -133,17 +134,16 @@ static nserror amiga_bm_nsfont_width(const plot_font_style_t *fstyle, { char *localtext = NULL; - if((glob == NULL) || (glob->rp == NULL)) return NSERROR_INVALID; *width = length; - struct TextFont *bmfont = ami_font_bm_open(glob->rp, fstyle); + struct TextFont *bmfont = ami_font_bm_open(&temp_rp, fstyle); if(bmfont == NULL) return NSERROR_INVALID; if(utf8_to_local_encoding(string, length, &localtext) != NSERROR_OK) { return NSERROR_INVALID; } - *width = TextLength(glob->rp, localtext, (UWORD)strlen(localtext)); + *width = TextLength(&temp_rp, localtext, (UWORD)strlen(localtext)); free(localtext); return NSERROR_OK; @@ -170,16 +170,14 @@ static nserror amiga_bm_nsfont_position_in_string(const plot_font_style_t *fstyl char *localtext = NULL; UWORD co = 0; - if((glob == NULL) || (glob->rp == NULL)) return NSERROR_INVALID; - - bmfont = ami_font_bm_open(glob->rp, fstyle); + bmfont = ami_font_bm_open(&temp_rp, fstyle); if(bmfont == NULL) return NSERROR_INVALID; if(utf8_to_local_encoding(string, length, &localtext) != NSERROR_OK) { return NSERROR_INVALID; } - co = TextFit(glob->rp, localtext, (UWORD)strlen(localtext), + co = TextFit(&temp_rp, localtext, (UWORD)strlen(localtext), &extent, NULL, 1, x, 32767); *char_offset = ami_font_bm_convert_local_to_utf8_offset(string, length, co); *actual_x = extent.te_Extent.MaxX; @@ -222,16 +220,14 @@ static nserror amiga_bm_nsfont_split(const plot_font_style_t *fstyle, char *charp; char *localtext; - if((glob == NULL) || (glob->rp == NULL)) return NSERROR_INVALID; - - struct TextFont *bmfont = ami_font_bm_open(glob->rp, fstyle); + struct TextFont *bmfont = ami_font_bm_open(&temp_rp, fstyle); if(bmfont == NULL) return NSERROR_INVALID; if(utf8_to_local_encoding(string, length, &localtext) != NSERROR_OK) { return NSERROR_INVALID; } - offset = TextFit(glob->rp, localtext, (UWORD)strlen(localtext), + offset = TextFit(&temp_rp, localtext, (UWORD)strlen(localtext), &extent, NULL, 1, (UWORD)x, 32767); co = offset; @@ -253,7 +249,7 @@ static nserror amiga_bm_nsfont_split(const plot_font_style_t *fstyle, } if((co > 0) && (co < strlen(localtext))) { - *actual_x = TextLength(glob->rp, localtext, co); + *actual_x = TextLength(&temp_rp, localtext, co); *char_offset = ami_font_bm_convert_local_to_utf8_offset(string, length, co); } else { *actual_x = x; @@ -298,6 +294,9 @@ void ami_font_diskfont_init(void) /* Alloc space to hold currently open font - doesn't matter if this fails */ prev_fstyle = calloc(1, sizeof(plot_font_style_t)); + + /* Init temp RastPort */ + InitRastPort(&temp_rp); } void ami_font_diskfont_fini(void) -- cgit v1.2.3