blob: 77b18bbe8986f9942f2a86679156e33287f8b1ef [file] [log] [blame]
reed@google.comeed6f1b2013-07-18 19:53:31 +00001#ifndef SkMipMap_DEFINED
2#define SkMipMap_DEFINED
3
4#include "SkRefCnt.h"
5#include "SkScalar.h"
6
7class SkBitmap;
8
9class SkMipMap : public SkRefCnt {
10public:
11 static SkMipMap* Build(const SkBitmap& src);
12
13 struct Level {
14 void* fPixels;
15 uint32_t fRowBytes;
16 uint32_t fWidth, fHeight;
17 };
18
19 bool extractLevel(SkScalar scale, Level*) const;
20
21private:
22 Level* fLevels;
23 int fCount;
24
25 // we take ownership of levels, and will free it with sk_free()
26 SkMipMap(Level* levels, int count) : fLevels(levels), fCount(count) {
27 SkASSERT(levels);
28 SkASSERT(count > 0);
29 }
30
31 virtual ~SkMipMap() {
32 sk_free(fLevels);
33 }
34
35 static Level* AllocLevels(int levelCount, size_t pixelSize);
36};
37
38#endif