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