From 853793eaa81282de95a6f2069006c108ab1e7125 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Wed, 1 Apr 2009 17:36:18 +0000 Subject: Remove option_quick_text (local charset text printing) svn path=/trunk/netsurf/; revision=7021 --- amiga/dist/NetSurf.guide | 1 - amiga/font.c | 409 ++++++++++++++--------------------------------- amiga/options.h | 3 - amiga/plotters.c | 41 +---- 4 files changed, 125 insertions(+), 329 deletions(-) (limited to 'amiga') diff --git a/amiga/dist/NetSurf.guide b/amiga/dist/NetSurf.guide index c9b81fa94..8dc2086a6 100755 --- a/amiga/dist/NetSurf.guide +++ b/amiga/dist/NetSurf.guide @@ -44,7 +44,6 @@ The options file is stored in @{"Resources/Options" link Resources/Options/Main} @{b}recent_file@{ub} Path to file to store recent history list @{b}arexx_dir@{ub} Path to ARexx scripts dir @{b}download_dir@{ub} default download destination -@{b}quick_text@{ub} enable for local charset text only (not recommended) @{b}faster_scroll@{ub} enable faster scrolling (experimental) @{b}cache_bitmaps@{ub} cache bitmaps in native format in gfx mem (0=off, 1=sclaed, 2=all) diff --git a/amiga/font.c b/amiga/font.c index 2abe5847c..bbcc89118 100644 --- a/amiga/font.c +++ b/amiga/font.c @@ -66,16 +66,7 @@ bool nsfont_width(const struct css_style *style, { struct TextFont *tfont; - if(option_quick_text) - { - tfont = ami_open_font(style); - *width = TextLength(currp,string,length); //buffer,strlen(buffer)); - ami_close_font(tfont); - } - else - { - *width = ami_unicode_text(NULL,string,length,style,0,0,0); - } + *width = ami_unicode_text(NULL,string,length,style,0,0,0); return true; } @@ -99,76 +90,61 @@ bool nsfont_position_in_string(const struct css_style *style, { struct TextExtent extent; struct TextFont *tfont; + uint16 *utf16 = NULL, *outf16 = NULL; + struct OutlineFont *ofont; + struct GlyphMap *glyph; + uint32 tx=0,i=0; + size_t len,utf8len; + uint8 *utf8; + uint32 co = 0; - if(option_quick_text) - { - tfont = ami_open_font(style); + len = utf8_bounded_length(string, length); + if(utf8_to_enc(string,"UTF-16",length,&utf16) != UTF8_CONVERT_OK) return; + outf16 = utf16; - *char_offset = TextFit(currp,string,length, - &extent,NULL,1,x,32767); + if(!(ofont = ami_open_outline_font(style))) return 0; - *actual_x = extent.te_Extent.MaxX; + *char_offset = length; - ami_close_font(tfont); - } - else + for(i=0;iolf_EEngine, + OT_GlyphCode,*utf16, + TAG_END) == OTERR_Success) { - if(ESetInfo(&ofont->olf_EEngine, - OT_GlyphCode,*utf16, - TAG_END) == OTERR_Success) + if(EObtainInfo(&ofont->olf_EEngine, + OT_GlyphMap8Bit,&glyph, + TAG_END) == 0) { - if(EObtainInfo(&ofont->olf_EEngine, - OT_GlyphMap8Bit,&glyph, - TAG_END) == 0) + if(utf8_from_enc(utf16,"UTF-16",4,&utf8) != UTF8_CONVERT_OK) return; + utf8len = utf8_char_byte_length(utf8); + free(utf8); + + if(xglm_X1) { - if(utf8_from_enc(utf16,"UTF-16",4,&utf8) != UTF8_CONVERT_OK) return; - utf8len = utf8_char_byte_length(utf8); - free(utf8); - - if(xglm_X1) - { - i = len+1; - } - else - { - co += utf8len; - } + i = len+1; + } + else + { + co += utf8len; + } - *actual_x = tx; - tx+= glyph->glm_X1; + *actual_x = tx; + tx+= glyph->glm_X1; - EReleaseInfo(&ofont->olf_EEngine, - OT_GlyphMap8Bit,glyph, - TAG_END); - } + EReleaseInfo(&ofont->olf_EEngine, + OT_GlyphMap8Bit,glyph, + TAG_END); } - if (*utf16 < 0xD800 || 0xDFFF < *utf16) - utf16++; - else - utf16 += 2; } - *char_offset = co; - if(co>=length) *actual_x = tx; - free(outf16); + if (*utf16 < 0xD800 || 0xDFFF < *utf16) + utf16++; + else + utf16 += 2; } + *char_offset = co; + if(co>=length) *actual_x = tx; + free(outf16); return true; } @@ -199,189 +175,63 @@ bool nsfont_split(const struct css_style *style, ULONG co; char *charp; struct TextFont *tfont; + uint16 *utf16 = NULL,*outf16 = NULL; + struct OutlineFont *ofont; + struct GlyphMap *glyph; + uint32 tx=0,i=0; + size_t len; - if(option_quick_text) - { - tfont = ami_open_font(style); - - co = TextFit(currp,string,length, - &extent,NULL,1,x,32767); - - charp = string+co; - while(((*charp != ' ')) && (charp > string)) - { - charp--; - co--; - } + len = utf8_bounded_length(string, length); + if(utf8_to_enc(string,"UTF-16",length,&utf16) != UTF8_CONVERT_OK) return; + outf16 = utf16; + if(!(ofont = ami_open_outline_font(style))) return 0; - *char_offset = co; - if(string && co) - { - *actual_x = TextLength(currp,string,co); - } - else - { - *actual_x = 0; - } + *char_offset = 0; - ami_close_font(tfont); - } - else + for(i=0;iolf_EEngine, + OT_GlyphCode,*utf16, + TAG_END) == OTERR_Success) { - if(ESetInfo(&ofont->olf_EEngine, - OT_GlyphCode,*utf16, - TAG_END) == OTERR_Success) + if(EObtainInfo(&ofont->olf_EEngine, + OT_GlyphMap8Bit,&glyph, + TAG_END) == 0) { - if(EObtainInfo(&ofont->olf_EEngine, - OT_GlyphMap8Bit,&glyph, - TAG_END) == 0) + if(*utf16 == 0x0020) { - if(*utf16 == 0x0020) - { - *actual_x = tx; - co = i; - } - - if(xglm_X1) - { - i = length+1; - } - - tx+= glyph->glm_X1; - - EReleaseInfo(&ofont->olf_EEngine, - OT_GlyphMap8Bit,glyph, - TAG_END); + *actual_x = tx; + co = i; } - } - if (*utf16 < 0xD800 || 0xDFFF < *utf16) - utf16++; - else - utf16 += 2; - } - - charp = string+co; - while(((*charp != ' ')) && (charp > string)) - { - charp--; - co--; - } - *char_offset = co; - free(outf16); - } - - return true; -} - -struct TextFont *ami_open_font(struct css_style *style) -{ - struct TextFont *tfont; - struct TTextAttr tattr; - struct TagItem tattrtags[2]; - char fontname[256]; - - switch(style->font_family) - { - case CSS_FONT_FAMILY_SANS_SERIF: - strcpy(fontname,option_font_sans); - break; - - case CSS_FONT_FAMILY_SERIF: - strcpy(fontname,option_font_serif); - break; - - case CSS_FONT_FAMILY_MONOSPACE: - strcpy(fontname,option_font_mono); - break; - case CSS_FONT_FAMILY_CURSIVE: - strcpy(fontname,option_font_cursive); - break; - - case CSS_FONT_FAMILY_FANTASY: - strcpy(fontname,option_font_fantasy); - break; - - default: - strcpy(fontname,option_font_sans); - break; - } - - switch(style->font_style) - { - case CSS_FONT_STYLE_ITALIC: - case CSS_FONT_STYLE_OBLIQUE: - tattr.tta_Style = FSF_ITALIC; - break; + if(xglm_X1) + { + i = length+1; + } - default: - tattr.tta_Style = FS_NORMAL; - break; - } + tx+= glyph->glm_X1; - switch(style->font_weight) - { - case CSS_FONT_WEIGHT_BOLD: - case CSS_FONT_WEIGHT_BOLDER: - tattr.tta_Style |= FSF_BOLD; - break; + EReleaseInfo(&ofont->olf_EEngine, + OT_GlyphMap8Bit,glyph, + TAG_END); + } + } + if (*utf16 < 0xD800 || 0xDFFF < *utf16) + utf16++; + else + utf16 += 2; } -/* not supported - switch(style->font_variant) + charp = string+co; + while(((*charp != ' ')) && (charp > string)) { - default: - //printf("font variant: %ld\n",style->font_variant); - break; - } -*/ - - tattr.tta_YSize = css_len2px(&style->font_size.value.length, style); - - if(tattr.tta_YSize < option_font_min_size) - tattr.tta_YSize = option_font_min_size; - - tattr.tta_Flags = 0; - -/* Uncommenting this changes the font's charset. - 106 is UTF-8 but OS4 doesn't support it so this only results in a crash! - - tattrtags[0].ti_Tag = TA_CharSet; - tattrtags[0].ti_Data = 106; - tattrtags[1].ti_Tag = TAG_DONE; - - tattr.tta_Flags = FSB_TAGGED; - tattr.tta_Tags = &tattrtags; -*/ - - strcat(fontname,".font"); - tattr.tta_Name = fontname; - - tfont = OpenDiskFont((struct TextAttr *)&tattr); - - if(tfont) - { - SetRPAttrs(currp, - RPTAG_Font,tfont, - TAG_DONE); + charp--; + co--; } + *char_offset = co; + free(outf16); - return tfont; + return true; } struct OutlineFont *ami_open_outline_font(struct css_style *style) @@ -445,15 +295,6 @@ struct OutlineFont *ami_open_outline_font(struct css_style *style) return NULL; } -void ami_close_font(struct TextFont *tfont) -{ - SetRPAttrs(currp, - RPTAG_Font,origrpfont, - TAG_DONE); - - if(tfont) CloseFont(tfont); -} - ULONG ami_unicode_text(struct RastPort *rp,char *string,ULONG length,struct css_style *style,ULONG dx, ULONG dy, ULONG c) { uint16 *utf16 = NULL, *outf16 = NULL; @@ -531,46 +372,43 @@ void ami_init_fonts(void) int i; char *bname,*iname,*biname; - if(!option_quick_text) + of[CSS_FONT_FAMILY_SANS_SERIF] = OpenOutlineFont(option_font_sans,NULL,OFF_OPEN); + of[CSS_FONT_FAMILY_SERIF] = OpenOutlineFont(option_font_serif,NULL,OFF_OPEN); + of[CSS_FONT_FAMILY_MONOSPACE] = OpenOutlineFont(option_font_mono,NULL,OFF_OPEN); + of[CSS_FONT_FAMILY_CURSIVE] = OpenOutlineFont(option_font_cursive,NULL,OFF_OPEN); + of[CSS_FONT_FAMILY_FANTASY] = OpenOutlineFont(option_font_fantasy,NULL,OFF_OPEN); + of[CSS_FONT_FAMILY_UNKNOWN] = OpenOutlineFont(option_font_sans,NULL,OFF_OPEN); + of[CSS_FONT_FAMILY_NOT_SET] = OpenOutlineFont(option_font_sans,NULL,OFF_OPEN); + + for(i=CSS_FONT_FAMILY_SANS_SERIF;i<=CSS_FONT_FAMILY_NOT_SET;i++) { - of[CSS_FONT_FAMILY_SANS_SERIF] = OpenOutlineFont(option_font_sans,NULL,OFF_OPEN); - of[CSS_FONT_FAMILY_SERIF] = OpenOutlineFont(option_font_serif,NULL,OFF_OPEN); - of[CSS_FONT_FAMILY_MONOSPACE] = OpenOutlineFont(option_font_mono,NULL,OFF_OPEN); - of[CSS_FONT_FAMILY_CURSIVE] = OpenOutlineFont(option_font_cursive,NULL,OFF_OPEN); - of[CSS_FONT_FAMILY_FANTASY] = OpenOutlineFont(option_font_fantasy,NULL,OFF_OPEN); - of[CSS_FONT_FAMILY_UNKNOWN] = OpenOutlineFont(option_font_sans,NULL,OFF_OPEN); - of[CSS_FONT_FAMILY_NOT_SET] = OpenOutlineFont(option_font_sans,NULL,OFF_OPEN); - - for(i=CSS_FONT_FAMILY_SANS_SERIF;i<=CSS_FONT_FAMILY_NOT_SET;i++) - { - if(!of[i]) warn_user("FontError",""); // temporary error message + if(!of[i]) warn_user("FontError",""); // temporary error message - if(bname = GetTagData(OT_BName,0,of[i]->olf_OTagList)) - { - ofb[i] = OpenOutlineFont(bname,NULL,OFF_OPEN); - } - else - { - ofb[i] = NULL; - } + if(bname = GetTagData(OT_BName,0,of[i]->olf_OTagList)) + { + ofb[i] = OpenOutlineFont(bname,NULL,OFF_OPEN); + } + else + { + ofb[i] = NULL; + } - if(iname = GetTagData(OT_IName,0,of[i]->olf_OTagList)) - { - ofi[i] = OpenOutlineFont(iname,NULL,OFF_OPEN); - } - else - { - ofi[i] = NULL; - } + if(iname = GetTagData(OT_IName,0,of[i]->olf_OTagList)) + { + ofi[i] = OpenOutlineFont(iname,NULL,OFF_OPEN); + } + else + { + ofi[i] = NULL; + } - if(biname = GetTagData(OT_BIName,0,of[i]->olf_OTagList)) - { - ofbi[i] = OpenOutlineFont(biname,NULL,OFF_OPEN); - } - else - { - ofbi[i] = NULL; - } + if(biname = GetTagData(OT_BIName,0,of[i]->olf_OTagList)) + { + ofbi[i] = OpenOutlineFont(biname,NULL,OFF_OPEN); + } + else + { + ofbi[i] = NULL; } } } @@ -579,14 +417,11 @@ void ami_close_fonts(void) { int i=0; - if(!option_quick_text) + for(i=CSS_FONT_FAMILY_SANS_SERIF;i<=CSS_FONT_FAMILY_NOT_SET;i++) { - for(i=CSS_FONT_FAMILY_SANS_SERIF;i<=CSS_FONT_FAMILY_NOT_SET;i++) - { - if(of[i]) CloseOutlineFont(of[i],NULL); - if(ofb[i]) CloseOutlineFont(ofb[i],NULL); - if(ofi[i]) CloseOutlineFont(ofi[i],NULL); - if(ofbi[i]) CloseOutlineFont(ofbi[i],NULL); - } + if(of[i]) CloseOutlineFont(of[i],NULL); + if(ofb[i]) CloseOutlineFont(ofb[i],NULL); + if(ofi[i]) CloseOutlineFont(ofi[i],NULL); + if(ofbi[i]) CloseOutlineFont(ofbi[i],NULL); } } diff --git a/amiga/options.h b/amiga/options.h index adba19c92..d5b72f57c 100644 --- a/amiga/options.h +++ b/amiga/options.h @@ -38,7 +38,6 @@ extern bool option_kiosk_mode; extern char *option_recent_file; extern char *option_arexx_dir; extern char *option_download_dir; -extern bool option_quick_text; extern bool option_faster_scroll; #define EXTRA_OPTION_DEFINE \ @@ -60,7 +59,6 @@ bool option_kiosk_mode = false; \ char *option_recent_file = 0; \ char *option_arexx_dir = 0; \ char *option_download_dir = 0; \ -bool option_quick_text = false; \ bool option_faster_scroll = false; \ #define EXTRA_OPTION_TABLE \ @@ -82,6 +80,5 @@ bool option_faster_scroll = false; \ { "recent_file", OPTION_STRING, &option_recent_file }, \ { "arexx_dir", OPTION_STRING, &option_arexx_dir }, \ { "download_dir", OPTION_STRING, &option_download_dir }, \ -{ "quick_text", OPTION_BOOL, &option_quick_text}, \ { "faster_scroll", OPTION_BOOL, &option_faster_scroll}, #endif diff --git a/amiga/plotters.c b/amiga/plotters.c index 50a13cd7b..f79337fbe 100755 --- a/amiga/plotters.c +++ b/amiga/plotters.c @@ -182,8 +182,8 @@ bool ami_line(int x0, int y0, int x1, int y1, int width, width = 1; cairo_set_line_width(glob.cr, width); - cairo_move_to(glob.cr, x0, y0 - 0.5); - cairo_line_to(glob.cr, x1, y1 - 0.5); + cairo_move_to(current_cr, x0 + 0.5, y0 + 0.5); + cairo_line_to(current_cr, x1 + 0.5, y1 + 0.5); cairo_stroke(glob.cr); #endif return true; @@ -283,42 +283,7 @@ bool ami_clip(int x0, int y0, int x1, int y1) bool ami_text(int x, int y, const struct css_style *style, const char *text, size_t length, colour bg, colour c) { - char *buffer = NULL; - struct TextFont *tfont; - - if(option_quick_text) - { - tfont = ami_open_font(style); - - SetRPAttrs(currp,RPTAG_APenColor,p96EncodeColor(RGBFB_A8B8G8R8,c), - RPTAG_BPenColor,p96EncodeColor(RGBFB_A8B8G8R8,bg), -// RPTAG_Font,tfont, - TAG_DONE); - - utf8_to_local_encoding(text,length,&buffer); - - if(!buffer) return true; - -/* Below function prints Unicode text direct to the RastPort. - * This is commented out due to lack of SDK which allows me to perform blits - * that respect the Alpha channel. The code below that (and above) convert to - * system default charset and write the text using graphics.library functions. - * - * ami_unicode_text(currp,text,length,style,x,y,c); - * - * or, perhaps the ttengine.library version (far too slow): - * ami_tte_text(currp,text,length); - */ - Move(currp,x,y); - Text(currp,buffer,strlen(buffer)); - ami_close_font(tfont); - ami_utf8_free(buffer); - } - else - { - ami_unicode_text(currp,text,length,style,x,y,c); - } - + ami_unicode_text(currp,text,length,style,x,y,c); return true; } -- cgit v1.2.3