Simon Hausmann
3bd5b0eadf
Add support for recursive dependency tracking across PropertyTracker instances
...
By default PropertyTracker::evaluate() registers the currently
evaluating binding/tracker as a dependency. This should help with
repeaters and other scenarios where in the run-time we use property
trackers but want to track the overall "dirtyness" in the window with
regards to whether a redraw is needed or not.
The new evaluate_as_dependency_root() function allows skipping this
mechanism and is used for the two trackers in the window.
2021-03-25 12:29:19 +01:00
Simon Hausmann
e63baa5766
Re-organize Window and PlatformWindow construction and referencing
...
Initialize the self_weak in the PlatformWindow impl using the
Rc::new_cyclic pattern with a construction parameter.
2021-03-25 09:43:59 +01:00
Olivier Goffart
4ee0a02366
Tell Qt that the widget can get the focus
...
Usefull when the widget is embedded in a Qt application
2021-03-24 12:16:51 +01:00
Olivier Goffart
d829a18ddd
Don't link the qt backend with winit
...
(this was also brigning in all the wayland dependency so it should save compile time)
2021-03-24 09:51:05 +01:00
Olivier Goffart
1dba04721a
Add a qt_viewer example that uses QWidget
2021-03-23 17:13:41 +01:00
Olivier Goffart
41c6c79bc1
Better name for the femtovg feature
...
Just use the name of the crate, i believe this is the convension
2021-03-19 09:48:19 +01:00
Simon Hausmann
6de1c4e3b5
Use the new femtovg release instead of pinning to a sha1
2021-03-18 16:56:00 +01:00
Simon Hausmann
f5fb0bf297
Prospective Qt linkage fix for macOS
...
Try adding an LC_RPATH command to the cdylib that we're building (for example libsixtyfps_cpp.dylib),
to fix linkage against Qt, which uses `@rpath/QtCore.framework/XXX` for inter-library linkage dependencies.
2021-03-17 14:02:33 +01:00
Olivier Goffart
35cce45cbc
Add a fii feature so that we don't compile in the ffi code if not required
2021-03-16 18:09:57 +01:00
Olivier Goffart
0e351de1a6
Create a new crate to expose the C++
2021-03-16 16:34:02 +01:00
Olivier Goffart
6f88d78303
Rename Resource
to ImageReference
in the runtime
2021-03-11 10:06:23 +01:00
Olivier Goffart
89bbdce88e
Polish a bit the Brush API
2021-03-10 16:54:33 +01:00
Olivier Goffart
6f715c5612
Don't call render for items outside of the clip rects
2021-03-05 13:05:02 +01:00
Simon Hausmann
f4059ab3cf
Fix wasm build
2021-03-02 13:55:34 +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
Simon Hausmann
f087cc18bc
Remove extern "C" functions from wasm module
...
We don't need these functions and their export. They account for ~20kb in
the optimized .wasm - plus JS glue code.
2021-02-26 17:04:49 +01:00
Simon Hausmann
1b870959e6
Use the Noto fonts from the C++ build of the printer demo
...
This adds API to register a font by path from C++
2021-02-22 11:17:39 +01:00
Simon Hausmann
d5d537b1ce
Remove redundant to_string() call
2021-02-17 15:28:58 +01:00
Simon Hausmann
3ba92bdc6d
Add API to the wasm interpreter to download and register fonts
2021-02-17 15:21:30 +01:00
Simon Hausmann
445ddd58d5
API cleanup
...
Remove the `application` infix from `register_application_font`, to
reduce the changes that it might be interpreted to be a function that
also changes the default font in all text elements.
2021-02-17 14:37:31 +01:00
Simon Hausmann
f7ab4625e4
Prospective build fix
...
Use the same to_string_lossy() code path on all platforms
2021-02-17 14:32:02 +01:00
Simon Hausmann
45fe6c3e8d
Add the ability to load application fonts by path
...
The viewer command line tool also gains the ability to specify them via `--app-font=/path/to/font.ttf` , which can be specified multiple times.
2021-02-17 14:16:52 +01:00
Simon Hausmann
999145e7d3
Fix non-macOS build
2021-02-16 22:36:37 +01:00
Simon Hausmann
7cea088a2c
Add support for letter-spacing in text
...
This is conveniently supported by femtovg and Qt
2021-02-16 22:14:50 +01:00
Olivier Goffart
05736c7803
GL: Fix rendering of scaled SVG for which height > width
...
We would not allocate a buffer big enough for it.
2021-02-16 10:42:13 +01:00
Olivier Goffart
15e0112d2d
Qt: Fix image-fit of colorized image
...
Since colorize property force the native item to be a ClippedImage, it had
a source rectangle, despite with and height defaulting to 0 and therefore
having an empty source rect would cause the scaling to not be right
2021-02-16 10:10:30 +01:00
Olivier Goffart
c4e7e38590
Workaround the fact that femtovg needs to explicitly set Hole or Solid
...
the actual wining is lost
2021-02-16 00:20:25 +01:00
Olivier Goffart
c7723a237b
GL colorize
...
reset properly the canvas state (such as the clip and so on)
and rotate the image otherwise it is painted upside down
2021-02-15 21:00:39 +01:00
Olivier Goffart
1a9267aebe
Some debugging aide
2021-02-15 20:15:35 +01:00
Simon Hausmann
a61bbb25b7
Fix colorizing images when transformations are in play
...
When painting intermittendly on the image for colorization, reset the
transformation on the canvas.
Amends commit fd5757bc44
2021-02-15 20:13:47 +01:00
Olivier Goffart
ed1fc31b84
Put the window background color in the StyleMetrics
...
And make use of Window::background in Qt
2021-02-15 15:57:58 +01:00
Olivier Goffart
deea260eac
Fix image-fit in the Qt backend
...
Only scale the loaded image for image format that make sense (ie: svg)
and when doing that, keep the aspect ratio
2021-02-15 12:10:43 +01:00
Simon Hausmann
799b3b16b1
GL backend: Fix clipping with transformations applied to the canvas
...
After commit fd5757bc44
we now need the
upstream fix to `intersect_scissor` for clipping to work
in flickable.
So patch upstream master in for now.
2021-02-15 11:17:14 +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
abe95688b9
Avoid re-parsing SVG images when scaling in the GL renderer
...
This isn't quite 100% clean but keeping a reference to the original svg tree
is maybe a reasonable compromise for now.
2021-02-12 18:59:02 +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
Olivier Goffart
9eac131ae5
Add the logo in the docs
2021-02-12 08:24:42 +01:00
Simon Hausmann
7ac288a849
Fix disappearing html images
...
Commit 8a66af0746
resulted in pending html
images not being strongly referenced anymore through the item's
rendering cache when first queried in the image size query. That means
they initially reported a size (1x1) and after loading they *should*
mark the bindings dirty that depend on the implicit size, but since the
image was deleted (and along with it the notifying property), the image
kept its visible (1x1) size.
Similarly, images would get loaded too much from disk - same cause,
different effect.
To fix this, go back to the earlier design where the renderer's image
cache keeps a strong reference.
2021-02-11 08:17:33 +01:00
Simon Hausmann
0c6d88160a
Fix wasm build
2021-02-10 21:35:10 +01:00
Simon Hausmann
b5095e9729
Fix source scaling detection for the Qt backend
...
ClippedImage without a source rect or one that's identical to the target should also allow for source scaling
2021-02-10 21:33:04 +01:00
Simon Hausmann
f704e4c823
Implement rendering SVG with specified size
...
Relates to #129
2021-02-10 21:08:58 +01:00
Simon Hausmann
ad0d2f04e1
Small image handling cleanup
...
Use a dedicated structure for femtovg based textures
2021-02-10 20:36:32 +01:00
Simon Hausmann
12b58af1b1
Support rendering SVGs with a specified size in the GL backend
...
This is limited to resvg's FitTo::Width though, so the aspect ratio will
always be preserved. This might however be desirable anyway.
Relates to #129
2021-02-10 17:52:34 +01:00
Simon Hausmann
8a66af0746
Clean up image size determination in the rendering backend
...
Don't use the item's rendering cache to determine the image size, as
that's soley for rendering. The Qt backend doesn't use the item cache
and the GL backend neither after this change. Instead both backends have
a cache for decoded images.
2021-02-10 17:34:29 +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
Simon Hausmann
d2e0ecba93
Move the image handling code into a separate module
2021-02-10 12:49:26 +01:00
Simon Hausmann
7b46eed0a7
Minor cleanup
...
Move the html image element handling also into CachedImage
2021-02-10 12:44:05 +01:00
Simon Hausmann
91edc0a896
Fix the wasm build
2021-02-10 12:41:38 +01:00
Simon Hausmann
d3268555cc
Clean up image loading a bit in the GL backend
...
Use helper functions to load from path or data, and print error
messages to stderr if we're having problems decoding images or
rendering the SVG.
2021-02-10 11:39:40 +01:00
Simon Hausmann
f1d41db006
Clarify comment in draw_image_impl
2021-02-10 11:12:06 +01:00