Commit graph

43 commits

Author SHA1 Message Date
grovesNL
bfb07147cd Don't convert web text colors to linear 2024-01-15 21:32:22 -03:30
Lukas Kalbertodt
b15437b87f Fix typo in docs 2024-01-02 20:50:08 -03:30
Lukas Kalbertodt
914a283e3f Add #[doc(no_inline)] to cosmic-text reexports
Before this commit, all reexported symbols were displayed as if they
were part of `glyphon` directly. Users not being able to see at a glance
what's part of which crate has a few disadvantages. It makes
understanding the whole stack more difficult, since it's unclear what's
part of the wgpu-integration and what's part of the general text
handling. Personally, I also think this can deter people from using
glyphon as this makes the crate (which is "just" the wgpu integration)
seem huge. Finally, some symbols in the docs were not linked (as if it
was private), which is also really bad for browsing docs.
2024-01-02 20:50:08 -03:30
Héctor Ramón Jiménez
81dedbd042 Implement subpixel glyph positioning and scaling
The latest `cosmic-text` release performs bucketing calculations after
layouting. This allows us to provide proper subpixel offsets, as well as
scale any buffer thanks to its linear layout properties.

See https://github.com/pop-os/cosmic-text/pull/143.
2023-07-11 00:18:25 -02:30
Héctor Ramón Jiménez
d40b6ad2ed Remove Copy implementation for TextArea 2023-07-10 15:25:47 -02:30
Héctor Ramón Jiménez
0857bef584 Take an Iterator of TextArea in prepare 2023-07-10 15:25:47 -02:30
Héctor Ramón Jiménez
f64771c2c3 Grow internal packer and re-upload glyphs automatically 2023-07-04 14:54:05 -02:30
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