diff options
-rw-r--r-- | gyp/common.gypi | 7 | ||||
-rw-r--r-- | gyp/common_variables.gypi | 1 | ||||
-rw-r--r-- | include/core/SkCanvas.h | 53 | ||||
-rw-r--r-- | include/core/SkLights.h | 33 | ||||
-rw-r--r-- | include/private/SkRecords.h | 5 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 31 | ||||
-rw-r--r-- | src/core/SkLightingShader.cpp | 6 | ||||
-rw-r--r-- | src/core/SkPictureFlat.h | 11 | ||||
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 4 | ||||
-rw-r--r-- | src/core/SkPictureRecord.cpp | 23 | ||||
-rw-r--r-- | src/core/SkPictureRecord.h | 17 | ||||
-rw-r--r-- | src/core/SkRecordDraw.cpp | 17 | ||||
-rw-r--r-- | src/core/SkRecorder.cpp | 18 | ||||
-rw-r--r-- | src/core/SkRecorder.h | 16 | ||||
-rw-r--r-- | tests/CanvasTest.cpp | 5 | ||||
-rw-r--r-- | tools/debugger/SkDebugCanvas.cpp | 21 | ||||
-rw-r--r-- | tools/debugger/SkDebugCanvas.h | 58 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.cpp | 76 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.h | 31 |
19 files changed, 26 insertions, 407 deletions
diff --git a/gyp/common.gypi b/gyp/common.gypi index a2795031cd..a0a8105355 100644 --- a/gyp/common.gypi +++ b/gyp/common.gypi @@ -112,13 +112,6 @@ }, }, }], - [ 'skia_experimental_shadowing', - { - 'defines': [ - 'SK_experimental_shadowing', - ], - }, - ], ], }, # end 'target_defaults' } diff --git a/gyp/common_variables.gypi b/gyp/common_variables.gypi index acd187c363..5163d880c3 100644 --- a/gyp/common_variables.gypi +++ b/gyp/common_variables.gypi @@ -251,7 +251,6 @@ #'-ffast-math', # Optimize float math even when it breaks IEEE compliance. #'-flto' # Enable link-time optimization. ], - 'skia_experimental_shadowing': 0, # for experimental shadow-drawing # These are referenced by our .gypi files that list files (e.g. core.gypi) # diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index 38b6f974cc..4d68a8e226 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -17,7 +17,6 @@ #include "SkRegion.h" #include "SkSurfaceProps.h" #include "SkXfermode.h" -#include "SkLights.h" class GrContext; class GrDrawContext; @@ -452,7 +451,6 @@ public: */ void resetMatrix(); -#ifdef SK_EXPERIMENTAL_SHADOWING /** Add the specified translation to the current draw depth of the canvas. @param z The distance to translate in Z. Negative into screen, positive out of screen. @@ -460,16 +458,6 @@ public: */ void translateZ(SkScalar z); - /** Set the current set of lights in the canvas. - @param lights The lights that we want the canvas to have. - */ - void setLights(sk_sp<SkLights> lights); - - /** Returns the current set of lights the canvas uses - */ - sk_sp<SkLights> getLights() const; -#endif - /** * Modify the current clip with the specified rectangle. * @param rect The rect to combine with the current clip @@ -1061,34 +1049,6 @@ public: this->drawPicture(picture.get(), matrix, paint); } -#ifdef SK_EXPERIMENTAL_SHADOWING - /** - * Draw the picture into this canvas. - * - * We will use the canvas's lights along with the picture information (draw depths of - * objects, etc) to first create a set of shadowmaps for the light-picture pairs, and - * then use that set of shadowmaps to render the scene with shadows. - * - * If matrix is non-null, apply that matrix to the CTM when drawing this picture. This is - * logically equivalent to - * save/concat/drawPicture/restore - * - * If paint is non-null, draw the picture into a temporary buffer, and then apply the paint's - * alpha/colorfilter/imagefilter/xfermode to that buffer as it is drawn to the canvas. - * This is logically equivalent to - * saveLayer(paint)/drawPicture/restore - * - */ - void drawShadowedPicture(const SkPicture*, - const SkMatrix* matrix, - const SkPaint* paint); - void drawShadowedPicture(const sk_sp<SkPicture>& picture, - const SkMatrix* matrix, - const SkPaint* paint) { - this->drawShadowedPicture(picture.get(), matrix, paint); - } -#endif - enum VertexMode { kTriangles_VertexMode, kTriangleStrip_VertexMode, @@ -1307,14 +1267,10 @@ public: void temporary_internal_describeTopLayer(SkMatrix* matrix, SkIRect* clip_bounds); protected: -#ifdef SK_EXPERIMENTAL_SHADOWING /** Returns the current (cumulative) draw depth of the canvas. */ SkScalar getZ() const; - sk_sp<SkLights> fLights; -#endif - /** After calling saveLayer(), there can be any number of devices that make up the top-most drawing area. LayerIter can be used to iterate through those devices. Note that the iterator is only valid until the next API @@ -1380,10 +1336,7 @@ protected: virtual void didRestore() {} virtual void didConcat(const SkMatrix&) {} virtual void didSetMatrix(const SkMatrix&) {} - -#ifdef SK_EXPERIMENTAL_SHADOWING virtual void didTranslateZ(SkScalar) {} -#endif virtual void onDrawAnnotation(const SkRect&, const char key[], SkData* value); virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); @@ -1450,12 +1403,6 @@ protected: virtual void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*); -#ifdef SK_EXPERIMENTAL_SHADOWING - virtual void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*); -#endif - // Returns the canvas to be used by DrawIter. Default implementation // returns this. Subclasses that encapsulate an indirect canvas may // need to overload this method. The impl must keep track of this, as it diff --git a/include/core/SkLights.h b/include/core/SkLights.h index 0b23cc14aa..c5c54276a3 100644 --- a/include/core/SkLights.h +++ b/include/core/SkLights.h @@ -12,7 +12,6 @@ #include "SkPoint3.h" #include "SkRefCnt.h" #include "../private/SkTDArray.h" -#include "SkImage.h" class SK_API SkLights : public SkRefCnt { public: @@ -27,7 +26,6 @@ public: : fType(kAmbient_LightType) , fColor(color) { fDirection.set(0.0f, 0.0f, 1.0f); - fShadowMap.reset(nullptr); } Light(const SkColor3f& color, const SkVector3& dir) @@ -37,7 +35,6 @@ public: if (!fDirection.normalize()) { fDirection.set(0.0f, 0.0f, 1.0f); } - fShadowMap.reset(nullptr); } LightType type() const { return fType; } @@ -47,35 +44,11 @@ public: return fDirection; } - void setShadowMap(sk_sp<SkImage> shadowMap) { - fShadowMap = std::move(shadowMap); - } - - sk_sp<SkImage> getShadowMap() const { - return fShadowMap; - } - - Light& operator= (const Light& b) { - if (this == &b) - return *this; - - this->fColor = b.fColor; - this->fType = b.fType; - this->fDirection = b.fDirection; - - if (b.fShadowMap) { - this->fShadowMap = b.fShadowMap; - } - - return *this; - } - private: LightType fType; SkColor3f fColor; // linear (unpremul) color. Range is 0..1 in each channel. SkVector3 fDirection; // direction towards the light (+Z is out of the screen). // If degenerate, it will be replaced with (0, 0, 1). - sk_sp<SkImage> fShadowMap; }; class Builder { @@ -84,7 +57,7 @@ public: void add(const Light& light) { if (fLights) { - (void) fLights->fLights.append(1, &light); + *fLights->fLights.push() = light; } } @@ -104,10 +77,6 @@ public: return fLights[index]; } - Light& light(int index) { - return fLights[index]; - } - private: SkLights() {} diff --git a/include/private/SkRecords.h b/include/private/SkRecords.h index d9f2b3b6d7..35adca20e7 100644 --- a/include/private/SkRecords.h +++ b/include/private/SkRecords.h @@ -68,7 +68,6 @@ namespace SkRecords { M(DrawPath) \ M(DrawPatch) \ M(DrawPicture) \ - M(DrawShadowedPicture) \ M(DrawPoints) \ M(DrawPosText) \ M(DrawPosTextH) \ @@ -310,10 +309,6 @@ RECORD(DrawPicture, kDraw_Tag, Optional<SkPaint> paint; RefBox<const SkPicture> picture; TypedMatrix matrix); -RECORD(DrawShadowedPicture, kDraw_Tag, - Optional<SkPaint> paint; - RefBox<const SkPicture> picture; - TypedMatrix matrix); RECORD(DrawPoints, kDraw_Tag, SkPaint paint; SkCanvas::PointMode mode; diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 2cfe8ae2da..050253fa68 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -663,9 +663,6 @@ SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) { fDeviceCMDirty = true; fSaveCount = 1; fMetaData = nullptr; -#ifdef SK_EXPERIMENTAL_SHADOWING - fLights = nullptr; -#endif fClipStack.reset(new SkClipStack); @@ -1522,7 +1519,6 @@ void SkCanvas::resetMatrix() { this->setMatrix(SkMatrix::I()); } -#ifdef SK_EXPERIMENTAL_SHADOWING void SkCanvas::translateZ(SkScalar z) { this->checkForDeferredSave(); this->fMCRec->fCurDrawDepth += z; @@ -1533,15 +1529,6 @@ SkScalar SkCanvas::getZ() const { return this->fMCRec->fCurDrawDepth; } -void SkCanvas::setLights(sk_sp<SkLights> lights) { - this->fLights = lights; -} - -sk_sp<SkLights> SkCanvas::getLights() const { - return this->fLights; -} -#endif - ////////////////////////////////////////////////////////////////////////////// void SkCanvas::clipRect(const SkRect& rect, SkRegion::Op op, bool doAA) { @@ -3013,24 +3000,6 @@ void SkCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, picture->playback(this); } -#ifdef SK_EXPERIMENTAL_SHADOWING -void SkCanvas::drawShadowedPicture(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint) { - RETURN_ON_NULL(picture); - - TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawShadowedPicture()"); - - this->onDrawShadowedPicture(picture, matrix, paint); -} - -void SkCanvas::onDrawShadowedPicture(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint) { - this->onDrawPicture(picture, matrix, paint); -} -#endif - /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/SkLightingShader.cpp b/src/core/SkLightingShader.cpp index b6b54967d5..92f41ad8c8 100644 --- a/src/core/SkLightingShader.cpp +++ b/src/core/SkLightingShader.cpp @@ -45,7 +45,7 @@ public: */ SkLightingShaderImpl(sk_sp<SkShader> diffuseShader, sk_sp<SkNormalSource> normalSource, - sk_sp<SkLights> lights) + const sk_sp<SkLights> lights) : fDiffuseShader(std::move(diffuseShader)) , fNormalSource(std::move(normalSource)) , fLights(std::move(lights)) {} @@ -134,7 +134,6 @@ public: // TODO: handle more than one of these fLightColor = lights->light(i).color(); fLightDir = lights->light(i).dir(); - // TODO get the handle to the shadow map if there is one } } @@ -177,9 +176,6 @@ public: this->emitChild(0, nullptr, &dstNormalName, args); fragBuilder->codeAppendf("vec3 normal = %s.xyz;", dstNormalName.c_str()); - - // TODO: make this a loop and modulate the contribution from each light - // based on the shadow map fragBuilder->codeAppendf("float NdotL = clamp(dot(normal, %s), 0.0, 1.0);", lightDirUniName); // diffuse light diff --git a/src/core/SkPictureFlat.h b/src/core/SkPictureFlat.h index 17b76817fe..125d4e95e8 100644 --- a/src/core/SkPictureFlat.h +++ b/src/core/SkPictureFlat.h @@ -17,13 +17,6 @@ #include "SkPtrRecorder.h" #include "SkTDynamicHash.h" -/* - * Note: While adding new DrawTypes, it is necessary to add to the end of this list - * and update LAST_DRAWTYPE_ENUM to avoid having the code read older skps wrong. - * (which can cause segfaults) - * - * Reordering can be done during version updates. - */ enum DrawType { UNUSED, CLIP_PATH, @@ -90,9 +83,7 @@ enum DrawType { TRANSLATE_Z, - DRAW_SHADOWED_PICTURE_LIGHTS, - - LAST_DRAWTYPE_ENUM = DRAW_SHADOWED_PICTURE_LIGHTS + LAST_DRAWTYPE_ENUM = TRANSLATE_Z }; // In the 'match' method, this constant will match any flavor of DRAW_BITMAP* diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index 0bce09cdf2..60c4fe898d 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -617,11 +617,9 @@ void SkPicturePlayback::handleOp(SkReadBuffer* reader, canvas->translate(dx, dy); } break; case TRANSLATE_Z: { -#ifdef SK_EXPERIMENTAL_SHADOWING SkScalar dz = reader->readScalar(); canvas->translateZ(dz); -#endif - } break; + } default: SkASSERTF(false, "Unknown draw type: %d", op); } diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp index 562f056c50..f2a0fd857c 100644 --- a/src/core/SkPictureRecord.cpp +++ b/src/core/SkPictureRecord.cpp @@ -219,7 +219,6 @@ void SkPictureRecord::didSetMatrix(const SkMatrix& matrix) { } void SkPictureRecord::didTranslateZ(SkScalar z) { -#ifdef SK_EXPERIMENTAL_SHADOWING this->validate(fWriter.bytesWritten(), 0); // op + scalar size_t size = 1 * kUInt32Size + 1 * sizeof(SkScalar); @@ -227,7 +226,6 @@ void SkPictureRecord::didTranslateZ(SkScalar z) { this->addScalar(z); this->validate(initialOffset, size); this->INHERITED::didTranslateZ(z); -#endif } static bool regionOpExpands(SkRegion::Op op) { @@ -674,27 +672,6 @@ void SkPictureRecord::onDrawPicture(const SkPicture* picture, const SkMatrix* ma this->validate(initialOffset, size); } -void SkPictureRecord::onDrawShadowedPicture(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint) { - // op + picture index - size_t size = 2 * kUInt32Size; - size_t initialOffset; - - if (nullptr == matrix && nullptr == paint) { - initialOffset = this->addDraw(DRAW_PICTURE, &size); - this->addPicture(picture); - } else { - const SkMatrix& m = matrix ? *matrix : SkMatrix::I(); - size += m.writeToMemory(nullptr) + kUInt32Size; // matrix + paint - initialOffset = this->addDraw(DRAW_PICTURE_MATRIX_PAINT, &size); - this->addPaintPtr(paint); - this->addMatrix(m); - this->addPicture(picture); - } - this->validate(initialOffset, size); -} - void SkPictureRecord::onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) { // op + drawable index size_t size = 2 * kUInt32Size; diff --git a/src/core/SkPictureRecord.h b/src/core/SkPictureRecord.h index 5f51a0e12d..276dd3e29b 100644 --- a/src/core/SkPictureRecord.h +++ b/src/core/SkPictureRecord.h @@ -159,11 +159,7 @@ protected: void didConcat(const SkMatrix&) override; void didSetMatrix(const SkMatrix&) override; -#ifdef SK_EXPERIMENTAL_SHADOWING void didTranslateZ(SkScalar) override; -#endif - void didTranslateZ(SkScalar); -#endif void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; @@ -212,17 +208,6 @@ protected: void onClipRegion(const SkRegion&, SkRegion::Op) override; void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; - -#ifdef SK_EXPERIMENTAL_SHADOWING - void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*) override; -#else - void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*); -#endif - void onDrawDrawable(SkDrawable*, const SkMatrix*) override; void onDrawAnnotation(const SkRect&, const char[], SkData*) override; @@ -268,3 +253,5 @@ private: typedef SkCanvas INHERITED; }; + +#endif diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp index cdfce66bf5..02d07d5005 100644 --- a/src/core/SkRecordDraw.cpp +++ b/src/core/SkRecordDraw.cpp @@ -86,11 +86,7 @@ DRAW(ClipRRect, clipRRect(r.rrect, r.opAA.op, r.opAA.aa)); DRAW(ClipRect, clipRect(r.rect, r.opAA.op, r.opAA.aa)); DRAW(ClipRegion, clipRegion(r.region, r.op)); -#ifdef SK_EXPERIMENTAL_SHADOWING DRAW(TranslateZ, SkCanvas::translateZ(r.z)); -#else -template <> void Draw::draw(const TranslateZ& r) { } -#endif DRAW(DrawBitmap, drawBitmap(r.bitmap.shallowCopy(), r.left, r.top, r.paint)); DRAW(DrawBitmapNine, drawBitmapNine(r.bitmap.shallowCopy(), r.center, r.dst, r.paint)); @@ -111,13 +107,6 @@ DRAW(DrawPaint, drawPaint(r.paint)); DRAW(DrawPath, drawPath(r.path, r.paint)); DRAW(DrawPatch, drawPatch(r.cubics, r.colors, r.texCoords, r.xmode, r.paint)); DRAW(DrawPicture, drawPicture(r.picture, &r.matrix, r.paint)); - -#ifdef SK_EXPERIMENTAL_SHADOWING -DRAW(DrawShadowedPicture, drawShadowedPicture(r.picture, &r.matrix, r.paint)); -#else -template <> void Draw::draw(const DrawShadowedPicture& r) { } -#endif - DRAW(DrawPoints, drawPoints(r.mode, r.count, r.pts, r.paint)); DRAW(DrawPosText, drawPosText(r.text, r.byteLength, r.pos, r.paint)); DRAW(DrawPosTextH, drawPosTextH(r.text, r.byteLength, r.xpos, r.y, r.paint)); @@ -483,12 +472,6 @@ private: return this->adjustAndMap(dst, op.paint); } - Bounds bounds(const DrawShadowedPicture& op) const { - SkRect dst = op.picture->cullRect(); - op.matrix.mapRect(&dst); - return this->adjustAndMap(dst, op.paint); - } - Bounds bounds(const DrawPosText& op) const { const int N = op.paint.countText(op.text, op.byteLength); if (N == 0) { diff --git a/src/core/SkRecorder.cpp b/src/core/SkRecorder.cpp index 76fd3b819e..c7869bb6a4 100644 --- a/src/core/SkRecorder.cpp +++ b/src/core/SkRecorder.cpp @@ -305,20 +305,6 @@ void SkRecorder::onDrawPicture(const SkPicture* pic, const SkMatrix* matrix, con } } -void SkRecorder::onDrawShadowedPicture(const SkPicture* pic, - const SkMatrix* matrix, - const SkPaint* paint) { - if (fDrawPictureMode == Record_DrawPictureMode) { - fApproxBytesUsedBySubPictures += SkPictureUtils::ApproximateBytesUsed(pic); - APPEND(DrawShadowedPicture, this->copy(paint), pic, matrix ? *matrix : SkMatrix::I()); - } else { - SkASSERT(fDrawPictureMode == Playback_DrawPictureMode); - SkAutoCanvasMatrixPaint acmp(this, matrix, paint, pic->cullRect()); - pic->playback(this); - } -} - - void SkRecorder::onDrawVertices(VertexMode vmode, int vertexCount, const SkPoint vertices[], const SkPoint texs[], const SkColor colors[], @@ -383,10 +369,8 @@ void SkRecorder::didSetMatrix(const SkMatrix& matrix) { APPEND(SetMatrix, matrix); } -void SkRecorder::didTranslateZ(SkScalar z) { -#ifdef SK_EXPERIMENTAL_SHADOWING +void SkRecorder::didTranslateZ(SkScalar z) { APPEND(TranslateZ, z); -#endif } void SkRecorder::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { diff --git a/src/core/SkRecorder.h b/src/core/SkRecorder.h index 5282740c0c..66a006712e 100644 --- a/src/core/SkRecorder.h +++ b/src/core/SkRecorder.h @@ -60,12 +60,7 @@ public: void didConcat(const SkMatrix&) override; void didSetMatrix(const SkMatrix&) override; - -#ifdef SK_EXPERIMENTAL_SHADOWING void didTranslateZ(SkScalar) override; -#else - void didTranslateZ(SkScalar); -#endif void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; void onDrawDrawable(SkDrawable*, const SkMatrix*) override; @@ -131,17 +126,6 @@ public: void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op) override; void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; - -#ifdef SK_EXPERIMENTAL_SHADOWING - void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*) override; -#else - void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*); -#endif - void onDrawAnnotation(const SkRect&, const char[], SkData*) override; sk_sp<SkSurface> onNewSurface(const SkImageInfo&, const SkSurfaceProps&) override; diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp index 6182d95ffc..1e5f9e18bc 100644 --- a/tests/CanvasTest.cpp +++ b/tests/CanvasTest.cpp @@ -780,7 +780,7 @@ DEF_TEST(Canvas_ClipEmptyPath, reporter) { } #define SHADOW_TEST_CANVAS_CONST 10 -#ifdef SK_EXPERIMENTAL_SHADOWING + class SkShadowTestCanvas : public SkPaintFilterCanvas { public: @@ -817,7 +817,6 @@ private: typedef SkPaintFilterCanvas INHERITED; }; -#endif namespace { @@ -853,7 +852,6 @@ DEF_TEST(PaintFilterCanvas_ConsistentState, reporter) { REPORTER_ASSERT(reporter, canvas.getClipBounds(&clip1) == filterCanvas.getClipBounds(&clip2)); REPORTER_ASSERT(reporter, clip1 == clip2); -#ifdef SK_EXPERIMENTAL_SHADOWING SkShadowTestCanvas* tCanvas = new SkShadowTestCanvas(100,100, reporter); tCanvas->testUpdateDepth(reporter); delete(tCanvas); @@ -867,7 +865,6 @@ DEF_TEST(PaintFilterCanvas_ConsistentState, reporter) { tSCanvas->drawPicture(pic); delete(tSCanvas); -#endif } /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp index d5297ed980..062445ba0a 100644 --- a/tools/debugger/SkDebugCanvas.cpp +++ b/tools/debugger/SkDebugCanvas.cpp @@ -58,16 +58,6 @@ protected: this->SkCanvas::onDrawPicture(picture, matrix, paint); } - void onDrawShadowedPicture(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint) { -#ifdef SK_EXPERIMENTAL_SHADOWING - this->SkCanvas::onDrawShadowedPicture(picture, matrix, paint); -#else - this->SkCanvas::onDrawPicture(picture, matrix, paint); -#endif - } - private: sk_sp<SkXfermode> fOverdrawXfermode; @@ -613,15 +603,6 @@ void SkDebugCanvas::onDrawPicture(const SkPicture* picture, this->addDrawCommand(new SkEndDrawPictureCommand(SkToBool(matrix) || SkToBool(paint))); } -void SkDebugCanvas::onDrawShadowedPicture(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint) { - this->addDrawCommand(new SkBeginDrawShadowedPictureCommand(picture, matrix, paint)); - SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect()); - picture->playback(this); - this->addDrawCommand(new SkEndDrawShadowedPictureCommand(SkToBool(matrix) || SkToBool(paint))); -} - void SkDebugCanvas::onDrawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) { this->addDrawCommand(new SkDrawPointsCommand(mode, count, pts, paint)); @@ -710,10 +691,8 @@ void SkDebugCanvas::didSetMatrix(const SkMatrix& matrix) { } void SkDebugCanvas::didTranslateZ(SkScalar z) { -#ifdef SK_EXPERIMENTAL_SHADOWING this->addDrawCommand(new SkTranslateZCommand(z)); this->INHERITED::didTranslateZ(z); -#endif } void SkDebugCanvas::toggleCommand(int index, bool toggle) { diff --git a/tools/debugger/SkDebugCanvas.h b/tools/debugger/SkDebugCanvas.h index 9f785ef7f3..4264f55200 100644 --- a/tools/debugger/SkDebugCanvas.h +++ b/tools/debugger/SkDebugCanvas.h @@ -24,27 +24,23 @@ class SkNWayCanvas; class SK_API SkDebugCanvas : public SkCanvas { public: SkDebugCanvas(int width, int height); - virtual ~SkDebugCanvas(); void toggleFilter(bool toggle) { fFilter = toggle; } void setMegaVizMode(bool megaVizMode) { fMegaVizMode = megaVizMode; } - bool getMegaVizMode() const { return fMegaVizMode; } /** * Enable or disable overdraw visualization */ void setOverdrawViz(bool overdrawViz); - bool getOverdrawViz() const { return fOverdrawViz; } /** * Set the color of the clip visualization. An alpha of zero renders the clip invisible. */ void setClipVizColor(SkColor clipVizColor) { this->fClipVizColor = clipVizColor; } - SkColor getClipVizColor() const { return fClipVizColor; } void setDrawGpuBatchBounds(bool drawGpuBatchBounds) { @@ -55,7 +51,7 @@ public: bool getAllowSimplifyClip() const { return fAllowSimplifyClip; } - void setPicture(SkPicture *picture) { fPicture = picture; } + void setPicture(SkPicture* picture) { fPicture = picture; } /** * Enable or disable texure filtering override @@ -66,7 +62,7 @@ public: Executes all draw calls to the canvas. @param canvas The canvas being drawn to */ - void draw(SkCanvas *canvas); + void draw(SkCanvas* canvas); /** Executes the draw calls up to the specified index. @@ -74,19 +70,19 @@ public: @param index The index of the final command being executed @param m an optional Mth gpu batch to highlight, or -1 */ - void drawTo(SkCanvas *canvas, int index, int m = -1); + void drawTo(SkCanvas* canvas, int index, int m = -1); /** Returns the most recently calculated transformation matrix */ - const SkMatrix &getCurrentMatrix() { + const SkMatrix& getCurrentMatrix() { return fMatrix; } /** Returns the most recently calculated clip */ - const SkIRect &getCurrentClip() { + const SkIRect& getCurrentClip() { return fClip; } @@ -105,20 +101,20 @@ public: Returns the draw command at the given index. @param index The index of the command */ - SkDrawCommand *getDrawCommandAt(int index); + SkDrawCommand* getDrawCommandAt(int index); /** Sets the draw command for a given index. @param index The index to overwrite @param command The new command */ - void setDrawCommandAt(int index, SkDrawCommand *command); + void setDrawCommandAt(int index, SkDrawCommand* command); /** Returns information about the command at the given index. @param index The index of the command */ - const SkTDArray<SkString *> *getCommandInfo(int index) const; + const SkTDArray<SkString*>* getCommandInfo(int index) const; /** Returns the visibility of the command at the given index. @@ -130,13 +126,13 @@ public: Returns the vector of draw commands */ SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") - const SkTDArray<SkDrawCommand *> &getDrawCommands() const; + const SkTDArray<SkDrawCommand*>& getDrawCommands() const; /** Returns the vector of draw commands. Do not use this entry point - it is going away! */ - SkTDArray<SkDrawCommand *> &getDrawCommands(); + SkTDArray<SkDrawCommand*>& getDrawCommands(); /** Returns length of draw command vector. @@ -162,9 +158,9 @@ public: SkDebugCanvas::getSize(). The encoder may use the UrlDataManager to store binary data such as images, referring to them via URLs embedded in the JSON. */ - Json::Value toJSON(UrlDataManager &urlDataManager, int n, SkCanvas *); + Json::Value toJSON(UrlDataManager& urlDataManager, int n, SkCanvas*); - Json::Value toJSONBatchList(int n, SkCanvas *); + Json::Value toJSONBatchList(int n, SkCanvas*); //////////////////////////////////////////////////////////////////////////////// // Inherited from SkCanvas @@ -174,10 +170,8 @@ public: static const int kVizImageWidth = 256; bool isClipEmpty() const override { return false; } - bool isClipRect() const override { return true; } - - bool getClipBounds(SkRect *bounds) const override { + bool getClipBounds(SkRect* bounds) const override { if (bounds) { bounds->setXYWH(0, 0, SkIntToScalar(this->imageInfo().width()), @@ -185,8 +179,7 @@ public: } return true; } - - bool getClipDeviceBounds(SkIRect *bounds) const override { + bool getClipDeviceBounds(SkIRect* bounds) const override { if (bounds) { bounds->setLargest(); } @@ -195,20 +188,13 @@ public: protected: void willSave() override; - - SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec &) override; - + SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override; void willRestore() override; - void didConcat(const SkMatrix &) override; - - void didSetMatrix(const SkMatrix &) override; + void didConcat(const SkMatrix&) override; + void didSetMatrix(const SkMatrix&) override; -#ifdef SK_EXPERIMENTAL_SHADOWING void didTranslateZ(SkScalar) override; -#else - void didTranslateZ(SkScalar); -#endif void onDrawAnnotation(const SkRect&, const char[], SkData*) override; void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; @@ -254,16 +240,6 @@ protected: void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; -#ifdef SK_EXPERIMENTAL_SHADOWING - void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*) override; -#else - void onDrawShadowedPicture(const SkPicture*, - const SkMatrix*, - const SkPaint*); -#endif - void markActiveCommands(int index); private: diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp index 51eb96706a..8f42cb70ec 100644 --- a/tools/debugger/SkDrawCommand.cpp +++ b/tools/debugger/SkDrawCommand.cpp @@ -180,7 +180,6 @@ SkDrawCommand::~SkDrawCommand() { const char* SkDrawCommand::GetCommandString(OpType type) { switch (type) { case kBeginDrawPicture_OpType: return "BeginDrawPicture"; - case kBeginDrawShadowedPicture_OpType: return "BeginDrawShadowedPicture"; case kClipPath_OpType: return "ClipPath"; case kClipRegion_OpType: return "ClipRegion"; case kClipRect_OpType: return "ClipRect"; @@ -209,7 +208,6 @@ const char* SkDrawCommand::GetCommandString(OpType type) { case kDrawTextRSXform_OpType: return "DrawTextRSXform"; case kDrawVertices_OpType: return "DrawVertices"; case kEndDrawPicture_OpType: return "EndDrawPicture"; - case kEndDrawShadowedPicture_OpType: return "EndDrawShadowedPicture"; case kRestore_OpType: return "Restore"; case kSave_OpType: return "Save"; case kSaveLayer_OpType: return "SaveLayer"; @@ -272,9 +270,8 @@ SkDrawCommand* SkDrawCommand::fromJSON(Json::Value& command, UrlDataManager& url INSTALL_FACTORY(Save); INSTALL_FACTORY(SaveLayer); INSTALL_FACTORY(SetMatrix); -#ifdef SK_EXPERIMENTAL_SHADOWING + INSTALL_FACTORY(TranslateZ); -#endif } SkString name = SkString(command[SKDEBUGCANVAS_ATTRIBUTE_COMMAND].asCString()); FROM_JSON* factory = factories.find(name); @@ -1494,13 +1491,10 @@ static void extract_json_matrix(Json::Value& matrix, SkMatrix* result) { result->set9(values); } -#ifdef SK_EXPERIMENTAL_SHADOWING -// somehow this is only used in shadows... static void extract_json_scalar(Json::Value& scalar, SkScalar* result) { SkScalar value = scalar.asFloat(); *result = value; } -#endif static void extract_json_path(Json::Value& path, SkPath* result) { const char* fillType = path[SKDEBUGCANVAS_ATTRIBUTE_FILLTYPE].asCString(); @@ -2387,68 +2381,6 @@ void SkEndDrawPictureCommand::execute(SkCanvas* canvas) const { } } -SkBeginDrawShadowedPictureCommand::SkBeginDrawShadowedPictureCommand(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint) - : INHERITED(kBeginDrawShadowedPicture_OpType) - , fPicture(SkRef(picture)) { - - SkString* str = new SkString; - str->appendf("SkPicture: L: %f T: %f R: %f B: %f", - picture->cullRect().fLeft, picture->cullRect().fTop, - picture->cullRect().fRight, picture->cullRect().fBottom); - fInfo.push(str); - - if (matrix) { - fMatrix.set(*matrix); - fInfo.push(SkObjectParser::MatrixToString(*matrix)); - } - - if (paint) { - fPaint.set(*paint); - fInfo.push(SkObjectParser::PaintToString(*paint)); - } -} - -void SkBeginDrawShadowedPictureCommand::execute(SkCanvas* canvas) const { - if (fPaint.isValid()) { - SkRect bounds = fPicture->cullRect(); - if (fMatrix.isValid()) { - fMatrix.get()->mapRect(&bounds); - } - canvas->saveLayer(&bounds, fPaint.get()); - } - - if (fMatrix.isValid()) { - if (!fPaint.isValid()) { - canvas->save(); - } - canvas->concat(*fMatrix.get()); - } -} - -bool SkBeginDrawShadowedPictureCommand::render(SkCanvas* canvas) const { - canvas->clear(0xFFFFFFFF); - canvas->save(); - - xlate_and_scale_to_bounds(canvas, fPicture->cullRect()); - - canvas->drawPicture(fPicture.get()); - - canvas->restore(); - - return true; -} - -SkEndDrawShadowedPictureCommand::SkEndDrawShadowedPictureCommand(bool restore) - : INHERITED(kEndDrawShadowedPicture_OpType) , fRestore(restore) { } - -void SkEndDrawShadowedPictureCommand::execute(SkCanvas* canvas) const { - if (fRestore) { - canvas->restore(); - } -} - SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) : INHERITED(kDrawPoints_OpType) { @@ -3385,9 +3317,7 @@ SkTranslateZCommand::SkTranslateZCommand(SkScalar z) } void SkTranslateZCommand::execute(SkCanvas* canvas) const { -#ifdef SK_EXPERIMENTAL_SHADOWING canvas->translateZ(fZTranslate); -#endif } Json::Value SkTranslateZCommand::toJSON(UrlDataManager& urlDataManager) const { @@ -3399,10 +3329,6 @@ Json::Value SkTranslateZCommand::toJSON(UrlDataManager& urlDataManager) const { SkTranslateZCommand* SkTranslateZCommand::fromJSON(Json::Value& command, UrlDataManager& urlDataManager) { SkScalar z; -#ifdef SK_EXPERIMENTAL_SHADOWING extract_json_scalar(command[SKDEBUGCANVAS_ATTRIBUTE_DRAWDEPTHTRANS], &z); -#else - z = 0; -#endif return new SkTranslateZCommand(z); } diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h index 14a7af5882..a7e6c73802 100644 --- a/tools/debugger/SkDrawCommand.h +++ b/tools/debugger/SkDrawCommand.h @@ -24,7 +24,6 @@ class SK_API SkDrawCommand { public: enum OpType { kBeginDrawPicture_OpType, - kBeginDrawShadowedPicture_OpType, kClipPath_OpType, kClipRegion_OpType, kClipRect_OpType, @@ -53,7 +52,6 @@ public: kDrawTextRSXform_OpType, kDrawVertices_OpType, kEndDrawPicture_OpType, - kEndDrawShadowedPicture_OpType, kRestore_OpType, kSave_OpType, kSaveLayer_OpType, @@ -457,35 +455,6 @@ private: typedef SkDrawCommand INHERITED; }; -class SkBeginDrawShadowedPictureCommand : public SkDrawCommand { -public: - SkBeginDrawShadowedPictureCommand(const SkPicture* picture, - const SkMatrix* matrix, - const SkPaint* paint); - - void execute(SkCanvas* canvas) const override; - bool render(SkCanvas* canvas) const override; - -private: - SkAutoTUnref<const SkPicture> fPicture; - SkTLazy<SkMatrix> fMatrix; - SkTLazy<SkPaint> fPaint; - - typedef SkDrawCommand INHERITED; -}; - -class SkEndDrawShadowedPictureCommand : public SkDrawCommand { -public: - SkEndDrawShadowedPictureCommand(bool restore); - - void execute(SkCanvas* canvas) const override; - -private: - bool fRestore; - - typedef SkDrawCommand INHERITED; -}; - class SkDrawPointsCommand : public SkDrawCommand { public: SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], |