summaryrefslogtreecommitdiff
path: root/SharedGraphics
AgeCommit message (Collapse)Author
2019-03-28LibGUI: Add a GPainter class that inherits from Painter.Andreas Kling
This gets rid of the last little piece of LibGUI knowledge in Painter.
2019-03-27Kernel: Add Inode::truncate(size).Andreas Kling
- Use this to implement the O_TRUNC open flag. - Fix creat() to pass O_CREAT | O_TRUNC | O_WRONLY. - Make sure we truncate wherever appropriate.
2019-03-25SharedGraphics: Font::width() shouldn't add spacing to the very last glyph.Andreas Kling
2019-03-24SharedGraphics: Oops, I was compiling puff() in SLOW mode for testing.Andreas Kling
2019-03-23Kernel: Introduce threads, and refactor everything in support of it.Andreas Kling
The scheduler now operates on threads, rather than on processes. Each process has a main thread, and can have any number of additional threads. The process exits when the main thread exits. This patch doesn't actually spawn any additional threads, it merely does all the plumbing needed to make it possible. :^)
2019-03-23FileManager: Add basic thumbnailing of PNG images.Andreas Kling
These use nearest neighbor and are computed synchronously on directory load so it's neither fast nor very beautiful. These issues both need work on other parts of the system to fix.
2019-03-22SharedGraphics: Add Painter::draw_scaled_bitmap().Andreas Kling
It's just a simple nearest-neighbor scale with alpha blending but it gets the job done.
2019-03-22Use the PNG loader for all images, and get rid of the .rgb files.Andreas Kling
2019-03-21PNGLoader: Reduce unfiltering branchiness even more.Andreas Kling
Use a dummy scanline for y=0 filled with all zeroes to avoid having to check y on every iteration before grabbing color data from scanline[y - 1].
2019-03-21PNGLoader: Templatize the unfiltering functions to reduce branchiness.Andreas Kling
This also allows us to dodge processing alpha values in non-alpha PNGs without a branch.
2019-03-21PNGLoader: Reorganize the unfiltering code to make it easier to work with.Andreas Kling
2019-03-21PNGLoader: Allocate enough space for the compressed data buffer up front.Andreas Kling
This is a 2x speedup on wallpaper loading.
2019-03-21PNGLoader: Remove a bunch of unnecessary data copying.Andreas Kling
Use ByteBuffer::wrap() to avoid copying buffers around a bit. This is about a 10% speedup on loading a wallpaper-type PNG.
2019-03-21PNGLoader: Support for color type 2 (RGB triplets) and multiple IDAT chunks.Andreas Kling
2019-03-21SharedGraphics: Implement a simple PNG decoder.Andreas Kling
This is extremely unoptimized, but it does successfully load "folder32.png" so it must be at least somewhat correct. :^)
2019-03-20IRCClient: Add ability to change nickname.Andreas Kling
2019-03-19LibGUI: More GInputBox refinements.Andreas Kling
Fix some GBoxLayout bugs to make the buttons in GInputBox line up better. There are still some imperfections due to rounding errors.
2019-03-18IRCClient: Colorize some channel messages (joins, parts, topics)Andreas Kling
2019-03-18SharedGraphics: Add Color::to_string().Andreas Kling
This generates a string in the format "rgba(%d, %d, %d, %d)".
2019-03-17Add client-side double buffering of window backing stores.Andreas Kling
This prevents flicker and looks rather good. The main downside is that resizing gets even more sluggish. That's the price we pay for now.
2019-03-17AK: Make ByteBuffer's copy() and wrap() take void*.Andreas Kling
This way we don't have to cast whatever we're passing to copy()/wrap().
2019-03-09SharedGraphics: Allow passing a Font to text drawing functions.Andreas Kling
This way we don't have to juggle around with calls to Painter::set_font() which simplifies a bunch of places.
2019-03-09About+LibGUI: Use a GBoxLayout for the About app.Andreas Kling
2019-03-09SharedGraphics: Add PainterStateSaver RAII helper and Point::operator-().Andreas Kling
Two little things to help tidy up a bit in WSWindowManager.
2019-03-09SharedGraphics: Give painter a state stack and save()/restore() operations.Andreas Kling
This will make some painting code a lot less confusing since there's no need to manually undo translations, clips, etc.
2019-03-08Add a C++ helper class for working with shared buffers.Andreas Kling
This is a bit more comfortable than passing the shared buffer ID manually everywhere and keeping track of size etc.
2019-03-07LibGUI: Implement GToolbar separators.Andreas Kling
2019-03-07GTextEditor: Add a ruler column that always shows the line numbers.Andreas Kling
2019-03-07GTextEditor: Let's use a Vector for the line backing store.Andreas Kling
I'm eventually gonna want to replace this with something more clever, like a automagically splicing vector or something, but for now, at least we move away from immutable Strings.
2019-03-07GTextEditor: Improvements to cursor rendering.Andreas Kling
The view now scrolls along with you as you move the cursor around.
2019-03-06Add a bold variant of Katica and make that the system's default bold font.Andreas Kling
..and do some minor tweaks to the font rendering code.
2019-03-06More work on the variable-width font support.Andreas Kling
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-06Implement basic support for variable-width fonts.Andreas Kling
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-06Make a preparation pass for variable-width fonts.Andreas Kling
2019-03-05Kernel: More signal handling improvements.Andreas Kling
Finally fixed the weird flaky crashing when resizing Terminal windows. It was because we were dispatching a signal to "current" from the scheduler. Yet another thing I dislike about even having a "current" process while we're in the scheduler. Not sure yet how to fix this. Let the signal handler's kernel stack be a kmalloc() allocation for now. Once we can do allocation of consecutive physical pages in the supervisor memory region, we can use that for all types of kernel stacks.
2019-03-04LibGUI: Tweak focus appearance and add it to GTableView.Andreas Kling
2019-03-03SharedGraphics: Add Rect::center_within(Rect).Andreas Kling
2019-03-01Base: Add Csilla Bold 7x10 variant.Andreas Kling
It's nice to have a thin and a bold variant to complement each other.
2019-03-01Base: Import a new font, Csilla Thin (7x10).Andreas Kling
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-02-28SharedGraphics: Make Painter clipping work with translated clip origin.Andreas Kling
2019-02-28LibGUI: Allow specifying per-column text alignment.Andreas Kling
2019-02-28LibGUI: Draw separators between GTableView column headers.Andreas Kling
2019-02-25More moving towards using signed types.Andreas Kling
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25Fix a bunch of compiler warnings. Not all, but a lot.Andreas Kling
2019-02-25Convert more RetainPtr use to Retained.Andreas Kling
2019-02-25AK: Add Retained<T>, like RetainPtr, but never null.Andreas Kling
Also use some Clang attribute wizardry to get a warning for use-after-move.
2019-02-22Switch over to building everything with i686-elf-g++.Andreas Kling
2019-02-21Add concept of size increments to windowing system.Andreas Kling
Use this to implement incremental resizing for Terminal so that we only ever resize to fit a perfect number of rows and columns. This is very nice. :^)
2019-02-20Rework the rendering model so that clients instantiate backing stores.Andreas Kling
This makes interactive resizing work a lot better, althought it's still not perfect. There are still glitches and unpleasant flashes of zeroed memory.
2019-02-20LibGUI: Add a GToolBar class that can be populated with GActions.Andreas Kling
The same action can be added to both a menu and a toolbar. Use this to put a toolbar into FileManager. This is pretty neat. :^)