Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qwindowsdirect2dbackingstore.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
include
"qwindowsdirect2dbackingstore.h"
6
#
include
"qwindowsdirect2dplatformpixmap.h"
7
#
include
"qwindowsdirect2dintegration.h"
8
#
include
"qwindowsdirect2dcontext.h"
9
#
include
"qwindowsdirect2dpaintdevice.h"
10
#
include
"qwindowsdirect2dbitmap.h"
11
#
include
"qwindowsdirect2ddevicecontext.h"
12
#
include
"qwindowsdirect2dwindow.h"
13
14
#
include
"qwindowscontext.h"
15
16
#
include
<
QtGui
/
qpainter
.
h
>
17
#
include
<
QtGui
/
qwindow
.
h
>
18
#
include
<
QtCore
/
qdebug
.
h
>
19
20
QT_BEGIN_NAMESPACE
21
22
/*!
23
\class QWindowsDirect2DBackingStore
24
\brief Backing store for windows.
25
\internal
26
*/
27
28
static
inline
QWindowsDirect2DPlatformPixmap
*
platformPixmap
(QPixmap *p)
29
{
30
return
static_cast
<
QWindowsDirect2DPlatformPixmap
*>(p->handle());
31
}
32
33
static
inline
QWindowsDirect2DBitmap
*
bitmap
(QPixmap *p)
34
{
35
return
platformPixmap(p)->bitmap();
36
}
37
38
static
inline
QWindowsDirect2DWindow
*
nativeWindow
(QWindow *window)
39
{
40
return
static_cast
<
QWindowsDirect2DWindow
*>(window->handle());
41
}
42
43
QWindowsDirect2DBackingStore
::QWindowsDirect2DBackingStore(QWindow *window)
44
: QPlatformBackingStore(window)
45
{
46
}
47
48
QWindowsDirect2DBackingStore
::~
QWindowsDirect2DBackingStore
()
49
{
50
}
51
52
void
QWindowsDirect2DBackingStore
::
beginPaint
(
const
QRegion ®ion)
53
{
54
QPixmap *pixmap = nativeWindow(window())->pixmap();
55
bitmap(pixmap)->deviceContext()->begin();
56
57
QPainter painter(pixmap);
58
QColor clear(Qt::transparent);
59
60
painter.setCompositionMode(QPainter::CompositionMode_Source);
61
62
for
(
const
QRect &r : region)
63
painter.fillRect(r, clear);
64
}
65
66
void
QWindowsDirect2DBackingStore
::
endPaint
()
67
{
68
bitmap(nativeWindow(window())->pixmap())->deviceContext()->end();
69
}
70
71
QPaintDevice
*
QWindowsDirect2DBackingStore
::
paintDevice
()
72
{
73
return
nativeWindow(window())->pixmap();
74
}
75
76
void
QWindowsDirect2DBackingStore
::flush(QWindow *targetWindow,
const
QRegion ®ion,
const
QPoint
&offset)
77
{
78
if
(targetWindow != window()) {
79
QSharedPointer<QWindowsDirect2DBitmap> copy(nativeWindow(window())->copyBackBuffer());
80
nativeWindow(targetWindow)->flush(copy.data(), region, offset);
81
}
82
83
nativeWindow(targetWindow)->present(region);
84
}
85
86
void
QWindowsDirect2DBackingStore
::resize(
const
QSize &size,
const
QRegion ®ion)
87
{
88
QPixmap old = nativeWindow(window())->pixmap()->copy();
89
90
nativeWindow(window())->resizeSwapChain(size);
91
QPixmap *newPixmap = nativeWindow(window())->pixmap();
92
93
if
(!old.isNull()) {
94
for
(
const
QRect &rect : region)
95
platformPixmap(newPixmap)->copy(old.handle(), rect);
96
}
97
}
98
99
QImage
QWindowsDirect2DBackingStore
::
toImage
()
const
100
{
101
return
nativeWindow(window())->pixmap()->toImage();
102
}
103
104
QT_END_NAMESPACE
QPoint
\inmodule QtCore\reentrant
Definition
qpoint.h:30
QWindowsDirect2DBackingStore
Backing store for windows.
Definition
qwindowsdirect2dbackingstore.h:15
QWindowsDirect2DBackingStore::beginPaint
void beginPaint(const QRegion &) override
This function is called before painting onto the surface begins, with the region in which the paintin...
Definition
qwindowsdirect2dbackingstore.cpp:52
QWindowsDirect2DBackingStore::endPaint
void endPaint() override
This function is called after painting onto the surface has ended.
Definition
qwindowsdirect2dbackingstore.cpp:66
QWindowsDirect2DBackingStore::paintDevice
QPaintDevice * paintDevice() override
Implement this function to return the appropriate paint device.
Definition
qwindowsdirect2dbackingstore.cpp:71
QWindowsDirect2DBackingStore::~QWindowsDirect2DBackingStore
~QWindowsDirect2DBackingStore()
Definition
qwindowsdirect2dbackingstore.cpp:48
QWindowsDirect2DBackingStore::toImage
QImage toImage() const override
Implemented in subclasses to return the content of the backingstore as a QImage.
Definition
qwindowsdirect2dbackingstore.cpp:99
QWindowsDirect2DBitmap
Definition
qwindowsdirect2dbitmap.h:25
QWindowsDirect2DPlatformPixmap
Definition
qwindowsdirect2dplatformpixmap.h:18
QWindowsDirect2DWindow
Definition
qwindowsdirect2dwindow.h:19
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
platformPixmap
static QWindowsDirect2DPlatformPixmap * platformPixmap(QPixmap *p)
Definition
qwindowsdirect2dbackingstore.cpp:28
nativeWindow
static QWindowsDirect2DWindow * nativeWindow(QWindow *window)
Definition
qwindowsdirect2dbackingstore.cpp:38
bitmap
static QWindowsDirect2DBitmap * bitmap(QPixmap *p)
Definition
qwindowsdirect2dbackingstore.cpp:33
qtbase
src
plugins
platforms
direct2d
qwindowsdirect2dbackingstore.cpp
Generated on
for Qt by
1.18.0