コード例 #1
0
ファイル: ExportRtfTests.cs プロジェクト: sillsdev/WorldPad
        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);
        }
コード例 #2
0
ファイル: ExportRtfTests.cs プロジェクト: sillsdev/WorldPad
        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);
        }
コード例 #3
0
        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);
        }