180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2011 Google Inc.
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "gm.h"
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBlurImageFilter.h"
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define WIDTH 500
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define HEIGHT 500
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querunamespace skiagm {
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass ImageBlurGM : public GM {
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic:
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ImageBlurGM() {
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        this->setBGColor(0xFF000000);
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    }
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual SkString onShortName() {
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        return SkString("imageblur");
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    }
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual SkISize onISize() {
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        return make_isize(WIDTH, HEIGHT);
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    }
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void onDraw(SkCanvas* canvas) {
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        SkPaint paint;
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        paint.setImageFilter(new SkBlurImageFilter(24.0f, 0.0f))->unref();
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        canvas->saveLayer(NULL, &paint);
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        const char* str = "The quick brown fox jumped over the lazy dog.";
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        srand(1234);
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        SkPaint textPaint;
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        textPaint.setAntiAlias(true);
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        for (int i = 0; i < 25; ++i) {
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru            int x = rand() % WIDTH;
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru            int y = rand() % HEIGHT;
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru            textPaint.setColor(rand() % 0x1000000 | 0xFF000000);
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru            textPaint.setTextSize(SkIntToScalar(rand() % 300));
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru            canvas->drawText(str, strlen(str), SkIntToScalar(x),
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru                             SkIntToScalar(y), textPaint);
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        }
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        canvas->restore();
4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    }
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate:
5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    typedef GM INHERITED;
5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru//////////////////////////////////////////////////////////////////////////////
5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustatic GM* MyFactory(void*) { return new ImageBlurGM; }
5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustatic GMRegistry reg(MyFactory);
5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
60