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
329385e353
metal: apply background opacity
2023-07-03 19:38:33 -07:00
Mitchell Hashimoto
017da411f8
metal: start setting up background transparency
2023-07-03 17:59:50 -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
ce77002198
remove metal workaround completely
2023-07-01 15:19:13 -07:00
Mitchell Hashimoto
f537d7aab1
renderer: remove metal workaround, this caused crashes on x86_64
...
And it now works.
2023-07-01 15:14:24 -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
97d9157d22
update zig version
2023-05-07 20:50:51 -07:00
Mitchell Hashimoto
4af1a7f163
renderer/Metal: split runs on selection
2023-03-23 10:25:48 -07:00
Mitchell Hashimoto
2be4eb0da7
font/shaper: split runs at selection boundaries
2023-03-23 10:24:22 -07:00
Mitchell Hashimoto
7ae200a1dc
renderer/metal: fix color bug on macOS 13 Intel.
...
See the associated test.
2023-03-22 14:22:12 -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
8cb9ee5d59
make it claer the config pointer is not stable after renderer/IO init
2023-03-19 09:49:44 -07:00
Mitchell Hashimoto
b1a7baf394
metal: do not use setPurgeableState on MTLTexture/Buffer
...
The Metal system automatically will free hardware resources when no
other references exist (I believe) and this causes a crash if you close
a window while a render is in-flight.
2023-03-05 10:00:05 -08: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
935486ca30
Merge pull request #79 from mitchellh/flatpak
...
Flatpak Package for Linux
2023-02-27 15:29:52 -08:00
Mitchell Hashimoto
7962bd061b
metal: use the screen size reported in the callback to resize
...
We were previously using the bounds which might be updated later if the
view is in the middle of an animation. Just use the size that represents
our target state.
2023-02-26 17:44:14 -08:00
Mitchell Hashimoto
fc3802e632
termio: use host-spawn for pty
2023-02-25 22:36:20 -08:00
Mitchell Hashimoto
8a4c8a06fe
Merge pull request #75 from mitchellh/gtk
...
Rearchitect "app runtime" abstraction, minimal GTK implementation
2023-02-24 13:35:14 -08:00
Mitchell Hashimoto
60b2603304
metal: premult alpha for fg color
2023-02-24 08:39:55 -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
053748481a
more crap
2023-02-24 07:58:29 -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
807c7fc64d
opengl: support loading global gl functions
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
074664398a
macos: correct scale factor propagated
2023-02-19 10:44:56 -08:00
Mitchell Hashimoto
cd77408efc
it draws!
2023-02-19 10:44:56 -08:00
Mitchell Hashimoto
ff9af8a07b
lots of progress running a surface but still crashes
2023-02-19 10:44:56 -08:00
Mitchell Hashimoto
085d462a68
lots of stubbing so window will kind of compile for embedded
2023-02-19 10:44:55 -08:00