| 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); | 
| +} | 
| + | 
|  |