diff options
Diffstat (limited to 'core/fxge/cfx_defaultrenderdevice.cpp')
-rw-r--r-- | core/fxge/cfx_defaultrenderdevice.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/core/fxge/cfx_defaultrenderdevice.cpp b/core/fxge/cfx_defaultrenderdevice.cpp new file mode 100644 index 000000000..819be4ed5 --- /dev/null +++ b/core/fxge/cfx_defaultrenderdevice.cpp @@ -0,0 +1,84 @@ +// 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 <utility> + +#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<CFX_DIBitmap> pBitmap) { + return AttachWithRgbByteOrder(std::move(pBitmap), false); +} + +bool CFX_DefaultRenderDevice::AttachWithRgbByteOrder( + RetainPtr<CFX_DIBitmap> pBitmap, + bool bRgbByteOrder) { + return AttachImpl(std::move(pBitmap), bRgbByteOrder, nullptr, false); +} + +bool CFX_DefaultRenderDevice::AttachWithBackdropAndGroupKnockout( + RetainPtr<CFX_DIBitmap> pBitmap, + RetainPtr<CFX_DIBitmap> pBackdropBitmap, + bool bGroupKnockout) { + return AttachImpl(std::move(pBitmap), false, std::move(pBackdropBitmap), + bGroupKnockout); +} + +bool CFX_DefaultRenderDevice::CFX_DefaultRenderDevice::AttachImpl( + RetainPtr<CFX_DIBitmap> pBitmap, + bool bRgbByteOrder, + RetainPtr<CFX_DIBitmap> 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<CFX_DIBitmap> pBackdropBitmap) { +#if defined(_SKIA_SUPPORT_) + if (SkiaIsDefaultRenderer()) + return CreateSkia(width, height, format, pBackdropBitmap); +#endif + return CreateAgg(width, height, format, pBackdropBitmap); +} |