| /* |
| * Copyright 2013 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkMipMap_DEFINED |
| #define SkMipMap_DEFINED |
| |
| #include "SkRefCnt.h" |
| #include "SkScalar.h" |
| |
| class SkBitmap; |
| |
| class SkMipMap : public SkRefCnt { |
| public: |
| static SkMipMap* Build(const SkBitmap& src); |
| |
| struct Level { |
| void* fPixels; |
| uint32_t fRowBytes; |
| uint32_t fWidth, fHeight; |
| float fScale; // < 1.0 |
| }; |
| |
| bool extractLevel(SkScalar scale, Level*) const; |
| |
| size_t getSize() const { return fSize; } |
| |
| private: |
| size_t fSize; |
| Level* fLevels; |
| int fCount; |
| |
| // we take ownership of levels, and will free it with sk_free() |
| SkMipMap(Level* levels, int count, size_t size); |
| virtual ~SkMipMap(); |
| |
| static Level* AllocLevels(int levelCount, size_t pixelSize); |
| }; |
| |
| #endif |