51 Commits

Author SHA1 Message Date
David Edmundson
ae2b9f7099 Guard around a bug in older versions of Qt
Change-Id: I7d6c11bd426c87b3d1abcedbfc18ccc7b912b1a2
2015-02-16 16:46:34 +01:00
David Edmundson
ecf922ab85 Put all non tiled frame textures in the atlas
Change-Id: I2525998ab3c1c76870fe8e395051127a673979af
Changelog: Faster rendering of Plasma frames from QtQuick
2015-02-12 13:05:12 +01:00
Kevin Funk
9dda1204c8 Run convert-to-cmake-automoc.pl over files 2015-01-20 00:00:31 +01:00
Aleix Pol
7a4998046e Adopt QuickAddons in plasma-framework
Removes the code that was moved to QuickAddons

REVIEW: 120596
2014-10-15 13:22:27 +02:00
Eike Hein
d3a9b5bb1f Add margins.horizontal/vertical helpers that return added up margins along one axis.
Adding up margins along the horizontal or vertical axis is often
done to calculate sizing or spacing. This tends to result in scary-
long and bug-prone expression being bound to props, since nobody
seems to like to blowing them up into a code block with a separate
variable assignment. This aims to increase the readability of com-
plex expressions by summing axis margins into a single operand.

Change-Id: I39a37dde80b9314da0c69f3b33d26d26a9ff54d1
2014-10-13 15:14:56 +02:00
Marco Martin
f5fb0dbc24 consider the case of fallback as well
consider the case of fallback as well when we are searching for a texture

reviewed by: Eike Hein <hein@kde.org>

Change-Id: I1faa119f9b3486d21ebd07a294b5063a896d7af1
2014-10-13 14:19:36 +02:00
Marco Martin
66a1a497ef add a property to tell if fallback happened
add a property in Svg (and framesvgitem) to tell if the current theme
has this image, or if some fallback did happen
useful for items that are better not displayed than showing the potentially different
default theme

Change-Id: Ib914c0e196c5c941d35d9a600cc7d38818fc754f
2014-10-10 17:36:44 +02:00
David Edmundson
4a95748249 Don't redeclare QQuickItem properties for implicitSizes
Change-Id: I96a8e6acd23cdee77048bc064963c7735b6615db
2014-09-17 23:23:15 +02:00
Marco Martin
ac0c457b65 partly revert last commit
revert part of
306e353fe6f45a34b093084ae1f7ced80aed35b2

if a framesvgitem has an implicitsize explicitly set, it shouldn't be overwritten

Change-Id: I931ca8acafdc2f6908945d03fca97487ced22988
2014-09-17 20:21:34 +02:00
Marco Martin
306e353fe6 take into account device pixel ratio
make sure framesvgitem returns the proper implicitWidth/height

Change-Id: I6d756e474c69bb32d2abef1a34d989c339d28ef9
2014-09-17 20:04:17 +02:00
Aleix Pol
b6f5335cd8 Have separate texture hashes for each window
Apparently in nvidia we get corruptions when a texture created for a window
is used in another one.
With this patch we tell the texture has changed when we move it from a
window to another, so it's re-created and we keep textures for all windows
separately. This way we ensure they don't mix.

REVIEW: 119465
2014-07-28 19:48:08 +02:00
Aleix Pol
daf7981820 Just pass the bigger textures from the !m_fastPath to the textures cache
It's a really cheap lookup, and maybe we get to skip some textures
uploading

Reviewed by David Edmundson
2014-07-25 12:57:16 +02:00
Aleix Pol
6641285d3b Remove deprecated code-path
hint-compose-over-border is now treated by the !m_fastPath
2014-07-25 12:42:31 +02:00
Aleix Pol
bc425f1809 Cache the textures created for the fast path
Create a cache that has pointers to all the textures that we've generated,
so in case we have one already created, we can re-use it.

REVIEW: 119425
2014-07-25 12:41:53 +02:00
David Edmundson
c127b78d57 Always take the slow path for composeOverBorder
We previously only supported compose-over-border when the centre was not
set to tile.

It's possible to use compose over border with tile.. even if it doesn't
make much sense.

Given that creating an opacityMask loads most of the image anyway, we
can make use of the FrameSVG painter path and avoid any additional code
complexity here.

REVIEW: 119406
2014-07-23 15:54:13 +02:00
David Edmundson
bdb0b3b2ca Check for empty sized elements in original SVG
Reviewed-by: Aleix Pol
2014-07-22 13:35:44 +02:00
Aleix Pol
e613662ab5 Make framesvg unit test pass
Revert the changes in contentsRect, it was clearly not the best place to
put the code that contains the code that computes the content size.
Instead move the code in FrameSvgItem, duplicates data and code but works.
2014-07-22 03:14:26 +02:00
Aleix Pol
dca3958b44 Stop exposing that many things in FrameSvgItem
Move the shared code between FrameSvg and FrameSvgItem into a separate file
that both can link to.

