Simon Hausmann
e6bed90ced
Resolve the type in property declarations
...
... and added int32 as another primitive type.
2020-05-25 14:03:01 +02:00
Simon Hausmann
d4387b74b9
Rename Type::Number to Type::Float32
...
Properties of that type are implemented as f32.
2020-05-25 13:52:31 +02:00
Olivier Goffart
93158e63e8
Fix crash in the viewer when there is a Text{}
...
Wrong vtable was used.
2020-05-25 13:15:10 +02:00
Olivier Goffart
3629e5f158
Refactor the Expression
...
So we will resolve the expression in a different step
2020-05-25 13:15:10 +02:00
Simon Hausmann
32b99547f1
Parse property declarations
...
For now this uses the syntax
property<qualified type name> name;
2020-05-25 12:38:29 +02:00
Simon Hausmann
5accea4cdd
Add support for qualified type names to the parser
2020-05-25 11:53:44 +02:00
Olivier Goffart
3965d9048f
syntax_updater: also update the .rs files containing sixtyfps!
2020-05-25 11:49:52 +02:00
Olivier Goffart
dd756ef112
Adapt the parser to parse := instead of =
2020-05-25 10:46:00 +02:00
Olivier Goffart
5228f3695d
Revert "Replace '=' with ':='"
...
This reverts commit 7be8b09b3b
.
Now that the replacement is done
2020-05-25 10:45:10 +02:00
Olivier Goffart
d8601621c0
Use the tool to replace = with :=
2020-05-25 10:44:22 +02:00
Olivier Goffart
7be8b09b3b
Replace '=' with ':='
2020-05-25 10:43:19 +02:00
Olivier Goffart
058676e526
Initial import of a syntax_updater tool that rewrite files
2020-05-25 10:07:43 +02:00
Simon Hausmann
50ecffe1f1
Replace RenderingInfo with RenderingPrimitive
...
This is one data structure less and it avoids converting from the one to
the other.
2020-05-22 16:07:06 +02:00
Simon Hausmann
bcc6c6a60a
Move Color and RenderingPrimitive into abi::datastructures
...
This paves the way to replace RenderingInfo.
2020-05-22 16:07:06 +02:00
Simon Hausmann
230870a292
Style cleanup
...
Remove some where clauses that leads to less verbose signatures. Also
use impl FnFoo, which is shorter as well.
2020-05-22 16:07:06 +02:00
Simon Hausmann
d48faf711f
Update cached rendering data only when there are changes
...
This introduces a separate rendering preparation step in the main
window. As a consequence, the component becomes a parameter and the
graphicstest example can't use the main window anymore.
The decision whether a new low-level primitive needs to be created or
not is made by comparing the last RenderingPrimitive against the new
one.
On the upside, this means that property changes are now reflected in the
graphics.
2020-05-22 16:07:06 +02:00
Simon Hausmann
cd80a4038f
Clean up HasRenderingPrimitive trait API after transition
...
The extraction does not have to be optional anymore. That will make
future code using this simpler.
2020-05-22 16:07:06 +02:00
Simon Hausmann
21842bdd75
Remove the individual primitive factory functions from RenderingPrimitivesBuilder
...
Only use the new one that takes the new enum.
2020-05-22 16:07:06 +02:00
Simon Hausmann
9459578265
Add API to the RenderingPrimitivesBuilder to build the new style primitive
2020-05-22 16:07:06 +02:00
Simon Hausmann
5c8163d7a7
Introduce a new rendering primitive enum in the graphics module
...
This shall become the successor to RenderingInfo. For now it's just a
place holder, but the idea is that backend creates the opaque primitive
that holds this public rendering primitive, exposed via the
HasRenderingPrimitive trait.
2020-05-22 16:07:06 +02:00
Simon Hausmann
e7fd69bad1
Rename internal types
...
Rename the backend specific RenderingPrimitive to LowLevelRenderingPrimitive,
in order to make room for a high-level RenderingPrimitive enum that's public.
2020-05-22 16:07:06 +02:00
Simon Hausmann
f2662f0884
Simplify image primitives graphics API
...
Don't require a dest rect for now. Rendering is always at (0, 0) but
with the transformation applied. And the size shall for now not be a
parameter.
2020-05-22 16:07:06 +02:00
Simon Hausmann
bbc4c508f9
Minor cleanup
...
Replace lyon's rect import, which is a re-export of euclid's Rect<f32>,
with our own. Only the Path is
lyon specific, for now.
2020-05-22 16:07:06 +02:00
Olivier Goffart
270c626c6c
Make the Parser a trait
...
Because the rowan::GreenNode is read-only but i want to use the parser
to generate something that can be mutated
2020-05-22 15:31:27 +02:00
Olivier Goffart
0f977cbb25
Some documentation fixes for item generated with #[vtable]
2020-05-22 12:38:55 +02:00
Olivier Goffart
bf3a0878b5
Add documentation for the vtable crate
2020-05-22 11:17:45 +02:00
Simon Hausmann
33dd2d765d
Minor cleanup in item transform calculation
...
We can use the new geometry() getter to simplify the transform update by origin.
2020-05-22 09:33:08 +02:00
Simon Hausmann
8b854c32c3
Add Text::font_family and font_pixel_size properties
...
We can fine-tune the API, this works for now to change :-)
2020-05-21 21:04:07 +02:00
Simon Hausmann
4d26fe6674
Implement support for selecting the font family and pixel size in the GL renderer
...
The public API in the properties is still missing.
2020-05-21 20:55:34 +02:00
Simon Hausmann
8e8943b8fe
Clean up texture atlas allocation code
...
Let each atlas texture know its index, so that it can return the final
allocation result right away.
2020-05-21 18:54:46 +02:00
Simon Hausmann
86eaf027d4
Implement glyph runs grouped by texture
...
In order to support multiple font sizes, etc. we have to deal with the
fact that the glyphs for a string may not end up all in the same atlas
texture. Therefore splitting of glyph runs by texture is necessary.
This works but could be improved further by sharing the vertex arrays
and just re-binding to a different texture and drawing the run's
triangles by index.
2020-05-21 15:51:09 +02:00
Simon Hausmann
66c91ef658
Prepare for supporting multiple glyph runs
...
A glyphs primitive may end up requiring multiple draw commands in the future,
so prepare for that.
2020-05-21 15:51:09 +02:00
Olivier Goffart
c03c2e2e7e
Attempt to do Plus / Minus
2020-05-21 13:24:45 +02:00
Olivier Goffart
54eb0f831b
Fix the children allocation array
...
The offsets was not computed properly
2020-05-21 13:14:28 +02:00
Olivier Goffart
4575011293
More work on signal: the C++ part is working
2020-05-20 19:28:58 +02:00
Olivier Goffart
83d206ea39
runtime: Add a Signal class
...
Not very functional yet
2020-05-20 16:13:04 +02:00
Olivier Goffart
4f22e2c341
Add a bool property type
2020-05-20 13:36:47 +02:00
Olivier Goffart
0e85886301
Only allow to connect to existing signals
2020-05-20 13:36:47 +02:00
Simon Hausmann
de923131ee
Remove dummy test code
...
It's not testing anything :-)
2020-05-20 13:27:07 +02:00
Simon Hausmann
994d47a529
Shader module cleanup
...
Move the specific shaders into the shaders module and then hide the Shader
type. It's not necessary to export it anymore.
2020-05-20 13:27:07 +02:00
Simon Hausmann
f7dfb030a0
Improve shader setup code
...
Determine the locations of the uniforms and attributes once instead of on every use.
This makes the code easier to read and faster.
2020-05-20 13:27:07 +02:00
Simon Hausmann
b7fd9658d3
More shader code cleanup
...
Move the uniform and attribute binding into the shader encapsulating types.
2020-05-20 13:27:07 +02:00
Simon Hausmann
036c1aae38
Begin shader code cleanup
...
Start by a bit of encapsulation of the specific shaders we use.
2020-05-20 13:27:07 +02:00
Olivier Goffart
efe0ccfb3f
Add support for signal in the parser
...
(currently not doing anything else than parsing)
2020-05-20 12:53:08 +02:00
Olivier Goffart
300cd9653a
Move the expression parse funciton in their own module
2020-05-20 12:30:30 +02:00
Olivier Goffart
94c58dc1c4
Add an mouse handler for the TouchArea
2020-05-20 12:03:36 +02:00
Simon Hausmann
5acb8e7bdd
Minor glyph handling cleanup
...
When laying out glyphs, don't require a slice, just an iterator.
2020-05-20 11:02:48 +02:00
Simon Hausmann
9b9a29e03d
Clean up glyph handling
...
Avoid calling glyph_for_char twice for each character.
Instead do the conversion once explicitly. That needs to be done anyway for shaping.
2020-05-20 10:50:49 +02:00
Simon Hausmann
e0cc9aef2a
Cleanup text rendering code a bit
...
Move the text related code into a separate file.
2020-05-20 10:50:49 +02:00
Simon Hausmann
f29aa0a302
GL buffer handling cleanup
...
Move the buffer handling code into a separate file.
2020-05-20 10:50:49 +02:00