Coverage Report

Created: 2025-12-08 09:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/vcl/headless/SvpGraphicsBackend.cxx
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
 * This file is part of the LibreOffice project.
4
 *
5
 * This Source Code Form is subject to the terms of the Mozilla Public
6
 * License, v. 2.0. If a copy of the MPL was not distributed with this
7
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
 *
9
 * This file incorporates work covered by the following license notice:
10
 *
11
 *   Licensed to the Apache Software Foundation (ASF) under one or more
12
 *   contributor license agreements. See the NOTICE file distributed
13
 *   with this work for additional information regarding copyright
14
 *   ownership. The ASF licenses this file to you under the Apache
15
 *   License, Version 2.0 (the "License"); you may not use this file
16
 *   except in compliance with the License. You may obtain a copy of
17
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18
 */
19
20
#include <headless/SvpGraphicsBackend.hxx>
21
22
SvpGraphicsBackend::SvpGraphicsBackend(CairoCommon& rCairoCommon)
23
760k
    : m_rCairoCommon(rCairoCommon)
24
760k
{
25
760k
}
26
27
void SvpGraphicsBackend::setClipRegion(const vcl::Region& i_rClip)
28
24.1k
{
29
24.1k
    m_rCairoCommon.m_aClipRegion = i_rClip;
30
24.1k
}
31
32
772k
void SvpGraphicsBackend::ResetClipRegion() { m_rCairoCommon.m_aClipRegion.SetNull(); }
33
34
1.75M
sal_uInt16 SvpGraphicsBackend::GetBitCount() const { return m_rCairoCommon.GetBitCount(); }
35
36
tools::Long SvpGraphicsBackend::GetGraphicsWidth() const
37
0
{
38
0
    return m_rCairoCommon.m_pSurface ? m_rCairoCommon.m_aFrameSize.getX() : 0;
39
0
}
40
41
323k
void SvpGraphicsBackend::SetLineColor() { m_rCairoCommon.m_oLineColor = std::nullopt; }
42
43
9.27k
void SvpGraphicsBackend::SetLineColor(Color nColor) { m_rCairoCommon.m_oLineColor = nColor; }
44
45
2.74k
void SvpGraphicsBackend::SetFillColor() { m_rCairoCommon.m_oFillColor = std::nullopt; }
46
47
8.85M
void SvpGraphicsBackend::SetFillColor(Color nColor) { m_rCairoCommon.m_oFillColor = nColor; }
48
49
void SvpGraphicsBackend::SetXORMode(bool bSet, bool bInvertOnly)
50
775k
{
51
775k
    m_rCairoCommon.SetXORMode(bSet, bInvertOnly);
52
775k
}
53
54
void SvpGraphicsBackend::SetROPLineColor(SalROPColor nROPColor)
55
1.50k
{
56
1.50k
    m_rCairoCommon.SetROPLineColor(nROPColor);
57
1.50k
}
58
59
void SvpGraphicsBackend::SetROPFillColor(SalROPColor nROPColor)
60
1.63k
{
61
1.63k
    m_rCairoCommon.SetROPFillColor(nROPColor);
62
1.63k
}
63
64
void SvpGraphicsBackend::drawPixel(tools::Long nX, tools::Long nY)
65
1.16M
{
66
1.16M
    m_rCairoCommon.drawPixel(m_rCairoCommon.m_oLineColor, nX, nY, getAntiAlias());
67
1.16M
}
68
69
void SvpGraphicsBackend::drawPixel(tools::Long nX, tools::Long nY, Color aColor)
70
433k
{
71
433k
    m_rCairoCommon.drawPixel(aColor, nX, nY, getAntiAlias());
72
433k
}
73
74
void SvpGraphicsBackend::drawLine(tools::Long nX1, tools::Long nY1, tools::Long nX2,
75
                                  tools::Long nY2)
76
1.41M
{
77
1.41M
    m_rCairoCommon.drawLine(nX1, nY1, nX2, nY2, getAntiAlias());
78
1.41M
}
79
80
void SvpGraphicsBackend::drawRect(tools::Long nX, tools::Long nY, tools::Long nWidth,
81
                                  tools::Long nHeight)
