summaryrefslogtreecommitdiffstats
path: root/src/openvg
Commit message (Collapse)AuthorAgeFilesLines
...
* Use vgClear() to clear the background during screen compositing.Rhys Weatherley2009-10-271-18/+46
| | | | | | | | 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
* Optimize QVGPixmapDropShadowFilter by removing colorize stepRhys Weatherley2009-10-193-52/+25
| | | | | | | | | | | | | 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
* Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6Gunnar Sletta2009-10-196-55/+166
|\
| * Implement the strength parameter for OpenVG colorize filtersRhys Weatherley2009-10-163-54/+40
| | | | | | | | | | Task-number: QT-2016 Reviewed-by: trustme
| * qt_paint_device_metric() for fetching metricsRhys Weatherley2009-10-151-1/+1
| | | | | | | | | | | | | | | | | | | | Custom window surfaces, graphics systems, and Qt/Embedded screen drivers often need to access QPaintDevice::metric(), but it is protected. Hence the growing number of friends in QWidget and QImage. The qt_paint_device_metric() function provides a more future-proof approach that doesn't require lots of friends. Reviewed-by: Gunnar
| * Improve scissor clipping in the OpenVG engineRhys Weatherley2009-10-131-0/+4
| | | | | | | | | | | | | | | | 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
| * Explicitly request the alpha mask in the EGL configurationRhys Weatherley2009-10-131-0/+4
| | | | | | | | | | | | | | | | The EGL implementation used in S60/NGA for OpenVG does not return a configuration with alpha masking unless it is explicitly requested. Reviewed-by: Julian de Bhal
| * Implement qDrawPixmaps for the OpenVG paint engine.Rhys Weatherley2009-10-132-0/+117
| | | | | | | | | | | | | | Best performance will be acheived with OpaqueHint and drawing the full pixmap rather than sub-regions. Reviewed-by: trustme
* | Added QPixmapData::createCompatiblePixmapData() used by QPixmap::copy().Samuel Rødal2009-10-142-0/+7
|/ | | | | | QPixmap::copy() now returns a pixmap with the same pixmap backend. Reviewed-by: Gunnar Sletta
* Make it possible to implement engine-specific drop shadow filtersRhys Weatherley2009-10-052-30/+17
| | | | | | | | | | | | It wasn't possible for the paint engine to override the drop shadow filter because QPixmapDropShadowFilter::draw() was not asking for an engine-specific filter object. Also, change the OpenVG filter to use vgGaussianBlur() instead of vgConvolve(), and draw the original image on top of the shadow. Task-number: QTBUG-4583 Reviewed-by: trustme
* Make QPF's implementation of alphaMapForGlyph() consistent.Rhys Weatherley2009-09-291-14/+0
| | | | | | | | | | | | | | 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
* Remove the storage of the EGLSurface from QEglContextRhys Weatherley2009-09-251-7/+5
| | | | Reviewed-by: Sarah Smith
* Push the "lazy doneCurrent" logic down from QtOpenVG into QEglRhys Weatherley2009-09-243-108/+29
| | | | | | | | | | | | | | QtOpenVG was doing a lot of housekeeping to avoid having to switch EGL contexts if the same surface was used over and over. This housekeeping really belongs in the QEgl layer so that QtOpenGL could potentially use it as well. This change also adds some overrides for makeCurrent(), swapBuffers(), and destroySurface() that take an EGLSurface directly. This is the first step in separating EGL surface management from context management. Reviewed-by: Sarah Smith
* Fix cubic paths in OpenVGRhys Weatherley2009-09-231-3/+3
| | | | | | | | | | 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
* Avoid calling ensureContext() in setGeometry.Jason Barron2009-09-231-1/+0
| | | | | | | | | We can delay calling ensureContext() since it will happen when painting begins anyway. There is a chance that we can get to this function when a window is being hidden and if this is the first thing that happens in the application, there is no need to call ensureContext() yet. Reviewed-by: Rhys Weatherley
* Modify functions for native pixmap data conversion on Symbian.Jason Barron2009-09-232-129/+141
| | | | | | | | | | | | | We need a way to support converion to and from multiple native pixmap types from multiple pixmap backends. Instead of adding more virtual functions to QPixmapData, make the existing one more generic but pass an opaque pointer and a type and do some internal casting. Currently this function is Symbian only, but could easily be extended to work on other platforms. Reviewed-by: Aleksandar Babic Reviewed-by: Jani Hautakangas
* Calculate scissor correctly in OpenVG engineRhys Weatherley2009-09-211-1/+1
| | | | Reviewed-by: trustme
* Accelerate drawRoundedRect() for the OpenVG paint engineRhys Weatherley2009-09-202-0/+100
| | | | | | | | 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
* Adding support for symbian graphics resources.Aleksandar Sasha Babic2009-09-182-1/+191
| | | | | | | | | | | | | | This enables us to convert from and to new Symbian type of graphics resource, namely SgImage. This only supported with the OpenVG graphics system. On other graphics systems this will return null QPixmap. Conflicts: src/corelib/global/qglobal.h src/gui/image/qpixmap.h src/gui/image/qpixmap_s60.cpp Reviewed-by: Jason Barron
* Colorize filter for OpenVG doesn't currently support strength()Rhys Weatherley2009-09-181-0/+3
| | | | Reviewed-by: trustme
* Reduce overhead of paint engine-specific pixmap filtersRhys Weatherley2009-09-162-12/+28
| | | | | | | | | | | | | | | | | | | 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
* Fix crash in QVGSharedContext shutdownRhys Weatherley2009-09-161-0/+4
| | | | | | | | The reference count was reducing down to zero during paint engine cleanup when we weren't ready to destroy the context. Artificially increase it to prevent the early context destroy. Reviewed-by: Sarah Smith
* Update license headers again.Jason McDonald2009-09-0913-52/+52
| | | | Reviewed-by: Trust Me
* Update tech preview license header for files that are new in 4.6.Jason McDonald2009-08-3111-143/+143
| | | | Reviewed-by: Trust Me
* Merge branch '4.5' into 4.6Thiago Macieira2009-08-312-26/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Destroy EGL window surface when direct VG surface is deletedRhys Weatherley2009-08-301-0/+6
| | | | | | | OpenVG window surfaces were leaking because the QVGEGLWindowSurfaceDirect destructor was previously not cleaning up the EGLSurface object. Reviewed-by: trustme
* Improved QPainter API for allowing native painting in GL / VG.Samuel Rødal2009-08-262-33/+33
| | | | | | | | 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
* Don't dereference VGImage's that come from QVGPixmapDataRhys Weatherley2009-08-251-1/+9
| | | | | | | | | | 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
* Implement the blur pixmap filter for OpenVG using vgGaussianBlur()Rhys Weatherley2009-08-253-0/+74
| | | | Reviewed-by: Sarah Smith
* Fix compilation of qpaintengine_vg.cpp.. again.Jason Barron2009-08-201-1/+1
| | | | | | | After the latest round of changes to Q_DECLARE_PRIVATE to use templates, we no longer need to call data() because Q_D() will expand to d_func() which will always return a pointer to the actual object instead of the scoped pointer.
* Merge commit 'qt/master'Jason Barron2009-08-181-6/+6
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/src/examples.qdoc doc/src/plugins-howto.qdoc doc/src/topics.qdoc examples/phonon/musicplayer/mainwindow.cpp src/3rdparty/freetype/src/base/ftobjs.c src/corelib/global/qglobal.h src/corelib/tools/qalgorithms.h src/corelib/tools/qshareddata.cpp src/corelib/tools/qsharedpointer.cpp src/corelib/tools/tools.pri src/corelib/xml/qxmlstream.h src/gui/painting/painting.pri src/gui/widgets/qdatetimeedit.cpp tests/auto/qdesktopservices/qdesktopservices.pro tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp tests/auto/qtextcodec/test/test.pro
| * Use LIBS_PRIVATE on Mac and X11.Thiago Macieira2009-08-171-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On the Mac, it means "-framework ApplicationServices -framework Carbon -framework AppKit" are no longer part of the default LIBS in Qt applications. This required a lot of fixes where we used Mac-specific code in Qt. On X11, it was very straightforward, because we apparently use very little of X11 outside QtGui. I haven't changed the Windows-specific LIBS paths, because I don't know how Windows behaves. Windows has DLLs, but it links to static "import" libraries. So is it static linking or dynamic linking? Reviewed-By: Marius Storm-Olsen
* | Merge commit 'qt/master'Jason Barron2009-08-1313-13/+13
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: examples/opengl/samplebuffers/glwidget.cpp src/corelib/io/qfsfileengine_unix.cpp src/corelib/kernel/qobject.cpp src/corelib/tools/qsharedpointer.cpp src/gui/gui.pro tests/auto/qhttp/tst_qhttp.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp
| * Update contact URL in license headers.Jason McDonald2009-08-1213-13/+13
| | | | | | | | Reviewed-by: Trust Me
* | Merge commit 'qt/master'Jason Barron2009-08-101-0/+25
|\ \ | |/
| * Add a private function for conversion a QPixmap into a VGImageRhys Weatherley2009-08-101-0/+25
| | | | | | | | | | | | | | | | Custom OpenVG pixmap filters written by users will need to access the VGImage form of a QPixmap. The qPixmapToVGImage() function is provided for this purpose, as a private API. Reviewed-by: Sarah Smith
* | Merge commit 'qt/master-stable'Jason Barron2009-07-272-8/+185
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.exe qmake/Makefile.unix qmake/generators/makefile.cpp src/corelib/global/qglobal.h src/corelib/kernel/kernel.pri src/corelib/kernel/qcoreevent.cpp src/corelib/kernel/qsharedmemory_unix.cpp src/gui/graphicsview/qgraphicsscene.cpp src/gui/kernel/qaction.cpp src/gui/kernel/qaction.h src/gui/kernel/qaction_p.h src/gui/kernel/qapplication.cpp src/gui/kernel/qapplication.h src/gui/kernel/qwidget.cpp src/gui/kernel/qwidget.h src/gui/kernel/qwidget_mac.mm src/gui/painting/qgraphicssystemfactory.cpp src/gui/styles/qwindowsstyle.cpp src/gui/text/qfontengine_qpf.cpp src/gui/widgets/qabstractscrollarea_p.h src/network/access/qnetworkaccessdebugpipebackend.cpp src/network/socket/qlocalsocket_unix.cpp src/network/socket/qnativesocketengine_p.h src/network/socket/qnativesocketengine_unix.cpp src/openvg/qpaintengine_vg.cpp tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp tests/auto/qcssparser/qcssparser.pro tests/auto/qdir/tst_qdir.cpp tests/auto/qfile/tst_qfile.cpp tests/auto/qobject/tst_qobject.cpp tests/auto/qpathclipper/qpathclipper.pro tests/auto/qprocess/tst_qprocess.cpp tests/auto/qsettings/tst_qsettings.cpp tests/auto/qsharedpointer/qsharedpointer.pro tests/auto/qsqlquerymodel/qsqlquerymodel.pro tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro tests/auto/qsqltablemodel/qsqltablemodel.pro tests/auto/qsqlthread/qsqlthread.pro tests/auto/qwidget/tst_qwidget.cpp
| * OpenVG: short-cut clipping for QPainterPath's that are just rectsRhys Weatherley2009-07-021-0/+50
| | | | | | | | | | | | | | | | | | 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
| * OpenVG: override QPaintEngineEx::clip(QRect) and handle specially.Rhys Weatherley2009-07-022-2/+129
| | | | | | | | | | | | | | | | 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
| * OpenVG: use the correct clip region to detect single-rect clipsRhys Weatherley2009-07-011-2/+2
| | | | | | | | | | | | | | | | | | | | "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
| * OpenVG compile fix - use const_cast instead of static_castRhys Weatherley2009-07-011-4/+4
| | | | | | | | Reviewed-by: trustme
* | Compile OpenVG paint engine after QScopedPointer changes.Jason Barron2009-07-101-1/+1
| | | | | | | | Do the same fix as with the OpenGL paint engine.
* | Another fix for the include bug in Symbian.Jason Barron2009-07-091-1/+1
|/ | | | | | This header is included by the VG graphics system plugin and since that exists in a different module, the header inclusion bug rears its ugly head again and we need to workaround it by making it a system include.
* Better detection for OpenVG engines that run on top of OpenGLRhys Weatherley2009-06-241-0/+6
| | | | | | | ShivaVG runs on top of OpenGL. Include the QMAKE_*_OPENGL flags on the link line if it is needed by the OpenVG engine. Reviewed-by: trustme
* Integrate the OpenVG graphics system into Qt 4.6Rhys Weatherley2009-06-2214-0/+5739
This change also moves the EGL support classes from QtOpenGL to QtGui so they can be shared between OpenGL and OpenVG.