blob: cfeedcf48312317ca0c4684b7cb536c5c78aa297 [file] [log] [blame]
/*
* 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