148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com/* 248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * Copyright 2011 Google Inc. 348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * 448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * Use of this source code is governed by a BSD-style license that can be 548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * found in the LICENSE file. 648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com */ 748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com#include "gm.h" 9880914c35c8f7fc2e9c57134134c883baf66e538tfarina 1048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comusing namespace skiagm; 1148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 1248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comGM::GM() { 13b21fac156d9287d6c0cfd446d707c4c7be6fae6ecommit-bot@chromium.org fMode = kGM_Mode; 1448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com fBGColor = SK_ColorWHITE; 15aef73617d1bcede80145a13639668f958a3863d8reed@google.com fCanvasIsDeferred = false; 167775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com fHaveCalledOnceBeforeDraw = false; 17f4f9df4c193620167dc6f202f1b72245f4a260cdcommit-bot@chromium.org fStarterMatrix.reset(); 1848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 19880914c35c8f7fc2e9c57134134c883baf66e538tfarina 2048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comGM::~GM() {} 2148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 2248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comvoid GM::draw(SkCanvas* canvas) { 2348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->drawBackground(canvas); 2448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->drawContent(canvas); 2548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 2648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 2748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comvoid GM::drawContent(SkCanvas* canvas) { 287775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com if (!fHaveCalledOnceBeforeDraw) { 297775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com fHaveCalledOnceBeforeDraw = true; 307775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com this->onOnceBeforeDraw(); 317775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com } 3248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->onDraw(canvas); 3348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 3448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 3548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comvoid GM::drawBackground(SkCanvas* canvas) { 367775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com if (!fHaveCalledOnceBeforeDraw) { 377775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com fHaveCalledOnceBeforeDraw = true; 387775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com this->onOnceBeforeDraw(); 397775d66aa0e5958c9ea55ddb8317af4d9b019220reed@google.com } 4048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->onDrawBackground(canvas); 4148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 4248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 4338aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.orgconst char* GM::getName() { 4448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com if (fShortName.size() == 0) { 4548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com fShortName = this->onShortName(); 4648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 4748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com return fShortName.c_str(); 4848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 4948dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 5048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comvoid GM::setBGColor(SkColor color) { 5148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com fBGColor = color; 5248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 5348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 5448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comvoid GM::onDrawBackground(SkCanvas* canvas) { 55ea5d8af9fb20096f350d2f313935ba37a592c160robertphillips@google.com canvas->drawColor(fBGColor, SkXfermode::kSrc_Mode); 5648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com} 5748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 582d6ef528e57928160aba6b628b2d84180ced97c3reed@google.comvoid GM::drawSizeBounds(SkCanvas* canvas, SkColor color) { 592d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com SkISize size = this->getISize(); 602d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()), 612d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com SkIntToScalar(size.height())); 622d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com SkPaint paint; 632d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com paint.setColor(color); 642d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com canvas->drawRect(r, paint); 652d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com} 662d6ef528e57928160aba6b628b2d84180ced97c3reed@google.com 6748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com// need to explicitly declare this, or we get some weird infinite loop llist 68bcbc1788b478b1e54079318ad073e8490aa66faetfarinatemplate GMRegistry* GMRegistry::gHead; 69