1/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkImage_Base_DEFINED
9#define SkImage_Base_DEFINED
10
11#include "SkImage.h"
12
13class SkImage_Base : public SkImage {
14public:
15    SkImage_Base(int width, int height) : INHERITED(width, height) {}
16
17    virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const = 0;
18    virtual void onDrawRectToRect(SkCanvas*, const SkRect* src,
19                                  const SkRect& dst, const SkPaint*) const = 0;
20
21    // Default impl calls onDraw
22    virtual bool onReadPixels(SkBitmap*, const SkIRect& subset) const;
23
24    virtual const void* onPeekPixels(SkImageInfo*, size_t* /*rowBytes*/) const {
25        return NULL;
26    }
27
28    virtual GrTexture* onGetTexture() const { return NULL; }
29
30    // return a read-only copy of the pixels. We promise to not modify them,
31    // but only inspect them (or encode them).
32    virtual bool getROPixels(SkBitmap*) const { return false; }
33
34    virtual SkShader* onNewShader(SkShader::TileMode,
35                                  SkShader::TileMode,
36                                  const SkMatrix* localMatrix) const { return NULL; };
37private:
38    typedef SkImage INHERITED;
39};
40
41#endif
42