Inheritance: IRichTextAttributes
Ejemplo n.º 1
0
        void AppendRtfBody(StringBuilder r, Dictionary <int, int> colorTableIndex, Dictionary <string, int> fontTable)
        {
            var n = PlainText.Length;

            var pc     = new Classes();
            var inspan = false;

            var sc = new RichTextAttributes("merged");

            for (var i = 0; i < n; i++)
            {
                var cs = classes[i];
                if (cs.Class1 != pc.Class1 || cs.Class2 != pc.Class2 ||
                    cs.Class3 != pc.Class3 || cs.Class4 != pc.Class4)
                {
                    if (inspan)
                    {
                        //r.Append (!string.IsNullOrEmpty (sc.Link) ? "}}}}}" : "}");
                        r.Append('}');
                    }
                    inspan = true;
                    r.Append('{');
                    sc.Reset();
                    sc.Merge(cs.Class1);
                    sc.Merge(cs.Class2);
                    sc.Merge(cs.Class3);
                    sc.Merge(cs.Class4);
                    sc.AppendRtf(r, colorTableIndex, fontTable);
                }
                pc = cs;

                //
                // Write the char
                //
                var ch = PlainText[i];
                if (ch == '\\' || ch == '{' || ch == '}')
                {
                    r.Append('\\');
                    r.Append(ch);
                }
                else if (ch == '\n')
                {
                    r.AppendLine(@"\par");
                }
                else if (ch == '\r')
                {
                    // Nothing
                }
                else
                {
                    r.Append(ch);
                }
            }

            if (inspan)
            {
                //r.Append (!string.IsNullOrEmpty (sc.Link) ? "}}}}}" : "}");
                r.Append('}');
            }
        }
Ejemplo n.º 2
0
		void AppendRtfBody (StringBuilder r, Dictionary<int, int> colorTableIndex, Dictionary<string, int> fontTable)
		{
			var n = PlainText.Length;

			var pc = new Classes ();
			var inspan = false;

			var sc = new RichTextAttributes ("merged");

			for (var i = 0; i < n; i++) {

				var cs = classes[i];
				if (cs.Class1 != pc.Class1 || cs.Class2 != pc.Class2 || 
					cs.Class3 != pc.Class3 || cs.Class4 != pc.Class4) {

					if (inspan) {
						//r.Append (!string.IsNullOrEmpty (sc.Link) ? "}}}}}" : "}");
						r.Append ('}');
					}
					inspan = true;
					r.Append ('{');
					sc.Reset ();
					sc.Merge (cs.Class1);
					sc.Merge (cs.Class2);
					sc.Merge (cs.Class3);
					sc.Merge (cs.Class4);
					sc.AppendRtf (r, colorTableIndex, fontTable);
				}
				pc = cs;

				//
				// Write the char
				//
				var ch = PlainText[i];
				if (ch == '\\' || ch == '{' || ch == '}') {
					r.Append ('\\');
					r.Append (ch);
				}
				else if (ch == '\n') {
					r.AppendLine (@"\par");
				}
				else if (ch == '\r') {
					// Nothing
				}
				else {
					r.Append (ch);
				}				
			}

			if (inspan) {
				//r.Append (!string.IsNullOrEmpty (sc.Link) ? "}}}}}" : "}");
				r.Append ('}');
			}
		}