| Index: tools/skhello.cpp
|
| diff --git a/tools/skhello.cpp b/tools/skhello.cpp
|
| index 668c3a993d901cf1899cb0adfabc1d8e8dd21c8f..036b08a00ef9702cb33d676255f8b1d5b6408b7f 100644
|
| --- a/tools/skhello.cpp
|
| +++ b/tools/skhello.cpp
|
| @@ -8,22 +8,62 @@
|
| #include "SkCanvas.h"
|
| #include "SkCommandLineFlags.h"
|
| #include "SkData.h"
|
| +#include "SkDocument.h"
|
| #include "SkGraphics.h"
|
| #include "SkSurface.h"
|
| #include "SkImage.h"
|
| #include "SkStream.h"
|
| #include "SkString.h"
|
|
|
| -DEFINE_string2(outFile, o, "skhello.png", "The filename to write the image.");
|
| +DEFINE_string2(outFile, o, "skhello", "The filename to write the image.");
|
| DEFINE_string2(text, t, "Hello", "The string to write.");
|
|
|
| +static void doDraw(SkCanvas* canvas, const SkPaint& paint, const char text[]) {
|
| + SkRect bounds;
|
| + canvas->getClipBounds(&bounds);
|
| +
|
| + canvas->drawColor(SK_ColorWHITE);
|
| + canvas->drawText(text, strlen(text),
|
| + bounds.centerX(), bounds.centerY(),
|
| + paint);
|
| +}
|
| +
|
| +static bool do_surface(int w, int h, const char path[], const char text[],
|
| + const SkPaint& paint) {
|
| + SkImage::Info info = {
|
| + w, h, SkImage::kPMColor_ColorType, SkImage::kPremul_AlphaType
|
| + };
|
| + SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info));
|
| + doDraw(surface->getCanvas(), paint, text);
|
| +
|
| + SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
|
| + SkAutoDataUnref data(image->encode());
|
| + if (NULL == data.get()) {
|
| + return false;
|
| + }
|
| + SkFILEWStream stream(path);
|
| + return stream.write(data->data(), data->size());
|
| +}
|
| +
|
| +static bool do_document(int w, int h, const char path[], const char text[],
|
| + const SkPaint& paint) {
|
| + SkAutoTUnref<SkDocument> doc(SkDocument::CreatePDF(path));
|
| + if (doc.get()) {
|
| + SkScalar width = SkIntToScalar(w);
|
| + SkScalar height = SkIntToScalar(h);
|
| + doDraw(doc->beginPage(width, height, NULL), paint, text);
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| int tool_main(int argc, char** argv);
|
| int tool_main(int argc, char** argv) {
|
| SkCommandLineFlags::SetUsage("");
|
| SkCommandLineFlags::Parse(argc, argv);
|
|
|
| SkAutoGraphics ag;
|
| - SkString path("skhello.png");
|
| + SkString path("skhello");
|
| SkString text("Hello");
|
|
|
| if (!FLAGS_outFile.isEmpty()) {
|
| @@ -44,24 +84,23 @@ int tool_main(int argc, char** argv) {
|
| int w = SkScalarRound(width) + 30;
|
| int h = SkScalarRound(spacing) + 30;
|
|
|
| - SkImage::Info info = {
|
| - w, h, SkImage::kPMColor_ColorType, SkImage::kPremul_AlphaType
|
| + static const struct {
|
| + bool (*fProc)(int w, int h, const char path[], const char text[],
|
| + const SkPaint&);
|
| + const char* fSuffix;
|
| + } gRec[] = {
|
| + { do_surface, ".png" },
|
| + { do_document, ".pdf" },
|
| };
|
| - SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info));
|
| - SkCanvas* canvas = surface->getCanvas();
|
| -
|
| - canvas->drawColor(SK_ColorWHITE);
|
| - canvas->drawText(text.c_str(), text.size(),
|
| - SkIntToScalar(w)/2, SkIntToScalar(h)*2/3,
|
| - paint);
|
| -
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
|
| - SkAutoDataUnref data(image->encode());
|
| - if (NULL == data.get()) {
|
| - return -1;
|
| +
|
| + for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) {
|
| + SkString file;
|
| + file.printf("%s%s", path.c_str(), gRec[i].fSuffix);
|
| + if (!gRec[i].fProc(w, h, file.c_str(), text.c_str(), paint)) {
|
| + return -1;
|
| + }
|
| }
|
| - SkFILEWStream stream(path.c_str());
|
| - return stream.write(data->data(), data->size());
|
| + return 0;
|
| }
|
|
|
| #if !defined SK_BUILD_FOR_IOS
|
|
|