| /* | 
 |  * Copyright 2012 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #include "SkBBoxHierarchy.h" | 
 | #include "SkCanvas.h" | 
 | #include "SkData.h" | 
 | #include "SkPictureUtils.h" | 
 | #include "SkRecord.h" | 
 | #include "SkShader.h" | 
 |  | 
 | struct MeasureRecords { | 
 |     template <typename T> size_t operator()(const T& op) { return 0; } | 
 |     size_t operator()(const SkRecords::DrawPicture& op) { | 
 |         return SkPictureUtils::ApproximateBytesUsed(op.picture); | 
 |     } | 
 | }; | 
 |  | 
 | size_t SkPictureUtils::ApproximateBytesUsed(const SkPicture* pict) { | 
 |     size_t byteCount = sizeof(*pict); | 
 |  | 
 |     byteCount += pict->fRecord->bytesUsed(); | 
 |     if (pict->fBBH.get()) { | 
 |         byteCount += pict->fBBH->bytesUsed(); | 
 |     } | 
 |     MeasureRecords visitor; | 
 |     for (unsigned curOp = 0; curOp < pict->fRecord->count(); curOp++) { | 
 |         byteCount += pict->fRecord->visit<size_t>(curOp, visitor); | 
 |     } | 
 |  | 
 |     return byteCount; | 
 | } |