// Copyright 2022 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "core/fxge/cfx_defaultrenderdevice.h" #include #include "core/fxge/dib/cfx_dibitmap.h" namespace { // When build variant is Skia then it is assumed as the default, but might be // overridden at runtime. #if defined(_SKIA_SUPPORT_) CFX_DefaultRenderDevice::RendererType g_default_renderer_type = CFX_DefaultRenderDevice::RendererType::kSkia; #endif } // namespace // static bool CFX_DefaultRenderDevice::SkiaIsDefaultRenderer() { #if defined(_SKIA_SUPPORT_) return g_default_renderer_type == RendererType::kSkia; #else return false; #endif } #if defined(_SKIA_SUPPORT_) // static void CFX_DefaultRenderDevice::SetDefaultRenderer(RendererType renderer_type) { g_default_renderer_type = renderer_type; } #endif CFX_DefaultRenderDevice::CFX_DefaultRenderDevice() = default; CFX_DefaultRenderDevice::~CFX_DefaultRenderDevice() = default; bool CFX_DefaultRenderDevice::Attach(RetainPtr pBitmap) { return AttachWithRgbByteOrder(std::move(pBitmap), false); } bool CFX_DefaultRenderDevice::AttachWithRgbByteOrder( RetainPtr pBitmap, bool bRgbByteOrder) { return AttachImpl(std::move(pBitmap), bRgbByteOrder, nullptr, false); } bool CFX_DefaultRenderDevice::AttachWithBackdropAndGroupKnockout( RetainPtr pBitmap, RetainPtr pBackdropBitmap, bool bGroupKnockout) { return AttachImpl(std::move(pBitmap), false, std::move(pBackdropBitmap), bGroupKnockout); } bool CFX_DefaultRenderDevice::CFX_DefaultRenderDevice::AttachImpl( RetainPtr pBitmap, bool bRgbByteOrder, RetainPtr pBackdropBitmap, bool bGroupKnockout) { #if defined(_SKIA_SUPPORT_) if (SkiaIsDefaultRenderer()) { return AttachSkiaImpl(std::move(pBitmap), bRgbByteOrder, std::move(pBackdropBitmap), bGroupKnockout); } #endif return AttachAggImpl(std::move(pBitmap), bRgbByteOrder, std::move(pBackdropBitmap), bGroupKnockout); } bool CFX_DefaultRenderDevice::Create(int width, int height, FXDIB_Format format, RetainPtr pBackdropBitmap) { #if defined(_SKIA_SUPPORT_) if (SkiaIsDefaultRenderer()) return CreateSkia(width, height, format, pBackdropBitmap); #endif return CreateAgg(width, height, format, pBackdropBitmap); }