Praeclarum.RichText.ToRtf C# (CSharp) Метод

ToRtf() приватный Метод

private ToRtf ( IEnumerable knownColors, IEnumerable knownFonts ) : string
knownColors IEnumerable
knownFonts IEnumerable
Результат string
		string ToRtf (IEnumerable<Color> knownColors, IEnumerable<string> knownFonts)
		{
			var r = new StringBuilder ();

			var colorTableIndex = new Dictionary<int, int> ();
			var colorTable = new List<Color> ();
			foreach (var col in knownColors) {
				var coli = col.ToArgb ();
				if (!colorTableIndex.ContainsKey (coli)) {
					colorTable.Add (col);
					colorTableIndex.Add (coli, colorTableIndex.Count + 1);
				}
			}

			var fontTableIndex = new Dictionary<string, int> ();
			var fontTable = new List<string> ();
			foreach (var col in knownFonts) {
				if (!fontTableIndex.ContainsKey (col)) {
					fontTable.Add (col);
					fontTableIndex.Add (col, fontTableIndex.Count);
				}
			}

			r.Append (@"{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033");

			r.Append (@"{\fonttbl");
			foreach (var k in fontTableIndex)
				r.AppendFormat (@"{{\f{0}\fnil\fcharset0 {1};}}", k.Value, k.Key);
			r.AppendLine ("}");

			r.Append (@"{\colortbl ;");
			foreach (var c in colorTable)
				r.AppendFormat (@"\red{0}\green{1}\blue{2};", c.Red, c.Green, c.Blue);
			r.AppendLine ("}");

			r.AppendLine (@"{\*\generator Calca 1}\viewkind4\uc1");
			r.Append (@"\pard\sa0\sb0\sl0\slmult1\f0\fs22\lang9 ");

			AppendRtfBody (r, colorTableIndex, fontTableIndex);

			if (PlainText.Length > 0 && PlainText[PlainText.Length-1] == '\n')
				r.AppendLine (@"\par");

			r.AppendLine ("}");

			//Debug.WriteLine (r.ToString ());

			return r.ToString ();
		}

Same methods

RichText::ToRtf ( IEnumerable classes ) : string