82
2.91M
{
83
2.91M
    m_rCairoCommon.drawRect(nX, nY, nWidth, nHeight, getAntiAlias());
84
2.91M
}
85
86
void SvpGraphicsBackend::drawPolyLine(sal_uInt32 nPoints, const Point* pPtAry)
87
8.43k
{
88
8.43k
    m_rCairoCommon.drawPolyLine(nPoints, pPtAry, getAntiAlias());
89
8.43k
}
90
91
void SvpGraphicsBackend::drawPolygon(sal_uInt32 nPoints, const Point* pPtAry)
92
7.51M
{
93
7.51M
    m_rCairoCommon.drawPolygon(nPoints, pPtAry, getAntiAlias());
94
7.51M
}
95
96
void SvpGraphicsBackend::drawPolyPolygon(sal_uInt32 nPoly, const sal_uInt32* pPointCounts,
97
                                         const Point** pPtAry)
98
2.83M
{
99
2.83M
    m_rCairoCommon.drawPolyPolygon(nPoly, pPointCounts, pPtAry, getAntiAlias());
100
2.83M
}
101
102
void SvpGraphicsBackend::drawPolyPolygon(const basegfx::B2DHomMatrix& rObjectToDevice,
103
                                         const basegfx::B2DPolyPolygon& rPolyPolygon,
104
                                         double fTransparency)
105
542k
{
106
542k
    m_rCairoCommon.drawPolyPolygon(rObjectToDevice, rPolyPolygon, fTransparency, getAntiAlias());
107
542k
}
108
109
bool SvpGraphicsBackend::drawPolyLine(const basegfx::B2DHomMatrix& rObjectToDevice,
110
                                      const basegfx::B2DPolygon& rPolyLine, double fTransparency,
111
                                      double fLineWidth, const std::vector<double>* pStroke,
112
                                      basegfx::B2DLineJoin eLineJoin,
113
                                      css::drawing::LineCap eLineCap, double fMiterMinimumAngle,
114
                                      bool bPixelSnapHairline)
115
2.16M
{
116
2.16M
    return m_rCairoCommon.drawPolyLine(rObjectToDevice, rPolyLine, fTransparency, fLineWidth,
117
2.16M
                                       pStroke, eLineJoin, eLineCap, fMiterMinimumAngle,
118
2.16M
                                       bPixelSnapHairline, getAntiAlias());
119
2.16M
}
120
121
bool SvpGraphicsBackend::drawPolyLineBezier(sal_uInt32, const Point*, const PolyFlags*)
122
0
{
123
0
    SAL_INFO("vcl.gdi", "unsupported SvpSalGraphics::drawPolyLineBezier case");
124
0
    return false;
125
0
}
126
127
bool SvpGraphicsBackend::drawPolygonBezier(sal_uInt32, const Point*, const PolyFlags*)
128
93.9k
{
129
93.9k
    SAL_INFO("vcl.gdi", "unsupported SvpSalGraphics::drawPolygonBezier case");
130
93.9k
    return false;
131
93.9k
}
132
133
bool SvpGraphicsBackend::drawPolyPolygonBezier(sal_uInt32, const sal_uInt32*, const Point* const*,
134
                                               const PolyFlags* const*)
135
100k
{
136
100k
    SAL_INFO("vcl.gdi", "unsupported SvpSalGraphics::drawPolyPolygonBezier case");
137
100k
    return false;
138
100k
}
139
140
void SvpGraphicsBackend::copyArea(tools::Long nDestX, tools::Long nDestY, tools::Long nSrcX,
141
                                  tools::Long nSrcY, tools::Long nSrcWidth, tools::Long nSrcHeight,
142
                                  bool /*bWindowInvalidate*/)
143
0
{
144
0
    SalTwoRect aTR(nSrcX, nSrcY, nSrcWidth, nSrcHeight, nDestX, nDestY, nSrcWidth, nSrcHeight);
145
146
0
    cairo_surface_t* source = m_rCairoCommon.m_pSurface;
147
0
    m_rCairoCommon.copyBitsCairo(aTR, source, getAntiAlias());
148
0
}
149
150
void SvpGraphicsBackend::copyBits(const SalTwoRect& rTR, SalGraphics* pSrcGraphics)
151
0
{
152
0
    cairo_surface_t* source = nullptr;
153
154
0
    if (pSrcGraphics)
155
0
    {
156
0
        SvpGraphicsBackend* pSrc = static_cast<SvpGraphicsBackend*>(pSrcGraphics->GetImpl());
157
0
        source = pSrc->m_rCairoCommon.m_pSurface;
158
0
    }
159
0
    else
160
0
    {
161
0
        source = m_rCairoCommon.m_pSurface;
162
0
    }
163
164
0
    m_rCairoCommon.copyBitsCairo(rTR, source, getAntiAlias());
165
0
}
166
167
void SvpGraphicsBackend::drawBitmap(const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap)
168
9.57k
{
169
9.57k
    m_rCairoCommon.drawBitmap(rPosAry, rSalBitmap, getAntiAlias());
170
9.57k
}
171
172
void SvpGraphicsBackend::drawMask(const SalTwoRect& rTR, const SalBitmap& rSalBitmap,
173
                                  Color nMaskColor)
