Commit graph

29 commits

Author SHA1 Message Date
Andreas Kling
08085f48a0 SharedGraphics: Font::width() shouldn't add spacing to the very last glyph. 2019-03-25 13:35:24 +01:00
Andreas Kling
1c6dfc3282 AK: Make ByteBuffer's copy() and wrap() take void*.
This way we don't have to cast whatever we're passing to copy()/wrap().
2019-03-17 00:36:41 +01:00
Andreas Kling
31d6b640eb Add a bold variant of Katica and make that the system's default bold font.
..and do some minor tweaks to the font rendering code.
2019-03-06 14:50:27 +01:00
Andreas Kling
66a5ddd94a More work on the variable-width font support.
Katica is now the default system font, and it looks quite nice. :^)
I'm gonna need to refine the GTextBox movement stuff eventually,
but it works well-enough for basic editing now.
2019-03-06 14:06:40 +01:00
Andreas Kling
7f6c81d90f Implement basic support for variable-width fonts.
Also add a nice new font called Katica. It's not used anywhere yet but
I'm definitely itching to start using it. :^)
2019-03-06 12:52:41 +01:00
Andreas Kling
0a86366c71 Make a preparation pass for variable-width fonts. 2019-03-06 11:03:10 +01:00
Andreas Kling
b5e5f26a82 Base: Add Csilla Bold 7x10 variant.
It's nice to have a thin and a bold variant to complement each other.
2019-03-01 02:50:50 +01:00
Andreas Kling
0776c51bf5 Base: Import a new font, Csilla Thin (7x10).
I wanted to do a bitmap font with an odd number of columns for a while
and I finally got around to it. This really looks rather nice, so I'm
making it the default system font for now. :^)
2019-03-01 01:52:20 +01:00
Andreas Kling
9624b54703 More moving towards using signed types.
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25 22:06:55 +01:00
Andreas Kling
75b100673f Switch over to building everything with i686-elf-g++. 2019-02-22 10:45:32 +01:00
Andreas Kling
10d6f9ce31 SharedGraphics: Removed some unused stuff from Font. 2019-02-17 00:36:55 +01:00
Andreas Kling
640360e958 Move WindowServer to userspace.
This is a monster patch that required changing a whole bunch of things.
There are performance and stability issues all over the place, but it works.
Pretty cool, I have to admit :^)
2019-02-17 00:13:47 +01:00
Andreas Kling
022f7790db Use modern C++ attributes instead of __attribute__ voodoo.
This is quite nice, although I wish [[gnu::always_inline]] implied inline.
Also "gnu::" is kind of a wart, but whatcha gonna do.
2019-02-15 12:30:48 +01:00
Andreas Kling
cb6e852620 SharedGraphics: Don't eagerly commit mmap'ed font files in kernel.
Just let the page fault handler do its thing. Anytime we can avoid
loading some pages from disk, that's a good thing.
2019-02-08 21:59:06 +01:00
Andreas Kling
a1b63bb6d4 Bootloader: Locate the kernel's data segment and clear it.
This was a constant source of stupid bugs and I kept postponing it because
I wasn't in the mood to write assembly code. Until now! :^)
2019-02-06 16:02:10 +01:00
Andreas Kling
b1e054ffe8 Rename LizaBold to LizaRegular and LizaBlack to LizaBold.
LizaRegular is quickly becoming my favorite bitmap font. It's so pretty :^)
2019-02-05 09:08:25 +01:00
Andreas Kling
a258d6507a mmap all the font files!
Font now uses the same in-memory format as the font files we have on disk.
This allows us to simply mmap() the font files and not use any additional
memory for them. Very cool! :^)

Hacking on this exposed a bug in file-backed VMObjects where the first client
to instantiate a VMObject for a specific inode also got to decide its size.
Since file-backed VMObjects always have the same size as the underlying file,
this made no sense, so I removed the ability to even set a size in that case.
2019-02-05 06:43:33 +01:00
Andreas Kling
cacba45f1c LizaBold8x10: Import a bold variant of Liza8x10 and make it the default bold.
Start using it right away for window titles.
2019-02-04 11:37:15 +01:00
Andreas Kling
9da9cce4f7 SharedGraphics: Font::load_from_file() forgot to close() the font file. 2019-02-03 08:18:16 +01:00
Andreas Kling
5751063c63 Load the default font from disk in the kernel as well. 2019-02-03 01:44:08 +01:00
Andreas Kling
abe3f515b1 Make font loading use mmap().
This exposed a serious race condition in page_in_from_inode().
Reordered the logic and added a paging lock to VMObject.
Now, only one process can page in from a VMObject at a time.
There are definitely ways to optimize this, for instance by making
the locking be per-page instead. It's not something that I'm going
to worry about right now though.
2019-02-03 01:36:25 +01:00
Andreas Kling
7f91aec25c Support font files.
This only works with the userspace build of SharedGraphics so far.
It's also very slow at loading fonts, but that's easy to fix.

Let's put fonts in /res/fonts/.
2019-02-02 23:13:12 +01:00
Andreas Kling
655753c557 SharedGraphics: Fix Font.cpp kernel build. 2019-02-02 17:42:16 +01:00
Andreas Kling
6fc3c38324 Start working on a simple graphical font editor.
Editing fonts by editing text files is really slow and boring.
A simple font editor seems like a good way to take LibGUI for a spin.
2019-02-02 08:07:06 +01:00
Andreas Kling
ffab6897aa Big, possibly complete sweep of naming changes. 2019-01-31 17:31:23 +01:00
Andreas Kling
c7b005c47b Font: Eagerly load all 256 glyphs. It's not that many. 2019-01-27 05:19:00 +01:00
Andreas Kling
8fa7d96f50 SharedGraphics: Import another 8x10 fixed-width font I made.
It's not perfect yet but it's quite nice to look at so I'll make this the
system default for now. :^)
2019-01-25 15:33:47 +01:00
Andreas Kling
7a7fc37ca1 SharedGraphics: Draw an error glyph instead of crashing due to missing glyphs. 2019-01-23 08:07:58 +01:00
Andreas Kling
7e5b81fe48 Make a SharedGraphics directory for classes shared between Kernel and LibGUI. 2019-01-19 23:22:46 +01:00
Renamed from Widgets/Font.cpp (Browse further)