summaryrefslogtreecommitdiff
path: root/SharedGraphics
AgeCommit message (Collapse)Author
2019-04-10WindowServer: Factor out some parts of compose().Andreas Kling
The main compositing loop was getting pretty unwieldy. Break out some parts into functions so it's more understandable.
2019-04-10LibGUI: Move frame painting from GFrame to StylePainter.Andreas Kling
This way it can be used by others who might not have a GFrame object.
2019-04-10GSpinBox: Put nice little arrow glyphs on the buttons.Andreas Kling
2019-04-06Add a slight hover highlight to GButton and WSButton. :^)Andreas Kling
2019-04-04Painter: Add text elision support (only right-hand side supported.)Andreas Kling
Some window titles didn't fit on the taskbar buttons, so I needed a way to collapse the remaining part of the text into "..."
2019-04-04LibGUI: Make it possible for GButton to be checkable.Andreas Kling
2019-04-03AK: Add Eternal<T> and use it in various places.Andreas Kling
This is useful for static locals that never need to be destroyed: Thing& Thing::the() { static Eternal<Thing> the; return the; } The object will be allocated in data segment memory and will never have its destructor invoked.
2019-04-03GraphicsBitmap: Use MappedFile.Andreas Kling
2019-04-03PNGLoader: Use MappedFile.Andreas Kling
2019-04-03Font: Clean up AK::MappedFile and use it for mapping font files.Andreas Kling
2019-04-02Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace.Andreas Kling
2019-03-31WindowServer: Add a WSCursor class (a bitmap and a hotspot.)Andreas Kling
Also import a bunch of cursors I drew. Only the default ("arrow") cursor is ever used so far.
2019-03-30LibGUI: Add a simple GSplitter container widget.Andreas Kling
This allows you to put multiple widgets in a container and makes the space in between them draggable to resize the two adjacent widgets.
2019-03-29Rename Painter::set_clip_rect() to add_clip_rect().Andreas Kling
It was confusing to see multiple calls to set_foo() in a row. Since this is an intersecting operation, let's call it add_clip_rect() instead.
2019-03-29StylePainter: Fix underdraw in new button style.Andreas Kling
2019-03-29LibGUI: Don't draw left and right side of surfaces that span entire window.Andreas Kling
In other words, if a surface stretches from the left side of the window all the way to the right side, skip shading and highlighting the sides. This makes widgets blend together just slightly with the window. :^)
2019-03-28StylePainter: Tweak ButtonStyle::Normal highlights.Andreas Kling
2019-03-28Move LibGUI/GStyle to SharedGraphics/StylePainter.Andreas Kling
I want to paint some buttons in WindowServer where we don't have LibGUI.
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.