1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_PANELS_PANEL_CONSTANTS_H_
6#define CHROME_BROWSER_UI_PANELS_PANEL_CONSTANTS_H_
7
8namespace panel {
9
10// The height in pixels of the titlebar.
11static const int kTitlebarHeight = 36;
12
13// Absolute minimum width and height for panels, including non-client area.
14// Should only be big enough to accomodate a close button on the reasonably
15// recognisable titlebar.
16// These numbers are semi-arbitrary.
17// Motivation for 'width' is to make main buttons on the titlebar functional.
18// Motivation for height is to allow autosized tightly-wrapped panel with a
19// single line of text - so the height is set to be likely less then a titlebar,
20// to make sure even small content is tightly wrapped.
21const int kPanelMinWidth = 80;
22const int kPanelMinHeight = kTitlebarHeight + 10;
23
24// The panel can be minimized to 4-pixel lines.
25static const int kMinimizedPanelHeight = 4;
26
27// The size (width or height) of the app icon (taskbar icon).
28static const int kPanelAppIconSize = 32;
29
30// The size (width or height) of the button, which is also the size of the
31// hit target area.
32static const int kPanelButtonSize = 24;
33
34// The padding in pixeles between the icon and the left border.
35const int kTitlebarLeftPadding = 10;
36
37// The padding in pixeles between the close button and the right border.
38const int kTitlebarRightPadding = 6;
39
40// The padding in piexles between the icon and the title text.
41const int kIconAndTitlePadding = 11;
42
43// The padding in piexles between the title text and the button.
44const int kTitleAndButtonPadding = 11;
45
46// The padding in pixeles between buttons.
47static const int kButtonPadding = 5;
48
49// The number of times to flash the panel's taskbar icon in order to draw the
50// user's attention (Windows only).
51static const int kNumberOfTimesToFlashPanelForAttention = 30;
52
53// Different types of buttons that can be shown on panel's titlebar.
54enum TitlebarButtonType {
55  CLOSE_BUTTON,
56  MINIMIZE_BUTTON,
57  RESTORE_BUTTON
58};
59
60// Different platforms use different modifier keys to change the behavior
61// of a mouse click. This enum captures the meaning of the modifier rather
62// than the actual modifier key to generalize across platforms.
63enum ClickModifier {
64  NO_MODIFIER,
65  APPLY_TO_ALL,  // Apply the click behavior to all panels in the collection.
66};
67
68// Ways a panel can be resized.
69enum Resizability {
70  NOT_RESIZABLE = 0,
71  RESIZABLE_TOP = 0x1,
72  RESIZABLE_BOTTOM = 0x2,
73  RESIZABLE_LEFT = 0x4,
74  RESIZABLE_RIGHT = 0x8,
75  RESIZABLE_TOP_LEFT = 0x10,
76  RESIZABLE_TOP_RIGHT = 0x20,
77  RESIZABLE_BOTTOM_LEFT = 0x40,
78  RESIZABLE_BOTTOM_RIGHT = 0x80,
79  RESIZABLE_EXCEPT_BOTTOM = RESIZABLE_TOP | RESIZABLE_LEFT | RESIZABLE_RIGHT |
80      RESIZABLE_TOP_LEFT | RESIZABLE_TOP_RIGHT,
81  RESIZABLE_ALL = RESIZABLE_TOP | RESIZABLE_BOTTOM | RESIZABLE_LEFT |
82      RESIZABLE_RIGHT | RESIZABLE_TOP_LEFT | RESIZABLE_TOP_RIGHT |
83      RESIZABLE_BOTTOM_LEFT | RESIZABLE_BOTTOM_RIGHT
84};
85
86// Describes how 4 corners of a panel should be painted.
87enum CornerStyle {
88  NOT_ROUNDED = 0,
89  TOP_ROUNDED = 0x1,
90  BOTTOM_ROUNDED = 0x2,
91  ALL_ROUNDED = TOP_ROUNDED | BOTTOM_ROUNDED
92};
93
94}  // namespace panel
95
96#endif  // CHROME_BROWSER_UI_PANELS_PANEL_CONSTANTS_H_
97