#include "SampleCode.h" #include "SkView.h" #include "SkCanvas.h" #include "SkTypeface.h" #include "SkPath.h" #include "SkRegion.h" #include "SkShader.h" #include "SkUtils.h" #include "Sk1DPathEffect.h" #include "SkCornerPathEffect.h" #include "SkPathMeasure.h" #include "SkRandom.h" #include "SkColorPriv.h" #include "SkColorFilter.h" #include "SkDither.h" static const struct { const char* fName; SkTypeface::Style fStyle; } gFaces[] = { { NULL, SkTypeface::kNormal }, { NULL, SkTypeface::kBold }, { "serif", SkTypeface::kNormal }, { "serif", SkTypeface::kBold }, { "serif", SkTypeface::kItalic }, { "serif", SkTypeface::kBoldItalic }, { "monospace", SkTypeface::kNormal } }; static const int gFaceCount = SK_ARRAY_COUNT(gFaces); class TypefaceView : public SkView { SkTypeface* fFaces[gFaceCount]; public: TypefaceView() { for (int i = 0; i < gFaceCount; i++) { fFaces[i] = SkTypeface::Create(gFaces[i].fName, gFaces[i].fStyle); } } virtual ~TypefaceView() { for (int i = 0; i < gFaceCount; i++) { fFaces[i]->safeUnref(); } } protected: // overrides from SkEventSink virtual bool onQuery(SkEvent* evt) { if (SampleCode::TitleQ(*evt)) { SampleCode::TitleR(evt, "Typefaces"); return true; } return this->INHERITED::onQuery(evt); } void drawBG(SkCanvas* canvas) { canvas->drawColor(0xFFDDDDDD); } virtual void onDraw(SkCanvas* canvas) { this->drawBG(canvas); SkPaint paint; paint.setAntiAlias(true); paint.setTextSize(SkIntToScalar(30)); const char* text = "Hamburgefons"; const size_t textLen = strlen(text); SkScalar x = SkIntToScalar(10); SkScalar dy = paint.getFontMetrics(NULL); SkScalar y = dy; for (int i = 0; i < gFaceCount; i++) { paint.setTypeface(fFaces[i]); canvas->drawText(text, textLen, x, y, paint); y += dy; } } private: typedef SkView INHERITED; }; ////////////////////////////////////////////////////////////////////////////// static SkView* MyFactory() { return new TypefaceView; } static SkViewRegister reg(MyFactory);