From 187d5595901d1120d9425851e5afdd773f574502 Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Wed, 8 Jul 2009 14:03:56 +0000 Subject: [PATCH] add dox for scalarcomparetype use internal mutable version of drawPath when we've cons'd up a path on behalf of a rect git-svn-id: http://skia.googlecode.com/svn/trunk@258 2bbb7eff-a529-9590-31e7-b0007b416f81 --- include/core/SkScalar.h | 7 +++---- include/core/SkScalarCompare.h | 12 ++++++++++++ src/core/SkDraw.cpp | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/include/core/SkScalar.h b/include/core/SkScalar.h index 86341eb996..5be809f9e3 100644 --- a/include/core/SkScalar.h +++ b/include/core/SkScalar.h @@ -232,8 +232,8 @@ /* <= is slower than < for floats, so we use < for our tolerance test */ -inline bool SkScalarNearlyZero(SkScalar x, SkScalar tolerance = SK_ScalarNearlyZero) -{ +static inline bool SkScalarNearlyZero(SkScalar x, + SkScalar tolerance = SK_ScalarNearlyZero) { SkASSERT(tolerance > 0); return SkScalarAbs(x) < tolerance; } @@ -244,8 +244,7 @@ inline bool SkScalarNearlyZero(SkScalar x, SkScalar tolerance = SK_ScalarNearlyZ else interpolate. t must be [0..SK_Scalar1] */ -inline SkScalar SkScalarInterp(SkScalar A, SkScalar B, SkScalar t) -{ +static inline SkScalar SkScalarInterp(SkScalar A, SkScalar B, SkScalar t) { SkASSERT(t >= 0 && t <= SK_Scalar1); return A + SkScalarMul(B - A, t); } diff --git a/include/core/SkScalarCompare.h b/include/core/SkScalarCompare.h index fee554cd2b..537d6d6dce 100644 --- a/include/core/SkScalarCompare.h +++ b/include/core/SkScalarCompare.h @@ -20,6 +20,18 @@ #include "SkFloatBits.h" #include "SkRect.h" +/** Skia can spend a lot of time just comparing scalars (e.g. quickReject). + When scalar==fixed, this is very fast, and when scalar==hardware-float, this + is also reasonable, but if scalar==software-float, then each compare can be + a function call and take real time. To account for that, we have the flag + SK_SCALAR_SLOW_COMPARES. + + If this is defined, we have a special trick where we quickly convert floats + to a 2's compliment form, and then treat them as signed 32bit integers. In + this form we lose a few subtlties (e.g. NaNs always comparing false) but + we gain the speed of integer compares. + */ + #ifdef SK_SCALAR_SLOW_COMPARES typedef int32_t SkScalarCompareType; typedef SkIRect SkRectCompareType; diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp index c4ea43a4cb..352e4ed42f 100644 --- a/src/core/SkDraw.cpp +++ b/src/core/SkDraw.cpp @@ -670,7 +670,7 @@ void SkDraw::drawRect(const SkRect& rect, const SkPaint& paint) const { SkPath tmp; tmp.addRect(rect); tmp.setFillType(SkPath::kWinding_FillType); - this->drawPath(tmp, paint); + this->drawPath(tmp, paint, NULL, true); return; } -- 2.34.1