Aero8.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 Aero8 : ThemeBase
22  {
23  private Size maxFrameBorder = Size.Empty;
24  private Size minFrameBorder = Size.Empty;
25  private FormBorderStyle _oBordeStyleAplicado = FormBorderStyle.None; //PE-94542
26 
27  public Aero8(Form form)
28  : base(form)
29  {
30  }
31 
32  public override Color BackColor
33  {
34  get { return Color.Transparent; }
35  }
36 
37  public override Size ControlBoxSize
38  {
39  get
40  {
41  if (base.controlBoxSize == Size.Empty)
42  {
43  if (IsToolbar)
44  {
45  if (form.ControlBox)
46  {
47  base.controlBoxSize = new Size(SystemButtonSize.Width, SystemButtonSize.Height);
48  }
49  else
50  {
51  base.controlBoxSize = new Size(1, 0);
52  }
53  }
54  else
55  {
56  if (!form.MaximizeBox && !form.MinimizeBox && form.ControlBox)
57  {
58  if (form.HelpButton)
59  {
60  base.controlBoxSize = new Size((2 * SystemButtonSize.Width) + 7, SystemButtonSize.Height);
61  }
62  else
63  {
64  base.controlBoxSize = new Size((1 * SystemButtonSize.Width) + 13, SystemButtonSize.Height);
65  }
66  }
67  else
68  {
69  int index;
70  index = (form.ControlBox) ? 3 : 0;
71  base.controlBoxSize = new Size(index * SystemButtonSize.Width, SystemButtonSize.Height);
72  }
73  }
74  }
75  return base.controlBoxSize;
76  }
77  }
78 
79  public override Point ButtonOffset
80  {
81  get
82  {
83  if (base.buttonOffset == Point.Empty)
84  {
85  if (IsToolbar)
86  {
87  base.buttonOffset = new Point(0, 0);
88  }
89  else
90  {
91  base.buttonOffset = new Point(0, -2);
92  }
93  }
94  return base.buttonOffset;
95  }
96  }
97 
98  public override Size FrameBorder
99  {
100  get
101  {
102  if (form.WindowState == FormWindowState.Maximized)
103  {
104  if (maxFrameBorder == Size.Empty || _oBordeStyleAplicado != form.FormBorderStyle) //PE-94542 Miro si ha cambiado de estilo de borde
105  {
106  _oBordeStyleAplicado = form.FormBorderStyle; //PE-94542 Actualizo el valor de la variable de control
107  switch (form.FormBorderStyle)
108  {
109  case FormBorderStyle.FixedToolWindow:
110  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 8, -1);
111  break;
112  case FormBorderStyle.SizableToolWindow:
113  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 4);
114  break;
115  case FormBorderStyle.Sizable:
116  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width + 2, 7);
117  break;
118  default:
119  maxFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 2);
120  break;
121  }
122  }
123  return maxFrameBorder;
124  }
125  else
126  {
127  if (minFrameBorder == Size.Empty || _oBordeStyleAplicado != form.FormBorderStyle) //PE-94542 Miro si ha cambiado de estilo de borde
128  {
129  _oBordeStyleAplicado = form.FormBorderStyle; //PE-94542 Actualizo el valor de la variable de control
130  switch (form.FormBorderStyle)
131  {
132  case FormBorderStyle.FixedToolWindow:
133  minFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 8, -1);
134  break;
135  case FormBorderStyle.SizableToolWindow:
136  minFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 4);
137  break;
138  case FormBorderStyle.Sizable:
139  minFrameBorder = new Size(SystemInformation.FrameBorderSize.Width - 3, 1);
140  break;
141  case FormBorderStyle.Fixed3D:
142  minFrameBorder = new Size(SystemInformation.Border3DSize.Width, -4);
143  break;
144  case FormBorderStyle.FixedSingle:
145  minFrameBorder = new Size(SystemInformation.BorderSize.Width - 2, 0);
146  break;
147  default:
148  minFrameBorder = new Size(SystemInformation.Border3DSize.Width - 1, -4);
149  break;
150  }
151  }
152  return minFrameBorder;
153  }
154  }
155  }
156 
157  public override Size SystemButtonSize
158  {
159  get
160  {
161  if (base.systemButtonSize == Size.Empty)
162  {
163  if (IsToolbar)
164  {
165  Size size = SystemInformation.SmallCaptionButtonSize;
166  size.Height += 2;
167  size.Width = 46;
168  base.systemButtonSize = size;
169  }
170  else
171  {
172  Size size = SystemInformation.CaptionButtonSize;
173  size.Height += 1;
174  size.Width = 46;
175  base.systemButtonSize = size;
176  }
177  }
178  return base.systemButtonSize;
179  }
180  }
181  }
182 }