1 /* 2 * Copyright 2013 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 SkMipMap_DEFINED 9 #define SkMipMap_DEFINED 10 11 #include "SkRefCnt.h" 12 #include "SkScalar.h" 13 14 class SkBitmap; 15 16 class SkMipMap : public SkRefCnt { 17 public: 18 static SkMipMap* Build(const SkBitmap& src); 19 20 struct Level { 21 void* fPixels; 22 uint32_t fRowBytes; 23 uint32_t fWidth, fHeight; 24 float fScale; // < 1.0 25 }; 26 27 bool extractLevel(SkScalar scale, Level*) const; 28 29 size_t getSize() const { return fSize; } 30 31 private: 32 size_t fSize; 33 Level* fLevels; 34 int fCount; 35 36 // we take ownership of levels, and will free it with sk_free() 37 SkMipMap(Level* levels, int count, size_t size); 38 virtual ~SkMipMap(); 39 40 static Level* AllocLevels(int levelCount, size_t pixelSize); 41 }; 42 43 #endif 44