Пример #1
0
        internal void ApplyFont(SortedDictionary <int, CT_RPrElt> formats, int startIndex, int endIndex, CT_RPrElt fmt)
        {
            List <int> intList = new List <int>();

            SortedDictionary <int, CT_RPrElt> .KeyCollection.Enumerator enumerator = formats.Keys.GetEnumerator();
            while (enumerator.MoveNext())
            {
                int current = enumerator.Current;
                if (current >= startIndex && current < endIndex)
                {
                    intList.Add(current);
                }
            }
            foreach (int key in intList)
            {
                formats.Remove(key);
            }
            if (startIndex > 0 && !formats.ContainsKey(startIndex))
            {
                foreach (KeyValuePair <int, CT_RPrElt> format in formats)
                {
                    if (format.Key > startIndex)
                    {
                        formats[startIndex] = format.Value;
                        break;
                    }
                }
            }
            formats[endIndex] = fmt;
        }
Пример #2
0
 private void SetRunAttributes(CT_Font ctFont, CT_RPrElt pr)
 {
     if (ctFont.sizeOfBArray() > 0)
     {
         pr.AddNewB().val = ctFont.GetBArray(0).val;
     }
     if (ctFont.sizeOfUArray() > 0)
     {
         pr.AddNewU().val = ctFont.GetUArray(0).val;
     }
     if (ctFont.sizeOfIArray() > 0)
     {
         pr.AddNewI().val = ctFont.GetIArray(0).val;
     }
     if (ctFont.sizeOfColorArray() > 0)
     {
         CT_Color colorArray = ctFont.GetColorArray(0);
         CT_Color ctColor    = pr.AddNewColor();
         if (colorArray.IsSetAuto())
         {
             ctColor.auto          = colorArray.auto;
             ctColor.autoSpecified = true;
         }
         if (colorArray.IsSetIndexed())
         {
             ctColor.indexed          = colorArray.indexed;
             ctColor.indexedSpecified = true;
         }
         if (colorArray.IsSetRgb())
         {
             ctColor.SetRgb(colorArray.rgb);
             ctColor.rgbSpecified = true;
         }
         if (colorArray.IsSetTheme())
         {
             ctColor.theme          = colorArray.theme;
             ctColor.themeSpecified = true;
         }
         if (colorArray.IsSetTint())
         {
             ctColor.tint          = colorArray.tint;
             ctColor.tintSpecified = true;
         }
     }
     if (ctFont.sizeOfSzArray() > 0)
     {
         pr.AddNewSz().val = ctFont.GetSzArray(0).val;
     }
     if (ctFont.sizeOfNameArray() > 0)
     {
         pr.AddNewRFont().val = ctFont.GetNameArray(0).val;
     }
     if (ctFont.sizeOfFamilyArray() > 0)
     {
         pr.AddNewFamily().val = ctFont.GetFamilyArray(0).val;
     }
     if (ctFont.sizeOfSchemeArray() > 0)
     {
         pr.AddNewScheme().val = ctFont.GetSchemeArray(0).val;
     }
     if (ctFont.sizeOfCharsetArray() > 0)
     {
         pr.AddNewCharset().val = ctFont.GetCharsetArray(0).val;
     }
     if (ctFont.sizeOfCondenseArray() > 0)
     {
         pr.AddNewCondense().val = ctFont.GetCondenseArray(0).val;
     }
     if (ctFont.sizeOfExtendArray() > 0)
     {
         pr.AddNewExtend().val = ctFont.GetExtendArray(0).val;
     }
     if (ctFont.sizeOfVertAlignArray() > 0)
     {
         pr.AddNewVertAlign().val = ctFont.GetVertAlignArray(0).val;
     }
     if (ctFont.sizeOfOutlineArray() > 0)
     {
         pr.AddNewOutline().val = ctFont.GetOutlineArray(0).val;
     }
     if (ctFont.sizeOfShadowArray() > 0)
     {
         pr.AddNewShadow().val = ctFont.GetShadowArray(0).val;
     }
     if (ctFont.sizeOfStrikeArray() <= 0)
     {
         return;
     }
     pr.AddNewStrike().val = ctFont.GetStrikeArray(0).val;
 }
