Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cfx_defaultrenderdevice.cpp
Go to the documentation of this file.
1// Copyright 2022 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "core/fxge/cfx_defaultrenderdevice.h"
6
7#include <utility>
8
9#include "core/fxge/agg/fx_agg_driver.h"
10#include "core/fxge/dib/cfx_dibitmap.h"
11
12#if defined(PDF_USE_SKIA)
13#include "core/fxge/skia/fx_skia_device.h"
14#endif
15
16namespace {
17
18// When build variant is Skia then it is assumed as the default, but might be
19// overridden at runtime.
20#if defined(PDF_USE_SKIA)
21CFX_DefaultRenderDevice::RendererType g_renderer_type =
22 CFX_DefaultRenderDevice::kDefaultRenderer;
23#endif
24
25} // namespace
26
27// static
28bool CFX_DefaultRenderDevice::UseSkiaRenderer() {
29#if defined(PDF_USE_SKIA)
30 return g_renderer_type == RendererType::kSkia;
31#else
32 return false;
33#endif
34}
35
36#if defined(PDF_USE_SKIA)
37// static
38void CFX_DefaultRenderDevice::SetRendererType(RendererType renderer_type) {
39 g_renderer_type = renderer_type;
40}
41#endif
42
43CFX_DefaultRenderDevice::CFX_DefaultRenderDevice() = default;
44
45CFX_DefaultRenderDevice::~CFX_DefaultRenderDevice() = default;
46
47bool CFX_DefaultRenderDevice::Attach(RetainPtr<CFX_DIBitmap> pBitmap) {
48 return AttachWithRgbByteOrder(std::move(pBitmap), false);
49}
50
51bool CFX_DefaultRenderDevice::AttachWithRgbByteOrder(
52 RetainPtr<CFX_DIBitmap> pBitmap,
53 bool bRgbByteOrder) {
54 return AttachImpl(std::move(pBitmap), bRgbByteOrder, nullptr, false);
55}
56
57bool CFX_DefaultRenderDevice::AttachWithBackdropAndGroupKnockout(
58 RetainPtr<CFX_DIBitmap> pBitmap,
59 RetainPtr<CFX_DIBitmap> pBackdropBitmap,
60 bool bGroupKnockout) {
61 return AttachImpl(std::move(pBitmap), false, std::move(pBackdropBitmap),
62 bGroupKnockout);
63}
64
65bool CFX_DefaultRenderDevice::CFX_DefaultRenderDevice::AttachImpl(
66 RetainPtr<CFX_DIBitmap> pBitmap,
67 bool bRgbByteOrder,
68 RetainPtr<CFX_DIBitmap> pBackdropBitmap,
69 bool bGroupKnockout) {
70#if defined(PDF_USE_SKIA)
71 if (UseSkiaRenderer()) {
72 return AttachSkiaImpl(std::move(pBitmap), bRgbByteOrder,
73 std::move(pBackdropBitmap), bGroupKnockout);
74 }
75#endif
76 return AttachAggImpl(std::move(pBitmap), bRgbByteOrder,
77 std::move(pBackdropBitmap), bGroupKnockout);
78}
79
80bool CFX_DefaultRenderDevice::Create(int width,
81 int height,
82 FXDIB_Format format,
83 RetainPtr<CFX_DIBitmap> pBackdropBitmap) {
84#if defined(PDF_USE_SKIA)
85 if (UseSkiaRenderer()) {
86 return CreateSkia(width, height, format, pBackdropBitmap);
87 }
88#endif
89 return CreateAgg(width, height, format, pBackdropBitmap);
90}
91
92void CFX_DefaultRenderDevice::Clear(uint32_t color) {
93#if defined(PDF_USE_SKIA)
94 if (UseSkiaRenderer()) {
95 static_cast<CFX_SkiaDeviceDriver*>(GetDeviceDriver())->Clear(color);
96 return;
97 }
98#endif
99 static_cast<pdfium::CFX_AggDeviceDriver*>(GetDeviceDriver())->Clear(color);
100}
bool Create(int width, int height, FXDIB_Format format, RetainPtr< CFX_DIBitmap > pBackdropBitmap)
bool Attach(RetainPtr< CFX_DIBitmap > pBitmap)
~CFX_DefaultRenderDevice() override
bool AttachWithBackdropAndGroupKnockout(RetainPtr< CFX_DIBitmap > pBitmap, RetainPtr< CFX_DIBitmap > pBackdropBitmap, bool bGroupKnockout)
bool AttachWithRgbByteOrder(RetainPtr< CFX_DIBitmap > pBitmap, bool bRgbByteOrder)
RenderDeviceDriverIface * GetDeviceDriver() const
FXDIB_Format
Definition fx_dib.h:19