Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2989_MovingPeaksBenchmark/HeuristicLab.ExtLibs/HeuristicLab.EPPlus/4.0.3/EPPlus-4.0.3/Style/ExcelBorderItem.cs

Last change on this file was 12074, checked in by sraggl, 10 years ago

#2341: Added EPPlus-4.0.3 to ExtLibs

File size: 4.1 KB
Line 
1/*******************************************************************************
2 * You may amend and distribute as you like, but don't remove this header!
3 *
4 * EPPlus provides server-side generation of Excel 2007/2010 spreadsheets.
5 * See http://www.codeplex.com/EPPlus for details.
6 *
7 * Copyright (C) 2011  Jan Källman
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
17 * See the GNU Lesser General Public License for more details.
18 *
19 * The GNU Lesser General Public License can be viewed at http://www.opensource.org/licenses/lgpl-license.php
20 * If you unfamiliar with this license or have questions about it, here is an http://www.gnu.org/licenses/gpl-faq.html
21 *
22 * All code and executables are provided "as is" with no warranty either express or implied.
23 * The author accepts no liability for any damage or loss of business that this product may cause.
24 *
25 * Code change notes:
26 *
27 * Author             Change            Date
28 * ******************************************************************************
29 * Jan Källman                    Initial Release           2009-10-01
30 * Jan Källman    License changed GPL-->LGPL 2011-12-16
31 *******************************************************************************/
32using System;
33using System.Collections.Generic;
34using System.Text;
35using OfficeOpenXml.Style.XmlAccess;
36
37namespace OfficeOpenXml.Style
38{
39    /// <summary>
40    /// Cell border style
41    /// </summary>
42    public sealed class ExcelBorderItem : StyleBase
43    {
44        eStyleClass _cls;
45        StyleBase _parent;
46        internal ExcelBorderItem (ExcelStyles styles, OfficeOpenXml.XmlHelper.ChangedEventHandler ChangedEvent, int worksheetID, string address, eStyleClass cls, StyleBase parent) :
47            base(styles, ChangedEvent, worksheetID, address)
48      {
49            _cls=cls;
50            _parent = parent;
51      }
52        /// <summary>
53        /// The line style of the border
54        /// </summary>
55        public ExcelBorderStyle Style
56        {
57            get
58            {
59                return GetSource().Style;
60            }
61            set
62            {
63                _ChangedEvent(this, new StyleChangeEventArgs(_cls, eStyleProperty.Style, value, _positionID, _address));
64            }
65        }
66        ExcelColor _color=null;
67        /// <summary>
68        /// The color of the border
69        /// </summary>
70        public ExcelColor Color
71        {
72            get
73            {
74                if (_color == null)
75                {
76                    _color = new ExcelColor(_styles, _ChangedEvent, _positionID, _address, _cls, _parent);
77                }
78                return _color;
79            }
80        }
81
82        internal override string Id
83        {
84            get { return Style + Color.Id; }
85        }
86        internal override void SetIndex(int index)
87        {
88            _parent.Index = index;
89        }
90        private ExcelBorderItemXml GetSource()
91        {
92            int ix = _parent.Index < 0 ? 0 : _parent.Index;
93
94            switch(_cls)
95            {
96                case eStyleClass.BorderTop:
97                    return _styles.Borders[ix].Top;
98                case eStyleClass.BorderBottom:
99                    return _styles.Borders[ix].Bottom;
100                case eStyleClass.BorderLeft:
101                    return _styles.Borders[ix].Left;
102                case eStyleClass.BorderRight:
103                    return _styles.Borders[ix].Right;
104                case eStyleClass.BorderDiagonal:
105                    return _styles.Borders[ix].Diagonal;
106                default:
107                    throw new Exception("Invalid class for Borderitem");
108            }
109
110        }
111    }
112}
Note: See TracBrowser for help on using the repository browser.