Пример #3
0
        protected static CT_Font ToCTFont(CT_RPrElt pr)
        {
            CT_Font ctFont = new CT_Font();

            if (pr.sizeOfBArray() > 0)
            {
                ctFont.AddNewB().val = pr.GetBArray(0).val;
            }
            if (pr.sizeOfUArray() > 0)
            {
                ctFont.AddNewU().val = pr.GetUArray(0).val;
            }
            if (pr.sizeOfIArray() > 0)
            {
                ctFont.AddNewI().val = pr.GetIArray(0).val;
            }
            if (pr.sizeOfColorArray() > 0)
            {
                CT_Color colorArray = pr.GetColorArray(0);
                CT_Color ctColor    = ctFont.AddNewColor();
                if (colorArray.IsSetAuto())
                {
                    ctColor.auto          = colorArray.auto;
                    ctColor.autoSpecified = true;
                }
                if (colorArray.IsSetIndexed())
                {
                    ctColor.indexed          = colorArray.indexed;
                    ctColor.indexedSpecified = true;
                }
                if (colorArray.IsSetRgb())
                {
                    ctColor.SetRgb(colorArray.GetRgb());
                    ctColor.rgbSpecified = true;
                }
                if (colorArray.IsSetTheme())
                {
                    ctColor.theme          = colorArray.theme;
                    ctColor.themeSpecified = true;
                }
                if (colorArray.IsSetTint())
                {
                    ctColor.tint          = colorArray.tint;
                    ctColor.tintSpecified = true;
                }
            }
            if (pr.sizeOfSzArray() > 0)
            {
                ctFont.AddNewSz().val = pr.GetSzArray(0).val;
            }
            if (pr.sizeOfRFontArray() > 0)
            {
                ctFont.AddNewName().val = pr.GetRFontArray(0).val;
            }
            if (pr.sizeOfFamilyArray() > 0)
            {
                ctFont.AddNewFamily().val = pr.GetFamilyArray(0).val;
            }
            if (pr.sizeOfSchemeArray() > 0)
            {
                ctFont.AddNewScheme().val = pr.GetSchemeArray(0).val;
            }
            if (pr.sizeOfCharsetArray() > 0)
            {
                ctFont.AddNewCharset().val = pr.GetCharsetArray(0).val;
            }
            if (pr.sizeOfCondenseArray() > 0)
            {
                ctFont.AddNewCondense().val = pr.GetCondenseArray(0).val;
            }
            if (pr.sizeOfExtendArray() > 0)
            {
                ctFont.AddNewExtend().val = pr.GetExtendArray(0).val;
            }
            if (pr.sizeOfVertAlignArray() > 0)
            {
                ctFont.AddNewVertAlign().val = pr.GetVertAlignArray(0).val;
            }
            if (pr.sizeOfOutlineArray() > 0)
            {
                ctFont.AddNewOutline().val = pr.GetOutlineArray(0).val;
            }
            if (pr.sizeOfShadowArray() > 0)
            {
                ctFont.AddNewShadow().val = pr.GetShadowArray(0).val;
            }
            if (pr.sizeOfStrikeArray() > 0)
            {
                ctFont.AddNewStrike().val = pr.GetStrikeArray(0).val;
            }
            return(ctFont);
        }
