Olivier Goffart
142a8dc185
Rename ImageReference to ImageInner and make Immage.0 private
2021-05-28 17:05:16 +02:00
Olivier Goffart
0b3fecf300
WIP: API to expose image loading from C++ and Rust
2021-05-28 17:05:16 +02:00
Olivier Goffart
f06bf8d5a7
Fix repeater in box layout
2021-05-11 14:59:57 +02:00
Olivier Goffart
7f7f2245d8
Use the testing backend for node
2021-05-11 11:40:26 +02:00
Olivier Goffart
7ae850d564
Rename Type::Length -> Type::PhysicalLength
2021-04-21 17:15:19 +02:00
Simon Hausmann
afe3df6381
Remove the public API for registering fonts by path or memory chunk
...
This is not needed anymore in the light of being able to write `import "blah.ttf"` in .60 markup
2021-04-14 10:01:33 +02:00
Simon Hausmann
794d3ec6ec
Revert "Add a nodejs testing function for apply_layout"
...
This reverts commit beb5d63d1b
.
Oops, the more modern style *is* to use send_mouse_click.
2021-04-08 16:58:37 +02:00
Simon Hausmann
beb5d63d1b
Add a nodejs testing function for apply_layout
...
This will allow making the JS test code more similar to the C++/Rust code,
allowing replacing synthetic mouse clicks.
2021-04-08 16:51:51 +02:00
Simon Hausmann
477729da52
Improve brush property test coverage
...
Test that assigning colors works:
* Test the implicit `Brush(const Color &)` C++ constructor
* Add derive_more::From to allow convenient conversion in Rust
* When assigning to brush properties in JavaScript, try at least to see if it's a color string (could be extended in the future)
2021-04-01 08:27:10 +02:00
Simon Hausmann
342f77139b
Add public Rust interpreter API to introspect the public properties
2021-03-31 08:42:54 +02:00
Simon Hausmann
9a6e9c3a53
Simplify internal interpreter property descriptor API
...
Return an iterator when querying the properties. This requires a
one-time copy of the property declarations out of the compiler data
structure, which is read-only.
2021-03-31 08:42:54 +02:00
Simon Hausmann
4a9cd954b8
Rework the Rust entry point API for the interpreter
...
Switch to the stateful `ComponentCompiler` concept that we discussed for the C++ API.
2021-03-18 18:20:50 +01:00
Olivier Goffart
ad75d41e20
Rename struct priperties to fields
2021-03-16 12:50:33 +01:00
Olivier Goffart
3db3400951
Rename the Object type to Struct in the compiler
2021-03-16 12:38:53 +01:00
Olivier Goffart
48333370a6
Use the new interpreter API in things that depends on it
2021-03-15 17:29:27 +01:00
Simon Hausmann
8372d3f6d8
Rename call_*
to invoke_*
for callbacks
...
Fixes #187
2021-03-15 17:01:05 +01:00
Simon Hausmann
9034bd3d1a
Move the refined eval::Value
API to api::Value
...
This is the new public value representation for the interpreter
2021-03-15 15:12:34 +01:00
Simon Hausmann
c2c3e00cd7
Remove ModelPtr
from the interpreter
...
Instead stick a straight `Rc<dyn ...>` into the `Value` enum
2021-03-15 14:43:01 +01:00
Simon Hausmann
a4c196df60
Use api::Struct
in Value::Struct
, replacing Value::Object
2021-03-15 12:55:39 +01:00
Olivier Goffart
41f52f9ad4
Remove Value::Color
2021-03-15 12:33:47 +01:00
Olivier Goffart
5a416d0fc7
Make the Value non_exhaustive
2021-03-15 12:07:52 +01:00
Simon Hausmann
41f77b2a27
Use SharedVector
for Value::Array
instead of Vec
...
That will make it more efficient to pass data into the interpreter in the future,
especially from C++.
2021-03-15 10:19:35 +01:00
Olivier Goffart
933c1bbf59
Rename Value::Resource
to Value::Image
2021-03-11 10:15:53 +01:00
Olivier Goffart
6f88d78303
Rename Resource
to ImageReference
in the runtime
2021-03-11 10:06:23 +01:00
Olivier Goffart
c840b046ae
Rename the "resource" type to "image"
2021-03-10 17:24:31 +01:00
Simon Hausmann
2fdaa44d51
Load the Noto Sans font from the nodejs printer demo
2021-02-22 11:17:39 +01:00
Olivier Goffart
b75e135459
Support complex product of units
...
Fixes #68
2021-02-04 12:56:14 +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
Olivier Goffart
e4a1f50a9a
Brush support in the interpreter
2021-02-03 09:28:33 +01:00
Olivier Goffart
ad1e18764a
Make angle its own type
2021-02-01 14:49:25 +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
5f265ffc09
Split up ComponentWindow::run() into show(), hide() and sixtyfps::run_event_loop()
...
This allows creating multiple windows for example, and it will allow for
showing windows in those tests that require a mapped window.
As a bonus, the run() function on generated components is not consuming
anymore.
2021-01-19 09:50:22 +01:00
Olivier Goffart
dcb347fb7b
Move more functions from the GenericWindow to the Window
2021-01-15 15:02:55 +01:00
Simon Hausmann
0e04149868
Fix single shot timer leaks in the nodejs api
...
As discussed, don't use the persistent context approach for single
shot timers but store the callback directly in the global object
and "delete" it afterwards.
2020-12-19 13:49:41 +01:00
Olivier Goffart
0d2d48be4f
Rename "signal" to "callback"
2020-12-18 09:51:01 +01:00
Simon Hausmann
c2a0cd7000
Added a node version of the memory puzzle game
...
This also implements a basic single shot timer support, which has
one caveat: it leaks the closures right now.
2020-12-11 17:17:28 +01:00
Simon Hausmann
ee2e08f98d
Fix creating an image resource from JS
...
We allow converting strings to Type::Resource, but we have to provide a
Value::Resource then, not Value::String.
2020-12-11 13:53:04 +01:00
Simon Hausmann
87e0cc7d85
Fix resource embedding doing a wasm build of a project using the sixtyfps! macro
...
We need to embed resources in wasm builds. Unfortunately we can't detect
that we're called by say wasm-pack and "TARGET"/"HOST" only works inside
build.rs. So instead, to keep things simple, this change always embeds
the image resources when targeting Rust.
The `SIXTYFPS_EMBED_RESOURCES` environment variable can be used to
override this anywhere for any language.
Fixes #130
2020-12-10 15:09:32 +01:00
Olivier Goffart
bff55d4f1b
Return value for signal
2020-12-01 18:52:51 +01:00
Olivier Goffart
e73bbbcd10
More work on signal returning value
2020-12-01 18:47:49 +01:00
Olivier Goffart
276e11a101
More work on signals with return value
2020-12-01 18:47:49 +01:00
Olivier Goffart
8a64f10e84
Remove ComponentVtable::input_event
...
And the custom handling of the mouse grabber
2020-11-24 16:23:37 +01:00
Simon Hausmann
c258a907f0
Simplify event loop start-up
...
Move the layout constraint tracker into the window where we can apply
the constraints right before drawing, instead of doing that from within
the event loop. This allows to remove the component parameter from the
run function.
2020-11-12 15:04:48 +01:00
Simon Hausmann
a2dadf8fe8
Remove the component parameter from GenericWindow::process_key_input
2020-11-11 19:16:26 +01:00
Simon Hausmann
5d744c86c2
Begin passing the VRC<ComponentVTable, Dyn> into the run-time library
...
First by changing the signature of run() and by adding a self_weak
to the C++ struct.
2020-11-11 18:31:51 +01:00
Simon Hausmann
a9791c390d
Wrap the main component in a VRc
2020-11-11 18:14:15 +01:00
Simon Hausmann
02904c4014
Simplify signature of Component::run
...
We don't need to pass the root item anymore since ComponentVTable
has now get_item_ref.
2020-11-11 15:55:03 +01:00
Olivier Goffart
e5302e0b7b
Remove unused Type::EnumerationValue
...
Values are not their own types
2020-11-03 12:34:17 +01:00
Olivier Goffart
e4e7ae46f4
Support for for
in box layout in the interpreter
2020-10-31 11:24:31 +01:00
Olivier Goffart
359f42c5f7
Prepare the compiler to be async
...
This will allow the online editor to load imports from URL asynchroniously later
Since currently the compiler is only working on a single thread, and that we
never await on a future that could block, it is allowed to use the spin_on executor
2020-10-30 15:00:04 +01:00