Edit: to reply to the lovely article. I wouldn't mind if there was a reference implementation for the web. So that people could experiment with things on it. There's nothing stopping me building Chromium which I did on a Windows machine once as an experiment. I couldn't get Firefox to build as Mercurial kept crashing. I would like to see proper SQL APIs in browsers as that's the industry standard for fetching and retrieving data. The browser is a very powerful piece of technology. I see it as a magazine viewer and application distribution platform. I use Repl.it when I am on a low powered windows laptop and IntelliJ and vim otherwise.
I would also like to see a lightweight native API for DOM queuing ala React.
Layout engines are difficult to write and adapt. Especially adapt as they're so complicated.
I read part of the ORC Solver paper and there is algorithms in that paper for writing a layout engine and there's code on GitHub.
I would like to adapt this approach but write the code myself but it is obviously a challenging area.
I am yet to write a branch and bound optimisation algorithm. But from my understanding you greedily try a number of rows or columns and try arrange objects preferred width and preferred height into the space available. ORCSolver uses intervals and eliminates attempts that are not viable. ORCSolver uses Z3 for the final step to actually get coordinates when the system has been constrained. I plan to use ORTools.
For simplicity I plan to break up text into letters and try place them all in a flowing horizontal then vertical layout. I can use GetTextExtents of WX widgets to predict size of a rendered letter. It shall be slow but then how else do you begin writing a layout engine? I would need to read TeX or the Art of Computer Programming.
Layout is expensive especially for grid based layouts with flowing. I wonder if website authors could prerender at different resolutions and provide start point sizes and coordinates for speed. Generally everybody reaches the same numbers on everyone's machines and we don't need to try a lot of aborted work to relayout.
I am the author of additive GUIs which is a declarative rendering approach for bootstrap layouts. https://GitHub.com/samsquire/additive-guis
It's not really a layout engine but it does layout things according to mutually recursive rules.
I would also like to see a lightweight native API for DOM queuing ala React.
Layout engines are difficult to write and adapt. Especially adapt as they're so complicated.
I read part of the ORC Solver paper and there is algorithms in that paper for writing a layout engine and there's code on GitHub.
https://github.com/YueJiang-nj/ORCSolver-CHI2020
I would like to adapt this approach but write the code myself but it is obviously a challenging area.
I am yet to write a branch and bound optimisation algorithm. But from my understanding you greedily try a number of rows or columns and try arrange objects preferred width and preferred height into the space available. ORCSolver uses intervals and eliminates attempts that are not viable. ORCSolver uses Z3 for the final step to actually get coordinates when the system has been constrained. I plan to use ORTools.
For simplicity I plan to break up text into letters and try place them all in a flowing horizontal then vertical layout. I can use GetTextExtents of WX widgets to predict size of a rendered letter. It shall be slow but then how else do you begin writing a layout engine? I would need to read TeX or the Art of Computer Programming.
Layout is expensive especially for grid based layouts with flowing. I wonder if website authors could prerender at different resolutions and provide start point sizes and coordinates for speed. Generally everybody reaches the same numbers on everyone's machines and we don't need to try a lot of aborted work to relayout.
I am the author of additive GUIs which is a declarative rendering approach for bootstrap layouts. https://GitHub.com/samsquire/additive-guis It's not really a layout engine but it does layout things according to mutually recursive rules.