Reviewed by David Edmundson
2014-07-21 18:01:26 +02:00
Aleix Pol
47c7688d02 Move some of the code and make some API public
It's unreasonable to use private API, so make everything public API so that
every user of FrameSvg have as much features exposed as possible.

Reviewed by David Edmundson
2014-07-21 15:44:25 +02:00
Aleix Pol
565b2b6f51 Add a guard after figuring out the contentRect for a framesvgitem 2014-07-18 12:44:06 +02:00
David Edmundson
3eee37bd81 Don't allow tiling + compose over border at the same time
It wouldn't make any sense. Just choose tiling
2014-07-17 22:42:26 +02:00
David Edmundson
371c9a53dd Add composeOverBorder support in FrameSVGItem 2014-07-17 22:29:54 +02:00
David Edmundson
2bf3466b53 Put compose over border onto the slow path that renders the entire item 2014-07-17 19:32:17 +02:00
David Edmundson
1924877140 Add code path FastStretch, which resizes without re-rendering 2014-07-16 22:51:29 +02:00
David Edmundson
be05a8394a Don't remove nodes from a parent whilst we're cycling through them 2014-07-16 22:22:43 +02:00
David Edmundson
6c0dadc1c2 tidy variable + method names + fix crash 2014-07-16 20:40:41 +02:00
David Edmundson
e037203748 Add tiling support 2014-07-16 20:40:41 +02:00
Aleix Pol
a4e3569bbd Introduce the FrameSvgItem fastPath alternative, opt out of it on overlays
Fallback to the old code if there's something not (yet?) handled by the
new implementation. This way we get to optimize for the the common use-case
without breaking former, complex, code-paths.

Reviewed by David Edmundson
2014-07-16 17:01:05 +02:00
Aleix Pol
cbe13ac765 Do a full repaint when frameSvg says a repaintNeeded 2014-07-16 13:51:53 +02:00
Aleix Pol
fc4e09df46 Add warning 2014-07-15 19:57:43 +02:00
Aleix Pol
0a94e1b1b8 Take composeOverBorder into accoun 2014-07-15 19:56:04 +02:00
Aleix Pol
cf0f8d0c91 Make sure all prefixes are being used 2014-07-15 19:54:45 +02:00
Aleix Pol
89536abd9c Take into account that the requested prefix is not always the actually used prefix 2014-07-15 17:26:25 +02:00
Aleix Pol
4bde2d48dd Iterate over svgitem
Don't upload textures every time we resize, makes the resize much smoother.
Make it possible to show and hide borders
2014-07-15 16:28:41 +02:00
Aleix Pol
83895d8e26 Use proper sizes and positions 2014-07-14 20:02:47 +02:00
David Edmundson
dcbcb8a490 Construct full frame image using nodes inside FrameSVGItem 2014-07-14 18:44:33 +02:00
Harald Sitter
ce329f4402 qmax(qreal, double) is not valid as qreal may be float
adjust the call to use qreal for both (floor() returns double)

REVIEW: 118487
2014-06-03 14:37:38 +02:00
Allen Winter
939e01f554 fix build
include <cmath> to declare floor()
2014-05-11 20:58:53 -04:00
Kevin Ottens
72ba7b4146 Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
David Edmundson
48e8e588a6 Add documentation on FrameSVGItem updating 2014-03-05 18:07:54 +01:00
David Edmundson
6599c25087 Port FrameSVGItem to paint directly
REVIEW: 116618
2014-03-05 17:24:13 +01:00
Marco Martin
b388a0d76b expose hasElementPrefix() method 2014-03-04 18:13:46 +01:00
Marco Martin
53b2aba558 explain why we only consider integers right now 2014-02-25 19:39:12 +01:00
Marco Martin
a04a87bcec use units to understand the devicePixelRatio 2014-02-24 16:55:19 +01:00
Marco Martin
c009c7f0cd concept of fixedMargins
sometimes we need to know what the margins are of a framesvg, even if some of them are disabled
2014-02-21 21:13:12 +01:00
Marco Martin
17332257d7 experimental devicePixelRatio in Plasma::Svg
Conflicts:
	src/declarativeimports/core/framesvgitem.cpp
2014-02-21 19:24:14 +01:00
David Edmundson
6bff4ef469 Avoid frame resizing till componentCompleted 2014-02-13 12:45:30 +01:00
Kevin Ottens
0e590217f8 Port away from kdebug 2013-07-30 08:05:09 +02:00
Marco Martin
e07600a83f Put all Plasma emums in a Types class
This makes possible to use them directly frmo QML
as a minus, is not pretty and requires tons of search and replace in old
c++ code
2013-05-10 19:29:13 +02:00
Marco Martin
799a5989d9 enable blur behind 2013-02-21 14:58:09 +01:00