Commit graph

7850 commits

Author SHA1 Message Date
Ivailo Monev
3c257c0efb assume fetch and store operators are valid in drawing functions
any attempt to paint on QImage (and in turn QPixmap) the format of which is
QImage::Format_Invalid (with no private data pointer) will fail due to
paint engine check in QPainter::begin(), in addition the operators should
be (and currently are) implemented for all QImage formats

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-11 01:09:16 +02:00
Ivailo Monev
1396f53698 benchmark painting on and of mono image formats
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-11 01:05:18 +02:00
Ivailo Monev
9b764b425d compiler warnings fixes
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-11 01:04:43 +02:00
Ivailo Monev
dc946d296e remove now unused constants
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-11 00:17:24 +02:00
Ivailo Monev
494734618e fix copying of QImage to XImage when the QImage format is QImage::Format_RGB16
even transparency is a thing on 16-bit depth X display but it is very slow

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 23:35:30 +02:00
Ivailo Monev
8a0d93ba94 replace QPixmapData::createCompatiblePixmapData() with its body
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 22:10:52 +02:00
Ivailo Monev
f7f8bdcdf8 remove now unused QPixmapData::resize() method
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 22:08:26 +02:00
Ivailo Monev
9ab504a739 allocate the ARGB visuals and colormaps only if XRender is to be used
they are null-checked in qt_cleanup() and used only when qt_x11Data->use_xrender
equals true

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 22:00:27 +02:00
Ivailo Monev
e35cd216a8 ensure the image is not constructed with zero width or height in QX11PaintEngine::drawPath()
must be rounding to zero somewhere

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 20:50:05 +02:00
Ivailo Monev
21bf23815a remove check for non-existing internal property
it was used by the designer tool to override the DPI

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 19:29:38 +02:00
Ivailo Monev
8c9142d956 convert QPixmapData::create() method to specialized constructor
now QPixmap::load() and QPixmap::loadFromData() will be slightly faster

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 18:14:06 +02:00
Ivailo Monev
c3892b017c pass the pixel type to makeBitmapCompliantIfNeeded() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 18:00:31 +02:00
Ivailo Monev
f025c85d0b remove redundant QPixmapData members
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 17:50:36 +02:00
Ivailo Monev
5f42f271ff replace qt_mask_image() function with its body
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 17:40:17 +02:00
Ivailo Monev
b1e54659ca remove unused lowest_bit() function
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 17:23:46 +02:00
Ivailo Monev
a5fa53dfff implement the missing QImage converter functions
that includes QImage::Format_ARGB32_Premultiplied to QImage::Format_RGB16,
QImage::Format_RGB16 to QImage::Format_Mono and QImage::Format_MonoLSB

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 16:37:14 +02:00
Ivailo Monev
3f66a84b1c inline QWidgetBackingStore::surface() method
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 06:14:28 +02:00
Ivailo Monev
9e32978cbf remove noop QWidgetBackingStore::updateList()
does nothing since Qt::WA_StaticContents was dropped

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 06:08:18 +02:00
Ivailo Monev
26072dc4e0 QETWidget and QWindowSurface do not have to be friends with QWidgetBackingStore
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 06:00:32 +02:00
Ivailo Monev
b3bbed21f4 remove unused QWidgetBackingStore::topLevelOffset() method
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 06:00:05 +02:00
Ivailo Monev
ef60fad9d7 X server running at 24-bit depth is alpha capable
now the optimization from the previous commit applies to the backing store
in more cases

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 04:17:28 +02:00
Ivailo Monev
761d9a1496 QImage::Format_ARGB32_Premultiplied to XImage copying optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 03:27:36 +02:00
Ivailo Monev
8b86d478e4 QWindowSurface::beginPaint() optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 03:29:01 +02:00
Ivailo Monev
980ce7a30b oops, fix build
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 02:38:09 +02:00
Ivailo Monev
de4885489c add note when QPixmap::toX11Pixmap() was introduced
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-09 23:28:05 +02:00
Ivailo Monev
f92053f381 QPixmap::grabWindow() optimization
TODO: replace WId with Qt::HANDLE or vice-versa, eventually

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-09 23:24:37 +02:00
Ivailo Monev
f91411694a merge QRasterPixmapData into QPixmapData
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-09 23:06:30 +02:00
Ivailo Monev
4c63add2e6 remove now unused XRender fills cache
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-09 22:21:43 +02:00
Ivailo Monev
2ba736e6ef QPixmap documentation update
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 00:18:47 +02:00
Ivailo Monev
96b700fdba QPixmap no longer requires GUI application or to be constructed in the application thread
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 00:08:54 +02:00
Ivailo Monev
9e1b6d48a6 remove unused and internal QTessellator class
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 00:02:31 +02:00
Ivailo Monev
e54ced79d7 QPixmap documentation update
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-10 00:01:44 +02:00
Ivailo Monev
7329edc8f6 drop internal X11 pixmap
TODO: merge QRasterPixmapData into QPixmapData

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-09 19:56:42 +02:00
Ivailo Monev
3e521ecaef account for undefined types in QScriptEnginePrivate::create() assert
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-08 17:39:13 +02:00
Ivailo Monev
f5f79c15d5 implement blend modes for X11 paint engine
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 10:42:23 +02:00
Ivailo Monev
65c13b6699 QX11PaintEngine::drawPixmap() optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 10:06:25 +02:00
Ivailo Monev
04737582c4 remove redundant forward declarations of QMatrix and QTransform in qimage header
qtransform header is included from qimage header

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 09:50:57 +02:00
Ivailo Monev
4bbd8424d6 remove QImage friend declaration for now non-existing QX11AlphaDetector class
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 09:49:41 +02:00
Ivailo Monev
372a688cd8 explicitly create X11 pixmap data in QX11PixmapData::mask_to_bitmap()
QPixmap is raster by default which in turn means QBitmap also is

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 08:33:50 +02:00
Ivailo Monev
999061bc4a QX11PixmapData::mask() optimization
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 08:30:01 +02:00
Ivailo Monev
4ecb03bc6b plug memory leak in QX11PixmapData::toImage()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 08:00:07 +02:00
Ivailo Monev
cc330e7dd3 simplify alpha checking in QX11PixmapData::fromImage()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-07 06:39:32 +02:00
Ivailo Monev
d8564644f3 temporary fix for QPixmap::grabWindow()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-06 17:54:21 +02:00
Ivailo Monev
cc9c8f9fc3 effectively revert 3b2f367497 and cd5217cdbc
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-06 14:26:26 +02:00
Ivailo Monev
b7297b762e remove unused QString object in QTextStreamPrivate::putString()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-04 16:20:44 +02:00
Ivailo Monev
aa079429a1 fix regression since fabde51fe3
the important thing is to clean the fileName argument which may or may not
be clean

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-04 15:35:16 +02:00
Ivailo Monev
e9f970bbd2 build fix QDataStream test case
only that test case and QVariant::save() were using the char* operators
of QDataStream

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-03 17:05:26 +02:00
Ivailo Monev
35f05e0d94 ensure the type name is streamed as QByteArray in QVariant::save()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-03 16:44:09 +02:00
Ivailo Monev
7f04979b7e fetch the owner and group from the QFile file descriptor in QFileInof tests
much more reliable comparison

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-03 15:22:23 +02:00
Ivailo Monev
d8c00c3e71 verify that the group name is not empty in tst_QFileInfo::group()
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-11-03 15:10:35 +02:00