add dox for scalarcomparetype
authorreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 8 Jul 2009 14:03:56 +0000 (14:03 +0000)
committerreed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 8 Jul 2009 14:03:56 +0000 (14:03 +0000)
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
include/core/SkScalarCompare.h
src/core/SkDraw.cpp

index 86341eb..5be809f 100644 (file)
 /*  <= 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);
 }
index fee554c..537d6d6 100644 (file)
 #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;
index c4ea43a..352e4ed 100644 (file)
@@ -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;
     }