aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/animator/SkDrawExtraPathEffect.cpp20
-rw-r--r--src/pdf/SkPDFCatalog.cpp5
2 files changed, 18 insertions, 7 deletions
diff --git a/src/animator/SkDrawExtraPathEffect.cpp b/src/animator/SkDrawExtraPathEffect.cpp
index 8cfde25804..e624d195c0 100644
--- a/src/animator/SkDrawExtraPathEffect.cpp
+++ b/src/animator/SkDrawExtraPathEffect.cpp
@@ -128,6 +128,9 @@ protected:
apply->interpolate(*fMaker, SkScalarMulRound(distance, 1000));
matrix = (SkDrawMatrix*) apply->getScope();
}
+ if (matrix) {
+ m = matrix->getMatrix();
+ }
}
SkScalar result = 0;
SkAnimatorScript::EvaluateFloat(*fMaker, NULL, fDraw->spacing.c_str(), &result);
@@ -228,14 +231,21 @@ public:
}
protected:
- virtual void begin(const SkIRect& uvBounds, SkPath* )
- {
+ virtual void begin(const SkIRect& uvBounds, SkPath*) const SK_OVERRIDE {
+ const_cast<SkShape2DPathEffect*>(this)->setUVBounds(uvBounds);
+ }
+
+ virtual void next(const SkPoint& loc, int u, int v, SkPath* dst) const SK_OVERRIDE {
+ const_cast<SkShape2DPathEffect*>(this)->addPath(loc, u, v, dst);
+ }
+
+private:
+ void setUVBounds(const SkIRect& uvBounds) {
fUVBounds.set(SkIntToScalar(uvBounds.fLeft), SkIntToScalar(uvBounds.fTop),
SkIntToScalar(uvBounds.fRight), SkIntToScalar(uvBounds.fBottom));
}
- virtual void next(const SkPoint& loc, int u, int v, SkPath* dst)
- {
+ void addPath(const SkPoint& loc, int u, int v, SkPath* dst) {
fLoc = loc;
fU = u;
fV = v;
@@ -272,8 +282,6 @@ clearCallBack:
fMaker->clearExtraPropertyCallBack(fDraw->fType);
}
-private:
-
static bool Get2D(const char* token, size_t len, void* s2D, SkScriptValue* value) {
static const char match[] = "locX|locY|left|top|right|bottom|u|v" ;
SkShape2DPathEffect* shape2D = (SkShape2DPathEffect*) s2D;
diff --git a/src/pdf/SkPDFCatalog.cpp b/src/pdf/SkPDFCatalog.cpp
index c0f6fb03b9..b26c923c16 100644
--- a/src/pdf/SkPDFCatalog.cpp
+++ b/src/pdf/SkPDFCatalog.cpp
@@ -128,8 +128,11 @@ int32_t SkPDFCatalog::emitXrefTable(SkWStream* stream, bool firstPage) {
first++;
}
for (int i = first; i <= last; i++) {
+ // For 32 bits platforms, the maximum offset has to fit within off_t which is a 32 bits
+ // signed integer on these platforms. On other platforms, we can use the actual maximum.
+ SkDEBUGCODE(static const off_t kMaxOff = (sizeof(off_t) > 4) ? 10000000000 : 2147483647;)
SkASSERT(fCatalog[i].fFileOffset > 0);
- SkASSERT(fCatalog[i].fFileOffset <= 9999999999LL);
+ SkASSERT(fCatalog[i].fFileOffset < kMaxOff);
stream->writeBigDecAsText(fCatalog[i].fFileOffset, 10);
stream->writeText(" 00000 n \n");
}