| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
|
|
| |
We would disregard the first glyph in each line when calculating the
required height of the line in the glyph cache. If the first glyph
was taller than any of the other glyphs in the same line, the glyph
drawn underneath it in the cache could potentially overlap it, and
you would see it as dots or lines underneath the glyph in the output.
Task-number: QTBUG-14806
Reviewed-by: Jiang Jiang
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two possible failures when using the glyph cache on raster engine and
populating the cache with very many glyphs:
1. Change 72f161739b270b01807f97cd853030440f0fd430 caused the maximum
height of the glyph cache to be 32768, which was not sufficient for
large fonts with very many characters (e.g. Chinese text)
2. Since we are using QPainter to draw into the glyph cache for RGB32
glyphcaches, and QPainter does not support very high coordinates,
we need to create a reference image that references a section of the
glyph cache and paint into that instead.
Task-number: QT-3971
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the OpenGL glyph cache filled up (the max texture size on the
hardware was exceeded) the characters would be drawn as black blocks
instead. As a work-around for this, the cache will now be cleared and
repopulated whenever this happens, meaning that once in a while (when
a lot of different glyphs have been drawn in a font) there will be a
performance hit. A more complete solution is described in QTBUG-13784,
but this requires so much refactoring that it was deemed too risky for
a patch release. This patch fixes the problem with a small penalty
and low risk.
Task-number: QT-3971
Reviewed-by: Samuel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our glyph caching system doesn't take GL texture size limitation into
account, and assumes you can create an infinitely large texture.
On top of that, the cache will never create a cache that is wider
than 256, or QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH, which means we'll
hit the texture size limit even faster. With this patch the entire
texture is utilized. However, to fix in properly we need to support
having multiple texture for each font engine. That will be fixed
shortly (see task QTBUG-13784).
Task-number: QT-3971
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the paint engine now transforms the prerendered glyphs instead of
rendering transformed glyphs as paths, we need to turn on texture
filtering to avoid antialiasing artifacts. In order to do this, we also
need to pad the glyphs in the glyph cache, otherwise you will get
artifacts when sampling the area around the glyph's bounding rect (where
there might be other glyphs.) This done by adding a glyphPadding()
function to the cache which returns the number of pixels to pad between
each glyph.
Task-number: QTBUG-9706
Reviewed-by: Tom
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The height of the row is not only decided by the maximum height of the
set of glyphs currently being added to the glyph cache, but also the
height of the glyphs previously added to the current line in the glyph
cache. To minimize the space used, we now calculate the maximum height
for glyphs per line, and use this as the vertical advancement when
positioning the next line in the cache. The change also removes a
redundant test ((c_x + c.w > c.h) is caught earlier on and will
always be false at this point.)
Task-number: QTBUG-9176
Reviewed-by: Trond
|
|
|
|
|
|
|
|
| |
Static linking doesn't work with two definitions of the function,
one in QtGui and another in QtOpenGL. Make the one in QtGui static.
Task-number: QTBUG-9170
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
|
| |
We were using the height of the texture to position the next row,
rather than just adding the rowHeight. This used to work when the
texture cached grew by rowHeight, now it grows to next power of
two...
Reviewed-by: Eskil
|
| |
|
|
|
|
|
|
| |
Store all glyphs with index < 256 in a pointer array for fast lookup
Reviewed-by: Benjamin Poulain
|
|
|
|
|
|
|
|
|
|
| |
Making the size of the glyph cache a power of two can potentially
have performance benefits on hardware accelerated graphics systems.
Since it will also decrease the number of times the cache has to be
copied, and therefore implies a speed-up for all paint engines, it has
been implemented for all of them in general.
Reviewed-by: Gunnar
|
|
|
|
| |
Revert some unnecessary changes from the QStaticText diff.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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 )
...
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|/
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
The left bearing of the glyph has to be rounded before truncated,
otherwise the subpixel positioning of the glyph will be lost. The
visible consequence of this was on Mac Cocoa where certain pairs of
glyphs would get an extra pixel of space between them when running with
graphics system raster. With small fonts it would look pretty bad.
Task-number: QTBUG-5430
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
|
| |
We would assume font smoothing on the mac was always turned on, giving
poor text rendering in the cases where it was not. This implementation
mirrors querying the cleartype setting on Windows, checking the setting
on application initialization and rendering into an 8 bit cache if it
is turned off.
Task-number: QTBUG-4881
Reviewed-by: Morten Johan Sørvig
|
|
|
|
| |
Reviewed-by: Trust Me
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
demos/boxes/glshaders.cpp
demos/boxes/vector.h
demos/embedded/fluidlauncher/pictureflow.cpp
demos/embedded/fluidlauncher/pictureflow.h
doc/src/desktop-integration.qdoc
doc/src/distributingqt.qdoc
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/geometry.qdoc
doc/src/groups.qdoc
doc/src/objecttrees.qdoc
doc/src/platform-notes.qdoc
doc/src/plugins-howto.qdoc
doc/src/qt3support.qdoc
doc/src/qtdbus.qdoc
doc/src/qtdesigner.qdoc
doc/src/qtgui.qdoc
doc/src/qtmain.qdoc
doc/src/qtopengl.qdoc
doc/src/qtsvg.qdoc
doc/src/qtuiloader.qdoc
doc/src/qundo.qdoc
doc/src/richtext.qdoc
doc/src/topics.qdoc
src/corelib/tools/qdumper.cpp
src/gui/embedded/qkbdpc101_qws.cpp
src/gui/embedded/qkbdsl5000_qws.cpp
src/gui/embedded/qkbdusb_qws.cpp
src/gui/embedded/qkbdvr41xx_qws.cpp
src/gui/embedded/qkbdyopy_qws.cpp
src/gui/embedded/qmousebus_qws.cpp
src/gui/embedded/qmousevr41xx_qws.cpp
src/gui/embedded/qmouseyopy_qws.cpp
src/gui/painting/qpaintengine_d3d.cpp
src/gui/painting/qwindowsurface_d3d.cpp
src/opengl/gl2paintengineex/glgc_shader_source.h
src/opengl/gl2paintengineex/qglpexshadermanager.cpp
src/opengl/gl2paintengineex/qglpexshadermanager_p.h
src/opengl/gl2paintengineex/qglshader.cpp
src/opengl/gl2paintengineex/qglshader_p.h
src/opengl/util/fragmentprograms_p.h
src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp
src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp
src/script/parser/qscript.g
src/script/qscriptarray_p.h
src/script/qscriptasm_p.h
src/script/qscriptbuffer_p.h
src/script/qscriptclass.cpp
src/script/qscriptclassdata_p.h
src/script/qscriptcompiler.cpp
src/script/qscriptcompiler_p.h
src/script/qscriptcontext.cpp
src/script/qscriptcontext_p.cpp
src/script/qscriptcontext_p.h
src/script/qscriptcontextfwd_p.h
src/script/qscriptecmaarray.cpp
src/script/qscriptecmaarray_p.h
src/script/qscriptecmaboolean.cpp
src/script/qscriptecmacore.cpp
src/script/qscriptecmadate.cpp
src/script/qscriptecmadate_p.h
src/script/qscriptecmaerror.cpp
src/script/qscriptecmaerror_p.h
src/script/qscriptecmafunction.cpp
src/script/qscriptecmafunction_p.h
src/script/qscriptecmaglobal.cpp
src/script/qscriptecmaglobal_p.h
src/script/qscriptecmamath.cpp
src/script/qscriptecmamath_p.h
src/script/qscriptecmanumber.cpp
src/script/qscriptecmanumber_p.h
src/script/qscriptecmaobject.cpp
src/script/qscriptecmaobject_p.h
src/script/qscriptecmaregexp.cpp
src/script/qscriptecmaregexp_p.h
src/script/qscriptecmastring.cpp
src/script/qscriptecmastring_p.h
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptengine_p.h
src/script/qscriptenginefwd_p.h
src/script/qscriptextenumeration.cpp
src/script/qscriptextenumeration_p.h
src/script/qscriptextqobject.cpp
src/script/qscriptextqobject_p.h
src/script/qscriptextvariant.cpp
src/script/qscriptfunction.cpp
src/script/qscriptfunction_p.h
src/script/qscriptgc_p.h
src/script/qscriptmember_p.h
src/script/qscriptobject_p.h
src/script/qscriptprettypretty.cpp
src/script/qscriptprettypretty_p.h
src/script/qscriptvalue.cpp
src/script/qscriptvalueimpl.cpp
src/script/qscriptvalueimpl_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/qscriptvalueiteratorimpl.cpp
src/script/qscriptxmlgenerator.cpp
src/script/qscriptxmlgenerator_p.h
tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
tests/auto/qkeyevent/tst_qkeyevent.cpp
tools/linguist/shared/cpp.cpp
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|\ \
| |/ |
|
| |
| |
| |
| | |
Reviewed-by: Trust Me
|
|/
|
|
|
|
|
|
|
| |
Now there's only a copy of the texture glyph cache in graphics memory,
avoiding the system memory copy that we used earlier. In addition the
texture will use the GL_ALPHA texture format when possible, making it
consume less graphics memory as well.
Reviewed-by: Tom
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reworked the 85f98acaa3a38079071bea711e43c9a86edec1f6 fix, since
it broke glyph positioning in the GL engine under Windows.
Instead of changing the glyph cache margin, which impacts where
the glyph is positioned, we just make the image the glyph is drawn
into 4 pixels bigger in width/heigth.
The margin in QImageTextureGlyphCache needs to be reworked..
Task-number: 254450
Reviewed-by: Eskil
|
|
|
|
|
|
|
|
|
|
| |
Some text drawn with OpenType fonts where cut off by a pixel or two
under certain circumstances. This adds an additional 2 pixel pad margin
to the glyph cache entries. The padding behaves slightly different
when ClearType is enabled/disabled, hence the general 2 pixel padding.
Task-number: 246196
Reviewed-by: Samuel
|
|
|