Mitchell Hashimoto
85e32f9a15
renderer: hide cursor is state explicit asks for invisible cursor
...
This was a regression. The previous logic would always show the cursor
if we were using a non-blinking cursor. But, if the terminal state is
explicitly requesting an invisible cursor (mode 25) then we need to hide
the cursor.
2023-08-06 09:55:13 -07:00
Mitchell Hashimoto
2065dd77d7
renderer/opengl: need to release OpenGL context with glfw
2023-08-05 22:33:55 -07:00
Mitchell Hashimoto
4b062dc45c
font/shaper: text runs should split around block cursors
...
Fixes #206
2023-07-18 16:20:30 -07:00
Mitchell Hashimoto
3d48432daf
renderer: change padding to integers
...
Screen size is always an integer, it makes sense for padding to also be
rounded to some integer.
2023-07-18 10:44:33 -07:00
Mitchell Hashimoto
ea268bae5e
renderer: do not blink explicit steady cursor styles
2023-07-10 11:27:37 -07:00
Mitchell Hashimoto
13315471d7
renderer: double line widths for sprite fonts when font-thicken is true
...
Fixes #193
2023-07-07 09:08:46 -07:00
Mitchell Hashimoto
45ac9b5d4c
font-feature config to enable/disable OpenType Font Features
2023-07-05 13:12:30 -07:00
Mitchell Hashimoto
55313fcbd5
opengl: support background opacity
2023-07-03 19:51:11 -07:00
Mitchell Hashimoto
0faf6097d0
Change font metrics to all be integers, not floats.
...
Font metrics realistically should be integral. Cell widths, cell
heights, etc. do not make sense to be floats, since our grid is
integral. There is no such thing as a "half cell" (or any point).
The reason we historically had these all as f32 is simplicity mixed
with history. OpenGL APIs and shaders all use f32 for their values, we
originally only supported OpenGL, and all the font rendering used to be
directly in the renderer code (like... a year+ ago).
When we refactored the font metrics calculation to its own system and
also added additional renderers like Metal (which use f64, not f32), we
never updated anything. We just kept metrics as f32 and casted
everywhere.
With CoreText and #177 this finally reared its ugly head. By forgetting
a simple rounding on cell metric calculation, our integral renderers
(sprite fonts) were off by 1 pixel compared to the GPU renderers.
Insidious.
Let's represent font metrics with the types that actually make sense: a
cell width/height, etc. is _integral_. When we get to the GPU, we now
cast to floats. We also cast to floats whenever we're doing more precise
math (i.e. mouse offset calculation). In this case, we're only
converting to floats from a integral type which is going to be much
safer and less prone to uncertain rounding than converting to an int
from a float type.
Fixes #177
2023-07-03 11:23:20 -07:00
Mitchell Hashimoto
0bb2d22052
renderer: hook up font thickening setting
2023-07-01 10:01:40 -07:00
Mitchell Hashimoto
3795cd6c2d
font: turn rasterization options into a struct, add thicken
2023-07-01 09:55:19 -07:00
Mitchell Hashimoto
314f9287b1
Update Zig ( #164 )
...
* update zig
* pkg/fontconfig: clean up @as
* pkg/freetype,harfbuzz: clean up @as
* pkg/imgui: clean up @as
* pkg/macos: clean up @as
* pkg/pixman,utf8proc: clean up @as
* clean up @as
* lots more @as cleanup
* undo flatpak changes
* clean up @as
2023-06-30 12:15:31 -07:00
Mitchell Hashimoto
56f8e39e5b
Update zig, mach, fmt
2023-06-25 11:08:20 -07:00
Mitchell Hashimoto
c6356930cc
renderer: support invisible attribute
2023-06-25 09:31:33 -07:00
Mitchell Hashimoto
1c2451b532
renderer: render underline color if set
2023-06-20 09:39:52 -07:00
Mitchell Hashimoto
1d14b121c0
renderer: do not draw cursor cell inversion if we don't draw the cursor
...
We previously used the "screen.viewportIsBottom" check but this is
always true since awhile back since we copy only the viewport now. A
cleaner check really is that we only track the cursor cell if we're even
drawing the cursor.
2023-05-25 21:41:43 -07:00
Mitchell Hashimoto
2be4eb0da7
font/shaper: split runs at selection boundaries
2023-03-23 10:24:22 -07:00
Mitchell Hashimoto
dfb40426a0
move selection to screen
2023-03-21 10:43:50 -07:00
Mitchell Hashimoto
b0b3b0af2d
update config messages use pointers now to make messages small again
2023-03-19 10:48:42 -07:00
Mitchell Hashimoto
7eda21d544
surface propagates new config to renderer
2023-03-19 09:50:55 -07:00
Mitchell Hashimoto
f34da17a11
renderer: use a DerivedConfig to avoid the main Config pointer
2023-03-19 09:50:54 -07:00
Mitchell Hashimoto
cf519bcd75
Use procedurally generated sprites for cursors rather than shaders
2023-03-04 15:14:10 -08:00
Mitchell Hashimoto
4e31f14f7b
renderer: reset font shaper buffer size on font size change
2023-03-03 14:35:26 -08:00
Mitchell Hashimoto
aa49cceb49
opengl: make setting font size thread safe
2023-02-24 07:58:31 -08:00
Mitchell Hashimoto
6acf67ec66
gtk: render!
2023-02-24 07:58:30 -08:00
Mitchell Hashimoto
b19f9b2aff
opengl: enable single-threaded draw
2023-02-24 07:58:30 -08:00
Mitchell Hashimoto
7eb7cae9e0
opengl: move screen size GL context changes into draw path
2023-02-24 07:58:30 -08:00
Mitchell Hashimoto
913131c8f1
rename more stuff
2023-02-24 07:58:29 -08:00
Mitchell Hashimoto
fbe35c226b
Integrating new surface
2023-02-24 07:58:29 -08:00
Mitchell Hashimoto
d368b8e727
setup app, run works but crashes in OpenGL
2023-02-24 07:58:29 -08:00
Mitchell Hashimoto
f268f3955e
init gtk app
2023-02-24 07:58:29 -08:00
Mitchell Hashimoto
48c9c65915
add app runtime option, add gtk backend
2023-02-24 07:58:29 -08:00
Mitchell Hashimoto
35cb9d20b1
opengl: use premult alpha on fg color to avoid dark edges
...
This avoids an issue I only see in some renderers where the edges of
textures show up with a blurry border. Reading here:
https://www.realtimerendering.com/blog/gpus-prefer-premultiplication/
2023-02-24 07:57:50 -08:00
Mitchell Hashimoto
be75109a1d
new build system
2023-02-14 20:58:33 -08:00
Mitchell Hashimoto
11a3577ef1
rename window package to apprt
2022-12-29 15:11:03 -08:00
Mitchell Hashimoto
e1cd650245
window: abstract more, it starts
2022-12-29 14:51:56 -08:00
Mitchell Hashimoto
dd71456f35
font: shapers init with allocator since web canvas needs to init buffer
2022-12-06 13:44:55 -08:00
Mitchell Hashimoto
760f0c057c
renderer: use new shaper structs
2022-12-06 13:25:52 -08:00
Mitchell Hashimoto
f871630fa4
move Atlas to font
2022-11-28 10:35:46 -08:00
Mitchell Hashimoto
379072566f
remove underline support from shaders since we now use sprites
2022-11-27 16:18:00 -08:00
Mitchell Hashimoto
bfc657395a
curly underlines
2022-11-27 16:11:15 -08:00
Mitchell Hashimoto
fee681ac78
dashed underlines
2022-11-27 15:44:12 -08:00
Mitchell Hashimoto
6a32a30a16
font: render dotted underlines
2022-11-27 15:39:18 -08:00
Mitchell Hashimoto
3a248f6051
opengl: render underlines using sprite system, not shaders
2022-11-27 15:18:03 -08:00
Mitchell Hashimoto
584149121d
use enum for underline styles
2022-11-27 14:16:51 -08:00
Mitchell Hashimoto
b34e336c5c
rearrange box rendering to prepare for more sprite drawing
2022-11-27 10:17:12 -08:00
Mitchell Hashimoto
179f5e6283
opengl: continue rendering if single cell has error
2022-11-25 13:16:07 -08:00
Mitchell Hashimoto
3b3c93af02
metal: support for box glyphs
2022-11-24 10:21:28 -08:00
Mitchell Hashimoto
6b2ca86ed8
fix offset for box glyphs
2022-11-24 10:21:27 -08:00
Mitchell Hashimoto
9bc8d85d67
test rendering box glyphs, looks OKAY
2022-11-24 10:21:27 -08:00