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