/* * Copyright 2014 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkPictureContentInfo_DEFINED #define SkPictureContentInfo_DEFINED class GrContext; class SkPictureContentInfo { public: SkPictureContentInfo() { this->reset(); } SkPictureContentInfo(const SkPictureContentInfo& src) { this->set(src); } int numOperations() const { return fNumOperations; } bool hasText() const { return fNumTexts > 0; } bool suitableForGpuRasterization(GrContext* context, const char **reason, int sampleCount) const; void addOperation() { ++fNumOperations; } void onDrawPoints(size_t count, const SkPaint& paint); void onDrawPath(const SkPath& path, const SkPaint& paint); void onAddPaintPtr(const SkPaint* paint); void onDrawText() { ++fNumTexts; } void set(const SkPictureContentInfo& src); void reset(); void swap(SkPictureContentInfo* other); private: // Raw count of operations in the picture int fNumOperations; // Count of all forms of drawText int fNumTexts; // This field is incremented every time a paint with a path effect is // used (i.e., it is not a de-duplicated count) int fNumPaintWithPathEffectUses; // This field is incremented every time a paint with a path effect that is // dashed, we are drawing a line, and we can use the gpu fast path int fNumFastPathDashEffects; // This field is incremented every time an anti-aliased drawPath call is // issued with a concave path int fNumAAConcavePaths; // This field is incremented every time a drawPath call is // issued for a hairline stroked concave path. int fNumAAHairlineConcavePaths; }; #endif