diff options
author | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-04-12 14:27:37 +0000 |
---|---|---|
committer | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-04-12 14:27:37 +0000 |
commit | 6413e79414b4a8e4111cfd4c35959d10d9312440 (patch) | |
tree | 783281f11d902dd71adf1e04bde07f63c5aa886a /tools/skhello.cpp | |
parent | a956e4fe2e7a6701f778c632ff11e8a0ed01168f (diff) |
add skhello for simple hello-world sample code
git-svn-id: http://skia.googlecode.com/svn/trunk@539 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools/skhello.cpp')
-rw-r--r-- | tools/skhello.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
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; +} + |