| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
In order to be feature consistent with drawText(), we have to clip the
text whenever the text expands beyond its borders. This is a
performance hit, but luckily we can detect the cases where it's
necessary before-hand.
|
|
|
|
| |
Update the code to compile with merged changes.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The OpenGL and OpenGL2 engines now have support for static text, as
well as the QEmulationPaintEngine.
Also contains an optimization: Instead of passing both the position and
glyph positions to drawStaticTextItem() we add the position into the
glyph position and update it only when it changes. Otherwise we would
have to do this work in all engines for every call. This means we have
to cache the position in QStaticTextPrivate as well, but it seems like
a small price to pay, since it's a per-text overhead and only 16 bytes.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
painter
1. The font property in QStaticText has been removed. Rather than set a
font on the text explicitly, it picks up the font from the painter. If
you change the font on the painter, the text layout will have to be
updated, like with a matrix.
2. The translation might not be the only transformation on the painter,
so rather than translate back to origo, we explicitly set dx and dy
on the transform to 0.0 for the duration of the function.
3. Update test to reflect changes
|
|
|
|
|
|
| |
We need to transform the position of the text in accordance with the
painter's matrix. Also, use state->matrix directly instead of calling
a function to get it.
|
|
|
|
|
|
|
|
|
|
| |
1. Support transformations on the painter in drawStaticText().
Transforming the painter will cause the text layout to be recalculated,
except for translations, which are handled by shifting the position of
the text items.
2. Make const length arrays of the internal data in QStaticTextItem in
order to minimize the memory consumption.
|
|
|
|
|
|
|
|
|
|
|
| |
By caching the results of getGlyphPositions() we can make a code path
in the critical paint engines which is optimal both in space and speed.
The engines where speed is of less importance (pdf engine etc.) which
may need more information, we choose the slower code path of drawText()
which lays out the text again. We should have optimal paths in raster,
vg and GL2 paint engines. The others are less important. Memory
consumption of static text is now 14 bytes per glyph, 8 bytes per item
and a static overhead of 40 bytes per QStaticText object.
|
|
|
|
|
|
|
| |
drawText() that renders into a QRect will clip the text (unless
otherwise set by the text flags passed to the function.) In
drawStaticText() we should do the same for identical behavior. We also
need to respect the font set on the QStaticText object.
|
|
|
|
|
|
|
| |
Put back maximumSize property in QStaticText to allow matching calls
to drawText with a target rectangle. Implementation is done by
having a dummy paint engine which records the calls to drawTextItem()
and storing these, then replaying them later.
|
|
|
|
|
|
|
| |
Don't use QVector to store the text items, but put them in a regular
array for quick access.
drawStaticText() is now about 2.7 times the speed of drawText().
|
|
|
|
|
|
|
| |
The engine.layoutData's glyph count is the number allocated, which may
be larger than the actual number of glyphs. To minimize the space needed
we base allocation on "used" which contains the number of glyphs
actually used to represent the text.
|
|
|
|
|
|
|
| |
QTextLayout takes a lot of memory. We can get a bigger speed-up and
a more reasonable memory consumption by only supporting the single
line static texts and caching the text items. We need to copy some
structs from the text engine, since this is on the stack.
|
| |
|
|
|
|
|
| |
Adds the integer based overloads as inline functions, same as for
QPainter::drawText().
|
|
|
|
|
| |
The rectangle should clip the text vertically and break lines
horizontally, to mirror behavior of QPainter::drawText().
|
|
|
|
|
| |
Not much to gain by going directly to the QTextEngine, and the code
is a lot simpler if we just use the QTextLayout instead.
|
|
|
|
|
|
|
|
|
| |
Much of the time in drawText() is used on text layouting, which is
wasted time when the text is not updated every frame. QStaticText is
meant to cache the relevant parts of this work. It currently uses
a copy-paste of the layout code in QPainter::drawText() and 99% of the
time in QPainter::drawStaticText() is spent in drawTextItem(). We can
use QTextLayout here instead without losing much.
|
|\
| |
| |
| |
| | |
Conflicts:
dist/changes-4.6.1
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (49 commits)
Reverted two commits that were pushed to the wrong branch.
Use the new QTextCodec api in the QXmlStreamWriter.
Added new functions to QTextCodec that accept ConversionFlags.
Fix passing of arguments to syncqt
doc: Fixed typos.
Fixes: Fix spinbox with NoButton style in QGtkStyle
doc: Explained parameter value defaults where appropriate.
Cocoa: Fix painting errors on QGLWidget resizing.
Fix broken QGLWidget::renderPixmap on Mac/Carbon
Fixes: Setting any style sheet breaks checkbox positioning
Fixes: MenuItem size fixes and missing separator with Gtk+
Autotest: add a test for QNAM's HTTP cache handling code
QNAM HTTP: just use the expirationDate in the code that validates the cache
QNAM HTTP: change the caching semantics to match documentation
QNAM HTTP: fix the caching algorithm from RFC 2616
Avoid repeatedly calling LookupAccountSid in QFSFileEngine::owner
improve readability a bit more
fix styling; improve readability
make it possible to retrieve name of the user who owns the file
Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit/qtwebkit-4.6 ( 99ccc1c3e4db5354246720f9b9aa3d282e64497d )
...
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (49 commits)
Reverted two commits that were pushed to the wrong branch.
Use the new QTextCodec api in the QXmlStreamWriter.
Added new functions to QTextCodec that accept ConversionFlags.
Fix passing of arguments to syncqt
doc: Fixed typos.
Fixes: Fix spinbox with NoButton style in QGtkStyle
doc: Explained parameter value defaults where appropriate.
Cocoa: Fix painting errors on QGLWidget resizing.
Fix broken QGLWidget::renderPixmap on Mac/Carbon
Fixes: Setting any style sheet breaks checkbox positioning
Fixes: MenuItem size fixes and missing separator with Gtk+
Autotest: add a test for QNAM's HTTP cache handling code
QNAM HTTP: just use the expirationDate in the code that validates the cache
QNAM HTTP: change the caching semantics to match documentation
QNAM HTTP: fix the caching algorithm from RFC 2616
Avoid repeatedly calling LookupAccountSid in QFSFileEngine::owner
improve readability a bit more
fix styling; improve readability
make it possible to retrieve name of the user who owns the file
Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit/qtwebkit-4.6 ( 99ccc1c3e4db5354246720f9b9aa3d282e64497d )
...
|
| | | |\
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
QIODevice: Fix readAll()
Temporary hackiesh solution to prevent BOM in the xml data.
Fixed qxmlstream autotest when using shadow builds.
Attempt at readding the capital P headers for Phonon
Remove special Phonon processing from syncqt.
Use the lowercase/shortname.h headers for Phonon includes
Fixes a crash when setting focus on a widget with a focus proxy.
Update copyright year to 2010
doc: Clarified activeSubControls and subControls.
Remove warning "statement with no effect"
doc: Clarified that .lnk files are System files on Windows.
|
| | | | |
| | | | |
| | | | |
| | | | | |
Reviewed-by: Trust Me
|
| | | | |
| | | | |
| | | | |
| | | | | |
Reviewed-by: Samuel
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Lines that are longer than 2^15 will overflow in qgrayraster.c
so we need to clip them. Also, we need to clip the bounding
rectangle to avoid an endless clip-loop
Task: http://bugreports.qt.nokia.com/browse/QTBUG-6198
Reviewed-by: Samuel
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
Task: http://bugreports.qt.nokia.com/browse/QTBUG-6721
Reviewed-by: Samuel
|
|\ \ \ \
| |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2:
Doc: the QTextDecoder need to be destroyed, reflect that in the example
added CONFIG += console to qlalr.pro
Add new benchmark for some qtext features.
Add texture glyph width cache default.
Update changes file
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For maemo6 need to increase the cache width to 1024 to avoid
text corruption using SGX 1.4.
Reviewed-by: Tom Cooksey
Reviewed-by: Harald Fernengel
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
Symbian.
QS60PaintEngine returned wrong device in QPaintEngine::paintDevice().
Task-number: QTBUG-5870
Reviewed-by: Jason Barron
|
| |
| |
| |
| |
| |
| |
| | |
We should check for the fully opaque and fully transparent special
cases, like we do in the dedicated image blend functions.
Reveiewed-by: Gunnar Sletta
|
|/ |
|
|
|
|
| |
Reviewed-By: Samuel Rødal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds new NEON configure test and -no-neon configure option. NEON
implementations can also be turned off by setting the QT_NO_NEON
environment variable.
Performance improvements (in frames per second):
- Blending ARGB32 on RGB32/ARGB32, mostly opaque: 71 %
- Blending ARGB32 on RGB32/ARGB32, no opaque pixels: 108 %
- Blending ARGB32 on RGB32/ARGB32, with 0.5 opacity: 158 %
- Blending RGB32 on RGB32/ARGB32, with 0.5 opacity: 189 %
Task-number: QTBUG-6684
Reviewed-by: Gunnar Sletta
Reviewed-by: Paul Olav Tvete
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public: (31 commits)
Fixed qstylesheetstyle benchmark for Symbian
Fixed qdiriterator benchmark for Symbian
Fixed events benchmark postEvent function
Fix for QTBUG-4908 SVG transparency rendering problem.
Long informative texts causes messagebox to grow outside of screen area
qreal-ization
qreal-ization
qreal-ization
QS60Style: Remove layouts with mirrored information
Fixed qgraphicsview autotest build for winscw.
Enabled input method update code for all platforms.
(ODBC) Fixes segfault when error string is larger than 256 chars.
Fixed QGraphicsView benchmark for Symbian.
FEP indicator shown in status pane when it should not
Skipped the most memory intensive tests in QByteArray benchmark.
qreal-ization
qreal-ization
QS60Style: Theme graphics for QSlider in 3.1
QS60Style: Groove changes caused build break of S60 3.1
Slow spinbox on N95 when using keys Up/Down
...
|
| |
| |
| |
| |
| |
| |
| |
| | |
QPixmap::copy discarded alpha channel.
This fix also removes usage of member variables CFbsBitGc and
CFbsBitmapDevice. Now those are used only in function scope.
Reviewed-by: Sami Merila
|
| |\
| | |
| | |
| | |
| | | |
Conflicts:
src/s60installs/bwins/QtGuiu.def
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Using math wrapper functions instead direct call. This gives us top-level
control to what (single/double) precision we are effectively using.
Task-number: QTBUG-4894
Reviewed-by: janarve
Reviewed-by: Kim Motoyoshi Kalland
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| | |
Do the blur in half the resolution in software and then upload the
result as a texture and smooth-scale it on the GPU. This leads to stable
and decent performance regardless of the blur radius, and simplifies the
implementation quite a bit.
Reviewed-by: Bjørn Erik Nilsen
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The paper size determination requires a cupsGetPPD(), which can be a slow
HTTP download.
So doing it on demand makes QPrinterInfo::defaultPrinter() much faster,
because it doesn't actually need the paper sizes at all. Before this fix,
it was requesting the PPD file of every known CUPS printer, every time
it was called.
My battery of unittests for code that uses QPrinter went from 19 minutes
when the cups print server is switched off, to 13 seconds!
This fix also removes some code duplication, which is always nice.
Task-number: 232664, QTBUG-3033
Reviewed-by: Trond
|
| | |
|
| | |
|
|\ \ |
|
| | |
| | |
| | |
| | | |
Reviewed-by: Eskil
|
| |\ \ |
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | | |
uses of QT_DEPRECATED must be protected by #ifdef
Task-number: QTBUG-6649
Reviewed-by: João Abecasis
|
| | |
| | |
| | |
| | | |
Reviewed-by: Eskil
|
| |/ |
|
|/
|
|
| |
Reviewed-by: Tom
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
drawing vertically aligned text
When text is drawn in a font which has an odd-numbered height and it's
vertically aligned in a rectangle which has an even-numbered height
(or vice versa) we have to round the y-position, as the backend cannot
position the text in subpixels. The y-position in this case will be at
half a pixel and we can either round it up or down without increasing
the size of the error.
In Qt 4.5, the font height would be reported as one higher than what it
actually was. Therefore, in many widgets such as comboboxes, we would
appear to round the y-position down when faced with this issue. This is
apparently also what Windows does, probably because most latin fonts
have more glyphs extending into the maximum descent than the ascent.
In Qt 4.6, the font height bug was fixed, and since we use qRound() we
now round half-pixels up, thus moving all the text faced with this issue
one pixel down. This looks odd and inconsistent, both with the platform
look and feel and with older versions of Qt.
The patch reverts to the old look and feel by rounding the half pixels
down rather than up for the particular case in question.
Task-number: QTBUG-6578
Reviewed-by: Samuel
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In the paintEvent of the widget used in a QGraphicsProxyWidget, the worldMatrix was wrongly used by the painter instead of the deviceMatrix.
Similar problem in the WindowsXP Style, the worldMatrix was used instead of the deviceMatrix for determining if the widget is transformed (reviewed by eblomfel).
Task-number: QTBUG-5939
Reviewed-by: bnilsen
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
|