160 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using System.Drawing;
 | |
| 
 | |
| namespace Volian.Svg.Library
 | |
| {
 | |
| 	class SvgFontSettings
 | |
| 	{
 | |
| 		#region ctor
 | |
| 		public SvgFontSettings() { ;}
 | |
| 		public SvgFontSettings(Font myFont)
 | |
| 		{
 | |
| 			_FontFamily = myFont.FontFamily.Name;
 | |
| 			_FontSize = myFont.SizeInPoints.ToString() + "PT";
 | |
| 			_SVGFontStyle = ((myFont.Style & FontStyle.Italic) == FontStyle.Italic ? "italic" : "normal");
 | |
| 			_FontWeight = ((myFont.Style & FontStyle.Bold) == FontStyle.Bold ? "bold" : "normal");
 | |
| 			_TextDecoration = ((myFont.Style & FontStyle.Underline) == FontStyle.Underline ? "underline" : "normal");
 | |
| 		}
 | |
| 		//public SvgFontSettings(string myFontFamily, string myFontSize, string mySvgStyle, string myFontWeight, string myTextDecoration)
 | |
| 		//{
 | |
| 		//  _FontFamilyName = myFontFamily;
 | |
| 		//  _FontSize = myFontSize;
 | |
| 		//  _SVGFontStyle = mySvgStyle;
 | |
| 		//  _FontWeight = myFontWeight;
 | |
| 		//  _TextDecoration = myTextDecoration;
 | |
| 		//}
 | |
| 		#endregion
 | |
| 		#region Inheritance
 | |
| 		private SvgFontSettings _MyParentsSettings = null;
 | |
| 		public SvgFontSettings MyParentsSettings
 | |
| 		{
 | |
| 			get { return _MyParentsSettings; }
 | |
| 			set
 | |
| 			{
 | |
| 				_MyParentsSettings = value;
 | |
| 			}
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Internal Inherited Properties
 | |
| 		protected string InheritedFontFamily
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_FontFamily != "") return _FontFamily;
 | |
| 				if (_MyParentsSettings != null) return _MyParentsSettings.InheritedFontFamily; // Default
 | |
| 				return "Arial"; // Absolute Default
 | |
| 			}
 | |
| 		}
 | |
| 		protected string InheritedFontSize
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_FontSize != "") return _FontSize; // Current Value
 | |
| 				if (_MyParentsSettings != null) return _MyParentsSettings.InheritedFontSize; // Default
 | |
| 				return "9PT"; // Absolute Default
 | |
| 			}
 | |
| 		}
 | |
| 		protected string InheritedFontStyle
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_SVGFontStyle != "") return _SVGFontStyle; // Current Value
 | |
| 				if (_MyParentsSettings != null) return _MyParentsSettings.InheritedFontStyle;// Default
 | |
| 				return "normal"; // Absolute Default
 | |
| 			}
 | |
| 		}
 | |
| 		protected string InheritedFontWeight
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_FontWeight != "") return _FontWeight;// Current Value
 | |
| 				if (_MyParentsSettings != null) return _MyParentsSettings.InheritedFontWeight;// Default
 | |
| 				return "normal"; // Absolute Default
 | |
| 			}
 | |
| 		}
 | |
| 		protected string InheritedTextDecoration
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_TextDecoration != "") return _TextDecoration;// Current Value
 | |
| 				if (_MyParentsSettings != null) return _MyParentsSettings.InheritedTextDecoration;// Default
 | |
| 				return "normal"; // Absolute Default
 | |
| 			}
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Scale
 | |
| 		private float _Scale = 1;
 | |
| 		internal float Scale
 | |
| 		{
 | |
| 			get { return _Scale; }
 | |
| 			set { _Scale = value; Font = null; }
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Inherited Values
 | |
| 		private Font _Font=null;
 | |
| 		public Font Font
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_Font == null)
 | |
| 				{
 | |
| 					_Font = new Font(InheritedFontFamily, _Scale * SvgMeasurement.StringToPoints(InheritedFontSize),
 | |
| 						(InheritedFontStyle == "italic" ? FontStyle.Italic : FontStyle.Regular) |
 | |
| 						(InheritedFontWeight == "bold" ? FontStyle.Bold : FontStyle.Regular) |
 | |
| 						(InheritedTextDecoration == "underline" ? FontStyle.Underline : FontStyle.Regular)
 | |
| 						, GraphicsUnit.Point);
 | |
| 				}
 | |
| 				return _Font;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				if (_Font != null) _Font.Dispose();
 | |
| 				if (value != null)
 | |
| 				{
 | |
| 					_FontFamily = value.FontFamily.Name;
 | |
| 					_FontSize = value.SizeInPoints.ToString() + "PT";
 | |
| 					_SVGFontStyle = ((value.Style & FontStyle.Italic) == FontStyle.Italic ? "italic" : "normal");
 | |
| 					_FontWeight = ((value.Style & FontStyle.Bold) == FontStyle.Bold ? "bold" : "normal");
 | |
| 					_TextDecoration = ((value.Style & FontStyle.Underline) == FontStyle.Underline ? "underline" : "normal");
 | |
| 				}
 | |
| 				_Font = value;
 | |
| 			}
 | |
| 		}
 | |
| 		#endregion
 | |
| 		#region Public Properties
 | |
| 		private string _FontFamily = string.Empty;
 | |
| 		public string FontFamily
 | |
| 		{
 | |
| 			get { return _FontFamily; }
 | |
| 			set { _FontFamily = value; Font = null; }
 | |
| 		}
 | |
| 		private string _FontSize = string.Empty;
 | |
| 		public string FontSize
 | |
| 		{
 | |
| 			get { return _FontSize; }
 | |
| 			set { _FontSize = value; Font = null; }
 | |
| 		}
 | |
| 		private string _SVGFontStyle = string.Empty;
 | |
| 		public string SVGFontStyle
 | |
| 		{
 | |
| 			get { return _SVGFontStyle; }
 | |
| 			set { _SVGFontStyle = value; Font = null; }
 | |
| 		}
 | |
| 		private string _FontWeight = string.Empty;
 | |
| 		public string FontWeight
 | |
| 		{
 | |
| 			get { return _FontWeight; }
 | |
| 			set { _FontWeight = value; Font = null; }
 | |
| 		}
 | |
| 		private string _TextDecoration = string.Empty;
 | |
| 		public string TextDecoration
 | |
| 		{
 | |
| 			get { return _TextDecoration; }
 | |
| 			set { _TextDecoration = value; Font = null; }
 | |
| 		}
 | |
| 		#endregion
 | |
| 	}
 | |
| }
 | 
