Commit graph

1092 commits

Author SHA1 Message Date
Simon Hausmann
85e2ac36ef Prepare for caching rendering info for Items
Replace the RenderTree with a RenderingCache that is just the free-list vector
of rendering primitives.
2020-05-12 15:44:08 +02:00
Olivier Goffart
638c445cf9 Support for rendering sub-elements with proper offset 2020-05-12 15:38:50 +02:00
Simon Hausmann
743ad34099 Renaming RenderNode to CachedRenderingData
The name node suggests some kind of connected (tree) data structure, which
isn't quite what it is. It really is meant just
to be a way of storing cached rendering data for this item.
2020-05-12 13:55:57 +02:00
Olivier Goffart
7c2f40da90 Generator for the rust API 2020-05-12 11:43:29 +02:00
Simon Hausmann
7efcbd5816 Simplify geometry handing
Replace the use of kurbo's primitives with lyon/euclid. This means less data copying,
conversion and also no annoying precision
casts.
2020-05-11 19:23:03 +02:00
Olivier Goffart
471dd0f778 Make run_component safe 2020-05-11 15:35:17 +02:00
Olivier Goffart
88e904d228 Draft of the layouting runtime code 2020-05-11 15:33:38 +02:00
Simon Hausmann
c966f6e546 Add primitive rectangle rendering
This is still uncached, but gets something onto the screen.
2020-05-11 15:33:14 +02:00
Simon Hausmann
83eb00b080 Run the C++ generated component through the GL backend
... which in turn forward to the corelib, but with the GL renderer attached.
2020-05-11 15:05:33 +02:00
Simon Hausmann
63d3f5125e Move the main loop implementation into the core library 2020-05-11 14:30:41 +02:00
Simon Hausmann
3a954e4cea Move window system creation and other GL related code into the GL backend 2020-05-11 13:11:55 +02:00
Olivier Goffart
bd039be10c Introduce the datastructure to allow models and repeater 2020-05-11 10:10:25 +02:00
Olivier Goffart
cc170d1d76 More comments 2020-05-11 09:00:21 +02:00
Simon Hausmann
8843f655eb Reduce the binary size
Only use the png loader from image
2020-05-07 21:02:46 +02:00
Simon Hausmann
12626472c4 Fix wasm build
Get rid of the glutin dependency in the GL renderer -- the caller is now responsible for swapping buffers.
2020-05-07 15:07:29 +02:00
Simon Hausmann
e0b024d2cf Some work towards implementing the gl renderer
... in plain GL(ow). swapbuffers and clearing the color buffer is working.
2020-05-07 15:07:29 +02:00
Olivier Goffart
0398a221d2 Add a visitor to visit the items of a component 2020-05-07 12:11:01 +02:00
Olivier Goffart
e01de2e0ff Add a item visitor 2020-05-07 11:44:17 +02:00
Olivier Goffart
2f16517291 Put the CompoentType inside the class in the generated code
and start working on safe wrapper
2020-05-07 10:36:23 +02:00
Olivier Goffart
bdaf14ae23 Parse numbers 2020-05-07 09:06:58 +02:00
Olivier Goffart
a0d9369336 Add a crate to compute the field offsets as const fn 2020-05-06 20:58:10 +02:00
Olivier Goffart
b128a848e2 Parse quoted string 2020-05-06 18:24:30 +02:00
Olivier Goffart
05624c68ee Add some properties in the Rectangle 2020-05-06 17:53:42 +02:00
Olivier Goffart
3a541ec1eb Handle children elements 2020-05-06 16:43:04 +02:00
Olivier Goffart
b2b57887e2 add sixtyfps-cpp draft 2020-05-06 12:52:31 +02:00
Olivier Goffart
74b3c9147e Fix build 2020-05-06 11:56:08 +02:00
Olivier Goffart
9ad39d835e move the abi in its own module 2020-05-06 10:27:09 +02:00
Olivier Goffart
35fde11515 Use cbindgen to generate the internal abi 2020-05-06 10:11:32 +02:00
Simon Hausmann
17d3d49a83 Use cgmath throughout
And remove usage of kurbo::Affine. That avoids extra translations.
2020-05-05 23:00:03 +02:00
Olivier Goffart
acccb33c8c Lower and generate some C++ 2020-05-05 18:31:00 +02:00
Simon Hausmann
bfac827ec7 Start with image rendering
These are the basics. Still to do are fixing the alpha channel blending, the rect handling,
a texture type to avoid consuming  the image over and over again. And more :-)
2020-05-05 18:20:21 +02:00
Simon Hausmann
61dc3d9dc9 Sketching out some more data structure bits
Co-authored-by: Olivier Goffart <olivier@sixtyfps.io>
2020-05-05 16:12:35 +02:00
Olivier Goffart
86011528f1 Draft of data structures 2020-05-05 14:06:52 +02:00
Simon Hausmann
f3a4f75e17 Allow specifying a clear color for the frame
... and default it to white.
2020-05-05 13:51:48 +02:00
Simon Hausmann
5d07a6bd5b Support specifying the color for path filling 2020-05-05 13:24:41 +02:00
Simon Hausmann
7a129d66d3 Split graphics::RenderNode into RenderNodeMut and RenderNode
This allows a read-only tree traversal and thus rendering.
2020-05-05 11:38:29 +02:00
Simon Hausmann
fc5f93fab2 First implementation of a tree of rendering nodes
The idea is that they can be recursively rendered and propagate at least
the transform but also clip in the future.

One thing that's left is to split RenderNode into RenderNode and
RenderNodeMut, so that the rendering itself can be done on a non-mutable
tree reference.
2020-05-05 11:25:03 +02:00
Olivier Goffart
a83413aabc Do not put the frame on the heap.
But this forced to make GLFrame public.
2020-05-04 18:40:09 +02:00
Simon Hausmann
4edf2291d6 Simplfy new_frame trait signature
The life time specifier wasn't needed, it seems.
2020-05-04 15:29:04 +02:00
Simon Hausmann
9c961059e1 Beginnings of a simple lyon and glium based GL renderer 2020-05-04 15:27:21 +02:00
Simon Hausmann
a4b69b23c0 Fix contact info in Cargo manifests 2020-05-04 11:54:45 +02:00
Simon Hausmann
c6553d007e Initial commit laying out the structure 2020-05-04 10:49:58 +02:00