| Index: skia/ext/analysis_canvas.cc
|
| diff --git a/skia/ext/analysis_canvas.cc b/skia/ext/analysis_canvas.cc
|
| index 93580b013288acecc3548baf0af3087261fb681c..0af76f276cb4be0b472b273117e28c8e960aa10a 100644
|
| --- a/skia/ext/analysis_canvas.cc
|
| +++ b/skia/ext/analysis_canvas.cc
|
| @@ -96,8 +96,8 @@ AnalysisDevice::AnalysisDevice(const SkBitmap& bm)
|
| , isForcedNotSolid_(false)
|
| , isForcedNotTransparent_(false)
|
| , isSolidColor_(false)
|
| - , isTransparent_(false) {
|
| -
|
| + , isTransparent_(false)
|
| + , hasText_(false) {
|
| }
|
|
|
| AnalysisDevice::~AnalysisDevice() {
|
| @@ -118,6 +118,10 @@ bool AnalysisDevice::isTransparent() const {
|
| return isTransparent_;
|
| }
|
|
|
| +bool AnalysisDevice::hasText() const {
|
| + return hasText_;
|
| +}
|
| +
|
| void AnalysisDevice::setForceNotSolid(bool flag) {
|
| isForcedNotSolid_ = flag;
|
| if (isForcedNotSolid_)
|
| @@ -181,6 +185,7 @@ void AnalysisDevice::clear(SkColor color) {
|
| estimatedCost_ += kUnknownExpensiveCost;
|
|
|
| isTransparent_ = (!isForcedNotTransparent_ && SkColorGetA(color) == 0);
|
| + hasText_ = false;
|
|
|
| if (!isForcedNotSolid_ && SkColorGetA(color) == 255) {
|
| isSolidColor_ = true;
|
| @@ -246,6 +251,7 @@ void AnalysisDevice::drawRect(const SkDraw& draw, const SkRect& rect,
|
| !isForcedNotTransparent_ &&
|
| xferMode == SkXfermode::kClear_Mode) {
|
| isTransparent_ = true;
|
| + hasText_ = false;
|
| }
|
| else if (paint.getAlpha() != 0 ||
|
| xferMode != SkXfermode::kSrc_Mode) {
|
| @@ -262,6 +268,7 @@ void AnalysisDevice::drawRect(const SkDraw& draw, const SkRect& rect,
|
| doesCoverCanvas) {
|
| isSolidColor_ = true;
|
| color_ = paint.getColor();
|
| + hasText_ = false;
|
| }
|
| else {
|
| isSolidColor_ = false;
|
| @@ -346,6 +353,7 @@ void AnalysisDevice::drawText(const SkDraw&, const void* text, size_t len,
|
| }
|
| isSolidColor_ = false;
|
| isTransparent_ = false;
|
| + hasText_ = true;
|
| }
|
|
|
| void AnalysisDevice::drawPosText(const SkDraw& draw, const void* text,
|
| @@ -361,6 +369,7 @@ void AnalysisDevice::drawPosText(const SkDraw& draw, const void* text,
|
| }
|
| isSolidColor_ = false;
|
| isTransparent_ = false;
|
| + hasText_ = true;
|
| }
|
|
|
| void AnalysisDevice::drawTextOnPath(const SkDraw&, const void* text,
|
| @@ -374,6 +383,7 @@ void AnalysisDevice::drawTextOnPath(const SkDraw&, const void* text,
|
| }
|
| isSolidColor_ = false;
|
| isTransparent_ = false;
|
| + hasText_ = true;
|
| }
|
|
|
| #ifdef SK_BUILD_FOR_ANDROID
|
| @@ -388,6 +398,7 @@ void AnalysisDevice::drawPosTextOnPath(const SkDraw& draw, const void* text,
|
| }
|
| isSolidColor_ = false;
|
| isTransparent_ = false;
|
| + hasText_ = true;
|
| }
|
| #endif
|
|
|
| @@ -441,6 +452,10 @@ bool AnalysisCanvas::isTransparent() const {
|
| return (static_cast<AnalysisDevice*>(getDevice()))->isTransparent();
|
| }
|
|
|
| +bool AnalysisCanvas::hasText() const {
|
| + return (static_cast<AnalysisDevice*>(getDevice()))->hasText();
|
| +}
|
| +
|
| int AnalysisCanvas::getEstimatedCost() const {
|
| return (static_cast<AnalysisDevice*>(getDevice()))->getEstimatedCost();
|
| }
|
|
|