Пример #4
0
        public void TestCreateNew()
        {
            SharedStringsTable sst = new SharedStringsTable();

            CT_Rst st;
            int    idx;

            // Check defaults
            Assert.IsNotNull(sst.Items);
            Assert.AreEqual(0, sst.Items.Count);
            Assert.AreEqual(0, sst.Count);
            Assert.AreEqual(0, sst.UniqueCount);

            st   = new CT_Rst();
            st.t = ("Hello, World!");

            idx = sst.AddEntry(st);
            Assert.AreEqual(0, idx);
            Assert.AreEqual(1, sst.Count);
            Assert.AreEqual(1, sst.UniqueCount);

            //add the same entry again
            idx = sst.AddEntry(st);
            Assert.AreEqual(0, idx);
            Assert.AreEqual(2, sst.Count);
            Assert.AreEqual(1, sst.UniqueCount);

            //and again
            idx = sst.AddEntry(st);
            Assert.AreEqual(0, idx);
            Assert.AreEqual(3, sst.Count);
            Assert.AreEqual(1, sst.UniqueCount);

            st   = new CT_Rst();
            st.t = ("Second string");

            idx = sst.AddEntry(st);
            Assert.AreEqual(1, idx);
            Assert.AreEqual(4, sst.Count);
            Assert.AreEqual(2, sst.UniqueCount);

            //add the same entry again
            idx = sst.AddEntry(st);
            Assert.AreEqual(1, idx);
            Assert.AreEqual(5, sst.Count);
            Assert.AreEqual(2, sst.UniqueCount);

            st = new CT_Rst();
            CT_RElt   r  = st.AddNewR();
            CT_RPrElt pr = r.AddNewRPr();

            pr.AddNewColor().SetRgb(new byte[] { (byte)0xFF, 0, 0 }); //red
            pr.AddNewI().val = (true);                                //bold
            pr.AddNewB().val = (true);                                //italic
            r.t = ("Second string");

            idx = sst.AddEntry(st);
            Assert.AreEqual(2, idx);
            Assert.AreEqual(6, sst.Count);
            Assert.AreEqual(3, sst.UniqueCount);

            idx = sst.AddEntry(st);
            Assert.AreEqual(2, idx);
            Assert.AreEqual(7, sst.Count);
            Assert.AreEqual(3, sst.UniqueCount);

            //OK. the sst table is Filled, check the contents
            Assert.AreEqual(3, sst.Items.Count);
            Assert.AreEqual("Hello, World!", new XSSFRichTextString(sst.GetEntryAt(0)).ToString());
            Assert.AreEqual("Second string", new XSSFRichTextString(sst.GetEntryAt(1)).ToString());
            Assert.AreEqual("Second string", new XSSFRichTextString(sst.GetEntryAt(2)).ToString());
        }
Пример #5
0
        /**
         * org.Openxmlformats.schemas.spreadsheetml.x2006.main.CTRPrElt to
         * org.Openxmlformats.schemas.Drawingml.x2006.main.CTFont adapter
         */
        private static void ApplyAttributes(CT_RPrElt pr, CT_TextCharacterProperties rPr)
        {
            if (pr.SizeOfBArray() > 0)
            {
                rPr.b = (/*setter*/ pr.GetBArray(0).val);
            }
            if (pr.SizeOfUArray() > 0)
            {
                ST_UnderlineValues u1 = pr.GetUArray(0).val;
                if (u1 == ST_UnderlineValues.single)
                {
                    rPr.u = (/*setter*/ ST_TextUnderlineType.sng);
                }
                else if (u1 == ST_UnderlineValues.@double)
                {
                    rPr.u = (/*setter*/ ST_TextUnderlineType.dbl);
                }
                else if (u1 == ST_UnderlineValues.none)
                {
                    rPr.u = (/*setter*/ ST_TextUnderlineType.none);
                }
            }
            if (pr.SizeOfIArray() > 0)
            {
                rPr.i = (/*setter*/ pr.GetIArray(0).val);
            }

            if (pr.SizeOfRFontArray() > 0)
            {
                CT_TextFont rFont = rPr.IsSetLatin() ? rPr.latin : rPr.AddNewLatin();
                rFont.typeface = (/*setter*/ pr.GetRFontArray(0).val);
            }

            if (pr.SizeOfSzArray() > 0)
            {
                int sz = (int)(pr.GetSzArray(0).val * 100);
                rPr.sz = (/*setter*/ sz);
            }

            if (pr.SizeOfColorArray() > 0)
            {
                CT_SolidColorFillProperties fill = rPr.IsSetSolidFill() ? rPr.solidFill : rPr.AddNewSolidFill();
                NPOI.OpenXmlFormats.Spreadsheet.CT_Color xlsColor = pr.GetColorArray(0);
                if (xlsColor.IsSetRgb())
                {
                    CT_SRgbColor clr = fill.IsSetSrgbClr() ? fill.srgbClr : fill.AddNewSrgbClr();
                    clr.val = (/*setter*/ xlsColor.rgb);
                }
                else if (xlsColor.IsSetIndexed())
                {
                    HSSFColor indexed = (HSSFColor)HSSFColor.GetIndexHash()[((int)xlsColor.indexed)];
                    if (indexed != null)
                    {
                        byte[] rgb = new byte[3];
                        rgb[0] = (byte)indexed.GetTriplet()[0];
                        rgb[1] = (byte)indexed.GetTriplet()[1];
                        rgb[2] = (byte)indexed.GetTriplet()[2];
                        CT_SRgbColor clr = fill.IsSetSrgbClr() ? fill.srgbClr : fill.AddNewSrgbClr();
                        clr.val = (/*setter*/ rgb);
                    }
                }
            }
        }
