John 2c15add602 Added Try/Catch as part of B2017-143 fix to prevent PROMS from crashing
B2017-143  Print was disposing fonts that are save in a static dictionary, causing editor display problems after printing a procedure.
2017-07-14 18:30:57 +00:00

166 lines
4.8 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
{
// This was disposing fonts that are saved in our static dictionary.
// caused problems with the step editor display after printing (found with Wolf Creek Chem procedure RW-G02 Step 6.1.17) - jsj 7/14/2017
//if (_Font != null)
//{
// Console.WriteLine("font dispose {0}, {1}", _Font, _Font.Style);
// //_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
}
}