Expose API for whether an SkPicture contains text
BUG=chromium:399728 R=reed@google.com, nduca@chromium.org Author: ajuma@chromium.org Review URL: https://codereview.chromium.org/478673002
This commit is contained in:
parent
637e57e3be
commit
750ae26745
@ -204,6 +204,10 @@ public:
|
||||
*/
|
||||
int approximateOpCount() const;
|
||||
|
||||
/** Return true if this picture contains text.
|
||||
*/
|
||||
bool hasText() const;
|
||||
|
||||
private:
|
||||
// V2 : adds SkPixelRef's generation ID.
|
||||
// V3 : PictInfo tag at beginning, and EOF tag at the end
|
||||
|
@ -393,6 +393,11 @@ bool SkPicture::suitableForGpuRasterization(GrContext* context, const char **rea
|
||||
}
|
||||
#endif
|
||||
|
||||
// fRecord TODO
|
||||
bool SkPicture::hasText() const {
|
||||
return fData.get() && fData->hasText();
|
||||
}
|
||||
|
||||
// fRecord OK
|
||||
bool SkPicture::willPlayBackBitmaps() const {
|
||||
if (fRecord.get()) {
|
||||
|
@ -89,6 +89,8 @@ public:
|
||||
|
||||
bool containsBitmaps() const;
|
||||
|
||||
bool hasText() const { return fContentInfo.hasText(); }
|
||||
|
||||
int opCount() const { return fContentInfo.numOperations(); }
|
||||
|
||||
const SkData* opData() const { return fOpData; }
|
||||
|
@ -919,6 +919,63 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
||||
|
||||
#endif
|
||||
|
||||
static void test_has_text(skiatest::Reporter* reporter) {
|
||||
SkPictureRecorder recorder;
|
||||
SkPaint paint;
|
||||
paint.setColor(SK_ColorBLUE);
|
||||
SkPoint point = SkPoint::Make(10, 10);
|
||||
|
||||
SkCanvas* canvas = recorder.beginRecording(100, 100);
|
||||
{
|
||||
canvas->drawRect(SkRect::MakeWH(20, 20), paint);
|
||||
}
|
||||
SkAutoTUnref<SkPicture> picture(recorder.endRecording());
|
||||
REPORTER_ASSERT(reporter, !picture->hasText());
|
||||
|
||||
canvas = recorder.beginRecording(100, 100);
|
||||
{
|
||||
canvas->drawText("Q", 1, point.fX, point.fY, paint);
|
||||
}
|
||||
picture.reset(recorder.endRecording());
|
||||
REPORTER_ASSERT(reporter, picture->hasText());
|
||||
|
||||
canvas = recorder.beginRecording(100, 100);
|
||||
{
|
||||
canvas->drawPosText("Q", 1, &point, paint);
|
||||
}
|
||||
picture.reset(recorder.endRecording());
|
||||
REPORTER_ASSERT(reporter, picture->hasText());
|
||||
|
||||
canvas = recorder.beginRecording(100, 100);
|
||||
{
|
||||
canvas->drawPosTextH("Q", 1, &point.fX, point.fY, paint);
|
||||
}
|
||||
picture.reset(recorder.endRecording());
|
||||
REPORTER_ASSERT(reporter, picture->hasText());
|
||||
|
||||
canvas = recorder.beginRecording(100, 100);
|
||||
{
|
||||
SkPath path;
|
||||
path.moveTo(0, 0);
|
||||
path.lineTo(50, 50);
|
||||
|
||||
canvas->drawTextOnPathHV("Q", 1, path, point.fX, point.fY, paint);
|
||||
}
|
||||
picture.reset(recorder.endRecording());
|
||||
REPORTER_ASSERT(reporter, picture->hasText());
|
||||
|
||||
canvas = recorder.beginRecording(100, 100);
|
||||
{
|
||||
SkPath path;
|
||||
path.moveTo(0, 0);
|
||||
path.lineTo(50, 50);
|
||||
|
||||
canvas->drawTextOnPath("Q", 1, path, NULL, paint);
|
||||
}
|
||||
picture.reset(recorder.endRecording());
|
||||
REPORTER_ASSERT(reporter, picture->hasText());
|
||||
}
|
||||
|
||||
static void set_canvas_to_save_count_4(SkCanvas* canvas) {
|
||||
canvas->restoreToCount(1);
|
||||
canvas->save();
|
||||
@ -1561,6 +1618,7 @@ DEF_TEST(Picture, reporter) {
|
||||
#if SK_SUPPORT_GPU
|
||||
test_gpu_veto(reporter);
|
||||
#endif
|
||||
test_has_text(reporter);
|
||||
test_gatherpixelrefs(reporter);
|
||||
test_gatherpixelrefsandrects(reporter);
|
||||
test_bitmap_with_encoded_data(reporter);
|
||||
|
Loading…
Reference in New Issue
Block a user