summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2015-09-01 20:57:20 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2015-09-08 18:54:43 +0100
commit698f8e77b9adf58f08da29479ad963b25eb95a50 (patch)
tree4a1234ca070c514b64961ef461385eaa3b8e532e
parent410f6fdb9ef5e12506dd50ae6dc74ebc4a06dae4 (diff)
downloadnetsurf-698f8e77b9adf58f08da29479ad963b25eb95a50.tar.gz
netsurf-698f8e77b9adf58f08da29479ad963b25eb95a50.tar.bz2
Experimental composited text
-rw-r--r--amiga/font.c49
-rw-r--r--amiga/options.h3
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)