85 lines
2.5 KiB
C++
85 lines
2.5 KiB
C++
// 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);
|
|
}
|