Aero.cs
1 /*=============================================================================
2 *
3 * (C) Copyright 2011, Michael Carlisle (mike.carlisle@thecodeking.co.uk)
4 *
5 * http://www.TheCodeKing.co.uk
6 *
7 * All rights reserved.
8 * The code and information is provided "as-is" without waranty of any kind,
9 * either expresed or implied.
10 *
11 *-----------------------------------------------------------------------------
12 * History:
13 * 01/09/2007 Michael Carlisle Version 1.0
14 *=============================================================================
15 */
16 using System.Drawing;
17 using System.Windows.Forms;
18 
19 namespace sage.ew.formul.ButtonTittle.Themes
20 {
21  internal class Aero : ThemeBase
22  {
23  private Size maxFrameBorder = Size.Empty;
24  private Size minFrameBorder = Size.Empty;
25 
26  public Aero(Form form)
27  : base(form)
28  {
29  }
30 
31  public override Color BackColor
32  {
33  get { return Color.Transparent; }
34  }
35 
36  public override Size ControlBoxSize
37  {
38  get
39  {
40  if (base.controlBoxSize == Size.Empty)
41  {
42  if (IsToolbar)
43  {
44  if (form.ControlBox)
45  {
46  base.controlBoxSize = new Size(SystemButtonSize.Width, SystemButtonSize.Height);
47  }
48  else
49  {
50  base.controlBoxSize = new Size(1, 0);
51  }
52  }
53  else
54  {
55  if (!form.MaximizeBox && !form.MinimizeBox && form.ControlBox)
56  {
57  if (form.HelpButton)
58  {
59  base.controlBoxSize = new Size((2*SystemButtonSize.Width) + 7, SystemButtonSize.Height);
60  }
61  else
62  {
63  base.controlBoxSize = new Size((1*SystemButtonSize.Width) + 25, SystemButtonSize.Height);
64  }
65  }
66  else
67  {
68  int index;
69  index = (form.ControlBox) ? 3 : 0;
70  base.controlBoxSize = new Size(index*SystemButtonSize.Width + 10, SystemButtonSize.Height);
71  }
72  }
73  }
74  return base.controlBoxSize;
75  }
76  }
77 
78  public override Point ButtonOffset
79  {
80  get
81  {
82  if (base.buttonOffset == Point.Empty)
83  {
84  if (IsToolbar)
85  {
86  base.buttonOffset = new Point(0, 0);
87  }
88  else
89  {
90  base.buttonOffset = new Point(0, -2);
91  }
92  }
93  return base.buttonOffset;
94  }
95  }
96 
97  public override Size FrameBorder
98  {
99  get
100  {
101  if (form.WindowState == FormWindowState.Maximized)
102  {
103  if (maxFrameBorder == Size.Empty)
104  {
105  switch (form.FormBorderStyle)
106  {
107  case FormBorderStyle.FixedToolWindow:
108  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 8, -1);
109  break;
110  case FormBorderStyle.SizableToolWindow:
111  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 4);
112  break;
113  case FormBorderStyle.Sizable:
114  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width + 2, 7);
115  break;
116  default:
117  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 2);
118  break;
119  }
120  }
121  return maxFrameBorder;
122  }
123  else
124  {
125  if (minFrameBorder == Size.Empty)
126  {
127  switch (form.FormBorderStyle)
128  {
129  case FormBorderStyle.FixedToolWindow:
130  minFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 8, -1);
131  break;
132  case FormBorderStyle.SizableToolWindow:
133  minFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 4);
134  break;
135  case FormBorderStyle.Sizable:
136  minFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 1);
137  break;
138  case FormBorderStyle.Fixed3D:
139  minFrameBorder = new Size(SystemInformation.Border3DSize.Width, -4);
140  break;
141  case FormBorderStyle.FixedSingle:
142  minFrameBorder = new Size(SystemInformation.Border3DSize.Width - 2, -4);
143  break;
144  default:
145  minFrameBorder = new Size(SystemInformation.Border3DSize.Width - 1, -4);
146  break;
147  }
148  }
149  return minFrameBorder;
150  }
151  }
152  }
153 
154  public override Size SystemButtonSize
155  {
156  get
157  {
158  if (base.systemButtonSize == Size.Empty)
159  {
160  if (IsToolbar)
161  {
162  Size size = SystemInformation.SmallCaptionButtonSize;
163  size.Height += 2;
164  size.Width += 2;
165  base.systemButtonSize = size;
166  }
167  else
168  {
169  Size size = SystemInformation.CaptionButtonSize;
170  size.Height += 1;
171  //size.Width -= 1;
172  base.systemButtonSize = size;
173  }
174  }
175  return base.systemButtonSize;
176  }
177  }
178  }
179 }