Commit Graph

17154 Commits

Author SHA1 Message Date
Antonio Scandurra
466016a374 Snap sprites to pixel grid in Renderer
Previously, we were doing so in the `SpriteCache` but that would cause
floating point errors that caused glyphs to sometimes be positioned
midway through a pixel.
2021-03-26 11:07:16 +01:00
Antonio Scandurra
61d4da9934 Introduce layer clipping 2021-03-26 10:28:05 +01:00
Antonio Scandurra
63f9719c99 💄 2021-03-26 09:58:55 +01:00
Antonio Scandurra
5439213199 Fix Empty sometimes returning an infinite size in layout
This commit also ensures that elements never report an infinite size by
adding a debug assertion in the `Lifecycle` element.
2021-03-26 09:46:53 +01:00
Antonio Scandurra
1cb987d489 Remove stray use of pathfinder_geometry 2021-03-25 18:19:20 +01:00
Antonio Scandurra
e44ea6b379 Fix cursor blinking 2021-03-25 17:41:03 +01:00
Antonio Scandurra
596fc47a68 Start on painting the editor 2021-03-25 17:36:29 +01:00
Antonio Scandurra
466f6e0479 Center line around its bounding box 2021-03-25 17:21:26 +01:00
Antonio Scandurra
4dc1b1e179 Fix test_render_glyph (but still leave it commented out for now) 2021-03-25 15:10:21 +01:00
Antonio Scandurra
0f6927eb4b Re-export font_kit primitives from a new fonts module
...also, rename the old `fonts` to `font_cache`.
2021-03-25 10:58:33 +01:00
Antonio Scandurra
0906b2a2f4 Remove unused dependencies and avoid instantiating FontCache in tests 2021-03-25 10:48:32 +01:00
Antonio Scandurra
5f3dbb05d6 Honor vertical subpixel positions
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-24 18:35:48 +01:00
Antonio Scandurra
bc977fc873 Render different variants according to subpixel positioning
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-24 18:20:25 +01:00
Antonio Scandurra
9178e91cc0 Extract platform-dependant FontSystem
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-24 16:51:28 +01:00
Antonio Scandurra
e0e4cff815 Align glyphs correctly using font-kit's raster_bounds 2021-03-24 11:46:17 +01:00
Nathan Sobo
7523df05cf Space out sprites in atlas
This prevents us from accidentally sampling a neighboring sprite.
2021-03-23 19:02:03 -06:00
Nathan Sobo
e5d586a942 Get glyphs sort of rendering 2021-03-23 18:54:09 -06:00
Nathan Sobo
28b84c081d Fix noise in atlas texture 2021-03-23 17:27:28 -06:00
Antonio Scandurra
ad7974608b WIP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-23 19:11:56 +01:00
Nathan Sobo
247afa1666 WIP 2021-03-23 09:13:35 -06:00
Antonio Scandurra
764bfba2e2 WIP: Start on rendering glyphs
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-23 15:15:41 +01:00
Antonio Scandurra
43abd96769 Apply padding correctly when painting Container's children 2021-03-23 10:59:35 +01:00
Antonio Scandurra
bac543657c Declare float literals consistently in shader 2021-03-23 10:45:09 +01:00
Antonio Scandurra
3de0ce6079 Remove artifact when a border side was not rendered
This introduces an extra conditional in the shader, there's probably a
way of writing it without ifs but I like how the logic reads with it and
it shouldn't be that big of a deal performance-wise.
2021-03-23 10:33:31 +01:00
Antonio Scandurra
32c070250c Scale corner_radius by the scale factor when rendering shadows 2021-03-23 10:14:07 +01:00
Nathan Sobo
66dcb73263 Respect margins when painting Container 2021-03-22 21:11:08 -06:00
Nathan Sobo
d13510bfe3 💄 2021-03-22 21:00:07 -06:00
Nathan Sobo
548b542766 Get the file finder rendering with a drop shadow 2021-03-22 20:54:52 -06:00
Antonio Scandurra
859c0f53cb WIP: Introduce layers in renderer
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-22 18:55:53 +01:00
Antonio Scandurra
bfc57cb4f6 Start on rendering shadows
This still doesn't work properly because shadows are rendered beneath
quads and we still don't have a layering mechanism.

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-22 18:05:16 +01:00
Antonio Scandurra
45c1337c84 Support rendering borders
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-22 16:24:26 +01:00
Antonio Scandurra
f330fdb6a7 Clarify variable name
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-03-22 15:27:48 +01:00
Antonio Scandurra
123b7c55f6 Render quads with anti-aliased rounded corners 2021-03-22 13:50:43 +01:00
Nathan Sobo
119aa452b6 Overhaul the entire element system
Now the Element trait is designed to be wrapped in a Lifecycle enum that gets placed inside an ElementBox. This allows the framework to store data on behalf of the Element implementation, such as sizes, bounds, and also implementation-specific LayoutState and PaintState types. This makes it easier to reason about which data is available in each Element method.
2021-03-21 20:54:23 -06:00
Nathan Sobo
046fe3fff9 Dispatch keystrokes and fix rerendering when window invalidated
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-03-21 11:38:23 -06:00
Nathan Sobo
f5df3681f8 Add file_finder module
Still need to wire up key bindings to make it toggle.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-03-21 10:50:07 -06:00
Nathan Sobo
0c59937a65 Wire up events and fix synthetic dragging
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-03-21 09:44:14 -06:00
Nathan Sobo
04665800c0 Scale quads by scale factor before writing to Metal buffer
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-03-21 09:19:12 -06:00
Nathan Sobo
31fb707eea Fix translation to device coords in shader
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-03-21 09:01:50 -06:00
Nathan Sobo
1f647ef24c Clean up
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-03-21 09:00:47 -06:00
Nathan Sobo
e5ffe43bb6 Get basic graphics rendering via Metal
Also, handle window resize.
2021-03-20 22:19:26 -06:00
Nathan Sobo
292b41ad57 Start on metal rendering infrastructure 2021-03-20 09:38:36 -06:00
Nathan Sobo
d14c943150 Start on Scene 2021-03-19 13:31:25 -06:00
Nathan Sobo
cfe3aae2de WIP: Get everything compiling again and keep window open 2021-03-19 12:12:10 -06:00
Nathan Sobo
605bdd62dd WIP: Start on rendering scenes via presenter 2021-03-18 21:33:16 -06:00
Nathan Sobo
e809d6119a Return tasks from spawn and spawn_stream
Also, eliminate the background spawning methods. We can spawn futures
on the executor and then spawn those on the app if we need to wait for
the result of running one.
2021-03-18 20:10:32 -06:00
Nathan Sobo
f849857309 Handle command line arguments and populate worktree 2021-03-18 17:54:35 -06:00
Nathan Sobo
9bab29c72f Get workspace module in and compiling 2021-03-18 15:52:46 -06:00
Nathan Sobo
171dd0c243 WIP 2021-03-18 13:17:25 -06:00
Nathan Sobo
23308e17a9 WIP on rebuilding with extracted UI framework 2021-03-18 13:13:31 -06:00