TextDecoration.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:4k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2. * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3. * $Id: TextDecoration.cs,v 1.2 2005/04/20 08:45:48 okajima Exp $
  4. */
  5. using System;
  6. using System.IO;
  7. using System.Collections;
  8. using System.Drawing;
  9. using System.Diagnostics;
  10. using System.Text;
  11. using Poderosa.Config;
  12. using Poderosa.Toolkit;
  13. namespace Poderosa.Text
  14. {
  15. //TextDecoration偱怓傪巜掕偡傞偺偐丄奜晹偱掕媊偝傟偨怓傪巊偆偺偐偺嬫暿偵偮偐偆丅Color偺A僾儘僷僥傿偺抣偱戙梡偡傟偽偪傚偭偲岠棪偼忋偑傝偦偆偩偑...
  16. internal enum ColorType {
  17. DefaultBack,
  18. DefaultText,
  19. Custom
  20. }
  21. internal class TextDecoration : ICloneable {
  22. private ColorType _bgColorType;
  23. private Color _bgColor;
  24. private ColorType _textColorType;
  25. private Color _textColor;
  26. private bool  _bold;
  27. private bool  _underline;
  28. private static TextDecoration _default;
  29. public static TextDecoration Default {
  30. get {
  31. if(_default==null) {
  32. _default = new TextDecoration(false, false);
  33. }
  34. return _default;
  35. }
  36. }
  37. public static TextDecoration ClonedDefault() {
  38. return new TextDecoration(false, false);
  39. }
  40. public object Clone() {
  41. TextDecoration t = new TextDecoration();
  42. t._bgColorType = _bgColorType;
  43. t._bgColor = _bgColor;
  44. t._textColorType = _textColorType;
  45. t._textColor = _textColor;
  46. t._bold = _bold;
  47. t._underline = _underline;
  48. return t;
  49. }
  50. private TextDecoration() {} //Clone()偐傜巊偆偨傔偺僐儞僗僩儔僋僞
  51. public Color TextColor {
  52. get {
  53. return _textColor;
  54. }
  55. set {
  56. _textColor = value;
  57. _textColorType = value==Color.Empty? ColorType.DefaultText : ColorType.Custom;
  58. }
  59. }
  60. public Color BackColor {
  61. get {
  62. return _bgColor;
  63. }
  64. set {
  65. _bgColor = value;
  66. _bgColorType = value==Color.Empty? ColorType.DefaultBack : ColorType.Custom;
  67. }
  68. }
  69. public ColorType TextColorType {
  70. get {
  71. return _textColorType;
  72. }
  73. set {
  74. _textColorType = value;
  75. }
  76. }
  77. public ColorType BackColorType {
  78. get {
  79. return _bgColorType;
  80. }
  81. set {
  82. _bgColorType = value;
  83. }
  84. }
  85. public bool Bold {
  86. get {
  87. return _bold;
  88. }
  89. set {
  90. _bold = value;
  91. }
  92. }
  93. public bool Underline {
  94. get {
  95. return _underline;
  96. }
  97. set {
  98. _underline = value;
  99. }
  100. }
  101. public bool IsDefault {
  102. get {
  103. return !_underline && !_bold && _bgColorType==ColorType.DefaultBack && _textColorType==ColorType.DefaultText;
  104. }
  105. }
  106. public void Inverse() {
  107. Color tmp = _textColor;
  108. _textColor = _bgColor;
  109. _bgColor = tmp;
  110. ColorType tmp2 = _textColorType;
  111. _textColorType = _bgColorType;
  112. _bgColorType = tmp2;
  113. }
  114. public void ToCaretStyle() {
  115. Inverse(); 
  116. if(GEnv.Options.CaretColor!=Color.Empty) {
  117. _bgColorType = ColorType.Custom;
  118. _bgColor = GEnv.Options.CaretColor;
  119. }
  120. }
  121. public TextDecoration(bool underline, bool bold) {
  122. _bgColorType = ColorType.DefaultBack;
  123. _textColorType = ColorType.DefaultText;
  124. _bold = bold;
  125. _underline = underline;
  126. }
  127. public TextDecoration(Color bg, Color txt, bool underline, bool bold) {
  128. Init(bg, txt, underline, bold);
  129. }
  130. public void Init(Color bg, Color txt, bool underline, bool bold) {
  131. _bgColor = bg;
  132. _bgColorType = ColorType.Custom;
  133. _textColor = txt;
  134. _textColorType = ColorType.Custom;
  135. _bold = bold;
  136. _underline = underline;
  137. }
  138. public override string ToString() {
  139. StringBuilder b = new StringBuilder();
  140. b.Append(_bgColor.ToString()); //偙傟偱傑偭偲偆側暥帤楍偑弌傞偺偐?
  141. b.Append('/');
  142. b.Append(_textColor.ToString());
  143. b.Append('/');
  144. if(_bold) b.Append('B');
  145. return b.ToString();
  146. }
  147. }
  148. internal class FontHandle {
  149. private Font _font;
  150. private IntPtr _hFont;
  151. public FontHandle(Font f) {
  152. _font = f;
  153. }
  154. public Font Font {
  155. get {
  156. return _font;
  157. }
  158. }
  159. public IntPtr HFONT {
  160. get {
  161. if(_hFont==IntPtr.Zero) _hFont = _font.ToHfont();
  162. return _hFont;
  163. }
  164. }
  165. }
  166. }