Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: include/core/SkCanvas.h

Issue 2257203002: make LayerIter private, and remove skipClip option (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: remove dead comment Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/core/SkCanvas.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkCanvas_DEFINED 8 #ifndef SkCanvas_DEFINED
9 #define SkCanvas_DEFINED 9 #define SkCanvas_DEFINED
10 10
(...skipping 1307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 1318
1319 protected: 1319 protected:
1320 #ifdef SK_EXPERIMENTAL_SHADOWING 1320 #ifdef SK_EXPERIMENTAL_SHADOWING
1321 /** Returns the current (cumulative) draw depth of the canvas. 1321 /** Returns the current (cumulative) draw depth of the canvas.
1322 */ 1322 */
1323 SkScalar getZ() const; 1323 SkScalar getZ() const;
1324 1324
1325 sk_sp<SkLights> fLights; 1325 sk_sp<SkLights> fLights;
1326 #endif 1326 #endif
1327 1327
1328 /** After calling saveLayer(), there can be any number of devices that make
1329 up the top-most drawing area. LayerIter can be used to iterate through
1330 those devices. Note that the iterator is only valid until the next API
1331 call made on the canvas. Ownership of all pointers in the iterator stays
1332 with the canvas, so none of them should be modified or deleted.
1333 */
1334 class LayerIter /*: SkNoncopyable*/ {
1335 public:
1336 /** Initialize iterator with canvas, and set values for 1st device */
1337 LayerIter(SkCanvas*, bool skipEmptyClips);
1338 ~LayerIter();
1339
1340 /** Return true if the iterator is done */
1341 bool done() const { return fDone; }
1342 /** Cycle to the next device */
1343 void next();
1344
1345 // These reflect the current device in the iterator
1346
1347 SkBaseDevice* device() const;
1348 const SkMatrix& matrix() const;
1349 const SkRasterClip& clip() const;
1350 const SkPaint& paint() const;
1351 int x() const;
1352 int y() const;
1353
1354 private:
1355 // used to embed the SkDrawIter object directly in our instance, w/o
1356 // having to expose that class def to the public. There is an assert
1357 // in our constructor to ensure that fStorage is large enough
1358 // (though needs to be a compile-time-assert!). We use intptr_t to work
1359 // safely with 32 and 64 bit machines (to ensure the storage is enough)
1360 intptr_t fStorage[32];
1361 class SkDrawIter* fImpl; // this points at fStorage
1362 SkPaint fDefaultPaint;
1363 bool fDone;
1364 };
1365
1366 // default impl defers to getDevice()->newSurface(info) 1328 // default impl defers to getDevice()->newSurface(info)
1367 virtual sk_sp<SkSurface> onNewSurface(const SkImageInfo&, const SkSurfacePro ps&); 1329 virtual sk_sp<SkSurface> onNewSurface(const SkImageInfo&, const SkSurfacePro ps&);
1368 1330
1369 // default impl defers to its device 1331 // default impl defers to its device
1370 virtual bool onPeekPixels(SkPixmap*); 1332 virtual bool onPeekPixels(SkPixmap*);
1371 virtual bool onAccessTopLayerPixels(SkPixmap*); 1333 virtual bool onAccessTopLayerPixels(SkPixmap*);
1372 virtual SkImageInfo onImageInfo() const; 1334 virtual SkImageInfo onImageInfo() const;
1373 virtual bool onGetProps(SkSurfaceProps*) const; 1335 virtual bool onGetProps(SkSurfaceProps*) const;
1374 virtual void onFlush(); 1336 virtual void onFlush();
1375 1337
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1477 virtual SkCanvas* canvasForDrawIter(); 1439 virtual SkCanvas* canvasForDrawIter();
1478 1440
1479 // Clip rectangle bounds. Called internally by saveLayer. 1441 // Clip rectangle bounds. Called internally by saveLayer.
1480 // returns false if the entire rectangle is entirely clipped out 1442 // returns false if the entire rectangle is entirely clipped out
1481 // If non-NULL, The imageFilter parameter will be used to expand the clip 1443 // If non-NULL, The imageFilter parameter will be used to expand the clip
1482 // and offscreen bounds for any margin required by the filter DAG. 1444 // and offscreen bounds for any margin required by the filter DAG.
1483 bool clipRectBounds(const SkRect* bounds, SaveLayerFlags, SkIRect* intersect ion, 1445 bool clipRectBounds(const SkRect* bounds, SaveLayerFlags, SkIRect* intersect ion,
1484 const SkImageFilter* imageFilter = NULL); 1446 const SkImageFilter* imageFilter = NULL);
1485 1447
1486 private: 1448 private:
1449 /** After calling saveLayer(), there can be any number of devices that make
1450 up the top-most drawing area. LayerIter can be used to iterate through
1451 those devices. Note that the iterator is only valid until the next API
1452 call made on the canvas. Ownership of all pointers in the iterator stays
1453 with the canvas, so none of them should be modified or deleted.
1454 */
1455 class LayerIter /*: SkNoncopyable*/ {
1456 public:
1457 /** Initialize iterator with canvas, and set values for 1st device */
1458 LayerIter(SkCanvas*);
1459 ~LayerIter();
1460
1461 /** Return true if the iterator is done */
1462 bool done() const { return fDone; }
1463 /** Cycle to the next device */
1464 void next();
1465
1466 // These reflect the current device in the iterator
1467
1468 SkBaseDevice* device() const;
1469 const SkMatrix& matrix() const;
1470 const SkRasterClip& clip() const;
1471 const SkPaint& paint() const;
1472 int x() const;
1473 int y() const;
1474
1475 private:
1476 // used to embed the SkDrawIter object directly in our instance, w/o
1477 // having to expose that class def to the public. There is an assert
1478 // in our constructor to ensure that fStorage is large enough
1479 // (though needs to be a compile-time-assert!). We use intptr_t to work
1480 // safely with 32 and 64 bit machines (to ensure the storage is enough)
1481 intptr_t fStorage[32];
1482 class SkDrawIter* fImpl; // this points at fStorage
1483 SkPaint fDefaultPaint;
1484 bool fDone;
1485 };
1486
1487 static bool BoundsAffectsClip(SaveLayerFlags); 1487 static bool BoundsAffectsClip(SaveLayerFlags);
1488 static SaveLayerFlags LegacySaveFlagsToSaveLayerFlags(uint32_t legacySaveFla gs); 1488 static SaveLayerFlags LegacySaveFlagsToSaveLayerFlags(uint32_t legacySaveFla gs);
1489 1489
1490 static void DrawDeviceWithFilter(SkBaseDevice* src, const SkImageFilter* fil ter, 1490 static void DrawDeviceWithFilter(SkBaseDevice* src, const SkImageFilter* fil ter,
1491 SkBaseDevice* dst, const SkMatrix& ctm, 1491 SkBaseDevice* dst, const SkMatrix& ctm,
1492 const SkClipStack* clipStack); 1492 const SkClipStack* clipStack);
1493 1493
1494 enum ShaderOverrideOpacity { 1494 enum ShaderOverrideOpacity {
1495 kNone_ShaderOverrideOpacity, //!< there is no overriding shader ( bitmap or image) 1495 kNone_ShaderOverrideOpacity, //!< there is no overriding shader ( bitmap or image)
1496 kOpaque_ShaderOverrideOpacity, //!< the overriding shader is opaque 1496 kOpaque_ShaderOverrideOpacity, //!< the overriding shader is opaque
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 friend class SkSurface_Base; 1535 friend class SkSurface_Base;
1536 friend class SkSurface_Gpu; 1536 friend class SkSurface_Gpu;
1537 1537
1538 bool fDeviceCMDirty; // cleared by updateDeviceCMCache() 1538 bool fDeviceCMDirty; // cleared by updateDeviceCMCache()
1539 void updateDeviceCMCache(); 1539 void updateDeviceCMCache();
1540 1540
1541 void doSave(); 1541 void doSave();
1542 void checkForDeferredSave(); 1542 void checkForDeferredSave();
1543 void internalSetMatrix(const SkMatrix&); 1543 void internalSetMatrix(const SkMatrix&);
1544 1544
1545 friend class CanvasTestingAccess; // for testing
1546 friend class SkDrawIter; // needs setupDrawForLayerDevice() 1545 friend class SkDrawIter; // needs setupDrawForLayerDevice()
1547 friend class AutoDrawLooper; 1546 friend class AutoDrawLooper;
1548 friend class SkLua; // needs top layer size and offset 1547 friend class SkLua; // needs top layer size and offset
1549 friend class SkDebugCanvas; // needs experimental fAllowSimplifyClip 1548 friend class SkDebugCanvas; // needs experimental fAllowSimplifyClip
1550 friend class SkSurface_Raster; // needs getDevice() 1549 friend class SkSurface_Raster; // needs getDevice()
1551 friend class SkRecorder; // InitFlags 1550 friend class SkRecorder; // InitFlags
1552 friend class SkLiteRecorder; // InitFlags 1551 friend class SkLiteRecorder; // InitFlags
1553 friend class SkNoSaveLayerCanvas; // InitFlags 1552 friend class SkNoSaveLayerCanvas; // InitFlags
1554 friend class SkPictureImageFilter; // SkCanvas(SkBaseDevice*, SkSurfaceProp s*, InitFlags) 1553 friend class SkPictureImageFilter; // SkCanvas(SkBaseDevice*, SkSurfaceProp s*, InitFlags)
1555 friend class SkPictureRecord; // predrawNotify (why does it need it? <reed >) 1554 friend class SkPictureRecord; // predrawNotify (why does it need it? <reed >)
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 1681
1683 class SkCanvasClipVisitor { 1682 class SkCanvasClipVisitor {
1684 public: 1683 public:
1685 virtual ~SkCanvasClipVisitor(); 1684 virtual ~SkCanvasClipVisitor();
1686 virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0; 1685 virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0;
1687 virtual void clipRRect(const SkRRect&, SkRegion::Op, bool antialias) = 0; 1686 virtual void clipRRect(const SkRRect&, SkRegion::Op, bool antialias) = 0;
1688 virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0; 1687 virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0;
1689 }; 1688 };
1690 1689
1691 #endif 1690 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkCanvas.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698