1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_LINUX_NAV_BUTTON_PROVIDER_H_
#define UI_LINUX_NAV_BUTTON_PROVIDER_H_
namespace chrome {
enum class FrameButtonDisplayType;
}
namespace gfx {
class ImageSkia;
class Insets;
} // namespace gfx
namespace ui {
class NavButtonProvider {
public:
// This enum is similar to views::FrameButton, except it partitions
// kMaximize and kRestore. This is useful for when we want to be
// explicit about which buttons we want drawn, without having to
// implicitly determine if we should use kMaximize or kRestore
// depending on the browser window's maximized/restored state.
enum class FrameButtonDisplayType {
kMinimize,
kMaximize,
kRestore,
kClose,
};
// This enum is based on views::Button::ButtonState.
enum class ButtonState {
kNormal,
kHovered,
kPressed,
kDisabled,
};
virtual ~NavButtonProvider() = default;
// Redraws all images and updates all size state. |top_area_height|
// is the total available height to render the buttons, and buttons
// may be drawn larger when more height is available. |active|
// indicates if the window the buttons reside in has activation.
virtual void RedrawImages(int top_area_height,
bool maximized,
bool active) = 0;
// Gets the cached button image corresponding to |type| and |state|.
virtual gfx::ImageSkia GetImage(FrameButtonDisplayType type,
ButtonState state) const = 0;
// Gets the external margin around each button. The left inset
// represents the leading margin, and the right inset represents the
// trailing margin.
virtual gfx::Insets GetNavButtonMargin(FrameButtonDisplayType type) const = 0;
// Gets the internal spacing (padding + border) of the top area.
// The left inset represents the leading spacing, and the right
// inset represents the trailing spacing.
virtual gfx::Insets GetTopAreaSpacing() const = 0;
// Gets the spacing to be used to separate buttons.
virtual int GetInterNavButtonSpacing() const = 0;
};
} // namespace ui
#endif // UI_LINUX_NAV_BUTTON_PROVIDER_H_
|