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