aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-07-08 14:03:56 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-07-08 14:03:56 +0000
commit187d5595901d1120d9425851e5afdd773f574502 (patch)
treecadd3e3f168621ad57f56b518166ac139a41af42 /include
parent24fc56f7b1ff1c964a5620c892d84e4f3cc50d11 (diff)
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
Diffstat (limited to 'include')
-rw-r--r--include/core/SkScalar.h7
-rw-r--r--include/core/SkScalarCompare.h12
2 files changed, 15 insertions, 4 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;