166a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary/*
266a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary * Copyright 2015 Google Inc.
366a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary *
466a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary * Use of this source code is governed by a BSD-style license that can be
566a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary * found in the LICENSE file.
666a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary */
766a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
866a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary#include "Resources.h"
966a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary#include "SkTypeface.h"
1066a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary#include "gm.h"
1166a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
1266a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanarystatic void excercise_draw_pos_text(SkCanvas* canvas,
1366a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary                                    const char* text,
1466a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary                                    SkScalar x, SkScalar y,
1566a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary                                    const SkPaint& paint) {
1666a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    size_t textLen = strlen(text);
1766a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    SkAutoTArray<SkScalar> widths(SkToInt(textLen));
1866a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    paint.getTextWidths(text, textLen, &widths[0]);
1966a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    SkAutoTArray<SkPoint> pos(SkToInt(textLen));
2066a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    for (int i = 0; i < SkToInt(textLen); ++i) {
2166a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary        pos[i].set(x, y);
2266a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary        x += widths[i];
2366a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    }
2466a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->drawPosText(text, textLen, &pos[0], paint);
2566a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary}
2666a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
2766a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanaryDEF_SIMPLE_GM(pdf_never_embed, canvas, 512, 512) {
2866a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    SkPaint p;
2966a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    p.setTextSize(60);
3013b9c95295f4c5732e34574789e721a6bc08f7b4bungeman    p.setTypeface(MakeResourceAsTypeface("fonts/Roboto2-Regular_NoEmbed.ttf"));
3166a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    p.setAntiAlias(true);
3266a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
3313b9c95295f4c5732e34574789e721a6bc08f7b4bungeman    if (!p.getTypeface()) {
3413b9c95295f4c5732e34574789e721a6bc08f7b4bungeman        return;
3513b9c95295f4c5732e34574789e721a6bc08f7b4bungeman    }
3613b9c95295f4c5732e34574789e721a6bc08f7b4bungeman
3766a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    const char text[] = "HELLO, WORLD!";
3866a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
3966a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->drawColor(SK_ColorWHITE);
4066a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    excercise_draw_pos_text(canvas, text, 30, 90, p);
4166a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
4266a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->save();
4366a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->rotate(45.0f);
4466a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    p.setColor(0xF0800000);
4566a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    excercise_draw_pos_text(canvas, text, 30, 45, p);
4666a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->restore();
4766a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
4866a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->save();
4966a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->scale(1, 4.0);
5066a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    p.setColor(0xF0008000);
5166a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    excercise_draw_pos_text(canvas, text, 15, 70, p);
5266a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->restore();
5366a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary
5466a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    canvas->scale(1.0, 0.5);
5566a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary    p.setColor(0xF0000080);
562a475eae622adc1e8fa29206be1eaf862c23548eCary Clark    canvas->drawString(text, 30, 700, p);
5766a82f3872abf4ebb98b3915b2a9ecc73ad352c5halcanary}
58