Commit graph

36 commits

Author SHA1 Message Date
Héctor Ramón Jiménez
a74ce29c1a Implement growing logic for TextAtlas
The `TextAtlas` will have an initial size of `256` (we could make this
configurable) and `try_allocate` will keep track of the glyphs in use
in the current frame, returning `None` when the LRU glyph is in use.

In that case, `TextRenderer::prepare` will return
`PrepareError::AtlasFull` with the `ContentType` of the atlas that is
full. The user of the library can then call `TextAtlas::grow` with the
provided `ContentType` to obtain a bigger atlas (by `256`).

A `TextAtlas::grow` call clears the whole atlas and, as a result, all of
the `prepare` calls need to be repeated in a frame until they all
succeed. Overall, the atlas will rarely need to grow and so the calls
will not need to be repated often.

Finally, the user needs to call `TextAtlas::trim` at the end of the
frame. This allows us to clear the glyphs in use collection in the atlas. Maybe
there is a better way to model this in an API that forces the user to
trim the atlas (e.g. make `trim` return a new type and changing `prepare` and `render` to take that type instead).
2023-07-04 14:54:05 -02:30
Gijs Burghoorn
d20643702f Doc: Add small summary of crate goal in doc.rs 2023-06-07 10:07:44 -02:30
Héctor Ramón Jiménez
9f82af4f7d Introduce ColorMode for Atlas 2023-06-06 11:56:02 -02:30
Héctor Ramón Jiménez
2af2f357c5 Update cosmic-text to latest 2023-03-27 23:02:28 -02:30
Héctor Ramón Jiménez
1f31586c55 Set default_color per TextArea 2023-02-26 23:30:30 -03:30
grovesNL
c25f394c16 Allow depth to be attached to text using metadata 2023-02-15 07:54:31 -03:30
Héctor Ramón Jiménez
da4bb4af5c Use lru for glyph caching
I noticed that the `RecentlyUsed` map was actually a `RecentlyInserted`
map. This caused panics when trying to reduce the initial texture atlas size and
dynamically increase it (coming in another PR!).
2023-02-08 00:49:37 -03:30
grovesNL
288cd89cf8 Simplify re-exports paths 2023-01-29 22:11:54 -03:30
grovesNL
658fcf4d6f Separate text area lifetimes 2023-01-29 22:11:54 -03:30
grovesNL
07b04f511a Update example to show emojis and clipping 2023-01-29 22:11:54 -03:30
grovesNL
8c8cfba093 Add clipping back 2023-01-29 22:11:54 -03:30
Joshua Groves
3a0e965675 Split color and mask atlases apart 2023-01-29 22:11:54 -03:30
grovesNL
4c1a83548e Use default font color and remove Color 2023-01-29 22:11:54 -03:30
grovesNL
14499e4659 Remove HasColor 2023-01-29 22:11:54 -03:30
grovesNL
7fe35bdce3 Update to latest cosmic-text 2023-01-29 22:11:54 -03:30
grovesNL
75fc8f978f Start cosmic-text implementation 2023-01-29 22:11:54 -03:30
grovesNL
2a01a1b2e0 Handle negative glyph positions correctly 2022-11-29 14:33:12 -03:30
grovesNL
4ff7d0d824 Add Eq and PartialEq derives to Color 2022-10-24 09:25:20 -02:30
grovesNL
66e44293de Add derives for Color 2022-10-24 09:15:07 -02:30
grovesNL
296c99f059 Add documentation to all public types
Fixes #11
2022-10-18 13:25:24 -02:30
Andrew Wheeler(Genusis)
4075536745 Merge #19 2022-10-18 12:52:00 -02:30
grovesNL
afab881559 Handle text overflow
Cull glyphs fully outside the bounds, and clip glyphs intersecting the
bounds. This is all done on the CPU for now.

Fixes #2
2022-10-18 12:52:00 -02:30
grovesNL
3c7789cd3b Update to wgpu 0.13 2022-07-13 09:43:10 -02:30
grovesNL
bbc5f18cdd Pad to improve WebGL support 2022-06-23 22:21:21 -02:30
grovesNL
73b2562179 Accept atlas in prepare and render 2022-06-03 00:52:35 -02:30
grovesNL
857f8c72c0 Use premultiplied alpha blending from coverage 2022-06-03 00:31:46 -02:30
grovesNL
e64b4ab63b Use intrusive list to track LRU order 2022-05-17 22:15:11 -02:30
grovesNL
81671d02b8 Validate shared screen resolution 2022-05-17 22:15:11 -02:30
grovesNL
7aa2bd7b72 Free least recently used 2022-05-17 22:15:11 -02:30
grovesNL
4b4594492a Share text atlas between renderers 2022-05-17 22:15:11 -02:30
grovesNL
781bed2c42 Use oversized buffers 2022-05-10 08:48:28 -02:30
grovesNL
8bf8533ead Rename Color trait to HasColor, add Color 2022-05-09 22:53:09 -02:30
grovesNL
5605879164 Add Color trait 2022-05-09 22:40:00 -02:30
grovesNL
ded1ba3310 Use resolution later 2022-05-09 12:29:23 -02:30
grovesNL
195374c716 Pack attributes slightly 2022-05-09 11:52:38 -02:30
grovesNL
f5648e0f94 Initial commit 2022-05-09 10:19:10 -02:30