} // SkinLayer public SkinLayer(SkinLayer source) : base(source) { if (source != null) { Image = new SkinImage(source.Image); Width = source.Width; Height = source.Height; OffsetX = source.OffsetX; OffsetY = source.OffsetY; Alignment = source.Alignment; SizingMargins = source.SizingMargins; ContentMargins = source.ContentMargins; States = source.States; Overlays = source.Overlays; Text = new SkinText(source.Text); Attributes = new SkinList <SkinAttribute>(source.Attributes); } else { throw new Exception("Parameter for SkinLayer copy constructor cannot be null."); } } // SkinLayer
} // SetupScrollBars #endregion #region Adjust Margins protected override void AdjustMargins() { if (horizontalScrollBar != null && !horizontalScrollBar.Visible) { verticalScrollBar.Height = Height - 4; ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, ClientMargins.Right, SkinInformation.ClientMargins.Bottom); } else { ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, ClientMargins.Right, 18 + SkinInformation.ClientMargins.Bottom); } if (verticalScrollBar != null && !verticalScrollBar.Visible) { horizontalScrollBar.Width = Width - 4; ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, SkinInformation.ClientMargins.Right, ClientMargins.Bottom); } else { ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, 18 + SkinInformation.ClientMargins.Right, ClientMargins.Bottom); } base.AdjustMargins(); } // AdjustMargins
} // DrawTextureToScreen #endregion #region Input private static bool CheckParent(Control control, Point pos) { if (control.Parent != null && !CheckDetached(control)) { Control parent = control.Parent; Control root = control.Root; Rectangle pr = new Rectangle(parent.ControlLeftAbsoluteCoordinate, parent.ControlTopAbsoluteCoordinate, parent.Width, parent.Height); Margins margins = root.SkinInformation.ClientMargins; Rectangle rr = new Rectangle(root.ControlLeftAbsoluteCoordinate + margins.Left, root.ControlTopAbsoluteCoordinate + margins.Top, root.ControlAndMarginsWidth - margins.Horizontal, root.ControlAndMarginsHeight - margins.Vertical); return (rr.Contains(pos) && pr.Contains(pos)); } return true; } // CheckParent
} // OnItemIndexChanged #endregion #region Adjust Margins protected override void AdjustMargins() { base.AdjustMargins(); ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, ClientMargins.Right + 16, ClientMargins.Bottom); } // AdjustMargins
} // GetSourceArea public static Rectangle GetDestinationArea(Rectangle area, Margins margins, Alignment alignment) { Rectangle rect = new Rectangle(); int adj = 1; margins.Left += margins.Left > 0 ? adj : 0; margins.Top += margins.Top > 0 ? adj : 0; margins.Right += margins.Right > 0 ? adj : 0; margins.Bottom += margins.Bottom > 0 ? adj : 0; margins = new Margins(margins.Left, margins.Top, margins.Right, margins.Bottom); switch (alignment) { case Alignment.TopLeft: { rect = new Rectangle(area.Left + 0, area.Top + 0, margins.Left, margins.Top); break; } case Alignment.TopCenter: { rect = new Rectangle(area.Left + margins.Left, area.Top + 0, area.Width - margins.Left - margins.Right, margins.Top); break; } case Alignment.TopRight: { rect = new Rectangle(area.Left + area.Width - margins.Right, area.Top + 0, margins.Right, margins.Top); break; } case Alignment.MiddleLeft: { rect = new Rectangle(area.Left + 0, area.Top + margins.Top, margins.Left, area.Height - margins.Top - margins.Bottom); break; } case Alignment.MiddleCenter: { rect = new Rectangle(area.Left + margins.Left, area.Top + margins.Top, area.Width - margins.Left - margins.Right, area.Height - margins.Top - margins.Bottom); break; } case Alignment.MiddleRight: { rect = new Rectangle(area.Left + area.Width - margins.Right, area.Top + margins.Top, margins.Right, area.Height - margins.Top - margins.Bottom); break; } case Alignment.BottomLeft: { rect = new Rectangle(area.Left + 0, area.Top + area.Height - margins.Bottom, margins.Left, margins.Bottom); break; } case Alignment.BottomCenter: { rect = new Rectangle(area.Left + margins.Left, area.Top + area.Height - margins.Bottom, area.Width - margins.Left - margins.Right, margins.Bottom); break; } case Alignment.BottomRight: { rect = new Rectangle(area.Left + area.Width - margins.Right, area.Top + area.Height - margins.Bottom, margins.Right, margins.Bottom); break; } } return rect; } // GetDestinationArea
} // DrawLayer private static Rectangle GetSourceArea(Size imageSize, Size partSize, Margins margins, Alignment alignment, int index) { Rectangle rect = new Rectangle(); int xc = (int)((float)imageSize.Width / partSize.Width); int xm = (index) % xc; int ym = (index) / xc; const int adj = 1; margins.Left += margins.Left > 0 ? adj : 0; margins.Top += margins.Top > 0 ? adj : 0; margins.Right += margins.Right > 0 ? adj : 0; margins.Bottom += margins.Bottom > 0 ? adj : 0; margins = new Margins(margins.Left, margins.Top, margins.Right, margins.Bottom); switch (alignment) { case Alignment.TopLeft: { rect = new Rectangle((0 + (xm * partSize.Width)), (0 + (ym * partSize.Height)), margins.Left, margins.Top); break; } case Alignment.TopCenter: { rect = new Rectangle((0 + (xm * partSize.Width)) + margins.Left, (0 + (ym * partSize.Height)), partSize.Width - margins.Left - margins.Right, margins.Top); break; } case Alignment.TopRight: { rect = new Rectangle((partSize.Width + (xm * partSize.Width)) - margins.Right, (0 + (ym * partSize.Height)), margins.Right, margins.Top); break; } case Alignment.MiddleLeft: { rect = new Rectangle((0 + (xm * partSize.Width)), (0 + (ym * partSize.Height)) + margins.Top, margins.Left, partSize.Height - margins.Top - margins.Bottom); break; } case Alignment.MiddleCenter: { rect = new Rectangle((0 + (xm * partSize.Width)) + margins.Left, (0 + (ym * partSize.Height)) + margins.Top, partSize.Width - margins.Left - margins.Right, partSize.Height - margins.Top - margins.Bottom); break; } case Alignment.MiddleRight: { rect = new Rectangle((partSize.Width + (xm * partSize.Width)) - margins.Right, (0 + (ym * partSize.Height)) + margins.Top, margins.Right, partSize.Height - margins.Top - margins.Bottom); break; } case Alignment.BottomLeft: { rect = new Rectangle((0 + (xm * partSize.Width)), (partSize.Height + (ym * partSize.Height)) - margins.Bottom, margins.Left, margins.Bottom); break; } case Alignment.BottomCenter: { rect = new Rectangle((0 + (xm * partSize.Width)) + margins.Left, (partSize.Height + (ym * partSize.Height)) - margins.Bottom, partSize.Width - margins.Left - margins.Right, margins.Bottom); break; } case Alignment.BottomRight: { rect = new Rectangle((partSize.Width + (xm * partSize.Width)) - margins.Right, (partSize.Height + (ym * partSize.Height)) - margins.Bottom, margins.Right, margins.Bottom); break; } } return rect; } // GetSourceArea
} // CalculateRectangle #endregion #region Adjust Margins /// <summary> /// Adjust the controls margin. /// </summary> /// <remarks> /// This implementation requires that the know margins are set before the base method is called because the base method use this modified information. /// </remarks> protected override void AdjustMargins() { ClientMargins = new Margins(0, 0, 0, 0); base.AdjustMargins(); } // AdjustMargins