174
1.14k
{
175
1.14k
    m_rCairoCommon.drawMask(rTR, rSalBitmap, nMaskColor, getAntiAlias());
176
1.14k
}
177
178
std::shared_ptr<SalBitmap> SvpGraphicsBackend::getBitmap(tools::Long nX, tools::Long nY,
179
                                                         tools::Long nWidth, tools::Long nHeight,
180
                                                         bool bWithoutAlpha)
181
6.79k
{
182
6.79k
    return m_rCairoCommon.getBitmap(nX, nY, nWidth, nHeight, bWithoutAlpha);
183
6.79k
}
184
185
void SvpGraphicsBackend::drawBitmapBuffer(const SalTwoRect& rTR, const BitmapBuffer* pBuffer,
186
                                          cairo_operator_t eOp)
187
0
{
188
0
    cairo_surface_t* source = CairoCommon::createCairoSurface(pBuffer);
189
0
    m_rCairoCommon.copyWithOperator(rTR, source, eOp, getAntiAlias());
190
0
    cairo_surface_destroy(source);
191
0
}
192
193
Color SvpGraphicsBackend::getPixel(tools::Long nX, tools::Long nY)
194
446k
{
195
446k
    return CairoCommon::getPixel(m_rCairoCommon.m_pSurface, nX, nY);
196
446k
}
197
198
void SvpGraphicsBackend::invert(tools::Long nX, tools::Long nY, tools::Long nWidth,
199
                                tools::Long nHeight, SalInvert nFlags)
200
0
{
201
0
    m_rCairoCommon.invert(nX, nY, nWidth, nHeight, nFlags, getAntiAlias());
202
0
}
203
204
void SvpGraphicsBackend::invert(sal_uInt32 nPoints, const Point* pPtAry, SalInvert nFlags)
205
0
{
206
0
    m_rCairoCommon.invert(nPoints, pPtAry, nFlags, getAntiAlias());
207
0
}
208
209
void SvpGraphicsBackend::drawAlphaBitmap(const SalTwoRect& rTR, const SalBitmap& rSourceBitmap)
210
15
{
211
15
    m_rCairoCommon.drawAlphaBitmap(rTR, rSourceBitmap, getAntiAlias());
212
15
}
213
214
bool SvpGraphicsBackend::drawTransformedBitmap(const basegfx::B2DPoint& rNull,
215
                                               const basegfx::B2DPoint& rX,
216
                                               const basegfx::B2DPoint& rY,
217
                                               const SalBitmap& rSourceBitmap, double fAlpha)
218
0
{
219
0
    return m_rCairoCommon.drawTransformedBitmap(rNull, rX, rY, rSourceBitmap, fAlpha,
220
0
                                                getAntiAlias());
221
0
}
222
223
bool SvpGraphicsBackend::drawAlphaRect(tools::Long nX, tools::Long nY, tools::Long nWidth,
224
                                       tools::Long nHeight, sal_uInt8 nTransparency)
225
0
{
226
0
    return m_rCairoCommon.drawAlphaRect(nX, nY, nWidth, nHeight, nTransparency, getAntiAlias());
227
0
}
228
229
bool SvpGraphicsBackend::drawGradient(const tools::PolyPolygon& rPolyPolygon,
230
                                      const Gradient& rGradient)
231
13.6k
{
232
13.6k
    return m_rCairoCommon.drawGradient(rPolyPolygon, rGradient, getAntiAlias());
233
13.6k
}
234
235
bool SvpGraphicsBackend::implDrawGradient(basegfx::B2DPolyPolygon const& rPolyPolygon,
236
                                          SalGradient const& rGradient)
237
0
{
238
0
    return m_rCairoCommon.implDrawGradient(rPolyPolygon, rGradient, getAntiAlias());
239
0
}
240
241
bool SvpGraphicsBackend::supportsOperation(OutDevSupportType eType) const
242
0
{
243
0
    return CairoCommon::supportsOperation(eType);
244
0
}
245
246
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */