NS_IMETHODIMP nsThebesRenderingContext::SetClipRect(const nsRect& aRect, nsClipCombine aCombine) { //return NS_OK; PR_LOG(gThebesGFXLog, PR_LOG_DEBUG, ("## %p nsTRC::SetClipRect [%d,%d,%d,%d] %d\n", this, aRect.x, aRect.y, aRect.width, aRect.height, aCombine)); if (aCombine == nsClipCombine_kReplace) { mThebes->ResetClip(); } else if (aCombine != nsClipCombine_kIntersect) { NS_WARNING("Unexpected usage of SetClipRect"); } mThebes->NewPath(); gfxRect clipRect(GFX_RECT_FROM_TWIPS_RECT(aRect)); if (mThebes->UserToDevicePixelSnapped(clipRect, PR_TRUE)) { gfxMatrix mat(mThebes->CurrentMatrix()); mThebes->IdentityMatrix(); mThebes->Rectangle(clipRect); mThebes->SetMatrix(mat); } else { mThebes->Rectangle(clipRect); } mThebes->Clip(); return NS_OK; }
void nsRenderingContext::FillRect(const nsRect& aRect) { gfxRect r(GFX_RECT_FROM_TWIPS_RECT(aRect)); /* Clamp coordinates to work around a design bug in cairo */ nscoord bigval = (nscoord)(CAIRO_COORD_MAX*mP2A); if (aRect.width > bigval || aRect.height > bigval || aRect.x < -bigval || aRect.x > bigval || aRect.y < -bigval || aRect.y > bigval) { gfxMatrix mat = mThebes->CurrentMatrix(); r = mat.Transform(r); if (!ConditionRect(r)) return; mThebes->IdentityMatrix(); mThebes->NewPath(); mThebes->Rectangle(r, PR_TRUE); mThebes->Fill(); mThebes->SetMatrix(mat); } mThebes->NewPath(); mThebes->Rectangle(r, PR_TRUE); mThebes->Fill(); }
void nsRenderingContext::DrawRect(const nsRect& aRect) { mThebes->NewPath(); mThebes->Rectangle(GFX_RECT_FROM_TWIPS_RECT(aRect), PR_TRUE); mThebes->Stroke(); }
NS_IMETHODIMP nsThebesRenderingContext::DrawRect(const nsRect& aRect) { PR_LOG(gThebesGFXLog, PR_LOG_DEBUG, ("## %p nsTRC::DrawRect [%d,%d,%d,%d]\n", this, aRect.x, aRect.y, aRect.width, aRect.height)); mThebes->NewPath(); mThebes->Rectangle(GFX_RECT_FROM_TWIPS_RECT(aRect), PR_TRUE); mThebes->Stroke(); return NS_OK; }
NS_IMETHODIMP nsThebesRenderingContext::PushFilter(const nsRect& twRect, PRBool aAreaIsOpaque, float aOpacity) { PR_LOG(gThebesGFXLog, PR_LOG_DEBUG, ("## %p nsTRC::PushFilter [%d,%d,%d,%d] isOpaque: %d opacity: %f\n", this, twRect.x, twRect.y, twRect.width, twRect.height, aAreaIsOpaque, aOpacity)); mOpacityArray.AppendElement(aOpacity); mThebes->Save(); mThebes->Clip(GFX_RECT_FROM_TWIPS_RECT(twRect)); mThebes->PushGroup(gfxASurface::CONTENT_COLOR_ALPHA); return NS_OK; }
void nsRenderingContext::IntersectClip(const nsRect& aRect) { mThebes->NewPath(); gfxRect clipRect(GFX_RECT_FROM_TWIPS_RECT(aRect)); if (mThebes->UserToDevicePixelSnapped(clipRect, PR_TRUE)) { gfxMatrix mat(mThebes->CurrentMatrix()); mThebes->IdentityMatrix(); mThebes->Rectangle(clipRect); mThebes->SetMatrix(mat); } else { mThebes->Rectangle(clipRect); } mThebes->Clip(); }
void nsRenderingContext::IntersectClip(const nsRect& aRect) { mThebes->NewPath(); gfxRect clipRect(GFX_RECT_FROM_TWIPS_RECT(aRect)); if (mThebes->UserToDevicePixelSnapped(clipRect, true)) { gfxMatrix mat(mThebes->CurrentMatrix()); mat.Invert(); clipRect = mat.Transform(clipRect); mThebes->Rectangle(clipRect); } else { mThebes->Rectangle(clipRect); } mThebes->Clip(); }
NS_IMETHODIMP nsThebesRenderingContext::FillRect(const nsRect& aRect) { PR_LOG(gThebesGFXLog, PR_LOG_DEBUG, ("## %p nsTRC::FillRect [%d,%d,%d,%d]\n", this, aRect.x, aRect.y, aRect.width, aRect.height)); gfxRect r(GFX_RECT_FROM_TWIPS_RECT(aRect)); /* Clamp coordinates to work around a design bug in cairo */ nscoord bigval = (nscoord)(CAIRO_COORD_MAX*mP2A); if (aRect.width > bigval || aRect.height > bigval || aRect.x < -bigval || aRect.x > bigval || aRect.y < -bigval || aRect.y > bigval) { gfxMatrix mat = mThebes->CurrentMatrix(); r = mat.Transform(r); if (!ConditionRect(r)) return NS_OK; mThebes->IdentityMatrix(); mThebes->NewPath(); PR_LOG(gThebesGFXLog, PR_LOG_DEBUG, ("## %p nsTRC::FillRect conditioned to [%f,%f,%f,%f]\n", this, r.pos.x, r.pos.y, r.size.width, r.size.height)); mThebes->Rectangle(r, PR_TRUE); mThebes->Fill(); mThebes->SetMatrix(mat); return NS_OK; } PR_LOG(gThebesGFXLog, PR_LOG_DEBUG, ("## %p nsTRC::FillRect raw [%f,%f,%f,%f]\n", this, r.pos.x, r.pos.y, r.size.width, r.size.height)); mThebes->NewPath(); mThebes->Rectangle(r, PR_TRUE); mThebes->Fill(); return NS_OK; }