Пример #6
0
        /**
         * Copy font attributes from CTFont bean into CTRPrElt bean
         */
        private void SetRunAttributes(CT_Font ctFont, CT_RPrElt pr)
        {
            if (ctFont.sizeOfBArray() > 0)
            {
                pr.AddNewB().val = (ctFont.GetBArray(0).val);
            }
            if (ctFont.sizeOfUArray() > 0)
            {
                pr.AddNewU().val = (ctFont.GetUArray(0).val);
            }
            if (ctFont.sizeOfIArray() > 0)
            {
                pr.AddNewI().val = (ctFont.GetIArray(0).val);
            }
            if (ctFont.sizeOfColorArray() > 0)
            {
                CT_Color c1 = ctFont.GetColorArray(0);
                CT_Color c2 = pr.AddNewColor();
                if (c1.IsSetAuto())
                {
                    c2.auto          = (c1.auto);
                    c2.autoSpecified = true;
                }
                if (c1.IsSetIndexed())
                {
                    c2.indexed          = (c1.indexed);
                    c2.indexedSpecified = true;
                }
                if (c1.IsSetRgb())
                {
                    c2.SetRgb(c1.rgb);
                    c2.rgbSpecified = true;
                }
                if (c1.IsSetTheme())
                {
                    c2.theme          = (c1.theme);
                    c2.themeSpecified = true;
                }
                if (c1.IsSetTint())
                {
                    c2.tint          = (c1.tint);
                    c2.tintSpecified = true;
                }
            }

            if (ctFont.sizeOfSzArray() > 0)
            {
                pr.AddNewSz().val = (ctFont.GetSzArray(0).val);
            }
            if (ctFont.sizeOfNameArray() > 0)
            {
                pr.AddNewRFont().val = (ctFont.GetNameArray(0).val);
            }
            if (ctFont.sizeOfFamilyArray() > 0)
            {
                pr.AddNewFamily().val = (ctFont.GetFamilyArray(0).val);
            }
            if (ctFont.sizeOfSchemeArray() > 0)
            {
                pr.AddNewScheme().val = (ctFont.GetSchemeArray(0).val);
            }
            if (ctFont.sizeOfCharsetArray() > 0)
            {
                pr.AddNewCharset().val = (ctFont.GetCharsetArray(0).val);
            }
            if (ctFont.sizeOfCondenseArray() > 0)
            {
                pr.AddNewCondense().val = (ctFont.GetCondenseArray(0).val);
            }
            if (ctFont.sizeOfExtendArray() > 0)
            {
                pr.AddNewExtend().val = (ctFont.GetExtendArray(0).val);
            }
            if (ctFont.sizeOfVertAlignArray() > 0)
            {
                pr.AddNewVertAlign().val = (ctFont.GetVertAlignArray(0).val);
            }
            if (ctFont.sizeOfOutlineArray() > 0)
            {
                pr.AddNewOutline().val = (ctFont.GetOutlineArray(0).val);
            }
            if (ctFont.sizeOfShadowArray() > 0)
            {
                pr.AddNewShadow().val = (ctFont.GetShadowArray(0).val);
            }
            if (ctFont.sizeOfStrikeArray() > 0)
            {
                pr.AddNewStrike().val = (ctFont.GetStrikeArray(0).val);
            }
        }
