/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "include/core/SkCanvas.h" #include "include/core/SkRasterHandleAllocator.h" #include "include/core/SkRefCnt.h" #include "src/core/SkBitmapDevice.h" #include "src/core/SkDevice.h" #include "src/core/SkSurfacePriv.h" #include "src/text/GlyphRun.h" // IWYU pragma: keep #include #include class SkBitmap; class SkSurfaceProps; #if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) #include "include/core/SkBitmap.h" #include "include/core/SkColorSpace.h" #include "include/core/SkImageInfo.h" #endif SkCanvas::SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props) : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)), fProps(props) { this->init(sk_make_sp(bitmap, fProps)); } SkCanvas::SkCanvas(const SkBitmap& bitmap, std::unique_ptr alloc, SkRasterHandleAllocator::Handle hndl, const SkSurfaceProps* props) : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) , fProps(SkSurfacePropsCopyOrDefault(props)) , fAllocator(std::move(alloc)) { this->init(sk_make_sp(bitmap, fProps, hndl)); } SkCanvas::SkCanvas(const SkBitmap& bitmap) : SkCanvas(bitmap, nullptr, nullptr, nullptr) {} #if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) SkCanvas::SkCanvas(const SkBitmap& bitmap, ColorBehavior) : fMCStack(sizeof(MCRec), fMCRecStorage, sizeof(fMCRecStorage)) { SkBitmap tmp(bitmap); *const_cast(&tmp.info()) = tmp.info().makeColorSpace(nullptr); this->init(sk_make_sp(tmp, fProps)); } #endif