#region license
// This file is part of Vocaluxe.
//
// Vocaluxe is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Vocaluxe is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Vocaluxe. If not, see .
#endregion
using System;
using System.Collections.Generic;
namespace VocaluxeLib
{
public interface IFontObserver
{
void FontChanged();
}
public struct SThemeFont
{
// ReSharper disable UnassignedField.Global
public string Name;
public EStyle Style;
public float Size;
// ReSharper restore UnassignedField.Global
}
public class CFont
{
private string _Name;
private EStyle _Style;
private float _Height;
private readonly List _Observers = new List();
public string Name
{
get { return _Name; }
set
{
if (_Name == value)
{
return;
}
_Name = value;
foreach (var observer in _Observers)
{
observer.FontChanged();
}
}
}
public EStyle Style
{
get { return _Style; }
set
{
if (_Style == value)
{
return;
}
_Style = value;
foreach (var observer in _Observers)
{
observer.FontChanged();
}
}
}
public float Height
{
get { return _Height; }
set
{
if (Math.Abs(_Height - value) < 0.001)
{
return;
}
_Height = value;
foreach (var observer in _Observers)
{
observer.FontChanged();
}
}
}
public CFont()
{
_Name = "Normal";
_Style = EStyle.Normal;
_Height = 25f;
}
public CFont(SThemeFont font)
{
_Name = font.Name;
_Style = font.Style;
_Height = font.Size;
}
public CFont(CFont font)
{
_Name = font._Name;
_Style = font._Style;
_Height = font._Height;
}
public CFont(string fontFamily, EStyle style, float h)
{
_Name = fontFamily;
_Style = style;
_Height = h;
}
public void AddObserver(IFontObserver observer)
{
if (!_Observers.Contains(observer))
{
_Observers.Add(observer);
}
}
public void RemoveObserver(IFontObserver observer)
{
_Observers.Remove(observer);
}
}
}