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
qdirectfbbackingstore.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
"qdirectfbbackingstore.h"
6
#
include
"qdirectfbintegration.h"
7
#
include
"qdirectfbblitter.h"
8
#
include
"qdirectfbconvenience.h"
9
#
include
"qdirectfbwindow.h"
10
#
include
<
private
/
qpixmap_blitter_p
.
h
>
11
12
#
include
<
QtCore
/
qdebug
.
h
>
13
14
QT_BEGIN_NAMESPACE
15
16
QDirectFbBackingStore
::
QDirectFbBackingStore
(
QWindow
*
window
)
17
: QPlatformBackingStore(window), m_pixmap(0), m_pmdata(0)
18
{
19
IDirectFBWindow *dfbWindow =
static_cast
<QDirectFbWindow *>(window->handle())->dfbWindow();
20
dfbWindow->GetSurface(dfbWindow, m_dfbSurface.outPtr());
21
22
//WRONGSIZE
23
QDirectFbBlitter *blitter =
new
QDirectFbBlitter(window->size(), m_dfbSurface.data());
24
m_pmdata =
new
QDirectFbBlitterPlatformPixmap;
25
m_pmdata->setBlittable(blitter);
26
m_pixmap.reset(
new
QPixmap(m_pmdata));
27
}
28
29
QPaintDevice
*
QDirectFbBackingStore
::
paintDevice
()
30
{
31
return
m_pixmap.data();
32
}
33
34
void
QDirectFbBackingStore
::flush(QWindow *,
const
QRegion ®ion,
const
QPoint &offset)
35
{
36
m_pmdata->blittable()->unlock();
37
38
for
(
const
QRect &rect : region) {
39
DFBRegion dfbReg(rect.x() + offset.x(),rect.y() + offset.y(),rect.right() + offset.x(),rect.bottom() + offset.y());
40
m_dfbSurface->Flip(m_dfbSurface.data(), &dfbReg, DFBSurfaceFlipFlags(DSFLIP_BLIT|DSFLIP_ONSYNC));
41
}
42
}
43
44
void
QDirectFbBackingStore
::
resize
(
const
QSize &size,
const
QRegion& reg)
45
{
46
Q_UNUSED(reg);
47
48
if
((m_pmdata->width() == size.width()) &&
49
(m_pmdata->height() == size.height()))
50
return
;
51
52
QDirectFbBlitter
*blitter =
new
QDirectFbBlitter(size, m_dfbSurface.data());
53
m_pmdata->setBlittable(blitter);
54
}
55
56
static
inline
void
scrollSurface
(IDirectFBSurface *surface,
const
QRect &r,
int
dx,
int
dy)
57
{
58
const
DFBRectangle rect(r.x(), r.y(), r.width(), r.height());
59
surface->Blit(surface, surface, &rect, r.x() + dx, r.y() + dy);
60
const
DFBRegion region(rect.x + dx, rect.y + dy, r.right() + dx, r.bottom() + dy);
61
surface->Flip(surface, ®ion, DFBSurfaceFlipFlags(DSFLIP_BLIT));
62
}
63
64
bool
QDirectFbBackingStore
::
scroll
(
const
QRegion &area,
int
dx,
int
dy)
65
{
66
m_pmdata->blittable()->unlock();
67
68
if
(!m_dfbSurface || area.isEmpty())
69
return
false
;
70
m_dfbSurface->SetBlittingFlags(m_dfbSurface.data(), DSBLIT_NOFX);
71
if
(area.rectCount() == 1) {
72
scrollSurface(m_dfbSurface.data(), area.boundingRect(), dx, dy);
73
}
else
{
74
for
(
const
QRect &rect : area)
75
scrollSurface(m_dfbSurface.data(), rect, dx, dy);
76
}
77
return
true
;
78
}
79
80
QImage
QDirectFbBackingStore
::
toImage
()
const
81
{
82
return
m_pixmap.data()->toImage();
83
}
84
85
QT_END_NAMESPACE
QDirectFbBackingStore
Definition
qdirectfbbackingstore.h:18
QDirectFbBackingStore::paintDevice
QPaintDevice * paintDevice() override
Implement this function to return the appropriate paint device.
Definition
qdirectfbbackingstore.cpp:29
QDirectFbBackingStore::resize
void resize(const QSize &size, const QRegion &staticContents) override
Definition
qdirectfbbackingstore.cpp:44
QDirectFbBackingStore::toImage
QImage toImage() const override
Implemented in subclasses to return the content of the backingstore as a QImage.
Definition
qdirectfbbackingstore.cpp:80
QDirectFbBackingStore::scroll
bool scroll(const QRegion &area, int dx, int dy) override
Scrolls the given area dx pixels to the right and dy downward; both dx and dy may be negative.
Definition
qdirectfbbackingstore.cpp:64
QDirectFbBlitter
Definition
qdirectfbblitter.h:17
QWindow
\inmodule QtGui
Definition
qwindow.h:64
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
scrollSurface
static void scrollSurface(IDirectFBSurface *surface, const QRect &r, int dx, int dy)
Definition
qdirectfbbackingstore.cpp:56
qtbase
src
plugins
platforms
directfb
qdirectfbbackingstore.cpp
Generated on
for Qt by
1.18.0