1 /* 2 * Copyright 2023 Google LLC 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 #include "src/core/SkMipmapBuilder.h" 8 9 #include "include/core/SkImage.h" 10 #include "include/core/SkPixmap.h" 11 #include "include/core/SkTypes.h" 12 #include "src/core/SkMipmap.h" 13 struct SkImageInfo; 14 SkMipmapBuilder(const SkImageInfo & info)15SkMipmapBuilder::SkMipmapBuilder(const SkImageInfo& info) { 16 fMM = sk_sp<SkMipmap>(SkMipmap::Build({info, nullptr, 0}, 17 /* factoryProc= */ nullptr, 18 /* computeContents= */ false)); 19 } 20 ~SkMipmapBuilder()21SkMipmapBuilder::~SkMipmapBuilder() {} 22 countLevels() const23int SkMipmapBuilder::countLevels() const { 24 return fMM ? fMM->countLevels() : 0; 25 } 26 level(int index) const27SkPixmap SkMipmapBuilder::level(int index) const { 28 SkPixmap pm; 29 30 SkMipmap::Level level; 31 if (fMM && fMM->getLevel(index, &level)) { 32 pm = level.fPixmap; 33 } 34 return pm; 35 } 36 attachTo(const sk_sp<const SkImage> & src)37sk_sp<SkImage> SkMipmapBuilder::attachTo(const sk_sp<const SkImage>& src) { 38 return src->withMipmaps(fMM); 39 } 40