Index: src/core/SkRecordDraw.cpp |
diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp |
index 9075e508f77a053854e991b580c82c18bae50566..e35e5a0a9d37d37e5c232067108a20680d03c511 100644 |
--- a/src/core/SkRecordDraw.cpp |
+++ b/src/core/SkRecordDraw.cpp |
@@ -5,13 +5,10 @@ |
* found in the LICENSE file. |
*/ |
+#include "SkLayerInfo.h" |
#include "SkRecordDraw.h" |
#include "SkPatchUtils.h" |
-#if SK_SUPPORT_GPU |
-#include "GrPictureUtils.h" |
-#endif |
- |
void SkRecordDraw(const SkRecord& record, |
SkCanvas* canvas, |
const SkBBoxHierarchy* bbh, |
@@ -570,11 +567,10 @@ private: |
SkTDArray<unsigned> fControlIndices; |
}; |
-#if SK_SUPPORT_GPU |
// SkRecord visitor to gather saveLayer/restore information. |
class CollectLayers : SkNoncopyable { |
public: |
- CollectLayers(const SkRect& cullRect, const SkRecord& record, GrAccelData* accelData) |
+ CollectLayers(const SkRect& cullRect, const SkRecord& record, SkLayerInfo* accelData) |
: fSaveLayersInStack(0) |
, fAccelData(accelData) |
, fFillBounds(cullRect, record) { |
@@ -624,10 +620,10 @@ private: |
void trackSaveLayers(const DrawPicture& dp) { |
// For sub-pictures, we wrap their layer information within the parent |
// picture's rendering hierarchy |
- SkPicture::AccelData::Key key = GrAccelData::ComputeAccelDataKey(); |
+ SkPicture::AccelData::Key key = SkLayerInfo::ComputeKey(); |
- const GrAccelData* childData = |
- static_cast<const GrAccelData*>(dp.picture->EXPERIMENTAL_getAccelData(key)); |
+ const SkLayerInfo* childData = |
+ static_cast<const SkLayerInfo*>(dp.picture->EXPERIMENTAL_getAccelData(key)); |
if (!childData) { |
// If the child layer hasn't been generated with saveLayer data we |
// assume the worst (i.e., that it does contain layers which nest |
@@ -638,8 +634,8 @@ private: |
return; |
} |
- for (int i = 0; i < childData->numSaveLayers(); ++i) { |
- const GrAccelData::SaveLayerInfo& src = childData->saveLayerInfo(i); |
+ for (int i = 0; i < childData->numBlocks(); ++i) { |
+ const SkLayerInfo::BlockInfo& src = childData->block(i); |
FillBounds::Bounds newBound = fFillBounds.adjustAndMap(src.fBounds, dp.paint); |
if (newBound.isEmpty()) { |
@@ -648,7 +644,7 @@ private: |
this->updateStackForSaveLayer(); |
- GrAccelData::SaveLayerInfo& dst = fAccelData->addSaveLayerInfo(); |
+ SkLayerInfo::BlockInfo& dst = fAccelData->addBlock(); |
// If src.fPicture is NULL the layer is in dp.picture; otherwise |
// it belongs to a sub-picture. |
@@ -706,30 +702,29 @@ private: |
--fSaveLayersInStack; |
- GrAccelData::SaveLayerInfo& slInfo = fAccelData->addSaveLayerInfo(); |
+ SkLayerInfo::BlockInfo& block = fAccelData->addBlock(); |
- SkASSERT(NULL == slInfo.fPicture); // This layer is in the top-most picture |
+ SkASSERT(NULL == block.fPicture); // This layer is in the top-most picture |
- slInfo.fBounds = fFillBounds.getBounds(sli.fStartIndex); |
- slInfo.fLocalMat = fFillBounds.ctm(); |
- slInfo.fPreMat = SkMatrix::I(); |
+ block.fBounds = fFillBounds.getBounds(sli.fStartIndex); |
+ block.fLocalMat = fFillBounds.ctm(); |
+ block.fPreMat = SkMatrix::I(); |
if (sli.fPaint) { |
- slInfo.fPaint = SkNEW_ARGS(SkPaint, (*sli.fPaint)); |
+ block.fPaint = SkNEW_ARGS(SkPaint, (*sli.fPaint)); |
} |
- slInfo.fSaveLayerOpID = sli.fStartIndex; |
- slInfo.fRestoreOpID = fFillBounds.currentOp(); |
- slInfo.fHasNestedLayers = sli.fHasNestedSaveLayer; |
- slInfo.fIsNested = fSaveLayersInStack > 0; |
+ block.fSaveLayerOpID = sli.fStartIndex; |
+ block.fRestoreOpID = fFillBounds.currentOp(); |
+ block.fHasNestedLayers = sli.fHasNestedSaveLayer; |
+ block.fIsNested = fSaveLayersInStack > 0; |
} |
// Used to collect saveLayer information for layer hoisting |
int fSaveLayersInStack; |
SkTDArray<SaveLayerInfo> fSaveLayerStack; |
- GrAccelData* fAccelData; |
+ SkLayerInfo* fAccelData; |
SkRecords::FillBounds fFillBounds; |
}; |
-#endif |
} // namespace SkRecords |
@@ -744,9 +739,8 @@ void SkRecordFillBounds(const SkRect& cullRect, const SkRecord& record, SkBBoxHi |
visitor.cleanUp(bbh); |
} |
-#if SK_SUPPORT_GPU |
void SkRecordComputeLayers(const SkRect& cullRect, const SkRecord& record, |
- SkBBoxHierarchy* bbh, GrAccelData* data) { |
+ SkBBoxHierarchy* bbh, SkLayerInfo* data) { |
SkRecords::CollectLayers visitor(cullRect, record, data); |
for (unsigned curOp = 0; curOp < record.count(); curOp++) { |
@@ -756,5 +750,4 @@ void SkRecordComputeLayers(const SkRect& cullRect, const SkRecord& record, |
visitor.cleanUp(bbh); |
} |
-#endif |