ladybird/Libraries/LibHTML/RenderingContext.h
Andreas Kling a79bac428b LibGUI+LibDraw: Add "Palette" concept for scoped color theming
GApplication now has a palette. This palette contains all the system
theme colors by default, and is inherited by a new top-level GWidget.
New child widgets inherit their parents palette.

It is possible to override the GApplication palette, and the palette
of any GWidget.

The Palette object contains a bunch of colors, each corresponding to
a ColorRole. Each role has a convenience getter as well.

Each GWidget now has a background_role() and foreground_role(), which
are then looked up in their current palette when painting. This means
that you no longer alter the background color of a widget by setting
it directly, rather you alter either its background role, or the
widget's palette.
2019-12-24 21:27:16 +01:00

31 lines
839 B
C++

#pragma once
#include <LibDraw/Palette.h>
#include <LibDraw/Rect.h>
class GPainter;
class RenderingContext {
public:
explicit RenderingContext(GPainter& painter, const Palette& palette)
: m_painter(painter)
, m_palette(palette)
{
}
GPainter& painter() const { return m_painter; }
const Palette& palette() const { return m_palette; }
bool should_show_line_box_borders() const { return m_should_show_line_box_borders; }
void set_should_show_line_box_borders(bool value) { m_should_show_line_box_borders = value; }
Rect viewport_rect() const { return m_viewport_rect; }
void set_viewport_rect(const Rect& rect) { m_viewport_rect = rect; }
private:
GPainter& m_painter;
const Palette& m_palette;
Rect m_viewport_rect;
bool m_should_show_line_box_borders { false };
};