Пример #7
0
        internal void ApplyFont(SortedDictionary <int, CT_RPrElt> formats, int startIndex, int endIndex, CT_RPrElt fmt)
        {
            // delete format runs that fit between startIndex and endIndex
            // runs intersecting startIndex and endIndex remain
            //int runStartIdx = 0;
            List <int> toRemoveKeys = new List <int>();

            for (SortedDictionary <int, CT_RPrElt> .KeyCollection.Enumerator it = formats.Keys.GetEnumerator(); it.MoveNext();)
            {
                int runIdx = it.Current;
                if (runIdx >= startIndex && runIdx < endIndex)
                {
                    toRemoveKeys.Add(runIdx);
                }
            }
            foreach (int key in toRemoveKeys)
            {
                formats.Remove(key);
            }
            if (startIndex > 0 && !formats.ContainsKey(startIndex))
            {
                // If there's a format that starts later in the string, make it start now
                foreach (KeyValuePair <int, CT_RPrElt> entry in formats)
                {
                    if (entry.Key > startIndex)
                    {
                        formats[startIndex] = entry.Value;
                        break;
                    }
                }
            }
            formats[endIndex] = fmt;

            // assure that the range [startIndex, endIndex] consists if a single run
            // there can be two or three runs depending whether startIndex or endIndex
            // intersected existing format runs
            //SortedMap<int, CT_RPrElt> sub = formats.subMap(startIndex, endIndex);
            //while(sub.size() > 1) sub.remove(sub.lastKey());
        }
Пример #8
0
        /**
         *
         * CTRPrElt --> CTFont adapter
         */
        protected static CT_Font ToCTFont(CT_RPrElt pr)
        {
            CT_Font ctFont = new CT_Font();

            // Bug 58315: there are files where there is no pr-entry for a RichTextString
            if (pr == null)
            {
                return(ctFont);
            }
            if (pr.SizeOfBArray() > 0)
            {
                ctFont.AddNewB().val = (pr.GetBArray(0).val);
            }
            if (pr.SizeOfUArray() > 0)
            {
                ctFont.AddNewU().val = (pr.GetUArray(0).val);
            }
            if (pr.SizeOfIArray() > 0)
            {
                ctFont.AddNewI().val = (pr.GetIArray(0).val);
            }
            if (pr.SizeOfColorArray() > 0)
            {
                CT_Color c1 = pr.GetColorArray(0);
                CT_Color c2 = ctFont.AddNewColor();
                if (c1.IsSetAuto())
                {
                    c2.auto          = (c1.auto);
                    c2.autoSpecified = true;
                }
                if (c1.IsSetIndexed())
                {
                    c2.indexed          = (c1.indexed);
                    c2.indexedSpecified = true;
                }
                if (c1.IsSetRgb())
                {
                    c2.SetRgb(c1.GetRgb());
                    c2.rgbSpecified = true;
                }
                if (c1.IsSetTheme())
                {
                    c2.theme          = (c1.theme);
                    c2.themeSpecified = true;
                }
                if (c1.IsSetTint())
                {
                    c2.tint          = (c1.tint);
                    c2.tintSpecified = true;
                }
            }

            if (pr.SizeOfSzArray() > 0)
            {
                ctFont.AddNewSz().val = (pr.GetSzArray(0).val);
            }
            if (pr.SizeOfRFontArray() > 0)
            {
                ctFont.AddNewName().val = (pr.GetRFontArray(0).val);
            }
            if (pr.SizeOfFamilyArray() > 0)
            {
                ctFont.AddNewFamily().val = (pr.GetFamilyArray(0).val);
            }
            if (pr.sizeOfSchemeArray() > 0)
            {
                ctFont.AddNewScheme().val = (pr.GetSchemeArray(0).val);
            }
            if (pr.sizeOfCharsetArray() > 0)
            {
                ctFont.AddNewCharset().val = (pr.GetCharsetArray(0).val);
            }
            if (pr.sizeOfCondenseArray() > 0)
            {
                ctFont.AddNewCondense().val = (pr.GetCondenseArray(0).val);
            }
            if (pr.sizeOfExtendArray() > 0)
            {
                ctFont.AddNewExtend().val = (pr.GetExtendArray(0).val);
            }
            if (pr.sizeOfVertAlignArray() > 0)
            {
                ctFont.AddNewVertAlign().val = (pr.GetVertAlignArray(0).val);
            }
            if (pr.sizeOfOutlineArray() > 0)
            {
                ctFont.AddNewOutline().val = (pr.GetOutlineArray(0).val);
            }
            if (pr.sizeOfShadowArray() > 0)
            {
                ctFont.AddNewShadow().val = (pr.GetShadowArray(0).val);
            }
            if (pr.sizeOfStrikeArray() > 0)
            {
                ctFont.AddNewStrike().val = (pr.GetStrikeArray(0).val);
            }

            return(ctFont);
        }
