Chromium Code Reviews| Index: include/core/SkCanvas.h |
| diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h |
| index 35a8d1c7b92193a4d247a4766efe54a2976ce0a6..e30ef4250f98b7537fc038be3401d5b1967f7bea 100644 |
| --- a/include/core/SkCanvas.h |
| +++ b/include/core/SkCanvas.h |
| @@ -17,6 +17,7 @@ |
| #include "SkRegion.h" |
| #include "SkSurfaceProps.h" |
| #include "SkXfermode.h" |
| +#include "SkLights.h" |
| class GrContext; |
| class GrDrawContext; |
| @@ -458,6 +459,17 @@ public: |
| */ |
| void translateZ(SkScalar z); |
|
jvanverth1
2016/07/18 15:02:26
Still need to put this behind SK_RELEASE.
vjiaoblack
2016/07/18 16:51:05
Done.
|
| +#ifndef SK_RELEASE |
| + /** 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 |
| @@ -1049,6 +1061,34 @@ public: |
| this->drawPicture(picture.get(), matrix, paint); |
| } |
| +#ifndef SK_RELEASE |
| + /** |
| + * 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, |
| @@ -1271,6 +1311,10 @@ protected: |
| */ |
| SkScalar getZ() const; |
|
jvanverth1
2016/07/18 15:02:26
This should be behind SK_RELEASE as well.
vjiaoblack
2016/07/18 16:51:05
Done.
|
| +#ifndef SK_RELEASE |
| + 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 |
| @@ -1402,6 +1446,9 @@ protected: |
| virtual void onDiscard(); |
| virtual void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*); |
| + virtual void onDrawShadowedPicture(const SkPicture*, |
| + const SkMatrix*, |
| + const SkPaint*); |
| // Returns the canvas to be used by DrawIter. Default implementation |
| // returns this. Subclasses that encapsulate an indirect canvas may |