blob: e54f9dff89ebf6a518d669cddb070f9768a33483 [file] [log] [blame]
halcanary66a82f32015-10-12 13:05:04 -07001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "gm/gm.h"
9#include "include/core/SkTextBlob.h"
10#include "include/core/SkTypeface.h"
11#include "include/private/SkTo.h"
12#include "tools/Resources.h"
halcanary66a82f32015-10-12 13:05:04 -070013
14static void excercise_draw_pos_text(SkCanvas* canvas,
15 const char* text,
16 SkScalar x, SkScalar y,
Mike Reed088b74e2018-12-24 14:52:46 -050017 const SkFont& font,
halcanary66a82f32015-10-12 13:05:04 -070018 const SkPaint& paint) {
Mike Reed088b74e2018-12-24 14:52:46 -050019 const int count = font.countText(text, strlen(text), kUTF8_SkTextEncoding);
20 SkTextBlobBuilder builder;
21 auto rec = builder.allocRunPos(font, count);
22 font.textToGlyphs(text, strlen(text), kUTF8_SkTextEncoding, rec.glyphs, count);
Mike Reed22451cc2019-01-01 15:40:28 -050023 font.getPos(rec.glyphs, count, rec.points());
Mike Reed088b74e2018-12-24 14:52:46 -050024 canvas->drawTextBlob(builder.make(), x, y, paint);
halcanary66a82f32015-10-12 13:05:04 -070025}
26
Chris Dalton50e24d72019-02-07 16:20:09 -070027DEF_SIMPLE_GM_CAN_FAIL(pdf_never_embed, canvas, errorMsg, 512, 512) {
scroggo9a9a7b22016-05-12 06:22:30 -070028 SkPaint p;
bungeman6296da72016-05-11 12:38:18 -070029
Mike Reed088b74e2018-12-24 14:52:46 -050030 SkFont font(MakeResourceAsTypeface("fonts/Roboto2-Regular_NoEmbed.ttf"), 60);
Herb Derby087fad72019-01-22 14:45:16 -050031 if (!font.getTypefaceOrDefault()) {
Chris Dalton50e24d72019-02-07 16:20:09 -070032 *errorMsg = "Could not load fonts/Roboto2-Regular_NoEmbed.ttf. "
33 "Did you forget to set the resourcePath?";
34 return skiagm::DrawResult::kFail;
bungeman13b9c952016-05-12 10:09:30 -070035 }
36
halcanary66a82f32015-10-12 13:05:04 -070037 const char text[] = "HELLO, WORLD!";
38
39 canvas->drawColor(SK_ColorWHITE);
Mike Reed088b74e2018-12-24 14:52:46 -050040 excercise_draw_pos_text(canvas, text, 30, 90, font, p);
halcanary66a82f32015-10-12 13:05:04 -070041
42 canvas->save();
43 canvas->rotate(45.0f);
44 p.setColor(0xF0800000);
Mike Reed088b74e2018-12-24 14:52:46 -050045 excercise_draw_pos_text(canvas, text, 30, 45, font, p);
halcanary66a82f32015-10-12 13:05:04 -070046 canvas->restore();
47
48 canvas->save();
49 canvas->scale(1, 4.0);
50 p.setColor(0xF0008000);
Mike Reed088b74e2018-12-24 14:52:46 -050051 excercise_draw_pos_text(canvas, text, 15, 70, font, p);
halcanary66a82f32015-10-12 13:05:04 -070052 canvas->restore();
53
54 canvas->scale(1.0, 0.5);
55 p.setColor(0xF0000080);
Mike Reed088b74e2018-12-24 14:52:46 -050056 canvas->drawSimpleText(text, strlen(text), kUTF8_SkTextEncoding, 30, 700, font, p);
Chris Dalton50e24d72019-02-07 16:20:09 -070057 return skiagm::DrawResult::kOk;
halcanary66a82f32015-10-12 13:05:04 -070058}
Hal Canary4e83ff12018-03-09 12:16:42 -050059
60
61// should draw completely white.
62DEF_SIMPLE_GM(pdf_crbug_772685, canvas, 612, 792) {
63 canvas->clipRect({-1, -1, 613, 793}, false);
64 canvas->translate(-571, 0);
65 canvas->scale(0.75, 0.75);
66 canvas->clipRect({-1, -1, 613, 793}, false);
67 canvas->translate(0, -816);
68 canvas->drawRect({0, 0, 1224, 1500}, SkPaint());
69}