public void RtfStyle_ToString_RightToLeft() { CheckDisposed(); // Build up a font table and style table for testing RtfStyleInfoTable styleTable = new RtfStyleInfoTable(null, true); BuildStyleTable(styleTable); RtfStyle style = (RtfStyle)styleTable["Normal"]; string rtfString = style.ToString("Normal", true); Assert.AreEqual(@"\s1\rtlpar\qr\f1\fs20\snext1 Normal", rtfString); style = (RtfStyle)styleTable["Paragraph"]; rtfString = style.ToString("Paragraph", true); Assert.AreEqual(@"\s2\rtlpar\qr\fi360\lin180\rin90\sb1440\sa720\f1\fs20\sbasedon1\snext2 Paragraph", rtfString); style = (RtfStyle)styleTable["Heading"]; rtfString = style.ToString("Heading", true); Assert.AreEqual(@"\s3\rtlpar\qr\f1\fs20\sbasedon1\snext2 Heading", rtfString); style = (RtfStyle)styleTable["Emphasis"]; rtfString = style.ToString("Emphasis", true); Assert.AreEqual(@"\*\cs4\b\f1\fs40\additive Emphasis", rtfString); }
public void RtfStyle_ToString_LeftToRight() { CheckDisposed(); // Build up a style table for testing RtfStyleInfoTable styleTable = new RtfStyleInfoTable(null, false); BuildStyleTable(styleTable); // Create a "Paragraph" style that is based on Normal (#2) DummyRtfStyle paragraph = new DummyRtfStyle("\\MyFavoriteStyle", StyleType.kstParagraph, 72000, // space before 36000, // space after 18000, // first line indent 9000, // leading indent 4500, // trailing indent "Normal", // based-on style name null); // next style name styleTable.Add("\\MyFavoriteStyle", paragraph); styleTable.ConnectStyles(); RtfStyle style = (RtfStyle)styleTable["Normal"]; string rtfString = style.ToString("Normal", true); Assert.AreEqual(@"\s1\f1\fs20\snext1 Normal", rtfString); style = (RtfStyle)styleTable["Paragraph"]; rtfString = style.ToString("Paragraph", true); Assert.AreEqual(@"\s2\fi360\lin180\rin90\sb1440\sa720\f1\fs20\sbasedon1\snext2 Paragraph", rtfString); style = (RtfStyle)styleTable["Heading"]; rtfString = style.ToString("Heading", true); Assert.AreEqual(@"\s3\f1\fs20\sbasedon1\snext2 Heading", rtfString); style = (RtfStyle)styleTable["Emphasis"]; rtfString = style.ToString("Emphasis", true); Assert.AreEqual(@"\*\cs4\b\f1\fs40\additive Emphasis", rtfString); style = (RtfStyle)styleTable["ExactSpacing"]; rtfString = style.ToString("ExactSpacing", true); Assert.AreEqual(@"\s5\sl-360\slmult0\f1\fs20\sbasedon1\snext2 ExactSpacing", rtfString); style = (RtfStyle)styleTable["AtLeastSpacing"]; rtfString = style.ToString("AtLeastSpacing", true); Assert.AreEqual(@"\s6\sl360\f1\fs20\sbasedon1\snext2 AtLeastSpacing", rtfString); style = (RtfStyle)styleTable["Border"]; rtfString = style.ToString("Border", true); Assert.AreEqual(@"\s7\qj\f2\fs40" + @"\brdrt\brdrs\brdrw10\brsp20\brdrcf1" + @"\brdrb\brdrs\brdrw20\brsp20\brdrcf1" + @"\brdrl\brdrs\brdrw30\brsp80\brdrcf1" + @"\brdrr\brdrs\brdrw40\brsp80\brdrcf1\nosupersub\snext7" + " Border", rtfString); style = (RtfStyle)styleTable["\\MyFavoriteStyle"]; rtfString = style.ToString("\\MyFavoriteStyle", true); Assert.AreEqual(@"\s8\fi360\lin180\rin90\sb1440\sa720\f1\fs20\sbasedon1\snext8 \\MyFavoriteStyle", rtfString); }
static void AddStyleData(AssembledStyles styles, ref int id, Dictionary <string, int> fonts, Dictionary <Color, int> colors, Dictionary <Tuple <string, int>, StyleData> styleTable) { var ss = styles.Stylesheet; if (ss == null) { return; // Can't do anything useful with styles. } var styleName = styles.StyleName; if (string.IsNullOrEmpty(styleName)) { return; // no style info. } var ws = styles.Ws; var key = new Tuple <string, int>(styleName, ws); if (styleTable.ContainsKey(key)) { return; // already know all we need. } var data = new StyleData { Name = styleName, Id = id++ }; styleTable[key] = data; var style = ss.Style(styleName); if (style == null) { data.StyleTableFormatting = ""; // Todo: some minimal definition with at least the name data.DataFormatting = ""; } // Todo: if style has any overrides for ws, make a distinct style name. var rtfStyle = new RtfStyle(style, ws) { StyleNumber = data.Id, Fonts = fonts, Colors = colors }; data.StyleTableFormatting = rtfStyle.ToString(styleName, true); data.DataFormatting = rtfStyle.ToString(styleName, false); }