Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Unified Diff: experimental/SkiaExamples/HelloSkiaExample.cpp

Issue 16337012: Smallest possible desktop application that uses Skia to render stuff. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fix OSX build. Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « experimental/SkiaExamples/BaseExample.cpp ('k') | experimental/SkiaExamples/SkExampleNSView.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/SkiaExamples/HelloSkiaExample.cpp
diff --git a/experimental/SkiaExamples/HelloSkiaExample.cpp b/experimental/SkiaExamples/HelloSkiaExample.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8fb9ace26f6727a031beb2836229dac6c1c024b3
--- /dev/null
+++ b/experimental/SkiaExamples/HelloSkiaExample.cpp
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ */
+
+#include "BaseExample.h"
+
+#include "SkApplication.h"
+#include "SkDraw.h"
+#include "SkGradientShader.h"
+#include "SkGraphics.h"
+#include "SkUnitMappers.h"
+
+class HelloSkia : public BaseExample {
+ public:
+ HelloSkia(void* hWnd, int argc, char** argv)
+ : INHERITED(hWnd, argc, argv)
+ {
+ fBGColor = SK_ColorWHITE;
+ fRotationAngle = SkIntToScalar(0);
+
+ setupBackend(kGPU_DeviceType);
+ // Another option is software rendering:
+ // setupBackend(kRaster_DeviceType);
+ }
+
+ protected:
+ virtual void draw(SkCanvas* canvas) SK_OVERRIDE {
+ // Clear background
+ canvas->drawColor(fBGColor);
+
+ SkPaint paint;
+ paint.setColor(SK_ColorRED);
+
+ // Draw a rectangle with blue paint
+ SkRect rect = {
+ SkIntToScalar(10), SkIntToScalar(10),
+ SkIntToScalar(128), SkIntToScalar(128)
+ };
+ canvas->drawRect(rect, paint);
+
+ // Set up a linear gradient and draw a circle
+ {
+ SkPoint linearPoints[] = {
+ {SkIntToScalar(0), SkIntToScalar(0)},
+ {SkIntToScalar(300), SkIntToScalar(300)}
+ };
+ SkColor linearColors[] = {SK_ColorGREEN, SK_ColorBLACK};
+
+ SkUnitMapper* linearMapper = new SkDiscreteMapper(100);
+ SkAutoUnref lm_deleter(linearMapper);
+
+ SkShader* shader = SkGradientShader::CreateLinear(
+ linearPoints, linearColors, NULL, 2,
+ SkShader::kMirror_TileMode, linearMapper);
+ SkAutoUnref shader_deleter(shader);
+
+ paint.setShader(shader);
+ paint.setFlags(SkPaint::kAntiAlias_Flag);
+
+ canvas->drawCircle(SkIntToScalar(200), SkIntToScalar(200),
+ SkIntToScalar(64), paint);
+
+ // Detach shader
+ paint.setShader(NULL);
+ }
+
+
+ // Draw a message with a nice black paint.
+ paint.setFlags(
+ SkPaint::kAntiAlias_Flag |
+ SkPaint::kSubpixelText_Flag | // ... avoid waggly text when rotating.
+ SkPaint::kUnderlineText_Flag);
+ paint.setColor(SK_ColorBLACK);
+ paint.setTextSize(SkIntToScalar(20));
+
+ canvas->save();
+
+ static const char message[] = "Hello Skia!!!";
+
+ // Translate and rotate
+ canvas->translate(SkIntToScalar(300), SkIntToScalar(300));
+ fRotationAngle += SkDoubleToScalar(0.2);
+ if (fRotationAngle > SkDoubleToScalar(360.0)) {
+ fRotationAngle -= SkDoubleToScalar(360.0);
+ }
+ canvas->rotate(fRotationAngle);
+
+ // Draw the text:
+ canvas->drawText(message, strlen(message), SkIntToScalar(0), SkIntToScalar(0), paint);
+
+ canvas->restore();
+
+ // Invalidate the window to force a redraw. Poor man's animation mechanism.
+ this->inval(NULL);
+
+ INHERITED::draw(canvas);
+ }
+
+ private:
+ SkScalar fRotationAngle;
+ SkColor fBGColor;
+ typedef BaseExample INHERITED;
+};
+
+SkOSWindow* create_sk_window(void* hwnd, int argc, char** argv) {
+ return new HelloSkia(hwnd, argc, argv);
+}
+
« no previous file with comments | « experimental/SkiaExamples/BaseExample.cpp ('k') | experimental/SkiaExamples/SkExampleNSView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698