From 6413e79414b4a8e4111cfd4c35959d10d9312440 Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Mon, 12 Apr 2010 14:27:37 +0000 Subject: add skhello for simple hello-world sample code git-svn-id: http://skia.googlecode.com/svn/trunk@539 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tools/skhello.cpp | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tools/skhello.cpp (limited to 'tools/skhello.cpp') diff --git a/tools/skhello.cpp b/tools/skhello.cpp new file mode 100644 index 0000000000..6f56d4c0e9 --- /dev/null +++ b/tools/skhello.cpp @@ -0,0 +1,65 @@ +#include "SkCanvas.h" +#include "SkGraphics.h" +//#include "SkImageDecoder.h" +#include "SkImageEncoder.h" +//#include "SkStream.h" +#include "SkString.h" +#include "SkTemplates.h" + +static void show_help() { + SkDebugf("usage: skhello [-o out-dir] [-t 'hello']\n default output: skhello.png\n"); +} + +int main (int argc, char * const argv[]) { + SkAutoGraphics ag; + SkString path("skhello.png"); + SkString text("Hello"); + + for (int i = 1; i < argc; i++) { + if (!strcmp(argv[i], "--help")) { + show_help(); + return 0; + } + if (!strcmp(argv[i], "-o")) { + if (i == argc-1) { + SkDebugf("ERROR: -o needs a following filename\n"); + return -1; + } + path.set(argv[i+1]); + i += 1; // skip the out dir name + } else if (!strcmp(argv[i], "-t")) { + if (i == argc-1) { + SkDebugf("ERROR: -t needs a following string\n"); + return -1; + } + text.set(argv[i+1]); + i += 1; // skip the text string + } + } + + SkPaint paint; + paint.setAntiAlias(true); + paint.setTextSize(SkIntToScalar(30)); + SkScalar width = paint.measureText(text.c_str(), text.size()); + SkScalar spacing = paint.getFontSpacing(); + + int w = SkScalarRound(width) + 30; + int h = SkScalarRound(spacing) + 30; + SkBitmap bitmap; + bitmap.setConfig(SkBitmap::kARGB_8888_Config, w, h); + bitmap.allocPixels(); + + SkCanvas canvas(bitmap); + canvas.drawColor(SK_ColorWHITE); + + paint.setTextAlign(SkPaint::kCenter_Align); + canvas.drawText(text.c_str(), text.size(), + SkIntToScalar(w)/2, SkIntToScalar(h)*2/3, + paint); + + SkImageEncoder::EncodeFile(path.c_str(), bitmap, + SkImageEncoder::kPNG_Type, 100); + + return 0; +} + -- cgit v1.2.3