Newer
Older
minerva / Userland / Libraries / LibGfx / GlassWindowTheme.h
@minerva minerva on 13 Jul 1 KB Initial commit
/*
 * Copyright (c) 2023, MacDue <macdue@dueutil.tech>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <LibGfx/ClassicWindowTheme.h>
#include <LibGfx/Rect.h>

namespace Gfx {

class GlassWindowTheme : public ClassicWindowTheme {
    virtual void paint_normal_frame(Painter& painter, WindowState window_state, WindowMode window_mode, IntRect const& window_rect, StringView window_title, Bitmap const& icon, Palette const& palette, IntRect const& leftmost_button_rect, int menu_row_count, bool window_modified) const override;
    virtual void paint_notification_frame(Painter&, WindowMode, IntRect const& window_rect, Palette const&, IntRect const& close_button_rect) const override;

    virtual IntRect titlebar_rect(WindowType, WindowMode, IntRect const& window_rect, Palette const&) const override;
    virtual IntRect titlebar_text_rect(WindowType type, WindowMode mode, IntRect const& window_rect, Palette const& palette) const override
    {
        return titlebar_rect(type, mode, window_rect, palette);
    }
    virtual bool frame_uses_alpha(WindowState, Palette const&) const override
    {
        return true;
    }
    virtual bool taskbar_uses_alpha() const override
    {
        return true;
    }
    virtual Vector<IntRect> layout_buttons(WindowType, WindowMode, IntRect const& window_rect, Palette const&, size_t buttons, bool is_maximized = false) const override;

    virtual float frame_alpha_hit_threshold(WindowState) const override { return 0.6f; }

    virtual void paint_taskbar(Painter&, IntRect const& taskbar_rect, Palette const&) const override;
};

}