| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WebKit draws rounded rectangles by setting a rounded rect path as a
clip and then filling the clip. This had problems when QVG_SCISSOR_CLIP
was enabled because the scissor would only clip to the bounding box
of complex paths. Thus, rounded rectangle clips were turned into
normal rectangle clips.
This change will make the scissor clipping code subdivide complex paths
into rectangles and use a tighter clip if the number of rectangles is
less than or equal to VG_MAX_SCISSOR_RECTS. If it is greater, then it
will fall back to the bounding box of the path.
Task-number: QT-3372
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
|
| |
This change introduces the extra blending modes that are
defined in the VG_KHR_advanced_blending extension. Patch
originally provided by contributor:
http://qt.gitorious.org/qt/qt/merge_requests/505
Reviewed-by: Julian de Bhal
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Correctly use the positions calculated by getGlyphPositions
to draw the glyphs.
Simplify the logic a bit so that we don't need the
glyphTransform anymore, but can instead just use the
pathTransform for text drawing as well.
Tested with latin, arabic, hebrew and Hindi text
Task-number: QT-3300
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QVGPaintEngine calls vgDrawGlyphs() to draw the glyphs of a
QTextItem. vgDrawGlyphs(), which is an official OpenVG function, and
not implemented in Qt itself, expects glyphs coordinates differently
than Qt's glyph painting loops of other paint engines expect.
Therefore, we need to handle RTL text separately in
QVGPaintEngine::drawTextItem(). Rhys Weatherley provided this patch.
This issue is not Symbian specific, but rather QVGPaintEngine
specific.
Task-number: QT-3140
Reviewed-by: Rhys Weatherley
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RVCT 4 is far more strict with regards to symbol visiblity that RVCT
2.2, and will hide symbols unless all references have default visibility
in the object files. Update the various places in Qt code where the
symbol visibility was set incorrectly for DLL-based platforms (those that
use __declspec(dllimport) and (dllexport).
Note: QtWebkit and QtScript are fixed in different commits.
Task-number: QTBUG-9903
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
| |
Summary so far: paths and images do not need the 0.5 adjustment
to the transform, but glyphs do. Not sure why glyphs do, but the
fonts definitely look wrong without the adjustment.
Task-number: QT-3192
Reviewed-by: trustme
|
|
|
|
|
|
|
| |
Off in the vertical direction this time; previously was horizontal.
Task-number: QT-2999
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
|
|
| |
Path transforms need to be adjusted by 0.5 for the difference
in OpenVG and Qt co-ordinate systems. Image transforms do not
need to be adjusted because OpenVG implicitly adjusts by 0.5.
Task-number: QT-2999
Reviewed-by: Sarah Smith
|
|
|
|
|
| |
Task-number: QT-3033
Reviewed-by: Julian de Bhal
|
|
|
|
|
|
|
|
|
| |
Upon further investigation, vgClearPath() doesn't help as much
on target devices as just making a new path.
Revert "Improve performance of VGPath creation by reusing the same path"
This reverts commit 8597e03495f54614e53c6063f1f13077a08109fd.
|
|
|
|
|
|
|
|
| |
The vgClearPath() function can be used to clear a path for reuse
more efficiently than destroying the path and creating a new one.
Task-number: QT-2974
Reviewed-by: Daniel Pope
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the brush is not totally opaque we should not use vgClear() at this
point because vgClear() does not support blending. Instead it writes
the values directly into the surface which clobbers any existing
content. The bug exhibits itself when a child widget fills itself with
any transparent color. Instead of blending with the parent widget's
content, it writes the semi-transparent color directly to the surface,
overwriting the parent content and leaving the surface in a somewhat
undefined state because the alpha channel is not honoured unless
Qt::WA_TranslucentBackground is set.
Task-number: QTBUG-8007
Reviewed-by: Rhys Weatherley
|
|
|
|
|
| |
Task-number: QTBUG-7864
Reviewed-by: Sarah Smith
|
|
|
|
|
| |
Task-number: QTBUG-7791
Reviewed-by: Sarah Smith
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| | |
Task-number: QTBUG-7015
Reviewed-by: Daniel Pope
|
|/
|
|
|
| |
Task-number: QTBUG-7051
Reviewed-by: Daniel Pope
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some OpenVG GPU's have limitations on the amount of memory
available to create VGImage's. When the memory runs out,
vgCreateImage() will fail.
This change introduces QVGImagePool, which keeps track of all
QVGPixmapData image allocations and ejects least-recently-used
pixmaps when GPU memory is exhausted.
Task-number: QT-2554
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
|
|
| |
When a complex transform was set, clip(QVectorPath) would call
clip(QRect) with the control point rect, which would then turn
around and say "transform is complex, call clip(QVectorPath)",
causing an infinite loop until stack crash. Remove the "fall back
to vector path" case as it isn't useful for scissor-only clipping.
Doesn't affect mask-based clipping.
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
|
|
| |
Previously, the composition helper would use the VG window surface
private structure to get the VGImage to blit. This change passes
the VGImage and size values in directly so that the composition
helper can also be used to blit GL surfaces that have been converted
into a VGImage via an EGLImage.
Reviewed-by: Tom Cooksey
|
|
|
|
|
| |
Task-number: QT-2026
Reviewed-by: Jason Barron
|
|
|
|
|
|
|
| |
QRegion::numRects() is marked obsolete.
Removed all usage of the old function inside Qt and test-cases.
Reviewed-by: Andreas Aardal Hanssen
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
| |
The drawCursorPixmap() function is more efficient and can render
the QImage form of the QPixmap directly if necessary.
Reviewed-by: trustme
|
|
|
|
|
| |
Task-number: QT-2322
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
| |
This fixes an "off by 1" bug in screen compositing with OpenVG
that left lines all over the background when windows were moved.
Task-number: QT-2322
Reviewed-by: Sarah Smith
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the drop shadow was colorizing the incoming
image and then blurring the colorized version. This change
first blurs the image to an alpha-only VGImage and then uses
that VGImage as a stencil to draw the drop shadow color.
This way, there is only 1 filter step and a draw instead of
2 filter steps and a draw. The result is to make the performance
of the drop shadow filter almost identical to the blur filter.
Reviewed-by: trustme
|
|
|
|
|
| |
Task-number: QT-2016
Reviewed-by: trustme
|
|
|
|
|
|
|
|
| |
If the scissor is being used to clip instead of the mask, use the
bounding rectangle of the clip path if it cannot be handled as a
simple rectangle.
Reviewed-by: trustme
|
|
|
|
|
|
|
| |
Best performance will be acheived with OpaqueHint and drawing
the full pixmap rather than sub-regions.
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QPF implementation of alphaMapForGlyph() was returning
color values of RGBA = (a, a, a, 255) instead of (0, 0, 0, a),
which was inconsistent with all the other font engines.
This inconsistency caused some QPF-specific workarounds in the
OpenGL and OpenVG paint engines. This change removes the workarounds
and makes QPF generate the right colors from the start. Paint
engines that ignore the color table or which don't use the
alphaMapForGlyph() function (e.g. raster) are not affected.
Reviewed-by: Paul
|
|
|
|
|
|
|
|
|
|
| |
The multitouch/dials example was displaying rendering artifacts
on the dials in the default style. This was due to incorrect
VGPath construction when sizeof(qreal) == sizeof(VGfloat).
It was adding two VG_CUBIC_TO_ABS elements per cubic instead of one.
Task-number: QT-2035
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
|
|
|
|
| |
Previously rounded rectangles were converted into a QVectorPath
and then a VGPath. This change creates the VGPath directly without
an intermediate step and was made possible by change dd3e4308.
Reviewed-by: trustme
|
|
|
|
| |
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Engine-specific pixmap filters were being created, used, and destroyed
every time draw() was called on QPixmapColorizeFilter, QPixmapBlurFilter,
and so on. This had a heavy performance penalty and made it difficult
for the GL paint engine to cache shaders from one request to the next.
A generic filter can request an engine-specific filter that matches its
parameters. The engine can either create a new one or return a previously
allocated filter object.
Ownership of engine-specific pixmap filter objects is moved to the
paint engine itself.
Reviewed-by: Andrew den Exter
Reviewed-by: Michael Brasser
Reviewed-by: Michael Goddard
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
| |
Previously we were using QPaintEngine::syncState() which is not ideal
naming-wise, since it actually prepares for native painting instead of
syncing the painter's state to native state.
Reviewed-by: Trond
|
|
|
|
|
|
|
|
|
|
| |
TexturePattern brushes were sometimes turning all black with OpenVG.
This was due to the vgDestroyImage() destroying the cached VGImage
in the QVGPixmapData. We only need to use vgDestroyImage() if the
QPixmap is not backed up by a QVGPixmapData (bitmaps and pixmaps
from other paint engines).
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: Sarah Smith
|
|
|
|
| |
Reviewed-by: Trust Me
|
|
|
|
|
|
|
|
|
| |
If the QPainterPath contains a structure that looks like a simple
rectangle, then use the faster clip(QRect) function instead of a
full VGPath-based render call.
Task-number: QT-64
Reviewed-by: trustme
|
|
|
|
|
|
|
|
| |
This change should improve performance of single-rectangle clip regions
by avoiding the overhead of creating and intersecting QRegion objects.
Task-number: QT-64
Reviewed-by: trustme
|
|
|
|
|
|
|
|
|
|
| |
"Special case: if the intersection of the system clip and the region
is a single rectangle, then use the scissor for clipping." It was
doing the intersection but then didn't use the intersection to test
for the single-rectangle case.
Task-number: QT-64
Reviewed-by: trustme
|
|
|
|
| |
Reviewed-by: trustme
|
|
This change also moves the EGL support classes from QtOpenGL to QtGui
so they can be shared between OpenGL and OpenVG.
|