Пример #9
0
        private static void ApplyAttributes(CT_RPrElt pr, CT_TextCharacterProperties rPr)
        {
            if (pr.sizeOfBArray() > 0)
            {
                rPr.b = pr.GetBArray(0).val;
            }
            if (pr.sizeOfUArray() > 0)
            {
                switch (pr.GetUArray(0).val)
                {
                case ST_UnderlineValues.none:
                    rPr.u = ST_TextUnderlineType.none;
                    break;

                case ST_UnderlineValues.single:
                    rPr.u = ST_TextUnderlineType.sng;
                    break;

                case ST_UnderlineValues.@double:
                    rPr.u = ST_TextUnderlineType.dbl;
                    break;
                }
            }
            if (pr.sizeOfIArray() > 0)
            {
                rPr.i = pr.GetIArray(0).val;
            }
            if (pr.sizeOfFamilyArray() > 0)
            {
                rPr.AddNewLatin().typeface = pr.GetRFontArray(0).val;
            }
            if (pr.sizeOfSzArray() > 0)
            {
                int num = (int)(pr.GetSzArray(0).val * 100.0);
                rPr.sz = num;
            }
            if (pr.sizeOfColorArray() <= 0)
            {
                return;
            }
            CT_SolidColorFillProperties colorFillProperties = rPr.IsSetSolidFill() ? rPr.solidFill : rPr.AddNewSolidFill();

            NPOI.OpenXmlFormats.Spreadsheet.CT_Color colorArray = pr.GetColorArray(0);
            if (colorArray.IsSetRgb())
            {
                (colorFillProperties.IsSetSrgbClr() ? colorFillProperties.srgbClr : colorFillProperties.AddNewSrgbClr()).val = colorArray.rgb;
            }
            else
            {
                if (!colorArray.IsSetIndexed())
                {
                    return;
                }
                HSSFColor hssfColor = HSSFColor.GetIndexHash()[(object)(int)colorArray.indexed] as HSSFColor;
                if (hssfColor == null)
                {
                    return;
                }
                byte[] numArray = new byte[3] {
                    (byte)hssfColor.GetTriplet()[0], (byte)hssfColor.GetTriplet()[1], (byte)hssfColor.GetTriplet()[2]
                };
                (colorFillProperties.IsSetSrgbClr() ? colorFillProperties.srgbClr : colorFillProperties.AddNewSrgbClr()).val = numArray;
            }
        }
 public void Add(CT_RPrElt prop)
 {
     this._props.Add(prop);
 }