gm.h revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 800dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com#ifndef skiagm_DEFINED 900dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com#define skiagm_DEFINED 1000dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 11d4af56c5f24a7bf0200e20a591d55f8c82fb9627epoger@google.com#include "SkBitmap.h" 12dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com#include "SkCanvas.h" 13d4af56c5f24a7bf0200e20a591d55f8c82fb9627epoger@google.com#include "SkDevice.h" 14dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com#include "SkPaint.h" 1500dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com#include "SkRefCnt.h" 16dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com#include "SkSize.h" 1700dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com#include "SkString.h" 1800dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com#include "SkTRegistry.h" 1900dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 2000dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.comnamespace skiagm { 21dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com 228015dd83ae37147bb630d4751030868051ad0caereed@android.com static inline SkISize make_isize(int w, int h) { 23dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com SkISize sz; 24dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com sz.set(w, h); 25dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com return sz; 26dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com } 2700dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 2800dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com class GM { 2900dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com public: 3000dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com GM(); 3100dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com virtual ~GM(); 3200dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 3300dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com void draw(SkCanvas*); 34dd0ac281e920b01a63789893cc3e7422789658ddreed@android.com SkISize getISize() { return this->onISize(); } 358015dd83ae37147bb630d4751030868051ad0caereed@android.com const char* shortName() { 368015dd83ae37147bb630d4751030868051ad0caereed@android.com if (fShortName.size() == 0) { 378015dd83ae37147bb630d4751030868051ad0caereed@android.com fShortName = this->onShortName(); 388015dd83ae37147bb630d4751030868051ad0caereed@android.com } 398015dd83ae37147bb630d4751030868051ad0caereed@android.com return fShortName.c_str(); 408015dd83ae37147bb630d4751030868051ad0caereed@android.com } 4100dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 4200dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com protected: 438015dd83ae37147bb630d4751030868051ad0caereed@android.com virtual void onDraw(SkCanvas*) = 0; 448015dd83ae37147bb630d4751030868051ad0caereed@android.com virtual SkISize onISize() = 0; 458015dd83ae37147bb630d4751030868051ad0caereed@android.com virtual SkString onShortName() = 0; 468015dd83ae37147bb630d4751030868051ad0caereed@android.com 478015dd83ae37147bb630d4751030868051ad0caereed@android.com private: 488015dd83ae37147bb630d4751030868051ad0caereed@android.com SkString fShortName; 4900dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com }; 5000dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 5100dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com typedef SkTRegistry<GM*, void*> GMRegistry; 5200dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com} 5300dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com 5400dae86f5872b60927b28a32b375bc01cd7c61c9reed@android.com#endif 55