Olivier Goffart
3bf3761450
Implement the Opacity filter.
...
Notice that the GL implementation currently don't combine the opacity
2021-04-15 10:17:52 +02:00
Olivier Goffart
ba2f2d5719
Add an Opacity element that does nothing
2021-04-15 10:17:52 +02:00
Simon Hausmann
48e6d2f48b
Fix handling of non-zero border width in clip-enabled Rectangles
...
The border should be visible (as in the included test case), which this
patch fixes for Qt by subtracting the border width just like when drawing.
2021-04-14 13:34:51 +02:00
Simon Hausmann
6a1191c5a5
Add Window.default-font-weight
...
This completes the font properties that can be set as default.
2021-04-14 11:16:22 +02:00
Olivier Goffart
1773f9143b
Add a border-radius property to the Clip
...
So that `clip: true` used on a Rectangle with border radius can be clipped
with that radius
Only the Qt backend is implemented for now
2021-04-12 19:47:18 +02:00
Olivier Goffart
7589a301f2
The stretch factor for the Flickable should be 1
2021-04-09 19:14:48 +02:00
Simon Hausmann
b591f7de2c
Add Window.default-font-size
...
This allows getting rid of the `DemoText` element in the printer demo
2021-03-02 13:33:43 +01:00
Simon Hausmann
27bdb4d481
Added Window.default-font-family
...
One step towards getting rid of `DemoText` in the printer demo
2021-03-02 13:25:21 +01:00
Olivier Goffart
1f318f2d10
Use the new mouse event API for the flickable
...
Issue #166
2021-02-13 16:58:04 +01:00
Olivier Goffart
a71edafa33
Refactor the way the mouse events are processed
...
Have a function first called before the children, and then the main function
called after the children if they did not accept the event. This will allow
processing the Flickable gesture properly
2021-02-12 20:47:59 +01:00
Simon Hausmann
500919745e
Add an internal Rotate element
...
This is just a starting point, to be turned into a real Transform
element later, along with syntactic sugar to turn rotation, etc. into a
transform matrix in the generated output.
2021-02-12 17:31:06 +01:00
Simon Hausmann
fd5757bc44
Simplify coordinate handling for item rendering
...
Remove the pos parameter to the render functions and instead let
the item renderer apply the transformation on the rendere (femtovg
canvas or QPainter).
So `draw_*` functions in the backend now always operate in item local
coordinates.
2021-02-12 17:12:58 +01:00
Simon Hausmann
2dd5ea61bb
Add support for Path.fill-rule
...
For some reason it's not working with the Qt renderer though
2021-02-10 14:08:32 +01:00
Olivier Goffart
7e17806aa4
Flickable: don't grab the event on mouse move
2021-02-08 17:13:51 +01:00
Olivier Goffart
f1300a7f2d
Fix propagation of mouse event.
...
Process the event in the post visit if the children did not intercept the event
2021-02-08 14:08:14 +01:00
Olivier Goffart
afbb537bc1
Add TouchArea::enabled
...
and use it in the ugly style
2021-02-05 14:21:20 +01:00
Olivier Goffart
9bdb793ec1
Rename Window::color to background
2021-02-05 09:38:40 +01:00
Simon Hausmann
3f541972ef
Change Rectangle::border-color
to be a brush
...
This allows things like filling a thick border with a gradient.
2021-02-04 17:05:00 +01:00
Simon Hausmann
d92c8cab23
Fix path fitting
...
Include the stroke width in the boundaries when fitting a path into the
size of a `Path` element.
2021-02-04 09:09:23 +01:00
Simon Hausmann
66df71a3ca
Convert Path
to support brushes
...
* Rename `fill-color` to `fill`
* Rename `stroke-colo` to `stroke`
* Support using a brush for both properties
2021-02-03 15:45:33 +01:00
Simon Hausmann
7982325da4
Change Rectangle::background's type to be a brush
...
This also introduces the brush type in the compiler and generators. At the
moment only conversion from Color is implemented.
2021-02-03 12:49:44 +01:00
Simon Hausmann
1f091cb1c0
Rename Rectangle.color to Rectangle.background
...
Add support for built-in property aliases and rename `color` to
`background` - in preparation for it also changing to type brush.
Right now the alias is silent, a deprecation and overall change
will come in a subsequent change.
2021-02-02 17:01:12 +01:00
Simon Hausmann
69508575ec
Fix rendering of Flickable
...
It should clip to its geometry
2021-02-01 15:35:36 +01:00
Simon Hausmann
680995432e
Minor fixes to the BoxShadow
element
...
* Use the same property names as `Rectangle`
* Use the same sizing behavior
Also added a "manual" test.
2021-01-27 15:34:27 +01:00
Olivier Goffart
9de5af75ce
Allow FocusScope to reject the events
2021-01-26 17:05:31 +01:00
Simon Hausmann
628e6fdb38
Add a BoxShadow element
...
This intends to provide a configurable rectangular "drop shadow". The
API is modeled after CSS/HTML5 Canvas where the element can be "bound"
to an existing rectangular shape (geometry and radius), the offset can
be used to place the shadow and color and blur configure the shadow.
The shadow's color fades into transparent.
TODO (in subsequent changes):
* Documentation
* Qt implementation
2021-01-26 13:56:12 +01:00
Olivier Goffart
a4abb86782
Don't return the ItemWeak by value
...
It is not working in C++ because ItemWeak has a destructor
2021-01-26 13:17:24 +01:00
Olivier Goffart
802383cd6b
Propagate key event to parent if the item don't handle it
...
Does not work for C++ because binary compatibility issue
2021-01-26 13:17:04 +01:00
Olivier Goffart
c2982d9ab3
Add ability to get the parent item from the vtable
...
(still untested)
2021-01-26 10:36:37 +01:00
Olivier Goffart
5a21f1bd81
Rename emit_ to call_ for callback
...
Signal was renamed to Callback, but one does not emit a callback, one calls it
2021-01-25 15:59:10 +01:00
Simon Hausmann
2801e82658
Changed the KeyEvent in .60 to be an object
...
This exposes the text as well as the keyboard modifiers and is a little
more extensible.
2021-01-22 18:05:34 +01:00
Simon Hausmann
d022dc1293
Make KeyEvent a struct
...
This way it's easier to expose to .60
2021-01-22 13:47:52 +01:00
Simon Hausmann
886dd425fc
Rename KeyEvent::KeyPress::string to text
...
It's the textual representation of the key
2021-01-22 13:47:52 +01:00
Simon Hausmann
9ca87ab312
Simplify KeyEvent
...
Fold CharacterInput into KeyPressed/KeyReleased and store the "key" as a string.
Also, instead of exposing the KeyCode we're encoding special characters
into the string.
2021-01-22 10:15:05 +01:00
Olivier Goffart
4af4924567
C++: Fix cbindgen so it can process callback with arguments
2021-01-20 10:25:15 +01:00
Olivier Goffart
094287697a
Add a FocusScope
...
C++ part not working because the Callback with arguments are not yet supported with C++
2021-01-20 10:00:19 +01:00
Simon Hausmann
77b5a86168
Add an implicit size to text and image items
...
For all other items the default is the empty size.
This also required three fixes for the HTML image loading:
* The upload_pending property value was inverted, it needs to start
out as true (pending yes) and be set to false when it finished
loading (not pending anymore)
* Mark the upload_pending property as dirty before scheduling the
redraw, in case it's sync
* Pass the item rendering cache to the image_size function to ensure
that the Rc<CachedImage> is not only weak inside the image_cache
of the GLRendererData but also strong on the item.
2021-01-15 17:56:49 +01:00
Olivier Goffart
fff024731b
Don't pass Pin by reference
...
(consistant with other method in that trait)
2021-01-14 11:54:17 +01:00
Simon Hausmann
1ed35fb628
Replace uses of FIELD_OFFSETS.foo.apply_pin(bar) with bar.foo()
2021-01-14 08:53:13 +01:00
Simon Hausmann
65dcb2cb33
Merge BuiltinItem and GeneratePropertyAccessors derive macros
...
... into the new SixtyFPSElement macro. This generates getters for all properties.
2021-01-14 08:53:13 +01:00
Simon Hausmann
9d7e151cb9
Simplify property access code in the renderer
...
Generate convenient property accessors using a derive macro
2021-01-14 08:53:13 +01:00
Olivier Goffart
9050c29305
Don't use the window through the eventloop module
2021-01-14 08:53:13 +01:00
Olivier Goffart
c7ff67d0fc
Move the ItemRenderer to the item_rendering module
2021-01-14 08:52:22 +01:00
Simon Hausmann
de4194c9ba
Make ItemRenderer take &mut again
...
It's cleaner and indeed possible
2021-01-14 08:52:22 +01:00
Olivier Goffart
16a1b7b2bd
Cache the pixmap in the native style
2021-01-14 08:52:22 +01:00
Simon Hausmann
43127cb059
Implement releasing of textures when items are destroyed
...
This means going back to an immutable renderer reference and interior
mutability for the canvas and the gpu cache. This is because while
traversing the item tree for rendering we may end up destroying
other items due to the lazyness of the models.
2021-01-14 08:52:22 +01:00
Olivier Goffart
b157648ab2
More work towards getting native widget with the femtovg backend
2021-01-14 08:52:22 +01:00
Olivier Goffart
f7c8d53e7a
Port the Qt Native item to the new API
...
this mostly restores code that was removed in commit 1a260b9dce13db38128f1f489633ba96f264d461
2021-01-14 08:52:22 +01:00
Olivier Goffart
4e9021b550
Use a type alias so that cbindgen generates the ItemVTable
2021-01-14 08:52:22 +01:00
Simon Hausmann
d92fe445d5
Remove the old GL renderer
...
and try to stub in the hooks to trigger the new one
2021-01-14 08:52:22 +01:00