From 698f8e77b9adf58f08da29479ad963b25eb95a50 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Tue, 1 Sep 2015 20:57:20 +0100 Subject: Experimental composited text --- amiga/font.c | 49 ++++++++++++++++++++++++++++++++++++++----------- amiga/options.h | 3 ++- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/amiga/font.c b/amiga/font.c index 7569bb645..43d98ca9f 100644 --- a/amiga/font.c +++ b/amiga/font.c @@ -635,18 +635,45 @@ static inline int32 ami_font_plot_glyph(struct OutlineFont *ofont, struct RastPo if(rp) { #ifdef __amigaos4__ - BltBitMapTags(BLITA_SrcX, glyph->glm_BlackLeft, - BLITA_SrcY, glyph->glm_BlackTop, - BLITA_DestX, x - glyph->glm_X0 + glyph->glm_BlackLeft, - BLITA_DestY, y - glyph->glm_Y0 + glyph->glm_BlackTop, - BLITA_Width, glyph->glm_BlackWidth, - BLITA_Height, glyph->glm_BlackHeight, - BLITA_Source, glyphbm, - BLITA_SrcType, template_type, - BLITA_Dest, rp, - BLITA_DestType, BLITT_RASTPORT, - BLITA_SrcBytesPerRow, glyph->glm_BMModulo, + if((GfxBase->LibNode.lib_Version >= 54) && + (template_type == BLITT_ALPHATEMPLATE) && + (nsoption_bool(exp_comp_fonts) == true)) { + + WritePixelArray(glyphbm, glyph->glm_BlackLeft, glyph->glm_BlackTop, + glyph->glm_BMModulo, PIXF_ALPHA8, rp, + x - glyph->glm_X0 + glyph->glm_BlackLeft, + y - glyph->glm_Y0 + glyph->glm_BlackTop, + glyph->glm_BlackWidth, glyph->glm_BlackHeight); + + CompositeTags(COMPOSITE_Src_Over_Dest, COMPSRC_SOLIDCOLOR, rp->BitMap, + COMPTAG_Color0, 0xff000000, /* assume black for now */ + COMPTAG_SrcAlphaMask, rp->BitMap, + COMPTAG_SrcX, x - glyph->glm_X0 + glyph->glm_BlackLeft, + COMPTAG_SrcY, y - glyph->glm_Y0 + glyph->glm_BlackTop, + COMPTAG_SrcWidth, glyph->glm_BlackWidth, + COMPTAG_SrcHeight, glyph->glm_BlackHeight, + COMPTAG_OffsetX, x - glyph->glm_X0 + glyph->glm_BlackLeft, + COMPTAG_OffsetY, y - glyph->glm_Y0 + glyph->glm_BlackTop, + COMPTAG_DestX, x - glyph->glm_X0 + glyph->glm_BlackLeft, + COMPTAG_DestY, y - glyph->glm_Y0 + glyph->glm_BlackTop, + COMPTAG_DestWidth, glyph->glm_BlackWidth, + COMPTAG_DestHeight, glyph->glm_BlackHeight, + COMPTAG_Flags, COMPFLAG_IgnoreDestAlpha, + TAG_DONE); + } else { + BltBitMapTags(BLITA_SrcX, glyph->glm_BlackLeft, + BLITA_SrcY, glyph->glm_BlackTop, + BLITA_DestX, x - glyph->glm_X0 + glyph->glm_BlackLeft, + BLITA_DestY, y - glyph->glm_Y0 + glyph->glm_BlackTop, + BLITA_Width, glyph->glm_BlackWidth, + BLITA_Height, glyph->glm_BlackHeight, + BLITA_Source, glyphbm, + BLITA_SrcType, template_type, + BLITA_Dest, rp, + BLITA_DestType, BLITT_RASTPORT, + BLITA_SrcBytesPerRow, glyph->glm_BMModulo, TAG_DONE); + } #else /* On OS3 the glyph needs to be in chip RAM */ void *chip_glyph = AllocVec(glyph->glm_BMModulo * glyph->glm_BMRows, MEMF_CHIP); diff --git a/amiga/options.h b/amiga/options.h index 317e5dfdc..ec8a41b92 100644 --- a/amiga/options.h +++ b/amiga/options.h @@ -63,7 +63,8 @@ NSOPTION_STRING(font_surrogate, NULL) NSOPTION_STRING(font_unicode_file, NULL) NSOPTION_BOOL(font_unicode_only, false) NSOPTION_BOOL(font_antialiasing, true) -NSOPTION_BOOL(use_diskfont, false) +NSOPTION_BOOL(use_diskfont, false) /* experimental */ +NSOPTION_BOOL(exp_comp_fonts, false) /* experimental */ NSOPTION_BOOL(drag_save_icons, true) NSOPTION_INTEGER(hotlist_window_xpos, 0) NSOPTION_INTEGER(hotlist_window_ypos, 0) -- cgit v1.2.3