Commit graph

150 commits

Author SHA1 Message Date
Hojjat
25a3367ef9 Turn a consequtive whitespaces into separate words
Currently a sequence like this "hello      " (a word followed by
6 spaces). Would be shaped into two words: ["hello     " , " "]
This causes issues, since the first word is only 5 letters long,  not 10
This commit will break this sequence into:
["hello", " ", " ", " ", " ", " ", " "]
This helps with correct line wrappipng
2022-12-20 04:48:53 -07:00
Hojjat
3ef56b7112 Ignore the last space when wrapping. 2022-12-20 04:48:53 -07:00
Hojjat
cb958c63f8 Clean up 2022-12-20 04:48:53 -07:00
Hojjat
089a926615 Bidi reordering works with wrapping. 2022-12-20 04:48:53 -07:00
Héctor Ramón Jiménez
034c5248d9 Replace unless ... not with simply if ... in docs 2022-12-16 13:50:40 -07:00
Héctor Ramón Jiménez
be6dea75a8 Clarify when to use x_offset and y_offset in LayoutGlyph 2022-12-16 13:50:40 -07:00
Héctor Ramón Jiménez
01f6c1fd89 Expose subpixel offsets in LayoutGlyph 2022-12-16 13:50:40 -07:00
Jeremy Soller
ba39c81656
Fix no_std compilation 2022-12-15 14:31:19 -07:00
Héctor Ramón Jiménez
be4dc2749c Fix line width in LayoutLine for RTL 2022-12-15 11:17:54 -07:00
Héctor Ramón Jiménez
67950724c3 Add line width field to LayoutLine 2022-12-15 11:17:54 -07:00
Héctor Ramón Jiménez
652543f9aa Implement method to obtain glyph outlines
This is useful for drawing text with non-bitmap based renderers (e.g. vectorial, tessellators, etc.).
2022-12-14 23:45:45 -07:00
Jeremy Soller
8bf0032974
Add custom metadata to Attrs, copied to ShapeGlyph and LayoutGlyph 2022-12-14 09:19:03 -07:00
Jeremy Soller
f5968c4c37
Only do glyph wrapping if wrap_simple is enabled 2022-12-13 09:23:35 -07:00
Jeremy Soller
dd94bc634b
Do not wrap empty lines 2022-12-08 11:33:36 -07:00
Jeremy Soller
3d60d55309
Add comment for last change 2022-12-08 10:35:13 -07:00
Jeremy Soller
a30576e1eb
Skip blank words at start of line 2022-12-08 10:31:44 -07:00
Jeremy Soller
05d97f0f3a
Make noto color emoji have a higher preference for fallback 2022-12-02 08:41:38 -07:00
Hojjat
cd64388451 Added BiDi example to demonstrate reordering works
and disabled `wrap simple` since it's not working properly.
2022-12-02 08:30:16 -07:00
Hojjat
c344eec936 This fixes the bidi layout issue.
Needs more testing and cleaning up the previous algorithm.
2022-12-02 08:30:16 -07:00
Jeremy Soller
2342bf0eae
Add more vi commands 2022-11-21 15:49:12 -07:00
Jasper Bekkers
6249b0e037
🍮 Add custom font support (#43)
* 🍮 Add custom font support

* Revert incorrect change
2022-11-21 04:36:18 -07:00
Jeremy Soller
ee54e7626b
Vi-style editor and other editor improvements (#40)
* WIP VI wrapper for editor

* WIP: block cursor

* Create Edit trait, run CI on all feature options

* Add prints describing build steps to ci.sh

* Custom rendering for Vi editor

* Clippy fixes

* More clippy fixes

* Show clippy results in CI

* Fix for Redox

* Fix clippy lint

* Add vi feature to enable vi-style editor

* Add escape to libcosmic text box
2022-11-15 12:26:59 -07:00
Andrew Wheeler(Genusis)
271ca5cf7a
Converted attr range to use RangeMap BTree (#41)
* Converted attr range to use RangeMap BTree

* Change get_span() to use First index instead of range.

* update doc comment
2022-11-14 11:05:34 -07:00
Hojjat
b253800383
Add Padding to the TextBox (#36)
* WIP: initial text-margin support

* Fix the selection issue when clicking the margins

* Move the margin size into the main

* using padding, consistent with iced text_input

* Added top and bottom margin

* bugfix: selection starting from the top margin works

* bugfix: left half of first glyph was being ignored
2022-11-10 11:55:12 -07:00
Jeremy Soller
bbe7d77b7b
Improvements to syntax editor, integrate with libcosmic editor 2022-11-09 10:44:51 -07:00
Jeremy Soller
1663bfc96c
Add SyntaxEditor abstraction using optional synect feature 2022-11-09 10:09:42 -07:00
Jeremy Soller
268805ba0c no_std support 2022-11-08 13:24:14 -07:00
Jeremy Soller
e95671f68f
Add comment 2022-11-08 13:22:39 -07:00
Jeremy Soller
658a037ca7
Add functions for copying and deleting selection 2022-11-08 10:18:19 -07:00
Hojjat
83307e7969 Switch to peekable to avoid looping the runs again 2022-11-06 11:09:17 -07:00
Hojjat
c1c2248572 bugfix: text selection starting from the bottom 2022-11-06 11:09:17 -07:00
grovesNL
2ceee35011 Fix typo in "performance" 2022-11-05 09:15:24 -06:00
Ian Douglas Scott
0d3fb1dd9d Use ouroboros in FontSystem to avoid lifetime bound
Perhaps not quite what ouroboros is expected to be used for, but it's
not too bad, and avoiding the lifetime bound can be a huge help.
2022-11-04 10:37:32 -06:00
Jeremy Soller
ac354c3a2a
Remove AttrsList lifetime bound 2022-11-04 09:44:54 -06:00
Jeremy Soller
9a6a01a672
Add script to build everything and run all tests 2022-11-01 08:38:44 -06:00
Jeremy Soller
d49e8881fd
Use image renderer for iced text widget 2022-10-31 12:04:33 -06:00
Jeremy Soller
a13fd9c591
Improve docs 2022-10-31 11:36:54 -06:00
Jeremy Soller
7d26e332f0
Make cursor_moved private 2022-10-31 11:26:05 -06:00
Jeremy Soller
92cad6fe13
Decouple editing from buffer 2022-10-31 11:24:36 -06:00
Jeremy Soller
26c83be35a
Combine spans in add_span if possible 2022-10-31 10:25:08 -06:00
Andrew Wheeler(Genusis)
f2a60a8dcc
Rework add_span (#25)
* Rework Ranges to split and change or overwrite based on old ranges to new range

* set array size to 3 instead of 5. added some comments

* Avoid adding ranges that the start and end == each other

* actually remove the start != end requirement since get_span doesnt care and would work for single characters.

* Add 1 to forward map so it cant overlap ranges like 11..11

* optimize the span lookup so if it is outside the search parameters it doesnt keep looping. update get span to iterate normally since there should be no duplicates. Maybe optimize this to a btree now instead?

* make the range changes for front to end have the end -1 so as to not overlap since get span is <=

* Readded block for ranges like 1..1
Moved rework ranges into the first loop.
Removed the -1 and +1 from the range clips.
2022-10-29 17:56:14 -06:00
Jeremy Soller
a4a4eb7783
Fix rgba ordering 2022-10-27 18:16:42 -06:00
Jeremy Soller
88bd1c9235
Add layout_opt and shape_opt getters to TextBufferLine 2022-10-27 17:40:00 -06:00
Jeremy Soller
cce821e99f
Adjust attribute spans when buffer lines change 2022-10-27 14:51:46 -06:00
Jeremy Soller
e2b9aa77b9
Iterate attr spans in reverse for efficiency 2022-10-27 13:50:14 -06:00
Jeremy Soller
2b1e884ca7
Use SwashCache in doc example 2022-10-27 11:02:56 -06:00
Jeremy Soller
8f8cf80bf6
Update documentation 2022-10-27 10:29:19 -06:00
Jeremy Soller
e4c8d4ba6b
Make attribute spans use ranges and update docs 2022-10-27 09:56:53 -06:00
Jeremy Soller
3ece9236b3
Use Color in more places 2022-10-27 09:07:47 -06:00
Jeremy Soller
f133b1fca1
Improve API to set line attributes 2022-10-27 08:37:07 -06:00