[Libreoffice-commits] core.git: Branch 'feature/calc-cell-borders' - 3 commits - drawinglayer/source include/drawinglayer include/svx svx/source
Kohei Yoshida
kohei.yoshida at collabora.com
Wed Jan 15 12:29:11 PST 2014
drawinglayer/source/primitive2d/borderlineprimitive2d.cxx | 16 +--
drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx | 5 -
include/drawinglayer/primitive2d/borderlineprimitive2d.hxx | 6 +
include/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx | 3
include/svx/framelink.hxx | 23 +---
svx/source/dialog/framelink.cxx | 49 +++++++++-
6 files changed, 74 insertions(+), 28 deletions(-)
New commits:
commit d5583a9e6752f7f7ab2e95856073931d3e58211e
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Jan 15 15:29:01 2014 -0500
Use this pattern scale to scale things for better line pattern generation.
This works much better across different output devices.
Change-Id: Ie89e7284d9063f98fc5a31c505b64f8ce99a7ce1
diff --git a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
index b389f6a..fc99399 100644
--- a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
@@ -133,7 +133,6 @@ namespace drawinglayer
basegfx::B2DVector aVector(getEnd() - getStart());
aVector.normalize();
const basegfx::B2DVector aPerpendicular(basegfx::getPerpendicular(aVector));
- basegfx::B2DVector aScale = rViewInformation.getInverseObjectToViewTransformation() * aVector;
const basegfx::B2DPolyPolygon& aClipRegion =
getClipPolygon(rViewInformation);
@@ -161,7 +160,7 @@ namespace drawinglayer
aPolygon.append( getEnd() );
basegfx::B2DPolygon aPolygon2 = aPolygon;
- double fGap = (mfDistance/mfLeftWidth) * aScale.getLength();
+ double fGap = (mfDistance/mfLeftWidth) * mfPatternScale * 10.0;
moveLine(aPolygon2, fGap, aVector);
xRetval.realloc(2);
@@ -191,7 +190,7 @@ namespace drawinglayer
aPolygon = aClipped.getB2DPolygon(0);
basegfx::B2DPolygon aPolygon2 = aPolygon;
- double fGap = (mfDistance/mfLeftWidth + aVector.getLength()) * aScale.getLength();
+ double fGap = (mfDistance/mfLeftWidth + aVector.getLength()) * mfPatternScale * 10.0;
moveLine(aPolygon2, fGap, aVector);
xRetval.realloc(2);
@@ -243,7 +242,7 @@ namespace drawinglayer
aPolygon.append( aTmpEnd );
basegfx::B2DPolyPolygon aDashed = svtools::ApplyLineDashing(
- aPolygon, getStyle(), MAP_PIXEL, aScale.getLength() );
+ aPolygon, getStyle(), MAP_PIXEL, mfPatternScale*10.0);
for (sal_uInt32 i = 0; i < aDashed.count(); i++ )
{
basegfx::B2DPolygon aDash = aDashed.getB2DPolygon( i );
commit 3510cd66b2d86900870d579502221584e0b26df0
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Jan 15 15:18:37 2014 -0500
Pass scaling to borderline primitive objects.
This will be used when generating line patterns.
Change-Id: I2fa0298bd3e34df1cb304d9be41e471835484d83
diff --git a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
index 381dc79..b389f6a 100644
--- a/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/borderlineprimitive2d.cxx
@@ -307,7 +307,8 @@ namespace drawinglayer
const basegfx::BColor& rRGBColorLeft,
const basegfx::BColor& rRGBColorGap,
bool bHasGapColor,
- const short nStyle)
+ const short nStyle,
+ double fPatternScale)
: BufferedDecompositionPrimitive2D(),
maStart(rStart),
maEnd(rEnd),
@@ -322,7 +323,8 @@ namespace drawinglayer
maRGBColorLeft(rRGBColorLeft),
maRGBColorGap(rRGBColorGap),
mbHasGapColor(bHasGapColor),
- mnStyle(nStyle)
+ mnStyle(nStyle),
+ mfPatternScale(fPatternScale)
{
}
@@ -345,7 +347,8 @@ namespace drawinglayer
&& getRGBColorLeft() == rCompare.getRGBColorLeft()
&& getRGBColorGap() == rCompare.getRGBColorGap()
&& hasGapColor() == rCompare.hasGapColor()
- && getStyle() == rCompare.getStyle());
+ && getStyle() == rCompare.getStyle()
+ && getPatternScale() == rCompare.getPatternScale());
}
return false;
diff --git a/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx b/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx
index 2bfcd8c..895c06e 100644
--- a/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/clippedborderlineprimitive2d.cxx
@@ -33,10 +33,11 @@ namespace drawinglayer
const basegfx::BColor& rRGBColorLeft,
const basegfx::BColor& rRGBColorGap,
bool bHasGapColor,
- const short nStyle)
+ const short nStyle,
+ double fPatternScale)
: BorderLinePrimitive2D( rStart, rEnd, fLeftWidth,fDistance, fRightWidth,
0.0, 0.0, 0.0, 0.0, rRGBColorRight, rRGBColorLeft,
- rRGBColorGap, bHasGapColor, nStyle),
+ rRGBColorGap, bHasGapColor, nStyle, fPatternScale),
maIntersection( rIntersection )
{
}
diff --git a/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx b/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
index 3e85b3a..9726dcd 100644
--- a/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/borderlineprimitive2d.hxx
@@ -69,6 +69,8 @@ namespace drawinglayer
short mnStyle;
+ double mfPatternScale;
+
/// local helpers
double getWidth(
const geometry::ViewInformation2D& rViewInformation) const;
@@ -111,7 +113,8 @@ namespace drawinglayer
const basegfx::BColor& rRGBColorLeft,
const basegfx::BColor& rRGBColorGap,
bool bHasGapColor,
- const short nStyle );
+ const short nStyle,
+ double fPatternScale = 1.0 );
/// data read access
const basegfx::B2DPoint& getStart() const { return maStart; }
@@ -128,6 +131,7 @@ namespace drawinglayer
const basegfx::BColor& getRGBColorGap () const { return maRGBColorGap; }
bool hasGapColor( ) const { return mbHasGapColor; }
short getStyle () const { return mnStyle; }
+ double getPatternScale() const { return mfPatternScale; }
/// compare operator
virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
diff --git a/include/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx b/include/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx
index a2e2194..aaa2095 100644
--- a/include/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/clippedborderlineprimitive2d.hxx
@@ -46,7 +46,8 @@ namespace drawinglayer
const basegfx::BColor& rRGBColorLeft,
const basegfx::BColor& rRGBColorGap,
bool bHasGapColor,
- const short nStyle );
+ const short nStyle,
+ double fPatternScale = 1.0 );
/// compare operator
virtual bool operator==(const BasePrimitive2D& rPrimitive) const;
diff --git a/include/svx/framelink.hxx b/include/svx/framelink.hxx
index ebdc010..afae83e 100644
--- a/include/svx/framelink.hxx
+++ b/include/svx/framelink.hxx
@@ -127,6 +127,7 @@ public:
inline double Prim() const { return mnPrim; }
inline double Dist() const { return mnDist; }
inline double Secn() const { return mnSecn; }
+ double Scale() const;
inline editeng::SvxBorderStyle Type() const { return mnType; }
/** Returns the total width of this frame style. */
@@ -167,6 +168,7 @@ private:
double mnPrim; /// Width of primary (single, left, or top) line.
double mnDist; /// Distance between primary and secondary line.
double mnSecn; /// Width of secondary (right or bottom) line.
+ double mfScale;
editeng::SvxBorderStyle mnType;
};
diff --git a/svx/source/dialog/framelink.cxx b/svx/source/dialog/framelink.cxx
index 93e16a0..8268374 100644
--- a/svx/source/dialog/framelink.cxx
+++ b/svx/source/dialog/framelink.cxx
@@ -1124,13 +1124,18 @@ void lclDrawDiagFrameBorders(
#define SCALEVALUE( value ) lclScaleValue( value, fScale, nMaxWidth )
-Style::Style()
- : meRefMode( REFMODE_CENTERED )
- , mnType( ::com::sun::star::table::BorderLineStyle::SOLID )
-{ Clear(); }
+Style::Style() :
+ meRefMode(REFMODE_CENTERED),
+ mfScale(1.0),
+ mnType(table::BorderLineStyle::SOLID)
+{
+ Clear();
+}
Style::Style( double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
- meRefMode( REFMODE_CENTERED ), mnType( nType )
+ meRefMode(REFMODE_CENTERED),
+ mfScale(1.0),
+ mnType(nType)
{
Clear();
Set( nP, nD, nS );
@@ -1138,23 +1143,32 @@ Style::Style( double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
Style::Style( const Color& rColorPrim, const Color& rColorSecn, const Color& rColorGap, bool bUseGapColor,
double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
- meRefMode( REFMODE_CENTERED ), mnType( nType )
+ meRefMode(REFMODE_CENTERED),
+ mfScale(1.0),
+ mnType(nType)
{
Set( rColorPrim, rColorSecn, rColorGap, bUseGapColor, nP, nD, nS );
}
Style::Style( const editeng::SvxBorderLine& rBorder, double fScale, sal_uInt16 nMaxWidth ) :
- meRefMode( REFMODE_CENTERED )
+ meRefMode(REFMODE_CENTERED),
+ mfScale(fScale)
{
Set( rBorder, fScale, nMaxWidth );
}
Style::Style( const editeng::SvxBorderLine* pBorder, double fScale, sal_uInt16 nMaxWidth ) :
- meRefMode( REFMODE_CENTERED )
+ meRefMode(REFMODE_CENTERED),
+ mfScale(fScale)
{
Set( pBorder, fScale, nMaxWidth );
}
+double Style::Scale() const
+{
+ return mfScale;
+}
+
void Style::Clear()
{
Set( Color(), Color(), Color(), false, 0, 0, 0 );
@@ -1415,7 +1429,7 @@ drawinglayer::primitive2d::Primitive2DSequence CreateClippedBorderPrimitives (
rBorder.GetColorSecn().getBColor(),
rBorder.GetColorPrim().getBColor(),
rBorder.GetColorGap().getBColor(),
- rBorder.UseGapColor(), rBorder.Type() );
+ rBorder.UseGapColor(), rBorder.Type(), rBorder.Scale() );
return aSequence;
}
@@ -1443,7 +1457,7 @@ drawinglayer::primitive2d::Primitive2DSequence CreateBorderPrimitives(
rBorder.GetColorSecn().getBColor(),
rBorder.GetColorPrim().getBColor(),
rBorder.GetColorGap().getBColor(),
- rBorder.UseGapColor(), rBorder.Type() );
+ rBorder.UseGapColor(), rBorder.Type(), rBorder.Scale() );
return aSequence;
}
commit d73a8b72cc2216568c1c86f7c070acf41c889d1b
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Wed Jan 15 14:42:32 2014 -0500
Make thse constructors non-inline.
Change-Id: Iaf23a9962c9dd748247cb986ffabb1a5ba173c09
diff --git a/include/svx/framelink.hxx b/include/svx/framelink.hxx
index 952d66e..ebdc010 100644
--- a/include/svx/framelink.hxx
+++ b/include/svx/framelink.hxx
@@ -108,25 +108,16 @@ class SVX_DLLPUBLIC Style
{
public:
/** Constructs an invisible frame style. */
- inline explicit Style()
- : meRefMode( REFMODE_CENTERED )
- , mnType( ::com::sun::star::table::BorderLineStyle::SOLID )
- { Clear(); }
+ explicit Style();
/** Constructs a frame style with passed line widths. */
- inline explicit Style( double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
- meRefMode( REFMODE_CENTERED ), mnType( nType )
- { Clear(); Set( nP, nD, nS ); }
+ explicit Style( double nP, double nD, double nS, editeng::SvxBorderStyle nType );
/** Constructs a frame style with passed color and line widths. */
- inline explicit Style( const Color& rColorPrim, const Color& rColorSecn, const Color& rColorGap, bool bUseGapColor,
- double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
- meRefMode( REFMODE_CENTERED ), mnType( nType )
- { Set( rColorPrim, rColorSecn, rColorGap, bUseGapColor, nP, nD, nS ); }
+ explicit Style( const Color& rColorPrim, const Color& rColorSecn, const Color& rColorGap, bool bUseGapColor,
+ double nP, double nD, double nS, editeng::SvxBorderStyle nType );
/** Constructs a frame style from the passed SvxBorderLine struct. */
- inline explicit Style( const editeng::SvxBorderLine& rBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16 ) :
- meRefMode( REFMODE_CENTERED ) { Set( rBorder, fScale, nMaxWidth ); }
+ explicit Style( const editeng::SvxBorderLine& rBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16 );
/** Constructs a frame style from the passed SvxBorderLine struct. Clears the style, if pBorder is 0. */
- inline explicit Style( const editeng::SvxBorderLine* pBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16 ) :
- meRefMode( REFMODE_CENTERED ) { Set( pBorder, fScale, nMaxWidth ); }
+ explicit Style( const editeng::SvxBorderLine* pBorder, double fScale = 1.0, sal_uInt16 nMaxWidth = SAL_MAX_UINT16 );
inline RefMode GetRefMode() const { return meRefMode; }
inline const Color& GetColorPrim() const { return maColorPrim; }
diff --git a/svx/source/dialog/framelink.cxx b/svx/source/dialog/framelink.cxx
index 20fdd3f..93e16a0 100644
--- a/svx/source/dialog/framelink.cxx
+++ b/svx/source/dialog/framelink.cxx
@@ -1124,6 +1124,37 @@ void lclDrawDiagFrameBorders(
#define SCALEVALUE( value ) lclScaleValue( value, fScale, nMaxWidth )
+Style::Style()
+ : meRefMode( REFMODE_CENTERED )
+ , mnType( ::com::sun::star::table::BorderLineStyle::SOLID )
+{ Clear(); }
+
+Style::Style( double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
+ meRefMode( REFMODE_CENTERED ), mnType( nType )
+{
+ Clear();
+ Set( nP, nD, nS );
+}
+
+Style::Style( const Color& rColorPrim, const Color& rColorSecn, const Color& rColorGap, bool bUseGapColor,
+ double nP, double nD, double nS, editeng::SvxBorderStyle nType ) :
+ meRefMode( REFMODE_CENTERED ), mnType( nType )
+{
+ Set( rColorPrim, rColorSecn, rColorGap, bUseGapColor, nP, nD, nS );
+}
+
+Style::Style( const editeng::SvxBorderLine& rBorder, double fScale, sal_uInt16 nMaxWidth ) :
+ meRefMode( REFMODE_CENTERED )
+{
+ Set( rBorder, fScale, nMaxWidth );
+}
+
+Style::Style( const editeng::SvxBorderLine* pBorder, double fScale, sal_uInt16 nMaxWidth ) :
+ meRefMode( REFMODE_CENTERED )
+{
+ Set( pBorder, fScale, nMaxWidth );
+}
+
void Style::Clear()
{
Set( Color(), Color(), Color(), false, 0, 0, 0 );
More information about the Libreoffice-commits
mailing list