// 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_ namespace cc { class PaintFlags; } // namespace cc namespace gfx { class Canvas; class Rect; } // namespace gfx namespace electron { // Copied from chrome/browser/ui/views/frame/windows_icon_painter.h 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, cc::PaintFlags& flags); // Paints the maximize icon for the button virtual void PaintMaximizeIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, cc::PaintFlags& flags); // Paints the restore icon for the button virtual void PaintRestoreIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, cc::PaintFlags& flags); // Paints the close icon for the button virtual void PaintCloseIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, 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, cc::PaintFlags& flags) override; // Paints the restore icon for the button void PaintRestoreIcon(gfx::Canvas* canvas, const gfx::Rect& symbol_rect, cc::PaintFlags& flags) override; }; } // namespace electron #endif // ELECTRON_SHELL_BROWSER_UI_VIEWS_WIN_ICON_PAINTER_H_