1. 03 May, 2013 - 2 commits
    • Samuel Rødal's avatar
      Made Canvas blur better match the one in HTML 5 Canvas. · e1a8762e
      Samuel Rødal authored
      
      Fixed blur being too faint by fixing the weight to correctly match the
      amount of pixels being sampled based on the blur radius, and by not
      multiplying and flooring to int inside the sampling loop which leads to
      excessive rounding down errors.
      
      The "half" value in the previous implementation was also wrong due to
      using integer division instead of floating point division, which caused
      the blur being slightly offset down and to the right.
      
      By not calling scanLine() and constScanline() repeatedly and by only
      applying the weight once in the single-weight case we can also gain a
      slight performance improvement.
      
      Also, make sure blur radii below 2 don't get floored to 0.
      
      Change-Id: Ibe15d0f51c919594b168923485c051d21f8d7822
      Reviewed-by: default avatarMitch Curtis <mitch.curtis@digia.com>
      Reviewed-by: default avatarGunnar Sletta <gunnar.sletta@digia.com>
      e1a8762e
    • Samuel Rødal's avatar
      Fixed wrong rendering offset / clipping with shadowBlur in Canvas. · 030ebca1
      Samuel Rødal authored
      
      If the item being rendered didn't have a bounding rect starting in the
      origin the shadow path would be get an additional offset equal to the
      distance of the item from the origin. Also, the stroke's shadow did not
      take the pen width into account, causing clipping artifacts.
      
      Combine all the common shadow generating code into a single function,
      and avoid rendering into an intermediate image that is then blitted into
      a larger image.
      
      Task-number: QTBUG-30914
      Change-Id: I16c7c15897ab8e2d46f37da835f75f97fe680863
      Reviewed-by: default avatarMitch Curtis <mitch.curtis@digia.com>
      Reviewed-by: default avatarGunnar Sletta <gunnar.sletta@digia.com>
      030ebca1
  2. 10 Jan, 2013 - 1 commit
  3. 23 Sep, 2012 - 1 commit
  4. 31 Jul, 2012 - 1 commit
    • Charles Yin's avatar
      Refactor context2d thread logic · 4236e7f7
      Charles Yin authored
      
      1. Use QQuickContext2DRenderThread for Threaded rendering
      2. Make FBO target works with all render strategies
      3. Remove some unnessary locks, call texture methods by invoking meta calls
      4. Run existing tests with all render targets and strategies (except Cooperative)
      
      Change-Id: I0db5c91d848b86bcc1536c30d7a5804b66a817f1
      Reviewed-by: default avatarYunqiao Yin <charles.yin@nokia.com>
      4236e7f7
  5. 04 Jul, 2012 - 1 commit
  6. 05 Jun, 2012 - 1 commit
    • Charles Yin's avatar
      Introduce QQuickCanvasPixmap · 1dcfa8aa
      Charles Yin authored
      
      1. QQuickPixmap now only store textures instead of QImage data, however
      context2d still need to access the QImage in some places, so cache the
      loaded images to avoid the expensive GL readback operations.
      2. Use texture directly if the render target is FBO.
      
      Change-Id: I6228011e5698fa00f2e3420a3a4a305995b8a238
      Reviewed-by: default avatarYunqiao Yin <charles.yin@nokia.com>
      1dcfa8aa
  7. 04 Jun, 2012 - 1 commit
  8. 30 Mar, 2012 - 1 commit
    • Charles Yin's avatar
      Fix context2d transform issues · 200f7837
      Charles Yin authored
      
      After calling transform related methods, the current path should be transformed with the same method but in reversal mode.
      So that during painting, the painter will apply the CTM to this path again, otherwise path will be transformed twice.
      
      Change-Id: I7e12bdff82dabb408f47152ba07b608872d4093f
      Task-number: QTBUG-24988
      Reviewed-by: default avatarMichael Brasser <michael.brasser@nokia.com>
      200f7837
  9. 24 Feb, 2012 - 1 commit
  10. 30 Jan, 2012 - 1 commit
  11. 23 Jan, 2012 - 1 commit
  12. 17 Jan, 2012 - 1 commit
  13. 02 Dec, 2011 - 1 commit
    • Kent Hansen's avatar
      Say hello to QtQuick module · 6c8378ea
      Kent Hansen authored
      
      This change moves the QtQuick 2 types and C++ API (including
      SceneGraph) to a new module (AKA library), QtQuick.
      
      99% of this change is moving files from src/declarative to
      src/quick, and from tests/auto/declarative to
      tests/auto/qtquick2.
      
      The loading of QtQuick 2 ("import QtQuick 2.0") is now delegated to
      a plugin, src/imports/qtquick2, just like it's done for QtQuick 1.
      
      All tools, examples, and tests that use QtQuick C++ API have gotten
      "QT += quick" or "QT += quick-private" added to their .pro file.
      
      A few additional internal QtDeclarative classes had to be exported
      (via Q_DECLARATIVE_PRIVATE_EXPORT) since they're needed by the
      QtQuick 2 implementation.
      
      The old header locations (e.g. QtDeclarative/qquickitem.h) will
      still be supported for some time, but will produce compile-time
      warnings. (To avoid the QtQuick implementation using the
      compatibility headers (since QtDeclarative's includepath comes
      first), a few include statements were modified, e.g. from
      "#include <qsgnode.h>" to "#include <QtQuick/qsgnode.h>".)
      
      There's a change in qtbase that automatically adds QtQuick to the
      module list if QtDeclarative is used. Together with the compatibility
      headers, this should help reduce the migration pain for existing
      projects.
      
      In theory, simply getting an existing QtDeclarative-based project
      to compile and link shouldn't require any changes for now -- but
      porting to the new scheme is of course recommended, and will
      eventually become mandatory.
      
      Task-number: QTBUG-22889
      Reviewed-by: default avatarLars Knoll <lars.knoll@nokia.com>
      Change-Id: Ia52be9373172ba2f37e7623231ecb060316c96a7
      Reviewed-by: default avatarKent Hansen <kent.hansen@nokia.com>
      Reviewed-by: default avatarSergio Ahumada <sergio.ahumada@nokia.com>
      6c8378ea
  14. 17 Nov, 2011 - 1 commit
  15. 21 Oct, 2011 - 1 commit
    • Kent Hansen's avatar
      Rename Qt Quick-specific classes to QQuick* · bfb3c424
      Kent Hansen authored
      
      The QSG (SceneGraph) prefix is too generic for
      Qt Quick(2)-specific classes.
      
      All the classes and files in the declarative/items
      directory have been renamed.
      
      In particular, for classes that are currently public,
      the renaming is as follows:
      
      QSGView --> QQuickView
      QSGCanvas --> QQuickCanvas
      QSGItem --> QQuickItem
      QSGPaintedItem --> QQuickPaintedItem
      
      The header files have been renamed accordingly
      (e.g. qsgview.h --> qquickview.h).
      
      Change-Id: Iac937fff81db20bb639486a793c3aeb5230b038c
      Reviewed-by: default avatarKent Hansen <kent.hansen@nokia.com>
      bfb3c424
  16. 19 Oct, 2011 - 1 commit
    • Friedemann Kleint's avatar
      Declarative: Fix MSVC and g++ warnings · 5ddcd47d
      Friedemann Kleint authored
      
      Potentially severe:
      - Fix int/bool mismatches
      - Use of uninitialized variable
      - Do connectionMask shift operations in 64bit
      - Enum type mismatch for QLineControl::EchoMode
      
      Various:
      - class/struct mismatches
      - UnhandledEnumeration values
      - Unused variables
      - Constructor initialization order
      
      Change-Id: Ieb52f8990445fe95f94070175a0f9beb66863240
      Reviewed-by: default avatarMartin Jones <martin.jones@nokia.com>
      5ddcd47d
  17. 17 Oct, 2011 - 1 commit
    • Kent Hansen's avatar
      Clean up declarative includes · 7fa3aa4d
      Kent Hansen authored
      
      (This commit is in preparation of moving several files
      to a separate library (QtQuick2).)
      
      Don't add all subfolders to the includepath (from the
      .pri files). There's no good reason to do that.
      
      For headers (both public and private) that are in the
      same folder as the file that includes them, prefer to use
      
       #include "foo.h"
       #include "bar_p.h"
      
      For public headers that are outside the current folder
      but have "unambiguous" names (e.g. qdeclarative prefix), use
      
       #include <foo.h>
      
      For private headers that are outside the current folder, use
      
       #include <private/baz_p.h>
      
      Also change
      
       #include <QtDeclarative/private/foo_p.h>
      
      to
      
       #include <private/foo_p.h>
      
      The header filenames already have a qdeclarative or qsg
      prefix; there's no need to prefix by module name to
      disambiguate.
      
      Finally,
      
       #include "private/foo_p.h"
      
      should be avoided. private/ is used for auto-generated
      (forwarding) headers, which never reside in the current
      (source) directory. Use angle brackets instead.
      
      Change-Id: I04f8477fdba043546064ee276475c09dc373f8f2
      Reviewed-by: default avatarJędrzej Nowacki <jedrzej.nowacki@nokia.com>
      7fa3aa4d
  18. 06 Oct, 2011 - 1 commit
  19. 30 Sep, 2011 - 1 commit
  20. 28 Sep, 2011 - 1 commit
  21. 16 Sep, 2011 - 1 commit
  22. 13 Sep, 2011 - 1 commit
  23. 12 Sep, 2011 - 1 commit
    • Charles Yin's avatar
      canvas item refactors · 82b21536
      Charles Yin authored
      1.Supports tiled canvas with canvasSize, tileSize and canvasWindow
      2.Supports different rendering targets: Canvas.Image and
        Canvas.FrameBufferObject by renderTarget property
      3.Supports thread rendering when possible by threadRendering property.
      4.Refactors QSGContext2D code, move some logic to
        QSGContext2DCommandBuffer,QSGContext2DTexture,QSGContext2DTile, etc
      5.Updates/adds some canvas examples
      6.Some improvements for context2d API
         6.1 drawImage() now loads image asynchoronously and draw images
             automatically when they are ready
         6.2 adds fillRule supports
         6.3 add svg path supports
         6.4 Pixel operations (getImageData/putImageData/createImageData)
             now have better performance by using V8 indexed array accessors
         6.5 Uses QTransform instead of QMatrix
         6.6 Gradients/patterns now are V8 values, not QObjects
         6.7 Supports measureText and TextMetrics interface
         6.8 Gives not support warnings for unimplemented functions
             (drawFocusRing,setCaretSelectionRect,caretBlinkRate)
         6.9 Better error handling, throw standard DOM exceptions according
             to the HTML5 context2d spec.
         6.10 Adds shear, resetTransform to matrix operations
         6.11 Adds roundedRect, ellipse, text to path operations
         6.12 Adds new features to CanvasImageData interface
            1) adds mirror() function
            2) adds filter() function, include the following filters:
                Threshold
                GrayScale
                Brightness
                Invert
                Blur
                Blend
                Opaque
                Convolute
      7. Adds documentations
      
      Change-Id: Id19224260d6a3fdc589d1f9681c34a88a7e7b3e5
      Reviewed-on: http://codereview.qt-project.org/3621
      
      
      Reviewed-by: default avatarCharles Yin <charles.yin@nokia.com>
      82b21536