From 74015ed78edbc1db8c85af2f943063bf4def72e9 Mon Sep 17 00:00:00 2001 From: halcanary Date: Thu, 4 Jun 2015 07:26:54 -0700 Subject: Add GM that tests clipping annotations TBR=reed@google.com BUG=skia:3880 Review URL: https://codereview.chromium.org/1159273003 --- gm/annotated_text.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 gm/annotated_text.cpp (limited to 'gm/annotated_text.cpp') diff --git a/gm/annotated_text.cpp b/gm/annotated_text.cpp new file mode 100644 index 0000000000..ab7e816126 --- /dev/null +++ b/gm/annotated_text.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkAnnotation.h" +#include "SkData.h" +#include "gm.h" + +static void draw_url_annotated_text_with_box( + SkCanvas* canvas, const void* text, + SkScalar x, SkScalar y, const SkPaint& paint, const char* url) { + size_t byteLength = strlen(static_cast(text)); + SkRect bounds; + (void)paint.measureText(text, byteLength, &bounds); + bounds.offset(x, y); + SkAutoTUnref urlData(SkData::NewWithCString(url)); + SkAnnotateRectWithURL(canvas, bounds, urlData); + SkPaint shade; + shade.setColor(0x80346180); + canvas->drawRect(bounds, shade); + canvas->drawText(text, byteLength, x, y, paint); +} + +DEF_SIMPLE_GM(annotated_text, canvas, 512, 512) { + SkAutoCanvasRestore autoCanvasRestore(canvas, true); + canvas->clear(SK_ColorWHITE); + canvas->clipRect(SkRect::MakeXYWH(64, 64, 384, 384)); + canvas->clear(0xFFEEEEEE); + SkPaint p; + p.setTextSize(40); + const char text[] = "Click this link!"; + const char url[] = "https://www.google.com/"; + draw_url_annotated_text_with_box(canvas, text, 200.0f, 80.0f, p, url); + SkAutoCanvasRestore autoCanvasRestore2(canvas, true); + canvas->rotate(90); + draw_url_annotated_text_with_box(canvas, text, 150.0f, -55.0f, p, url); +} -- cgit v1.2.3