// Copyright (c) 2022 Microsoft, Inc. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ELECTRON_SHELL_BROWSER_UI_VIEWS_WIN_ICON_PAINTER_H_ #define ELECTRON_SHELL_BROWSER_UI_VIEWS_WIN_ICON_PAINTER_H_ #include "base/memory/raw_ptr.h" #include "ui/gfx/canvas.h" namespace electron { class WinIconPainter { public: WinIconPainter(); virtual ~WinIconPainter(); WinIconPainter(const WinIconPainter&) = delete; WinIconPainter& operator=(const WinIconPainter&) = delete; public: // Paints the minimize icon for the button virtual void PaintMinimizeIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, const cc::PaintFlags& flags); // Paints the maximize icon for the button virtual void PaintMaximizeIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, const cc::PaintFlags& flags); // Paints the restore icon for the button virtual void PaintRestoreIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, const cc::PaintFlags& flags); // Paints the close icon for the button virtual void PaintCloseIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, const cc::PaintFlags& flags); }; class Win11IconPainter : public WinIconPainter { public: Win11IconPainter(); ~Win11IconPainter() override; Win11IconPainter(const Win11IconPainter&) = delete; Win11IconPainter& operator=(const Win11IconPainter&) = delete; public: // Paints the maximize icon for the button void PaintMaximizeIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, const cc::PaintFlags& flags) override; // Paints the restore icon for the button void PaintRestoreIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, const cc::PaintFlags& flags) override; }; } // namespace electron #endif // ELECTRON_SHELL_BROWSER_UI_VIEWS_WIN_ICON_PAINTER_H_