12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * 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 "gm/gm.h"
- #include "include/core/SkAnnotation.h"
- #include "include/core/SkCanvas.h"
- #include "include/core/SkColor.h"
- #include "include/core/SkData.h"
- #include "include/core/SkFont.h"
- #include "include/core/SkFontTypes.h"
- #include "include/core/SkPaint.h"
- #include "include/core/SkRect.h"
- #include "include/core/SkRefCnt.h"
- #include "include/core/SkScalar.h"
- #include <string.h>
- static void draw_url_annotated_text_with_box(
- SkCanvas* canvas, const void* text,
- SkScalar x, SkScalar y, const SkFont& font, const char* url) {
- size_t byteLength = strlen(static_cast<const char*>(text));
- SkRect bounds;
- (void)font.measureText(text, byteLength, SkTextEncoding::kUTF8, &bounds);
- bounds.offset(x, y);
- sk_sp<SkData> urlData(SkData::MakeWithCString(url));
- SkAnnotateRectWithURL(canvas, bounds, urlData.get());
- SkPaint shade;
- shade.setColor(0x80346180);
- canvas->drawRect(bounds, shade);
- canvas->drawSimpleText(text, byteLength, SkTextEncoding::kUTF8, x, y, font, SkPaint());
- }
- DEF_SIMPLE_GM(annotated_text, canvas, 512, 512) {
- SkAutoCanvasRestore autoCanvasRestore(canvas, true);
- canvas->clear(SK_ColorWHITE);
- canvas->clipRect(SkRect::MakeXYWH(64, 64, 256, 256));
- canvas->clear(0xFFEEEEEE);
- SkFont font;
- font.setEdging(SkFont::Edging::kAlias);
- font.setSize(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, font, url);
- canvas->saveLayer(nullptr, nullptr);
- canvas->rotate(90);
- draw_url_annotated_text_with_box(canvas, text, 150.0f, -55.0f, font, url);
- canvas->restore();
- }
|