From 32f77bbfa3fdff56876fd27db84f41a1524ef67b Mon Sep 17 00:00:00 2001 From: "vladimir@pobox.com" Date: Fri, 21 Apr 2006 17:52:05 +0000 Subject: [PATCH] b=328241, antialiasing problem with joining borders, temporary diable-aa fix for non-rounded borders, r=dbaron --- gfx/thebes/src/gfxContext.cpp | 9 ++++++++- layout/base/nsCSSRendering.cpp | 13 +++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/gfx/thebes/src/gfxContext.cpp b/gfx/thebes/src/gfxContext.cpp index 5c36a39605ff..7e8740362d12 100644 --- a/gfx/thebes/src/gfxContext.cpp +++ b/gfx/thebes/src/gfxContext.cpp @@ -386,11 +386,18 @@ void gfxContext::PixelSnappedRectangleAndSetPattern(const gfxRect& rect, void gfxContext::SetAntialiasMode(AntialiasMode mode) { - // XXX implement me + if (mode == MODE_ALIASED) { + cairo_set_antialias(mCairo, CAIRO_ANTIALIAS_NONE); + } else if (mode == MODE_COVERAGE) { + cairo_set_antialias(mCairo, CAIRO_ANTIALIAS_DEFAULT); + } } gfxContext::AntialiasMode gfxContext::CurrentAntialiasMode() const { + cairo_antialias_t aa = cairo_get_antialias(mCairo); + if (aa == CAIRO_ANTIALIAS_NONE) + return MODE_ALIASED; return MODE_COVERAGE; } diff --git a/layout/base/nsCSSRendering.cpp b/layout/base/nsCSSRendering.cpp index 81bc3ae4e11b..842cc4ff7e64 100644 --- a/layout/base/nsCSSRendering.cpp +++ b/layout/base/nsCSSRendering.cpp @@ -73,6 +73,10 @@ #include "nsLayoutUtils.h" #include "nsINameSpaceManager.h" +#ifdef MOZ_CAIRO_GFX +#include "gfxContext.h" +#endif + #define BORDER_FULL 0 //entire side #define BORDER_INSIDE 1 //inside half #define BORDER_OUTSIDE 2 //outside half @@ -1825,6 +1829,11 @@ void nsCSSRendering::PaintBorder(nsPresContext* aPresContext, nscolor sideColor; nsBorderColors* compositeColors = nsnull; +#ifdef MOZ_CAIRO_GFX + gfxContext *ctx = (gfxContext*) aRenderingContext.GetNativeGraphicData(nsIRenderingContext::NATIVE_THEBES_CONTEXT); + ctx->SetAntialiasMode(gfxContext::MODE_ALIASED); +#endif + for (cnt = 0; cnt < 4; cnt++) { PRUint8 side = sideOrder[cnt]; @@ -1855,6 +1864,10 @@ void nsCSSRendering::PaintBorder(nsPresContext* aPresContext, } } } + +#ifdef MOZ_CAIRO_GFX + ctx->SetAntialiasMode(gfxContext::MODE_COVERAGE); +#endif } void nsCSSRendering::DrawCompositeSide(nsIRenderingContext& aRenderingContext,