using System;
using System.Drawing;
namespace LYFZ.ComponentLibrary
{
public enum EnmColorScheme
{
Purple,
Green,
}
///
/// This class works as a common point for all the controls to
/// implement the color scheme
///
internal class ColorScheme
{
private EnmColorScheme oClrScheme;
public ColorScheme(EnmColorScheme aoColorScheme)
{
//
// TODO: Add constructor logic here
//
oClrScheme = aoColorScheme;
}
///
/// This method sets the values of different color properties
/// for controls of IGradientButtonColor Type
///
internal void SetColorScheme(IGradientButtonColor aCtrl)
{
switch(oClrScheme)
{
case EnmColorScheme.Green:
//=========================================================
//Setting color properties of button control for
//Green color scheme
//---------------------------------------------------------
aCtrl.BackgroundBottomColor = Color.FromArgb(193, 201, 140);
aCtrl.BackgroundTopColor = Color.FromArgb(230, 233, 208);
aCtrl.BorderBottomColor = Color.FromArgb(230, 233, 208);
aCtrl.BorderTopColor = Color.FromArgb(193, 201, 140);
aCtrl.DefaultBorderColor = Color.FromArgb(167, 168, 127);
aCtrl.DisabledFontColor = Color.FromArgb(156, 147, 113);
aCtrl.DisbaledBottomColor = Color.FromArgb(209, 215, 170);
aCtrl.DisabledTopColor = Color.FromArgb(240, 242, 227);
aCtrl.FontColor = Color.FromArgb(105, 110, 26);
aCtrl.PressedFontColor = Color.Black;
break;
//---------------------------------------------------------
case EnmColorScheme.Purple:
//=========================================================
//Setting color properties of button control for
//Purple color scheme
//---------------------------------------------------------
aCtrl.BackgroundBottomColor = Color.FromArgb(183, 157, 206);
aCtrl.BackgroundTopColor = Color.FromArgb(231, 222, 239);
aCtrl.BorderBottomColor = Color.FromArgb(224, 215, 233);
aCtrl.BorderTopColor = Color.FromArgb(193, 157, 206);
aCtrl.DefaultBorderColor = Color.FromArgb(132, 100, 161);
aCtrl.DisabledFontColor = Color.FromArgb(143, 116, 156);
aCtrl.DisbaledBottomColor = Color.FromArgb(209, 192, 210);
aCtrl.DisabledTopColor = Color.FromArgb(237, 231, 230);
aCtrl.FontColor = Color.FromArgb(74, 30, 115);
aCtrl.PressedFontColor = Color.Black;
break;
//---------------------------------------------------------
//---------------------------------------------------------
}
}
///
/// This method sets the values of different color properties
/// for controls of IGradientContainer Type
///
internal void SetColorScheme(IGradientContainer aCtrl)
{
switch(oClrScheme)
{
case EnmColorScheme.Green:
//=========================================================
// Setting color properties of container control for
// Green color scheme
//---------------------------------------------------------
aCtrl.FontColor = Color.FromArgb(57, 66, 1);
aCtrl.ShadowColor = Color.FromArgb(142, 143, 116);
aCtrl.BorderTopColor = Color.FromArgb(225, 225, 183);
aCtrl.BorderBottomColor = Color.FromArgb(167, 168, 127);
aCtrl.BackgroundTopColor = Color.FromArgb(245, 243, 219);
aCtrl.BackgroundBottomColor = Color.FromArgb(214, 209, 153);
break;
//---------------------------------------------------------
case EnmColorScheme.Purple:
//=========================================================
// Setting color properties of container control for
// Purple color scheme
//---------------------------------------------------------
aCtrl.FontColor = Color.FromArgb(137, 101, 163);
aCtrl.ShadowColor = Color.FromArgb(110, 92, 121);
aCtrl.BorderTopColor = Color.FromArgb(234, 218, 245);
aCtrl.BorderBottomColor = Color.FromArgb(191, 161, 211);
aCtrl.BackgroundTopColor = Color.FromArgb(251, 246, 255);
aCtrl.BackgroundBottomColor = Color.FromArgb(241, 229, 249);
break;
//---------------------------------------------------------
default:
// For container control if other than Purple or Green
// any other value is selected it throws an exception
throw new InvalidColorSchemeException();
}
}
}
///
/// This class define the exception which is thrown on invalid selection
///
public class InvalidColorSchemeException : Exception
{
public InvalidColorSchemeException():base("Color Scheme Not Supported")
{
}
}
///
/// This interface defines properties
/// for control that have diffrent colors
/// is disabled mode i.e. ElongatedButton
///
internal interface IGradientDisabledColor
{
Color DisabledFontColor{get; set;}
Color DisbaledBottomColor{get;set;}
Color DisabledTopColor{get;set;}
}
///
/// This interface defines property
/// for the color of the text on
/// the control
///
internal interface IFontColor
{
Color FontColor{get;set;}
}
///
/// This interface defines properties
/// to set the control background
/// Gradient's top color and bottom color
///
internal interface IGradientBackgroundColor
{
Color BackgroundBottomColor{get;set;}
Color BackgroundTopColor{get;set;}
}
///
/// This interface defines properties
/// to set control's Gradient Border's
/// Top color and Bottom Color
///
internal interface IGradientBorderColor
{
Color BorderTopColor{get;set;}
Color BorderBottomColor {get;set;}
}
///
/// This interface combines the interfaces
/// needed for button controls and add button
/// specific properties
///
internal interface IGradientButtonColor:
IFontColor, IGradientDisabledColor,
IGradientBackgroundColor, IGradientBorderColor
{
Color PressedFontColor{get;set;}
Color DefaultBorderColor{get;set;}
}
///
/// This interface combines the interfaces
/// needed for container controls and add
/// container specific property
///
internal interface IGradientContainer:
IFontColor, IGradientBackgroundColor,
IGradientBorderColor
{
Color ShadowColor{get;set;}
}
}