[ooo-build-commit] .: patches/dev300
Petr Mladek
pmladek at kemper.freedesktop.org
Mon Aug 23 04:36:31 PDT 2010
patches/dev300/apply | 48
patches/dev300/border-types-dotted-dashed-m2.diff | 4480 ++++++++++
patches/dev300/border-types-dotted-dashed.diff | 254
patches/dev300/calc-distributed-cell-text-sc-m2.diff | 2296 +++++
patches/dev300/calc-distributed-cell-text-sc.diff | 2
patches/dev300/calc-formula-variable-sep-config-check-sfx2-m2.diff | 105
patches/dev300/calc-formula-variable-sep-config-check-sfx2.diff | 4
patches/dev300/calc-perf-import-dbf-sc-m2.diff | 908 ++
patches/dev300/calc-perf-import-dbf-sc.diff | 6
patches/dev300/ooxml-sc-docpropsimp-m2.diff | 96
patches/dev300/ooxml-sc-docpropsimp.diff | 11
patches/dev300/xlsx-shared-xlsx-shared-import-and-export-m2.diff | 587 +
patches/dev300/xlsx-shared-xlsx-shared-import-and-export.diff | 224
patches/dev300/xlsx-shared-xlsx-snapshot-m2.diff | 2492 +++++
patches/dev300/xlsx-shared-xlsx-snapshot.diff | 447
15 files changed, 11433 insertions(+), 527 deletions(-)
New commits:
commit 3771fefd215c4b4467597145357394a97fb4c87a
Author: Noel Power <noel.power at novell.com>
Date: Mon Aug 23 13:35:30 2010 +0200
update more diffs for ooo330-m4
* patches/dev300/border-types-dotted-dashed-m2.diff:
* patches/dev300/border-types-dotted-dashed.diff:
* patches/dev300/calc-distributed-cell-text-sc-m2.diff:
* patches/dev300/calc-distributed-cell-text-sc.diff:
* patches/dev300/calc-formula-variable-sep-config-check-sfx2-m2.diff:
* patches/dev300/calc-formula-variable-sep-config-check-sfx2.diff:
* patches/dev300/calc-perf-import-dbf-sc-m2.diff:
* patches/dev300/calc-perf-import-dbf-sc.diff:
* patches/dev300/ooxml-sc-docpropsimp-m2.diff:
* patches/dev300/ooxml-sc-docpropsimp.diff:
* patches/dev300/xlsx-shared-xlsx-shared-import-and-export-m2.diff:
* patches/dev300/xlsx-shared-xlsx-shared-import-and-export.diff:
* patches/dev300/xlsx-shared-xlsx-snapshot-m2.diff:
* patches/dev300/xlsx-shared-xlsx-snapshot.diff:
* patches/dev300/apply:
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 3b6b542..6fc6323 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -2989,6 +2989,18 @@ pptx-fix-connector-crash.diff, n#499129, thorsten
# doesn't include
# xlsx-export-row-limit-fix.diff, n#504623, kohei
+
+[ OOXMLExportDevel <= ooo330-m2 ]
+# Snapshot of the xlsx export filter at the time of creation of ooxml03
+# This is until 0453-Fix-formatted-text-change-tracking.patch, inluding, and
+# should contain all the available changes.
+xlsx-shared-xlsx-snapshot-m2.diff
+
+# Make the xlsx export and import work at the same time
+# (converts the xlsx export to a UNO filter)
+xlsx-shared-xlsx-shared-import-and-export-m2.diff
+
+[ OOXMLExportDevel > ooo330-m2 ]
# Snapshot of the xlsx export filter at the time of creation of ooxml03
# This is until 0453-Fix-formatted-text-change-tracking.patch, inluding, and
# should contain all the available changes.
@@ -2998,6 +3010,8 @@ xlsx-shared-xlsx-snapshot.diff
# (converts the xlsx export to a UNO filter)
xlsx-shared-xlsx-shared-import-and-export.diff
+
+[ OOXMLExportDevel ]
xlsx-shared-xlsx-arabic-export-crash.diff, n#497419, janneke
xlsx-shared-xlsx-export-set-xml-2007-flavour.diff, n#502090, janneke
@@ -3047,7 +3061,13 @@ ooxml-sc-showdropdown-fix.diff, muthusuba
desktop-cmd-bulk-conversion.diff, flr-muthusuba
# depends on (order) desktop-cmd-bulk-conversion.diff
desktop-infilter-option.diff, muthusuba
+
+[ OOXMLExportDevel <= ooo330-m2 ]
+ooxml-sc-docpropsimp-m2.diff, muthusuba
+[ OOXMLExportDevel > ooo330-m2 ]
ooxml-sc-docpropsimp.diff, muthusuba
+
+[ OOXMLExportDevel ]
ooxml-sc-page-date-imp.diff, muthusuba
ooxml-sc-brk.diff, muthusuba
ooxml-sw-fix-2010-import-crash.diff, bubli
@@ -3424,8 +3444,14 @@ svtools-wmf-clean-warnings.diff, rodo
# Improve import performance of dbf files by ~80%.
calc-perf-import-dbf-connectivity.diff, n#558505, kohei
calc-perf-import-dbf-dbaccess.diff, n#558505, kohei
+
+[ CalcRowLimit <= ooo330-m2 ]
+calc-perf-import-dbf-sc-m2.diff, n#558505, kohei
+
+[ CalcRowLimit > ooo330-m2 ]
calc-perf-import-dbf-sc.diff, n#558505, kohei
+[ CalcRowLimit ]
# Speed up row height data import from ods documents.
calc-perf-ods-import-cellstyles.diff, n#582693, kohei
calc-perf-xls-import-cellstyles.diff, n#582693, kohei
@@ -3435,10 +3461,15 @@ calc-perf-xls-import-cellstyles-fix2.diff, n#594235, kohei
# Adjust the size of the broadcast slot machine to match the new row limit.
calc-perf-adjust-slot-machine.diff, n#588554, kohei
-[ CalcFixes ]
+[ CalcFixes <= ooo330-m2 ]
+# Check for separator options' potential conflict with custom locale setting.
+calc-formula-variable-sep-config-check-sfx2-m2.diff, n#556142, i#106959, kohei
+[ CalcFixes > ooo330-m2 ]
# Check for separator options' potential conflict with custom locale setting.
calc-formula-variable-sep-config-check-sfx2.diff, n#556142, i#106959, kohei
+
+[ CalcFixes ]
calc-formula-variable-sep-config-check-sc.diff, n#556142, i#106959, kohei
# Distributed text alignment support for cell text.
@@ -3448,7 +3479,13 @@ calc-distributed-cell-text-editeng.diff, kohei
calc-distributed-cell-text-offapi.diff, kohei
calc-distributed-cell-text-oox.diff, kohei
calc-distributed-cell-text-reportdesign.diff, kohei
+
+[ CalcFixes <= ooo330-m2 ]
+calc-distributed-cell-text-sc-m2.diff, kohei
+[ CalcFixes > ooo330-m2 ]
calc-distributed-cell-text-sc.diff, kohei
+
+[ CalcFixes ]
calc-distributed-cell-text-svx.diff, kohei
calc-distributed-cell-text-sw.diff, kohei
calc-distributed-cell-text-xmloff.diff, kohei
@@ -3618,13 +3655,18 @@ toolbar-decorations-svx-undo-redo.diff
# Not too well looking, but might be useful?
#toolbar-decorations-vcl-nwf.diff
-[ BorderTypes]
+[ BorderTypes <= ooo330-m2 ]
SectionOwner => cbosdo
+#Only adds the dotted / dashed lines
+border-types-dotted-dashed-m2.diff, fate#307731, fate 307730
+
+[ BorderTypes > ooo330-m2 ]
+SectionOwner => cbosdo
#Only adds the dotted / dashed lines
border-types-dotted-dashed.diff, fate#307731, fate 307730
-
+[ BorderTypes ]
#Adds some more types, and more of unifying the drawing methods
#FIXME: Incomplete, not to be included in 3.2.1
#border-types-more.diff, fate#309127
diff --git a/patches/dev300/border-types-dotted-dashed-m2.diff b/patches/dev300/border-types-dotted-dashed-m2.diff
new file mode 100644
index 0000000..05a5c54
--- /dev/null
+++ b/patches/dev300/border-types-dotted-dashed-m2.diff
@@ -0,0 +1,4480 @@
+---
+ cui/source/tabpages/border.cxx | 27 +++-
+ .../primitive2d/borderlineprimitive2d.hxx | 7 +-
+ .../source/primitive2d/borderlineprimitive2d.cxx | 35 ++++-
+ editeng/inc/editeng/borderline.hxx | 14 ++-
+ editeng/inc/editeng/boxitem.hxx | 4 +-
+ editeng/inc/editeng/memberids.hrc | 2 +
+ editeng/source/items/frmitems.cxx | 19 ++-
+ editeng/source/rtf/rtfitem.cxx | 9 +-
+ filter/inc/filter/msfilter/msdffimp.hxx | 1 +
+ filter/source/msfilter/msdffimp.cxx | 6 +
+ .../source/xslt/export/uof/odf2uof_spreadsheet.xsl | 8 +-
+ filter/source/xslt/export/uof/odf2uof_text.xsl | 8 +-
+ offapi/com/sun/star/table/BorderLine.idl | 1 -
+ offapi/com/sun/star/table/BorderLine2.idl | 55 +++++++
+ offapi/com/sun/star/table/BorderLineStyle.idl | 63 ++++++++
+ offapi/com/sun/star/table/makefile.mk | 2 +
+ oox/inc/oox/helper/helper.hxx | 4 +
+ oox/inc/oox/xls/stylesbuffer.hxx | 12 +-
+ oox/source/drawingml/table/tablecell.cxx | 6 +-
+ oox/source/drawingml/table/tableproperties.cxx | 2 +-
+ oox/source/drawingml/table/tablerow.cxx | 2 +-
+ oox/source/xls/stylesbuffer.cxx | 87 ++++++-----
+ sc/source/filter/excel/xestyle.cxx | 20 +++
+ sc/source/filter/excel/xistyle.cxx | 33 ++--
+ sc/source/filter/html/htmlexp.cxx | 9 +-
+ sc/source/filter/inc/xlstyle.hxx | 3 +
+ sc/source/filter/xml/xmlstyle.cxx | 9 +-
+ sc/source/filter/xml/xmlstyli.cxx | 12 +-
+ sc/source/ui/unoobj/cellsuno.cxx | 73 +++++-----
+ sc/source/ui/view/formatsh.cxx | 1 +
+ sc/source/ui/view/viewfun2.cxx | 2 +
+ svtools/inc/borderhelper.hxx | 49 ++++++
+ svtools/inc/ctrlbox.hxx | 39 ++++-
+ svtools/inc/rtfkeywd.hxx | 2 +
+ svtools/source/control/ctrlbox.cxx | 147 ++++++++++++++++--
+ svtools/util/makefile.mk | 3 +-
+ svx/inc/svx/framelink.hxx | 25 ++--
+ svx/inc/svx/frmsel.hxx | 7 +-
+ svx/source/dialog/framelink.cxx | 163 ++++++-------------
+ svx/source/dialog/frmsel.cxx | 39 ++++-
+ svx/source/table/cell.cxx | 1 +
+ svx/source/table/viewcontactoftableobj.cxx | 12 +-
+ svx/source/tbxctrls/tbcontrl.cxx | 30 ++++-
+ sw/source/core/inc/frame.hxx | 3 +-
+ sw/source/core/layout/paintfrm.cxx | 107 ++++++++++----
+ sw/source/filter/html/css1atr.cxx | 27 +++-
+ sw/source/filter/html/htmltabw.cxx | 18 +--
+ sw/source/filter/html/svxcss1.cxx | 12 +-
+ sw/source/filter/html/wrthtml.hxx | 1 +
+ sw/source/filter/rtf/rtfatr.cxx | 27 +++-
+ sw/source/filter/rtf/swparrtf.cxx | 4 +
+ sw/source/filter/rtf/wrtrtf.cxx | 15 ++-
+ sw/source/filter/ww1/w1sprm.cxx | 10 ++
+ sw/source/filter/ww8/docxattributeoutput.cxx | 14 ++
+ sw/source/filter/ww8/wrtw8esh.cxx | 15 ++
+ sw/source/filter/ww8/ww8atr.cxx | 20 +++
+ sw/source/filter/ww8/ww8graf.cxx | 60 +++++---
+ sw/source/filter/ww8/ww8graf2.cxx | 4 +-
+ sw/source/filter/ww8/ww8par.cxx | 4 +-
+ sw/source/filter/ww8/ww8par.hxx | 4 +-
+ sw/source/filter/ww8/ww8par6.cxx | 11 +-
+ sw/source/filter/ww8/ww8scan.cxx | 2 +-
+ sw/source/filter/ww8/ww8struc.hxx | 4 +
+ sw/source/filter/xml/xmlexpit.cxx | 14 ++-
+ sw/source/filter/xml/xmlithlp.cxx | 25 +++-
+ writerfilter/source/dmapper/BorderHandler.cxx | 6 +-
+ writerfilter/source/dmapper/BorderHandler.hxx | 6 +-
+ writerfilter/source/dmapper/CellColorHandler.hxx | 2 -
+ writerfilter/source/dmapper/ConversionHelper.cxx | 61 +++++---
+ writerfilter/source/dmapper/ConversionHelper.hxx | 7 +-
+ writerfilter/source/dmapper/DomainMapper.cxx | 10 +-
+ .../source/dmapper/DomainMapperTableHandler.cxx | 3 +-
+ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 4 +-
+ writerfilter/source/dmapper/GraphicImport.cxx | 4 +-
+ writerfilter/source/dmapper/PageBordersHandler.hxx | 4 +-
+ writerfilter/source/dmapper/PropertyMap.cxx | 6 +-
+ writerfilter/source/dmapper/PropertyMap.hxx | 6 +-
+ writerfilter/source/dmapper/TDefTableHandler.cxx | 4 +-
+ writerfilter/source/dmapper/TDefTableHandler.hxx | 19 +--
+ xmloff/source/style/PageMasterExportPropMapper.cxx | 11 +-
+ xmloff/source/style/PageMasterImportPropMapper.cxx | 14 +-
+ xmloff/source/style/bordrhdl.cxx | 54 ++++++-
+ xmloff/source/text/txtexppr.cxx | 16 ++-
+ xmloff/source/text/txtimppr.cxx | 10 +-
+ 84 files changed, 1210 insertions(+), 491 deletions(-)
+ create mode 100644 offapi/com/sun/star/table/BorderLine2.idl
+ create mode 100644 offapi/com/sun/star/table/BorderLineStyle.idl
+ create mode 100644 svtools/inc/borderhelper.hxx
+
+diff --git cui/source/tabpages/border.cxx cui/source/tabpages/border.cxx
+index 48aac82..e1ac8fc 100644
+--- cui/source/tabpages/border.cxx
++++ cui/source/tabpages/border.cxx
+@@ -565,9 +565,10 @@ void SvxBorderTabPage::Reset( const SfxItemSet& rSet )
+ {
+ // Do all visible lines show the same line widths?
+ USHORT nPrim, nDist, nSecn;
+- bool bWidthEq = aFrameSel.GetVisibleWidth( nPrim, nDist, nSecn );
++ SvxBorderStyle nStyle;
++ bool bWidthEq = aFrameSel.GetVisibleWidth( nPrim, nDist, nSecn, nStyle );
+ if( bWidthEq )
+- aLbLineStyle.SelectEntry( nPrim * 100, nSecn * 100, nDist * 100 );
++ aLbLineStyle.SelectEntry( nPrim * 100, nSecn * 100, nDist * 100, nStyle );
+ else
+ aLbLineStyle.SelectEntryPos( 1 );
+
+@@ -932,13 +933,31 @@ IMPL_LINK( SvxBorderTabPage, SelColHdl_Impl, ListBox *, pLb )
+
+ // -----------------------------------------------------------------------
+
++SvxBorderStyle lcl_getBorderStyle( USHORT nStyle )
++{
++ SvxBorderStyle nResult = SOLID;
++ switch ( nStyle )
++ {
++ case STYLE_DOTTED:
++ nResult = DOTTED;
++ break;
++ case STYLE_DASHED:
++ nResult = DASHED;
++ break;
++ default:
++ nResult = SOLID;
++ }
++ return nResult;
++}
++
+ IMPL_LINK( SvxBorderTabPage, SelStyleHdl_Impl, ListBox *, pLb )
+ {
+ if ( pLb == &aLbLineStyle )
+ aFrameSel.SetStyleToSelection(
+ static_cast< USHORT >( aLbLineStyle.GetSelectEntryLine1() / 100 ),
+ static_cast< USHORT >( aLbLineStyle.GetSelectEntryDistance() / 100 ),
+- static_cast< USHORT >( aLbLineStyle.GetSelectEntryLine2() / 100 ) );
++ static_cast< USHORT >( aLbLineStyle.GetSelectEntryLine2() / 100 ),
++ lcl_getBorderStyle( aLbLineStyle.GetSelectEntryStyle() ) );
+
+ return 0;
+ }
+@@ -1102,6 +1121,8 @@ void SvxBorderTabPage::FillLineListBox_Impl()
+
+ aLbLineStyle.InsertEntry( LINE_WIDTH0 );
+ aLbLineStyle.InsertEntry( LINE_WIDTH5 );
++ aLbLineStyle.InsertEntry( LINE_WIDTH5, 0, 0, STYLE_DOTTED );
++ aLbLineStyle.InsertEntry( LINE_WIDTH5, 0, 0, STYLE_DASHED );
+ aLbLineStyle.InsertEntry( LINE_WIDTH1 );
+ aLbLineStyle.InsertEntry( LINE_WIDTH2 );
+ aLbLineStyle.InsertEntry( LINE_WIDTH3 );
+diff --git drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx
+index 07a1f8b..8a13430 100644
+--- drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx
++++ drawinglayer/inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx
+@@ -66,6 +66,7 @@ namespace drawinglayer
+
+ /// the line color
+ basegfx::BColor maRGBColor;
++ short mnStyle;
+
+ /// bitfield
+ /// flags to influence inside/outside creation
+@@ -131,7 +132,8 @@ namespace drawinglayer
+ double fExtendOuterEnd,
+ bool bCreateInside,
+ bool bCreateOutside,
+- const basegfx::BColor& rRGBColor);
++ const basegfx::BColor& rRGBColor,
++ const short nStyle );
+
+ /// data read access
+ const basegfx::B2DPoint& getStart() const { return maStart; }
+@@ -145,7 +147,8 @@ namespace drawinglayer
+ double getExtendOuterEnd() const { return mfExtendOuterEnd; }
+ bool getCreateInside() const { return mbCreateInside; }
+ bool getCreateOutside() const { return mbCreateOutside; }
+- const basegfx::BColor& getRGBColor() const { return maRGBColor; }
++ const basegfx::BColor& getRGBColor () const { return maRGBColor; }
++ short getStyle () const { return mnStyle; }
+
+ /// compare operator
+ virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
+diff --git drawinglayer/source/primitive2d/borderlineprimitive2d.cxx drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+index 088f9bb..5dafced 100644
+--- drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
++++ drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+@@ -33,6 +33,7 @@
+ #include <basegfx/polygon/b2dpolygon.hxx>
+ #include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
+ #include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
++#include <svtools/borderhelper.hxx>
+ #include <numeric>
+
+ //////////////////////////////////////////////////////////////////////////////
+@@ -157,14 +158,29 @@ namespace drawinglayer
+ // create filled polygon primitive
+ const basegfx::B2DVector aLineWidthOffset((getCorrectedLeftWidth() * 0.5) * aPerpendicular);
+
+- aPolygon.append(aTmpStart + aLineWidthOffset);
+- aPolygon.append(aTmpEnd + aLineWidthOffset);
+- aPolygon.append(aTmpEnd - aLineWidthOffset);
+- aPolygon.append(aTmpStart - aLineWidthOffset);
+- aPolygon.setClosed(true);
++ aPolygon.append( aTmpStart );
++ aPolygon.append( aTmpEnd );
++
++ basegfx::B2DPolyPolygon aDashed = svtools::ApplyLineDashing(
++ aPolygon, getStyle(), MAP_100TH_MM );
++ for (sal_uInt32 i = 0; i < aDashed.count(); i++ )
++ {
++ basegfx::B2DPolygon aDash = aDashed.getB2DPolygon( i );
++ basegfx::B2DPoint aDashStart = aDash.getB2DPoint( 0 );
++ basegfx::B2DPoint aDashEnd = aDash.getB2DPoint( aDash.count() - 1 );
++
++ basegfx::B2DPolygon aDashPolygon;
++ aDashPolygon.append( aDashStart + aLineWidthOffset );
++ aDashPolygon.append( aDashEnd + aLineWidthOffset );
++ aDashPolygon.append( aDashEnd - aLineWidthOffset );
++ aDashPolygon.append( aDashStart - aLineWidthOffset );
++ aDashPolygon.setClosed( true );
++
++ aDashed.setB2DPolygon( i, aDashPolygon );
++ }
+
+ xRetval[0] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
+- basegfx::B2DPolyPolygon(aPolygon), getRGBColor()));
++ basegfx::B2DPolyPolygon( aDashed ), getRGBColor()));
+ }
+ }
+ }
+@@ -185,7 +201,8 @@ namespace drawinglayer
+ double fExtendOuterEnd,
+ bool bCreateInside,
+ bool bCreateOutside,
+- const basegfx::BColor& rRGBColor)
++ const basegfx::BColor& rRGBColor,
++ const short nStyle)
+ : BufferedDecompositionPrimitive2D(),
+ maStart(rStart),
+ maEnd(rEnd),
+@@ -197,6 +214,7 @@ namespace drawinglayer
+ mfExtendOuterStart(fExtendOuterStart),
+ mfExtendOuterEnd(fExtendOuterEnd),
+ maRGBColor(rRGBColor),
++ mnStyle(nStyle),
+ mbCreateInside(bCreateInside),
+ mbCreateOutside(bCreateOutside)
+ {
+@@ -219,7 +237,8 @@ namespace drawinglayer
+ && getExtendOuterEnd() == rCompare.getExtendOuterEnd()
+ && getCreateInside() == rCompare.getCreateInside()
+ && getCreateOutside() == rCompare.getCreateOutside()
+- && getRGBColor() == rCompare.getRGBColor());
++ && getRGBColor() == rCompare.getRGBColor()
++ && getStyle() == rCompare.getStyle());
+ }
+
+ return false;
+diff --git editeng/inc/editeng/borderline.hxx editeng/inc/editeng/borderline.hxx
+index 78d173b..88458fa 100644
+--- editeng/inc/editeng/borderline.hxx
++++ editeng/inc/editeng/borderline.hxx
+@@ -90,6 +90,13 @@
+
+ // ============================================================================
+
++enum SvxBorderStyle
++{
++ SOLID,
++ DOTTED,
++ DASHED
++};
++
+ class EDITENG_DLLPUBLIC SvxBorderLine
+ {
+ protected:
+@@ -97,9 +104,11 @@ protected:
+ USHORT nOutWidth;
+ USHORT nInWidth;
+ USHORT nDistance;
++ SvxBorderStyle m_nStyle;
+
+ public:
+- SvxBorderLine( const Color *pCol = 0, USHORT nOut = 0, USHORT nIn = 0, USHORT nDist = 0 );
++ SvxBorderLine( const Color *pCol = 0, USHORT nOut = 0, USHORT nIn = 0, USHORT nDist = 0,
++ SvxBorderStyle nStyle = SOLID );
+ SvxBorderLine( const SvxBorderLine& r );
+
+ SvxBorderLine& operator=( const SvxBorderLine& r );
+@@ -109,10 +118,13 @@ public:
+ USHORT GetInWidth() const { return nInWidth; }
+ USHORT GetDistance() const { return nDistance; }
+
++ SvxBorderStyle GetStyle() const { return m_nStyle; }
++
+ void SetColor( const Color &rColor ) { aColor = rColor; }
+ void SetOutWidth( USHORT nNew ) { nOutWidth = nNew; }
+ void SetInWidth( USHORT nNew ) { nInWidth = nNew; }
+ void SetDistance( USHORT nNew ) { nDistance = nNew; }
++ void SetStyle( SvxBorderStyle nNew ) { m_nStyle = nNew; }
+ void ScaleMetrics( long nMult, long nDiv );
+
+ BOOL operator==( const SvxBorderLine &rCmp ) const;
+diff --git editeng/inc/editeng/boxitem.hxx editeng/inc/editeng/boxitem.hxx
+index d85f7c2..03671cd 100644
+--- editeng/inc/editeng/boxitem.hxx
++++ editeng/inc/editeng/boxitem.hxx
+@@ -30,7 +30,7 @@
+ #include <svl/poolitem.hxx>
+ #include <editeng/borderline.hxx>
+ #include <editeng/editengdllapi.h>
+-#include <com/sun/star/table/BorderLine.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+
+ namespace rtl { class OUString; }
+
+@@ -106,7 +106,7 @@ public:
+ //JP 09.06.99: bIgnoreLine = TRUE -> Distance auch returnen, wenn
+ // keine Line gesetzt ist
+ USHORT CalcLineSpace( USHORT nLine, BOOL bIgnoreLine = FALSE ) const;
+- static com::sun::star::table::BorderLine SvxLineToLine( const SvxBorderLine* pLine, sal_Bool bConvert );
++ static com::sun::star::table::BorderLine2 SvxLineToLine( const SvxBorderLine* pLine, sal_Bool bConvert );
+ static sal_Bool LineToSvxLine(const ::com::sun::star::table::BorderLine& rLine, SvxBorderLine& rSvxLine, sal_Bool bConvert);
+ };
+
+diff --git editeng/inc/editeng/memberids.hrc editeng/inc/editeng/memberids.hrc
+index e9cb0b5..0a4ac48 100644
+--- editeng/inc/editeng/memberids.hrc
++++ editeng/inc/editeng/memberids.hrc
+@@ -41,6 +41,8 @@
+ #define MID_OUTER_WIDTH 0x41
+ #define MID_INNER_WIDTH 0x35
+ #define MID_LINESPACE 0x3b
++#define MID_LINE_STYLE 0x90
++
+
+ //NameOrIndex
+ #define MID_NAME 16
+diff --git editeng/source/items/frmitems.cxx editeng/source/items/frmitems.cxx
+index 00a7cfb..b335b0a 100644
+--- editeng/source/items/frmitems.cxx
++++ editeng/source/items/frmitems.cxx
+@@ -40,6 +40,7 @@
+ #include <com/sun/star/table/TableOrientation.hpp>
+ #include <com/sun/star/util/SortField.hpp>
+ #include <com/sun/star/util/SortFieldType.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include <com/sun/star/table/CellOrientation.hpp>
+ #include <com/sun/star/table/CellAddress.hpp>
+ #include <com/sun/star/style/PageStyleLayout.hpp>
+@@ -1565,10 +1566,12 @@ void SvxShadowItem::SetEnumValue( sal_uInt16 nVal )
+
+ // class SvxBorderLine --------------------------------------------------
+
+-SvxBorderLine::SvxBorderLine( const Color *pCol, sal_uInt16 nOut, sal_uInt16 nIn, sal_uInt16 nDist )
++SvxBorderLine::SvxBorderLine( const Color *pCol, sal_uInt16 nOut, sal_uInt16 nIn, sal_uInt16 nDist,
++ SvxBorderStyle nStyle )
+ : nOutWidth( nOut )
+ , nInWidth ( nIn )
+ , nDistance( nDist )
++, m_nStyle( nStyle )
+ {
+ if ( pCol )
+ aColor = *pCol;
+@@ -1589,6 +1592,7 @@ SvxBorderLine& SvxBorderLine::operator=( const SvxBorderLine& r )
+ nOutWidth = r.nOutWidth;
+ nInWidth = r.nInWidth;
+ nDistance = r.nDistance;
++ m_nStyle = r.m_nStyle;
+ return *this;
+ }
+
+@@ -1608,7 +1612,8 @@ sal_Bool SvxBorderLine::operator==( const SvxBorderLine& rCmp ) const
+ return ( ( aColor == rCmp.GetColor() ) &&
+ ( nInWidth == rCmp.GetInWidth() ) &&
+ ( nOutWidth == rCmp.GetOutWidth() ) &&
+- ( nDistance == rCmp.GetDistance() ) );
++ ( nDistance == rCmp.GetDistance() ) &&
++ ( m_nStyle == rCmp.GetStyle() ) );
+ }
+
+ // -----------------------------------------------------------------------
+@@ -1825,15 +1830,16 @@ int SvxBoxItem::operator==( const SfxPoolItem& rAttr ) const
+ }
+
+ // -----------------------------------------------------------------------
+-table::BorderLine SvxBoxItem::SvxLineToLine(const SvxBorderLine* pLine, sal_Bool bConvert)
++table::BorderLine2 SvxBoxItem::SvxLineToLine(const SvxBorderLine* pLine, sal_Bool bConvert)
+ {
+- table::BorderLine aLine;
++ table::BorderLine2 aLine;
+ if(pLine)
+ {
+ aLine.Color = pLine->GetColor().GetColor() ;
+ aLine.InnerLineWidth = sal_uInt16( bConvert ? TWIP_TO_MM100_UNSIGNED(pLine->GetInWidth() ): pLine->GetInWidth() );
+ aLine.OuterLineWidth = sal_uInt16( bConvert ? TWIP_TO_MM100_UNSIGNED(pLine->GetOutWidth()): pLine->GetOutWidth() );
+ aLine.LineDistance = sal_uInt16( bConvert ? TWIP_TO_MM100_UNSIGNED(pLine->GetDistance()): pLine->GetDistance() );
++ aLine.LineStyle = pLine->GetStyle( );
+ }
+ else
+ aLine.Color = aLine.InnerLineWidth = aLine.OuterLineWidth = aLine.LineDistance = 0;
+@@ -1843,7 +1849,7 @@ table::BorderLine SvxBoxItem::SvxLineToLine(const SvxBorderLine* pLine, sal_Bool
+ sal_Bool SvxBoxItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const
+ {
+ sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
+- table::BorderLine aRetLine;
++ table::BorderLine2 aRetLine;
+ sal_uInt16 nDist = 0;
+ sal_Bool bDistMember = sal_False;
+ nMemberId &= ~CONVERT_TWIPS;
+@@ -2780,7 +2786,7 @@ void SvxBoxInfoItem::ResetFlags()
+ sal_Bool SvxBoxInfoItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const
+ {
+ sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
+- table::BorderLine aRetLine;
++ table::BorderLine2 aRetLine;
+ sal_Int16 nVal=0;
+ sal_Bool bIntMember = sal_False;
+ nMemberId &= ~CONVERT_TWIPS;
+@@ -3321,6 +3327,7 @@ sal_Bool SvxLineItem::PutValue( const uno::Any& rVal, BYTE nMemId )
+ case MID_OUTER_WIDTH: pLine->SetOutWidth((USHORT)nVal); break;
+ case MID_INNER_WIDTH: pLine->SetInWidth((USHORT)nVal); break;
+ case MID_DISTANCE: pLine->SetDistance((USHORT)nVal); break;
++ case MID_LINE_STYLE: pLine->SetStyle((SvxBorderStyle)nVal); break;
+ default:
+ DBG_ERROR( "Wrong MemberId" );
+ return sal_False;
+diff --git editeng/source/rtf/rtfitem.cxx editeng/source/rtf/rtfitem.cxx
+index ce2adc3..4334b0f 100644
+--- editeng/source/rtf/rtfitem.cxx
++++ editeng/source/rtf/rtfitem.cxx
+@@ -1627,10 +1627,15 @@ case RTF_BRDRBAR: break;
+ }
+ goto SETBORDERLINE;
+
+- case RTF_BRDRS:
+ case RTF_BRDRDOT:
+- case RTF_BRDRHAIR:
++ aBrd.SetStyle( DOTTED );
++ break;
+ case RTF_BRDRDASH:
++ aBrd.SetStyle( DASHED );
++ break;
++ case RTF_BRDRS:
++ case RTF_BRDRHAIR:
++ aBrd.SetStyle( SOLID );
+ SETBORDERLINE:
+ SetBorderLine( nBorderTyp, aAttr, aBrd );
+ break;
+diff --git filter/inc/filter/msfilter/msdffimp.hxx filter/inc/filter/msfilter/msdffimp.hxx
+index 67571fb..9d2026e 100644
+--- filter/inc/filter/msfilter/msdffimp.hxx
++++ filter/inc/filter/msfilter/msdffimp.hxx
+@@ -289,6 +289,7 @@ struct MSFILTER_DLLPUBLIC SvxMSDffImportRec
+ ULONG nShapeId;
+ MSO_SPT eShapeType;
+ MSO_LineStyle eLineStyle; // Umrandungs-Arten
++ MSO_LineDashing eLineDashing;
+ BOOL bDrawHell :1;
+ BOOL bHidden :1;
+ BOOL bReplaceByFly :1;
+diff --git filter/source/msfilter/msdffimp.cxx filter/source/msfilter/msdffimp.cxx
+index 48309b1..ca3a353 100644
+--- filter/source/msfilter/msdffimp.cxx
++++ filter/source/msfilter/msdffimp.cxx
+@@ -6023,6 +6023,10 @@ SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
+ : (MSO_LineStyle)USHRT_MAX;
+ pTextImpRec->eLineStyle = pImpRec->eLineStyle;
+
++ pImpRec->eLineDashing = (MSO_LineDashing)GetPropertyValue(
++ DFF_Prop_lineDashing, mso_lineSolid );
++ pTextImpRec->eLineDashing = pImpRec->eLineDashing;
++
+ if( pImpRec->nShapeId )
+ {
+ // Import-Record-Liste ergaenzen
+@@ -8062,6 +8066,7 @@ SvxMSDffImportRec::SvxMSDffImportRec()
+ eShapeType( mso_sptNil )
+ {
+ eLineStyle = mso_lineSimple; // GPF-Bug #66227#
++ eLineDashing = mso_lineSolid;
+ bDrawHell = FALSE;
+ bHidden = FALSE;
+ // bInGroup = FALSE;
+@@ -8109,6 +8114,7 @@ SvxMSDffImportRec::SvxMSDffImportRec(const SvxMSDffImportRec& rCopy)
+ *pYRelTo = *(rCopy.pYRelTo);
+ }
+ eLineStyle = rCopy.eLineStyle; // GPF-Bug #66227#
++ eLineDashing = rCopy.eLineDashing;
+ bDrawHell = rCopy.bDrawHell;
+ bHidden = rCopy.bHidden;
+ // bInGroup = rCopy.bInGroup;
+diff --git filter/source/xslt/export/uof/odf2uof_spreadsheet.xsl filter/source/xslt/export/uof/odf2uof_spreadsheet.xsl
+index 1507305..78a37f9 100644
+--- filter/source/xslt/export/uof/odf2uof_spreadsheet.xsl
++++ filter/source/xslt/export/uof/odf2uof_spreadsheet.xsl
+@@ -4262,7 +4262,7 @@
+ <xsl:element name="uof:å·¦">
+ <xsl:attribute name="uof:locID">u0057</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),$uofUnit)"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+@@ -4274,7 +4274,7 @@
+ <xsl:element name="uof:ä¸">
+ <xsl:attribute name="uof:locID">u0058</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),$uofUnit)"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+@@ -4286,7 +4286,7 @@
+ <xsl:element name="uof:å³">
+ <xsl:attribute name="uof:locID">u0059</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),$uofUnit)"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+@@ -4298,7 +4298,7 @@
+ <xsl:element name="uof:ä¸">
+ <xsl:attribute name="uof:locID">u0060</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),$uofUnit)"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+diff --git filter/source/xslt/export/uof/odf2uof_text.xsl filter/source/xslt/export/uof/odf2uof_text.xsl
+index cea93c8..04596c4 100644
+--- filter/source/xslt/export/uof/odf2uof_text.xsl
++++ filter/source/xslt/export/uof/odf2uof_text.xsl
+@@ -3248,7 +3248,7 @@
+ <xsl:element name="uof:å·¦">
+ <xsl:attribute name="uof:locID">u0057</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),substring($ooUnit,1,2))"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+@@ -3266,7 +3266,7 @@
+ <xsl:element name="uof:ä¸">
+ <xsl:attribute name="uof:locID">u0058</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),substring($ooUnit,1,2))"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+@@ -3284,7 +3284,7 @@
+ <xsl:element name="uof:å³">
+ <xsl:attribute name="uof:locID">u0059</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),substring($ooUnit,1,2))"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+@@ -3302,7 +3302,7 @@
+ <xsl:element name="uof:ä¸">
+ <xsl:attribute name="uof:locID">u0060</xsl:attribute>
+ <xsl:attribute name="uof:attrList">ç±»å 宽度 è¾¹è· é¢è² é´å½±</xsl:attribute>
+- <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
++ <xsl:attribute name="uof:ç±»å"><xsl:choose><xsl:when test="$border!='none'"><xsl:choose><xsl:when test="substring-before(substring-after($border,' '),' ')='solid'">single</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='double'">double</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dashed'">dash</xsl:when><xsl:when test="substring-before(substring-after($border,' '),' ')='dotted'">dotted</xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:when><xsl:otherwise>none</xsl:otherwise></xsl:choose></xsl:attribute>
+ <xsl:if test="$border!='none'">
+ <xsl:attribute name="uof:宽度"><xsl:value-of select="substring-before(substring-before($border,' '),substring($ooUnit,1,2))"/></xsl:attribute>
+ <xsl:attribute name="uof:é¢è²"><xsl:value-of select="substring-after(substring-after($border,' '),' ')"/></xsl:attribute>
+diff --git offapi/com/sun/star/table/BorderLine.idl offapi/com/sun/star/table/BorderLine.idl
+index 96d1a68..0ecd6da 100644
+--- offapi/com/sun/star/table/BorderLine.idl
++++ offapi/com/sun/star/table/BorderLine.idl
+@@ -71,7 +71,6 @@ published struct BorderLine
+ double line (in 1/100 mm).
+ */
+ short LineDistance;
+-
+ };
+
+ //=============================================================================
+diff --git offapi/com/sun/star/table/BorderLine2.idl offapi/com/sun/star/table/BorderLine2.idl
+new file mode 100644
+index 0000000..4627305
+--- /dev/null
++++ offapi/com/sun/star/table/BorderLine2.idl
+@@ -0,0 +1,55 @@
++/*************************************************************************
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * Copyright 2008 by Sun Microsystems, Inc.
++ *
++ * OpenOffice.org - a multi-platform office productivity suite
++ *
++ * $RCSfile: BorderLine.idl,v $
++ * $Revision: 1.8 $
++ *
++ * This file is part of OpenOffice.org.
++ *
++ * OpenOffice.org is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 3
++ * only, as published by the Free Software Foundation.
++ *
++ * OpenOffice.org is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU Lesser General Public License version 3 for more details
++ * (a copy is included in the LICENSE file that accompanied this code).
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * version 3 along with OpenOffice.org. If not, see
++ * <http://www.openoffice.org/license.html>
++ * for a copy of the LGPLv3 License.
++ *
++ ************************************************************************/
++
++#ifndef __com_sun_star_table_BorderLine2_idl__
++#define __com_sun_star_table_BorderLine2_idl__
++
++
++#include <com/sun/star/table/BorderLine.idl>
++#include <com/sun/star/table/BorderLineStyle.idl>
++
++//=============================================================================
++
++module com { module sun { module star { module table {
++
++//=============================================================================
++
++struct BorderLine2 : BorderLine
++{
++ /** Style of the border. @see BorderLineStyle
++ */
++ short LineStyle;
++};
++
++//=============================================================================
++
++}; }; }; };
++
++#endif
+diff --git offapi/com/sun/star/table/BorderLineStyle.idl offapi/com/sun/star/table/BorderLineStyle.idl
+new file mode 100644
+index 0000000..1914373
+--- /dev/null
++++ offapi/com/sun/star/table/BorderLineStyle.idl
+@@ -0,0 +1,63 @@
++/*************************************************************************
++ *
++ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
++ *
++ * Copyright 2008 by Sun Microsystems, Inc.
++ *
++ * OpenOffice.org - a multi-platform office productivity suite
++ *
++ * $RCSfile: TableSortFieldType.idl,v $
++ * $Revision: 1.7 $
++ *
++ * This file is part of OpenOffice.org.
++ *
++ * OpenOffice.org is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU Lesser General Public License version 3
++ * only, as published by the Free Software Foundation.
++ *
++ * OpenOffice.org is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU Lesser General Public License version 3 for more details
++ * (a copy is included in the LICENSE file that accompanied this code).
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * version 3 along with OpenOffice.org. If not, see
++ * <http://www.openoffice.org/license.html>
++ * for a copy of the LGPLv3 License.
++ *
++ ************************************************************************/
++#ifndef __com_sun_star_table_BorderLineStyle_idl__
++#define __com_sun_star_table_BorderLineStyle_idl__
++
++
++//=============================================================================
++
++module com { module sun { module star { module table {
++
++//=============================================================================
++
++constants BorderLineStyle
++{
++ //-------------------------------------------------------------------------
++ /** Solid border line.
++ */
++ const short SOLID = 0;
++
++ //-------------------------------------------------------------------------
++ /** Dotted border line.
++ */
++ const short DOTTED = 1;
++
++ //-------------------------------------------------------------------------
++ /** Dashed border line.
++ */
++ const short DASHED = 2;
++
++};
++
++//=============================================================================
++
++}; }; }; };
++
++#endif
+diff --git offapi/com/sun/star/table/makefile.mk offapi/com/sun/star/table/makefile.mk
+index 605a7a9..9b7e185 100644
+--- offapi/com/sun/star/table/makefile.mk
++++ offapi/com/sun/star/table/makefile.mk
+@@ -41,6 +41,8 @@ IDLFILES=\
+ AccessibleCellView.idl \
+ AccessibleTableView.idl \
+ BorderLine.idl\
++ BorderLine2.idl\
++ BorderLineStyle.idl\
+ Cell.idl\
+ CellAddress.idl\
+ CellContentType.idl\
+diff --git oox/inc/oox/helper/helper.hxx oox/inc/oox/helper/helper.hxx
+index 67a5f16..4206cf9 100644
+--- oox/inc/oox/helper/helper.hxx
++++ oox/inc/oox/helper/helper.hxx
+@@ -97,6 +97,10 @@ const sal_Int32 API_RGB_TRANSPARENT = -1; /// Transparent color fo
+ const sal_Int32 API_RGB_BLACK = 0x000000; /// Black color for API calls.
+ const sal_Int32 API_RGB_WHITE = 0xFFFFFF; /// White color for API calls.
+
++const sal_Int16 API_LINE_SOLID = 0;
++const sal_Int16 API_LINE_DOTTED = 1;
++const sal_Int16 API_LINE_DASHED = 2;
++
+ const sal_Int16 API_LINE_NONE = 0;
+ const sal_Int16 API_LINE_HAIR = 2;
+ const sal_Int16 API_LINE_THIN = 35;
+diff --git oox/inc/oox/xls/stylesbuffer.hxx oox/inc/oox/xls/stylesbuffer.hxx
+index 3a5efc7..ea134c5 100644
+--- oox/inc/oox/xls/stylesbuffer.hxx
++++ oox/inc/oox/xls/stylesbuffer.hxx
+@@ -33,7 +33,7 @@
+ #include <com/sun/star/table/CellHoriJustify.hpp>
+ #include <com/sun/star/table/CellOrientation.hpp>
+ #include <com/sun/star/table/CellVertJustify.hpp>
+-#include <com/sun/star/table/TableBorder.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include "oox/helper/containerhelper.hxx"
+ #include "oox/helper/graphichelper.hxx"
+ #include "oox/drawingml/color.hxx"
+@@ -517,10 +517,12 @@ struct BorderModel
+ /** Contains API attributes of a complete cell border. */
+ struct ApiBorderData
+ {
+- typedef ::com::sun::star::table::TableBorder ApiTableBorder;
+- typedef ::com::sun::star::table::BorderLine ApiBorderLine;
++ typedef ::com::sun::star::table::BorderLine2 ApiBorderLine;
+
+- ApiTableBorder maBorder; /// Left/right/top/bottom line format.
++ ApiBorderLine maLeft; /// Left line format
++ ApiBorderLine maRight; /// Right line format
++ ApiBorderLine maTop; /// Top line format
++ ApiBorderLine maBottom; /// Bottom line format
+ ApiBorderLine maTLtoBR; /// Diagonal top-left to bottom-right line format.
+ ApiBorderLine maBLtoTR; /// Diagonal bottom-left to top-right line format.
+ bool mbBorderUsed; /// True = left/right/top/bottom line format used.
+@@ -583,7 +585,7 @@ private:
+
+ /** Converts border line data to an API struct, returns true, if the line is marked as used. */
+ bool convertBorderLine(
+- ::com::sun::star::table::BorderLine& rBorderLine,
++ ::com::sun::star::table::BorderLine2& rBorderLine,
+ const BorderLineModel& rModel );
+
+ private:
+diff --git oox/source/drawingml/table/tablecell.cxx oox/source/drawingml/table/tablecell.cxx
+index bb3287c..6decf3a 100644
+--- oox/source/drawingml/table/tablecell.cxx
++++ oox/source/drawingml/table/tablecell.cxx
+@@ -37,7 +37,7 @@
+ #include <com/sun/star/beans/XMultiPropertySet.hpp>
+ #include <com/sun/star/table/XTable.hpp>
+ #include <com/sun/star/table/XMergeableCellRange.hpp>
+-#include <com/sun/star/table/BorderLine.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include <com/sun/star/drawing/LineStyle.hpp>
+ #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+ #include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
+@@ -48,7 +48,7 @@ using namespace ::oox::core;
+ using namespace ::com::sun::star;
+ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::beans;
+-using ::com::sun::star::table::BorderLine;
++using ::com::sun::star::table::BorderLine2;
+ using ::com::sun::star::drawing::LineStyle;
+
+ namespace oox { namespace drawingml { namespace table {
+@@ -76,7 +76,7 @@ void applyLineAttributes( const ::oox::core::XmlFilterBase& rFilterBase,
+ Reference< XPropertySet >& rxPropSet, oox::drawingml::LineProperties& rLineProperties,
+ sal_Int32 nPropId )
+ {
+- BorderLine aBorderLine( 0, 0, 0, 0 );
++ BorderLine2 aBorderLine( 0, 0, 0, 0, API_LINE_SOLID );
+ if( rLineProperties.maLineFill.moFillType.differsFrom( XML_noFill ) )
+ {
+ Color aColor = rLineProperties.maLineFill.getBestSolidColor();
+diff --git oox/source/drawingml/table/tableproperties.cxx oox/source/drawingml/table/tableproperties.cxx
+index 5c0af81..9357c9f 100644
+--- oox/source/drawingml/table/tableproperties.cxx
++++ oox/source/drawingml/table/tableproperties.cxx
+@@ -32,7 +32,7 @@
+ #include <com/sun/star/beans/XMultiPropertySet.hpp>
+ #include <com/sun/star/lang/XMultiServiceFactory.hpp>
+ #include <com/sun/star/table/XMergeableCellRange.hpp>
+-#include <com/sun/star/table/BorderLine.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include "oox/core/namespaces.hxx"
+ #include "oox/core/xmlfilterbase.hxx"
+ #include "oox/helper/propertyset.hxx"
+diff --git oox/source/drawingml/table/tablerow.cxx oox/source/drawingml/table/tablerow.cxx
+index af53830..0184a7e 100644
+--- oox/source/drawingml/table/tablerow.cxx
++++ oox/source/drawingml/table/tablerow.cxx
+@@ -34,7 +34,7 @@
+ #include "oox/helper/propertyset.hxx"
+ #include <com/sun/star/table/XTable.hpp>
+ #include <com/sun/star/table/XMergeableCellRange.hpp>
+-#include <com/sun/star/table/BorderLine.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+
+ using rtl::OUString;
+ using namespace ::oox::core;
+diff --git oox/source/xls/stylesbuffer.cxx oox/source/xls/stylesbuffer.cxx
+index 1ed6277..5c97f73 100644
+--- oox/source/xls/stylesbuffer.cxx
++++ oox/source/xls/stylesbuffer.cxx
+@@ -43,6 +43,7 @@
+ #include <com/sun/star/text/XText.hpp>
+ #include <com/sun/star/table/CellVertJustify2.hpp>
+ #include <com/sun/star/table/CellJustifyMethod.hpp>
++#include <com/sun/star/table/TableBorder.hpp>
+ #include <rtl/tencinfo.h>
+ #include <rtl/ustrbuf.hxx>
+ #include "properties.hxx"
+@@ -71,6 +72,7 @@ using ::com::sun::star::awt::FontDescriptor;
+ using ::com::sun::star::awt::XDevice;
+ using ::com::sun::star::awt::XFont2;
+ using ::com::sun::star::table::BorderLine;
++using ::com::sun::star::table::BorderLine2;
+ using ::com::sun::star::table::TableBorder;
+ using ::com::sun::star::text::XText;
+ using ::com::sun::star::style::XStyle;
+@@ -1504,6 +1506,15 @@ void Protection::writeToPropertyMap( PropertyMap& rPropMap ) const
+
+ // ============================================================================
+
++namespace {
++
++bool lcl_isBorder(const ::com::sun::star::table::BorderLine& rBorder)
++{
++ return (rBorder.InnerLineWidth > 0) || (rBorder.OuterLineWidth > 0);
++}
++
++}
++
+ BorderLineModel::BorderLineModel( bool bDxf ) :
+ mnStyle( XML_none ),
+ mbUsed( !bDxf )
+@@ -1551,10 +1562,10 @@ ApiBorderData::ApiBorderData() :
+ bool ApiBorderData::hasAnyOuterBorder() const
+ {
+ return
+- (maBorder.IsTopLineValid && (maBorder.TopLine.OuterLineWidth > 0)) ||
+- (maBorder.IsBottomLineValid && (maBorder.BottomLine.OuterLineWidth > 0)) ||
+- (maBorder.IsLeftLineValid && (maBorder.LeftLine.OuterLineWidth > 0)) ||
+- (maBorder.IsRightLineValid && (maBorder.RightLine.OuterLineWidth > 0));
++ ( ( lcl_isBorder( maTop ) && maTop.OuterLineWidth > 0 ) ) ||
++ ( ( lcl_isBorder( maBottom ) && maBottom.OuterLineWidth > 0 ) ) ||
++ ( ( lcl_isBorder( maLeft ) && maLeft.OuterLineWidth > 0 ) ) ||
++ ( ( lcl_isBorder( maRight ) && maRight.OuterLineWidth > 0 ) );
+ }
+
+ namespace {
+@@ -1592,7 +1603,10 @@ bool operator==( const TableBorder& rLeft, const TableBorder& rRight )
+ bool operator==( const ApiBorderData& rLeft, const ApiBorderData& rRight )
+ {
+ return
+- (rLeft.maBorder == rRight.maBorder) &&
++ (rLeft.maLeft == rRight.maLeft) &&
++ (rLeft.maRight == rRight.maRight) &&
++ (rLeft.maTop == rRight.maTop) &&
++ (rLeft.maBottom == rRight.maBottom) &&
+ (rLeft.maTLtoBR == rRight.maTLtoBR) &&
+ (rLeft.maBLtoTR == rRight.maBLtoTR) &&
+ (rLeft.mbBorderUsed == rRight.mbBorderUsed) &&
+@@ -1616,7 +1630,7 @@ inline sal_Int32 lclGetBorderLineWidth( const BorderLine& rBorderLine )
+ return rBorderLine.OuterLineWidth + rBorderLine.LineDistance + rBorderLine.InnerLineWidth;
+ }
+
+-const BorderLine* lclGetThickerLine( const BorderLine& rBorderLine1, sal_Bool bValid1, const BorderLine& rBorderLine2, sal_Bool bValid2 )
++const BorderLine2* lclGetThickerLine( const BorderLine2& rBorderLine1, sal_Bool bValid1, const BorderLine2& rBorderLine2, sal_Bool bValid2 )
+ {
+ if( bValid1 && bValid2 )
+ return (lclGetBorderLineWidth( rBorderLine1 ) < lclGetBorderLineWidth( rBorderLine2 )) ? &rBorderLine2 : &rBorderLine1;
+@@ -1754,21 +1768,10 @@ void Border::finalizeImport()
+ maApiData.mbBorderUsed = maModel.maLeft.mbUsed || maModel.maRight.mbUsed || maModel.maTop.mbUsed || maModel.maBottom.mbUsed;
+ maApiData.mbDiagUsed = maModel.maDiagonal.mbUsed;
+
+- maApiData.maBorder.IsLeftLineValid = convertBorderLine( maApiData.maBorder.LeftLine, maModel.maLeft );
+- maApiData.maBorder.IsRightLineValid = convertBorderLine( maApiData.maBorder.RightLine, maModel.maRight );
+- maApiData.maBorder.IsTopLineValid = convertBorderLine( maApiData.maBorder.TopLine, maModel.maTop );
+- maApiData.maBorder.IsBottomLineValid = convertBorderLine( maApiData.maBorder.BottomLine, maModel.maBottom );
+-
+- if( !mbDxf )
+- {
+- maApiData.maBorder.IsVerticalLineValid = maApiData.maBorder.IsLeftLineValid || maApiData.maBorder.IsRightLineValid;
+- if( const BorderLine* pVertLine = lclGetThickerLine( maApiData.maBorder.LeftLine, maApiData.maBorder.IsLeftLineValid, maApiData.maBorder.RightLine, maApiData.maBorder.IsRightLineValid ) )
+- maApiData.maBorder.VerticalLine = *pVertLine;
+-
+- maApiData.maBorder.IsHorizontalLineValid = maApiData.maBorder.IsTopLineValid || maApiData.maBorder.IsBottomLineValid;
+- if( const BorderLine* pHorLine = lclGetThickerLine( maApiData.maBorder.TopLine, maApiData.maBorder.IsTopLineValid, maApiData.maBorder.BottomLine, maApiData.maBorder.IsBottomLineValid ) )
+- maApiData.maBorder.HorizontalLine = *pHorLine;
+- }
++ convertBorderLine( maApiData.maLeft, maModel.maLeft );
++ convertBorderLine( maApiData.maRight, maModel.maRight );
++ convertBorderLine( maApiData.maTop, maModel.maTop );
++ convertBorderLine( maApiData.maBottom, maModel.maBottom );
+
+ if( maModel.mbDiagTLtoBR )
+ convertBorderLine( maApiData.maTLtoBR, maModel.maDiagonal );
+@@ -1779,7 +1782,12 @@ void Border::finalizeImport()
+ void Border::writeToPropertyMap( PropertyMap& rPropMap ) const
+ {
+ if( maApiData.mbBorderUsed )
+- rPropMap[ PROP_TableBorder ] <<= maApiData.maBorder;
++ {
++ rPropMap[ PROP_LeftBorder ] <<= maApiData.maLeft;
++ rPropMap[ PROP_RightBorder ] <<= maApiData.maRight;
++ rPropMap[ PROP_TopBorder ] <<= maApiData.maTop;
++ rPropMap[ PROP_BottomBorder ] <<= maApiData.maBottom;
++ }
+ if( maApiData.mbDiagUsed )
+ {
+ rPropMap[ PROP_DiagonalTLBR ] <<= maApiData.maTLtoBR;
+@@ -1787,29 +1795,18 @@ void Border::writeToPropertyMap( PropertyMap& rPropMap ) const
+ }
+ }
+
+-namespace {
+-
+-bool lcl_isBorder(const ::com::sun::star::table::BorderLine& rBorder)
+-{
+- return (rBorder.InnerLineWidth > 0) || (rBorder.OuterLineWidth > 0);
+-}
+-
+-}
+-
+ bool Border::hasBorder() const
+ {
+- const ApiBorderData::ApiTableBorder& rTabBorder = maApiData.maBorder;
+-
+- if (rTabBorder.IsBottomLineValid && lcl_isBorder(rTabBorder.BottomLine))
++ if (lcl_isBorder(maApiData.maBottom))
+ return true;
+
+- if (rTabBorder.IsTopLineValid && lcl_isBorder(rTabBorder.TopLine))
++ if (lcl_isBorder(maApiData.maTop))
+ return true;
+
+- if (rTabBorder.IsLeftLineValid && lcl_isBorder(rTabBorder.LeftLine))
++ if (lcl_isBorder(maApiData.maLeft))
+ return true;
+
+- if (rTabBorder.IsRightLineValid && lcl_isBorder(rTabBorder.RightLine))
++ if (lcl_isBorder(maApiData.maRight))
+ return true;
+
+ return false;
+@@ -1828,15 +1825,25 @@ BorderLineModel* Border::getBorderLine( sal_Int32 nElement )
+ return 0;
+ }
+
+-bool Border::convertBorderLine( BorderLine& rBorderLine, const BorderLineModel& rModel )
++bool Border::convertBorderLine( BorderLine2& rBorderLine, const BorderLineModel& rModel )
+ {
+ rBorderLine.Color = rModel.maColor.getColor( getBaseFilter().getGraphicHelper(), API_RGB_BLACK );
+ switch( rModel.mnStyle )
+ {
+ case XML_dashDot: lclSetBorderLineWidth( rBorderLine, API_LINE_THIN ); break;
+ case XML_dashDotDot: lclSetBorderLineWidth( rBorderLine, API_LINE_THIN ); break;
+- case XML_dashed: lclSetBorderLineWidth( rBorderLine, API_LINE_THIN ); break;
+- case XML_dotted: lclSetBorderLineWidth( rBorderLine, API_LINE_THIN ); break;
++ case XML_dashed:
++ {
++ lclSetBorderLineWidth( rBorderLine, API_LINE_THIN );
++ rBorderLine.LineStyle = API_LINE_DASHED;
++ break;
++ }
++ case XML_dotted:
++ {
++ lclSetBorderLineWidth( rBorderLine, API_LINE_THIN );
++ rBorderLine.LineStyle = API_LINE_DOTTED;
++ break;
++ }
+ case XML_double: lclSetBorderLineWidth( rBorderLine, API_LINE_THIN, API_LINE_THIN, API_LINE_THIN ); break;
+ case XML_hair: lclSetBorderLineWidth( rBorderLine, API_LINE_HAIR ); break;
+ case XML_medium: lclSetBorderLineWidth( rBorderLine, API_LINE_MEDIUM ); break;
+diff --git sc/source/filter/excel/xestyle.cxx sc/source/filter/excel/xestyle.cxx
+index 3f99147..55dac60 100644
+--- sc/source/filter/excel/xestyle.cxx
++++ sc/source/filter/excel/xestyle.cxx
+@@ -1570,9 +1570,26 @@ void lclGetBorderLine(
+ else if( nOuterWidth > DEF_LINE_WIDTH_2 )
+ rnXclLine = EXC_LINE_THICK;
+ else if( nOuterWidth > DEF_LINE_WIDTH_1 )
++ {
+ rnXclLine = EXC_LINE_MEDIUM;
++ if ( pLine->GetStyle( ) == DASHED )
++ rnXclLine = EXC_LINE_MEDIUMDASHED;
++ }
+ else if( nOuterWidth > DEF_LINE_WIDTH_0 )
++ {
+ rnXclLine = EXC_LINE_THIN;
++ switch ( pLine->GetStyle( ) )
++ {
++ case DASHED:
++ rnXclLine = EXC_LINE_DASHED;
++ break;
++ case DOTTED:
++ rnXclLine = EXC_LINE_DOTTED;
++ break;
++ default:
++ break;
++ }
++ }
+ else if( nOuterWidth > 0 )
+ rnXclLine = EXC_LINE_HAIR;
+ else
+@@ -1738,6 +1755,9 @@ static const char* ToLineStyle( sal_uInt8 nLineStyle )
+ case EXC_LINE_THICK: return "thick";
+ case EXC_LINE_DOUBLE: return "double";
+ case EXC_LINE_HAIR: return "hair";
++ case EXC_LINE_DOTTED: return "dotted";
++ case EXC_LINE_DASHED: return "dashed";
++ case EXC_LINE_MEDIUMDASHED: return "mediumdashed";
+ }
+ return "*unknown*";
+ }
+diff --git sc/source/filter/excel/xistyle.cxx sc/source/filter/excel/xistyle.cxx
+index 8824e2f..7c9d7c3 100644
+--- sc/source/filter/excel/xistyle.cxx
++++ sc/source/filter/excel/xistyle.cxx
+@@ -821,23 +821,23 @@ namespace {
+ /** Converts the passed line style to a SvxBorderLine, or returns false, if style is "no line". */
+ bool lclConvertBorderLine( SvxBorderLine& rLine, const XclImpPalette& rPalette, sal_uInt8 nXclLine, sal_uInt16 nXclColor )
+ {
+- static const sal_uInt16 ppnLineParam[][ 3 ] =
++ static const sal_uInt16 ppnLineParam[][ 4 ] =
+ {
+- // outer width, inner width, distance
+- { 0, 0, 0 }, // 0 = none
+- { DEF_LINE_WIDTH_1, 0, 0 }, // 1 = thin
+- { DEF_LINE_WIDTH_2, 0, 0 }, // 2 = medium
+- { DEF_LINE_WIDTH_1, 0, 0 }, // 3 = dashed
+- { DEF_LINE_WIDTH_0, 0, 0 }, // 4 = dotted
+- { DEF_LINE_WIDTH_3, 0, 0 }, // 5 = thick
+- { DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1 }, // 6 = double
+- { DEF_LINE_WIDTH_0, 0, 0 }, // 7 = hair
+- { DEF_LINE_WIDTH_2, 0, 0 }, // 8 = med dash
+- { DEF_LINE_WIDTH_1, 0, 0 }, // 9 = thin dashdot
+- { DEF_LINE_WIDTH_2, 0, 0 }, // A = med dashdot
+- { DEF_LINE_WIDTH_1, 0, 0 }, // B = thin dashdotdot
+- { DEF_LINE_WIDTH_2, 0, 0 }, // C = med dashdotdot
+- { DEF_LINE_WIDTH_2, 0, 0 } // D = med slant dashdot
++ // outer width, inner width, distance type
++ { 0, 0, 0, SOLID }, // 0 = none
++ { DEF_LINE_WIDTH_1, 0, 0, SOLID }, // 1 = thin
++ { DEF_LINE_WIDTH_2, 0, 0, SOLID }, // 2 = medium
++ { DEF_LINE_WIDTH_1, 0, 0, DASHED }, // 3 = dashed
++ { DEF_LINE_WIDTH_1, 0, 0, DOTTED }, // 4 = dotted
++ { DEF_LINE_WIDTH_3, 0, 0, SOLID }, // 5 = thick
++ { DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1, DEF_LINE_WIDTH_1 }, // 6 = double
++ { DEF_LINE_WIDTH_0, 0, 0, SOLID }, // 7 = hair
++ { DEF_LINE_WIDTH_2, 0, 0, DASHED }, // 8 = med dash
++ { DEF_LINE_WIDTH_1, 0, 0, SOLID }, // 9 = thin dashdot
++ { DEF_LINE_WIDTH_2, 0, 0, SOLID }, // A = med dashdot
++ { DEF_LINE_WIDTH_1, 0, 0, SOLID }, // B = thin dashdotdot
++ { DEF_LINE_WIDTH_2, 0, 0, SOLID }, // C = med dashdotdot
++ { DEF_LINE_WIDTH_2, 0, 0, SOLID } // D = med slant dashdot
+ };
+
+ if( nXclLine == EXC_LINE_NONE )
+@@ -849,6 +849,7 @@ bool lclConvertBorderLine( SvxBorderLine& rLine, const XclImpPalette& rPalette,
+ rLine.SetOutWidth( ppnLineParam[ nXclLine ][ 0 ] );
+ rLine.SetInWidth( ppnLineParam[ nXclLine ][ 1 ] );
+ rLine.SetDistance( ppnLineParam[ nXclLine ][ 2 ] );
++ rLine.SetStyle( (SvxBorderStyle)ppnLineParam[ nXclLine ][ 3 ] );
+ return true;
+ }
+
+diff --git sc/source/filter/html/htmlexp.cxx sc/source/filter/html/htmlexp.cxx
+index 382a3c5..6fc4db2 100644
+--- sc/source/filter/html/htmlexp.cxx
++++ sc/source/filter/html/htmlexp.cxx
+@@ -528,7 +528,14 @@ void ScHTMLExport::BorderToStyle( ByteString& rOut, const char* pBorderName,
+ // thickness
+ int nWidth = pLine->GetOutWidth();
+ int nPxWidth = ( nWidth > 0 )? std::max( int( nWidth / TWIPS_PER_PIXEL ), 1 ): 0;
+- (rOut += ByteString::CreateFromInt32( nPxWidth )) += "px solid #";
++ (rOut += ByteString::CreateFromInt32( nPxWidth )) += "px ";
++ switch ( pLine->GetStyle() )
++ {
++ case DOTTED: rOut += "dotted"; break;
++ case DASHED: rOut += "dashed"; break;
++ default: rOut += "solid";
++ }
++ rOut += " #";
+
+ // color
+ char hex[7];
+diff --git sc/source/filter/inc/xlstyle.hxx sc/source/filter/inc/xlstyle.hxx
+index 6216165..0b98a8c 100644
+--- sc/source/filter/inc/xlstyle.hxx
++++ sc/source/filter/inc/xlstyle.hxx
+@@ -48,9 +48,12 @@ class XclRoot;
+ const sal_uInt8 EXC_LINE_NONE = 0x00;
+ const sal_uInt8 EXC_LINE_THIN = 0x01;
+ const sal_uInt8 EXC_LINE_MEDIUM = 0x02;
++const sal_uInt8 EXC_LINE_DASHED = 0x03;
++const sal_uInt8 EXC_LINE_DOTTED = 0x04;
+ const sal_uInt8 EXC_LINE_THICK = 0x05;
+ const sal_uInt8 EXC_LINE_DOUBLE = 0x06;
+ const sal_uInt8 EXC_LINE_HAIR = 0x07;
++const sal_uInt8 EXC_LINE_MEDIUMDASHED = 0x08;
+
+ // Background patterns --------------------------------------------------------
+
+diff --git sc/source/filter/xml/xmlstyle.cxx sc/source/filter/xml/xmlstyle.cxx
+index 15b70d6..4c626e2 100644
+--- sc/source/filter/xml/xmlstyle.cxx
++++ sc/source/filter/xml/xmlstyle.cxx
+@@ -54,6 +54,7 @@
+ #include <com/sun/star/table/CellHoriJustify.hpp>
+ #include <com/sun/star/table/CellJustifyMethod.hpp>
+ #include <com/sun/star/table/TableBorder.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include <com/sun/star/sheet/XSheetConditionalEntries.hpp>
+ #include <com/sun/star/sheet/XSheetConditionalEntry.hpp>
+ #include <com/sun/star/sheet/XSheetCondition.hpp>
+@@ -320,7 +321,7 @@ void ScXMLCellExportPropertyMapper::ContextFilter(
+ {
+ if( pBorder_Left && pBorder_Right && pBorder_Top && pBorder_Bottom )
+ {
+- table::BorderLine aLeft, aRight, aTop, aBottom;
++ table::BorderLine2 aLeft, aRight, aTop, aBottom;
+
+ pBorder_Left->maValue >>= aLeft;
+ pBorder_Right->maValue >>= aRight;
+@@ -331,7 +332,9 @@ void ScXMLCellExportPropertyMapper::ContextFilter(
+ aLeft.Color == aTop.Color && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
+ aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
+ aLeft.Color == aBottom.Color && aLeft.InnerLineWidth == aBottom.InnerLineWidth &&
+- aLeft.OuterLineWidth == aBottom.OuterLineWidth && aLeft.LineDistance == aBottom.LineDistance )
++ aLeft.OuterLineWidth == aBottom.OuterLineWidth && aLeft.LineDistance == aBottom.LineDistance &&
++ aLeft.LineStyle == aRight.LineStyle && aLeft.LineStyle == aTop.LineStyle &&
++ aLeft.LineStyle == aBottom.LineStyle )
+ {
+ pBorder_Left->mnIndex = -1;
+ pBorder_Left->maValue.clear();
+@@ -358,7 +361,7 @@ void ScXMLCellExportPropertyMapper::ContextFilter(
+ {
+ if( pLeftBorderWidthState && pRightBorderWidthState && pTopBorderWidthState && pBottomBorderWidthState )
+ {
+- table::BorderLine aLeft, aRight, aTop, aBottom;
++ table::BorderLine2 aLeft, aRight, aTop, aBottom;
+
+ pLeftBorderWidthState->maValue >>= aLeft;
+ pRightBorderWidthState->maValue >>= aRight;
+diff --git sc/source/filter/xml/xmlstyli.cxx sc/source/filter/xml/xmlstyli.cxx
+index 0213ac8..49dea66 100644
+--- sc/source/filter/xml/xmlstyli.cxx
++++ sc/source/filter/xml/xmlstyli.cxx
+@@ -40,7 +40,7 @@
+ #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+ #include <com/sun/star/container/XNameContainer.hpp>
+ #include <com/sun/star/sheet/XSheetConditionalEntries.hpp>
+-#include <com/sun/star/table/BorderLine.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include <comphelper/extract.hxx>
+ #include <xmloff/xmlprcon.hxx>
+ #include <xmloff/xmluconv.hxx>
+@@ -164,15 +164,16 @@ void ScXMLCellImportPropertyMapper::finished(::std::vector< XMLPropertyState >&
+ pBorderWidths[i]->mnIndex = -1;
+ if( pBorders[i] )
+ {
+- table::BorderLine aBorderLine;
++ table::BorderLine2 aBorderLine;
+ pBorders[i]->maValue >>= aBorderLine;
+ if( pBorderWidths[i] )
+ {
+- table::BorderLine aBorderLineWidth;
++ table::BorderLine2 aBorderLineWidth;
+ pBorderWidths[i]->maValue >>= aBorderLineWidth;
+ aBorderLine.OuterLineWidth = aBorderLineWidth.OuterLineWidth;
+ aBorderLine.InnerLineWidth = aBorderLineWidth.InnerLineWidth;
+ aBorderLine.LineDistance = aBorderLineWidth.LineDistance;
++ aBorderLine.LineStyle = aBorderLineWidth.LineStyle;
+ pBorders[i]->maValue <<= aBorderLine;
+ }
+ }
+@@ -181,13 +182,14 @@ void ScXMLCellImportPropertyMapper::finished(::std::vector< XMLPropertyState >&
+ {
+ if( pDiagBorders[i] && pDiagBorderWidths[i] )
+ {
+- table::BorderLine aBorderLine;
++ table::BorderLine2 aBorderLine;
+ pDiagBorders[i]->maValue >>= aBorderLine;
+- table::BorderLine aBorderLineWidth;
++ table::BorderLine2 aBorderLineWidth;
+ pDiagBorderWidths[i]->maValue >>= aBorderLineWidth;
+ aBorderLine.OuterLineWidth = aBorderLineWidth.OuterLineWidth;
+ aBorderLine.InnerLineWidth = aBorderLineWidth.InnerLineWidth;
+ aBorderLine.LineDistance = aBorderLineWidth.LineDistance;
++ aBorderLine.LineStyle = aBorderLineWidth.LineStyle;
+ pDiagBorders[i]->maValue <<= aBorderLine;
+ pDiagBorderWidths[i]->mnIndex = -1;
+ }
+diff --git sc/source/ui/unoobj/cellsuno.cxx sc/source/ui/unoobj/cellsuno.cxx
+index 0f1e8c3..3f3bf2f 100644
+--- sc/source/ui/unoobj/cellsuno.cxx
++++ sc/source/ui/unoobj/cellsuno.cxx
+@@ -60,6 +60,7 @@
+ #include <com/sun/star/table/CellVertJustify2.hpp>
+ #include <com/sun/star/table/ShadowFormat.hpp>
+ #include <com/sun/star/table/TableBorder.hpp>
++#include <com/sun/star/table/BorderLine2.hpp>
+ #include <com/sun/star/sheet/CellFlags.hpp>
+ #include <com/sun/star/sheet/FormulaResult.hpp>
+ #include <com/sun/star/beans/PropertyAttribute.hpp>
+@@ -160,7 +161,7 @@ const SfxItemPropertySet* lcl_GetCellsPropertySet()
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_ABSNAME), SC_WID_UNO_ABSNAME, &getCppuType((rtl::OUString*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ASIANVERT),ATTR_VERTICAL_ASIAN,&getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), SC_WID_UNO_CELLSTYL,&getCppuType((rtl::OUString*)0), 0, 0 },
+@@ -211,13 +212,13 @@ const SfxItemPropertySet* lcl_GetCellsPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), SC_WID_UNO_CONDFMT, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), SC_WID_UNO_CONDLOC, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDXML), SC_WID_UNO_CONDXML, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, MID_HORJUST_HORJUST },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS_METHOD), ATTR_HOR_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMRULES), SC_WID_UNO_NUMRULES,&getCppuType((const uno::Reference<container::XIndexReplace>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_STACKED, &getCppuType((table::CellOrientation*)0), 0, 0 },
+@@ -232,13 +233,13 @@ const SfxItemPropertySet* lcl_GetCellsPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_PLMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_L_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SHRINK_TO_FIT), ATTR_SHRINKTOFIT, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), SC_WID_UNO_TBLBORD, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_USERDEF), ATTR_USERDEF, &getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), SC_WID_UNO_VALIDAT, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), SC_WID_UNO_VALILOC, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+@@ -261,7 +262,7 @@ const SfxItemPropertySet* lcl_GetRangePropertySet()
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_ABSNAME), SC_WID_UNO_ABSNAME, &getCppuType((rtl::OUString*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ASIANVERT),ATTR_VERTICAL_ASIAN,&getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), SC_WID_UNO_CELLSTYL,&getCppuType((rtl::OUString*)0), 0, 0 },
+@@ -312,13 +313,13 @@ const SfxItemPropertySet* lcl_GetRangePropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), SC_WID_UNO_CONDFMT, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), SC_WID_UNO_CONDLOC, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDXML), SC_WID_UNO_CONDXML, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, MID_HORJUST_HORJUST },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS_METHOD), ATTR_HOR_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMRULES), SC_WID_UNO_NUMRULES,&getCppuType((const uno::Reference<container::XIndexReplace>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_STACKED, &getCppuType((table::CellOrientation*)0), 0, 0 },
+@@ -334,14 +335,14 @@ const SfxItemPropertySet* lcl_GetRangePropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), SC_WID_UNO_POS, &getCppuType((awt::Point*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SHRINK_TO_FIT), ATTR_SHRINKTOFIT, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), SC_WID_UNO_SIZE, &getCppuType((awt::Size*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), SC_WID_UNO_TBLBORD, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_USERDEF), ATTR_USERDEF, &getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), SC_WID_UNO_VALIDAT, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), SC_WID_UNO_VALILOC, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+@@ -364,7 +365,7 @@ const SfxItemPropertySet* lcl_GetCellPropertySet()
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_ABSNAME), SC_WID_UNO_ABSNAME, &getCppuType((rtl::OUString*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ASIANVERT),ATTR_VERTICAL_ASIAN,&getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), SC_WID_UNO_CELLSTYL,&getCppuType((rtl::OUString*)0), 0, 0 },
+@@ -415,15 +416,15 @@ const SfxItemPropertySet* lcl_GetCellPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), SC_WID_UNO_CONDFMT, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), SC_WID_UNO_CONDLOC, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDXML), SC_WID_UNO_CONDXML, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_FORMLOC), SC_WID_UNO_FORMLOC, &getCppuType((rtl::OUString*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_FORMRT), SC_WID_UNO_FORMRT, &getCppuType((table::CellContentType*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, MID_HORJUST_HORJUST },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS_METHOD), ATTR_HOR_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMRULES), SC_WID_UNO_NUMRULES,&getCppuType((const uno::Reference<container::XIndexReplace>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLORI), ATTR_STACKED, &getCppuType((table::CellOrientation*)0), 0, 0 },
+@@ -439,14 +440,14 @@ const SfxItemPropertySet* lcl_GetCellPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), SC_WID_UNO_POS, &getCppuType((awt::Point*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SHRINK_TO_FIT), ATTR_SHRINKTOFIT, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), SC_WID_UNO_SIZE, &getCppuType((awt::Size*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), SC_WID_UNO_TBLBORD, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_USERDEF), ATTR_USERDEF, &getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), SC_WID_UNO_VALIDAT, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), SC_WID_UNO_VALILOC, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+@@ -469,7 +470,7 @@ const SfxItemPropertySet* lcl_GetColumnPropertySet()
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_ABSNAME), SC_WID_UNO_ABSNAME, &getCppuType((rtl::OUString*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ASIANVERT),ATTR_VERTICAL_ASIAN,&getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), SC_WID_UNO_CELLSTYL,&getCppuType((rtl::OUString*)0), 0, 0 },
+@@ -520,8 +521,8 @@ const SfxItemPropertySet* lcl_GetColumnPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), SC_WID_UNO_CONDFMT, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), SC_WID_UNO_CONDLOC, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDXML), SC_WID_UNO_CONDXML, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, MID_HORJUST_HORJUST },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS_METHOD), ATTR_HOR_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
+@@ -530,7 +531,7 @@ const SfxItemPropertySet* lcl_GetColumnPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_NEWPAGE), SC_WID_UNO_NEWPAGE, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVIS), SC_WID_UNO_CELLVIS, &getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMRULES), SC_WID_UNO_NUMRULES,&getCppuType((const uno::Reference<container::XIndexReplace>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_OWIDTH), SC_WID_UNO_OWIDTH, &getBooleanCppuType(), 0, 0 },
+@@ -547,14 +548,14 @@ const SfxItemPropertySet* lcl_GetColumnPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), SC_WID_UNO_POS, &getCppuType((awt::Point*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SHRINK_TO_FIT), ATTR_SHRINKTOFIT, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), SC_WID_UNO_SIZE, &getCppuType((awt::Size*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), SC_WID_UNO_TBLBORD, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_USERDEF), ATTR_USERDEF, &getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), SC_WID_UNO_VALIDAT, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), SC_WID_UNO_VALILOC, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+@@ -575,7 +576,7 @@ const SfxItemPropertySet* lcl_GetRowPropertySet()
+ {
+ {MAP_CHAR_LEN(SC_UNONAME_ABSNAME), SC_WID_UNO_ABSNAME, &getCppuType((rtl::OUString*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ASIANVERT),ATTR_VERTICAL_ASIAN,&getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_BOTTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, BOTTOM_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &getCppuType((sal_Int32*)0), 0, MID_BACK_COLOR },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLPRO), ATTR_PROTECTION, &getCppuType((util::CellProtection*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLSTYL), SC_WID_UNO_CELLSTYL,&getCppuType((rtl::OUString*)0), 0, 0 },
+@@ -626,8 +627,8 @@ const SfxItemPropertySet* lcl_GetRowPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_CONDFMT), SC_WID_UNO_CONDFMT, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDLOC), SC_WID_UNO_CONDLOC, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CONDXML), SC_WID_UNO_CONDXML, &getCppuType((uno::Reference<sheet::XSheetConditionalEntries>*)0), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_BLTR), ATTR_BORDER_BLTR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_DIAGONAL_TLBR), ATTR_BORDER_TLBR, &::getCppuType((const table::BorderLine2*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHGT), SC_WID_UNO_CELLHGT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS), ATTR_HOR_JUSTIFY, &getCppuType((table::CellHoriJustify*)0), 0, MID_HORJUST_HORJUST },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLHJUS_METHOD), ATTR_HOR_JUSTIFY_METHOD, &::getCppuType((const sal_Int32*)0), 0, 0 },
+@@ -637,7 +638,7 @@ const SfxItemPropertySet* lcl_GetRowPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_NEWPAGE), SC_WID_UNO_NEWPAGE, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_WRAP), ATTR_LINEBREAK, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_CELLVIS), SC_WID_UNO_CELLVIS, &getBooleanCppuType(), 0, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_LEFTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, LEFT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMFMT), ATTR_VALUE_FORMAT, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_NUMRULES), SC_WID_UNO_NUMRULES,&getCppuType((const uno::Reference<container::XIndexReplace>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_OHEIGHT), SC_WID_UNO_OHEIGHT, &getBooleanCppuType(), 0, 0 },
+@@ -654,14 +655,14 @@ const SfxItemPropertySet* lcl_GetRowPropertySet()
+ {MAP_CHAR_LEN(SC_UNONAME_PRMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_R_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_PTMARGIN), ATTR_MARGIN, &getCppuType((sal_Int32*)0), 0, MID_MARGIN_UP_MARGIN | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_POS), SC_WID_UNO_POS, &getCppuType((awt::Point*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+- {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_RIGHTBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, RIGHT_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTANG), ATTR_ROTATE_VALUE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_ROTREF), ATTR_ROTATE_MODE, &getCppuType((sal_Int32*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SHADOW), ATTR_SHADOW, &getCppuType((table::ShadowFormat*)0), 0, 0 | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_SHRINK_TO_FIT), ATTR_SHRINKTOFIT, &getBooleanCppuType(), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_SIZE), SC_WID_UNO_SIZE, &getCppuType((awt::Size*)0), 0 | beans::PropertyAttribute::READONLY, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_TBLBORD), SC_WID_UNO_TBLBORD, &getCppuType((table::TableBorder*)0), 0, 0 | CONVERT_TWIPS },
+- {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine*)0), 0, TOP_BORDER | CONVERT_TWIPS },
++ {MAP_CHAR_LEN(SC_UNONAME_TOPBORDER),ATTR_BORDER, &::getCppuType((const table::BorderLine2*)0), 0, TOP_BORDER | CONVERT_TWIPS },
+ {MAP_CHAR_LEN(SC_UNONAME_USERDEF), ATTR_USERDEF, &getCppuType((uno::Reference<container::XNameContainer>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALIDAT), SC_WID_UNO_VALIDAT, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
+ {MAP_CHAR_LEN(SC_UNONAME_VALILOC), SC_WID_UNO_VALILOC, &getCppuType((uno::Reference<beans::XPropertySet>*)0), 0, 0 },
... etc. - the rest is truncated
More information about the ooo-build-commit
mailing list