diff options
author | Armin Le Grand <Armin.Le.Grand@cib.de> | 2017-09-12 17:28:54 +0200 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@cib.de> | 2017-09-15 12:58:04 +0200 |
commit | 53599a9a183878cdf435f80939f8d301a3909d78 (patch) | |
tree | 5d410e53541c1b83e96c8a5022899cb5e7cb05b8 /svx | |
parent | 98ceb50c0a65708729df8f2967e616f52db42261 (diff) |
borderline: merge redefined, mirrored Styles
Redefined merge of BorderlinePrimitives, removed old Writer
stuff for it. Also added support for handling Styles mirrored
for extension calculations.
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/dialog/framelink.cxx | 90 | ||||
-rw-r--r-- | svx/source/dialog/framelinkarray.cxx | 114 | ||||
-rw-r--r-- | svx/source/table/viewcontactoftableobj.cxx | 24 |
3 files changed, 137 insertions, 91 deletions
diff --git a/svx/source/dialog/framelink.cxx b/svx/source/dialog/framelink.cxx index ca66b285f8d4..c7a6377ab3e8 100644 --- a/svx/source/dialog/framelink.cxx +++ b/svx/source/dialog/framelink.cxx @@ -88,7 +88,7 @@ void Style::SetPatternScale( double fScale ) { if(!maImplStyle) { - if(1.0 == fScale) + if(rtl::math::approxEqual(1.0, fScale)) { return; } @@ -334,29 +334,6 @@ bool Style::operator<( const Style& rOther) const return false; } -bool CheckFrameBorderConnectable( const Style& rLBorder, const Style& rRBorder, - const Style& rTFromTL, const Style& rTFromT, const Style& rTFromTR, - const Style& rBFromBL, const Style& rBFromB, const Style& rBFromBR ) -{ - return // returns 1 AND (2a OR 2b) - // 1) only, if both frame borders are equal - (rLBorder == rRBorder) - && - ( - ( - // 2a) if the borders are not double, at least one of the vertical must not be double - !rLBorder.Secn() && (!rTFromT.Secn() || !rBFromB.Secn()) - ) - || - ( - // 2b) if the borders are double, all other borders must not be double - rLBorder.Secn() && - !rTFromTL.Secn() && !rTFromT.Secn() && !rTFromTR.Secn() && - !rBFromBL.Secn() && !rBFromB.Secn() && !rBFromBR.Secn() - ) - ); -} - // Drawing functions struct OffsetAndHalfWidthAndColor { @@ -387,48 +364,70 @@ struct ExtendSet ExtendSet() : mfExtLeft(0.0), mfExtRight(0.0) {} }; -void getOffsetAndHalfWidthAndColorFromStyle(const Style& rStyle, const Color* pForceColor, std::vector< OffsetAndHalfWidthAndColor >& offsets) +double getOffsetAndHalfWidthAndColorFromStyle( + const Style& rStyle, + const Color* pForceColor, + bool bMirrored, + std::vector< OffsetAndHalfWidthAndColor >& offsets) { + // do not forget RefMode offset, primitive is free of it + double fRefModeOffset(0.0); + if (rStyle.IsUsed()) { - // do not forget RefMode offset, primitive is free of it - double fRefModeOffset(0.0); + RefMode aRefMode(rStyle.GetRefMode()); + Color aPrim(rStyle.GetColorPrim()); + Color aSecn(rStyle.GetColorSecn()); + double fPrim(rStyle.Prim()); + double fSecn(rStyle.Secn()); + + if(bMirrored) + { + switch(aRefMode) + { + case RefMode::Begin: aRefMode = RefMode::End; break; + case RefMode::End: aRefMode = RefMode::Begin; break; + default: break; + } + std::swap(aPrim, aSecn); + std::swap(fPrim, fSecn); + } - if (RefMode::Centered != rStyle.GetRefMode()) + if (RefMode::Centered != aRefMode) { const double fHalfWidth(rStyle.GetWidth() * 0.5); - if (RefMode::Begin == rStyle.GetRefMode()) + if (RefMode::Begin == aRefMode) { // move aligned below vector fRefModeOffset = fHalfWidth; } - else if (RefMode::End == rStyle.GetRefMode()) + else if (RefMode::End == aRefMode) { // move aligned above vector fRefModeOffset = -fHalfWidth; } } - if (rStyle.Dist() && rStyle.Secn()) + if (rStyle.Dist() && fSecn) { // both or all three lines used const bool bPrimTransparent(0xff == rStyle.GetColorPrim().GetTransparency()); const bool bDistTransparent(!rStyle.UseGapColor() || 0xff == rStyle.GetColorGap().GetTransparency()); - const bool bSecnTransparent(0xff == rStyle.GetColorSecn().GetTransparency()); + const bool bSecnTransparent(0xff == aSecn.GetTransparency()); if(!bPrimTransparent || !bDistTransparent || !bSecnTransparent) { const double a(fRefModeOffset - (rStyle.GetWidth() * 0.5)); - const double b(a + rStyle.Prim()); + const double b(a + fPrim); const double c(b + rStyle.Dist()); - const double d(c + rStyle.Secn()); + const double d(c + fSecn); offsets.push_back( OffsetAndHalfWidthAndColor( (a + b) * 0.5, - rStyle.Prim() * 0.5, - nullptr != pForceColor ? *pForceColor : rStyle.GetColorPrim())); + fPrim * 0.5, + nullptr != pForceColor ? *pForceColor : aPrim)); offsets.push_back( OffsetAndHalfWidthAndColor( @@ -441,8 +440,8 @@ void getOffsetAndHalfWidthAndColorFromStyle(const Style& rStyle, const Color* pF offsets.push_back( OffsetAndHalfWidthAndColor( (c + d) * 0.5, - rStyle.Secn() * 0.5, - nullptr != pForceColor ? *pForceColor : rStyle.GetColorSecn())); + fSecn * 0.5, + nullptr != pForceColor ? *pForceColor : aSecn)); } } else @@ -453,11 +452,13 @@ void getOffsetAndHalfWidthAndColorFromStyle(const Style& rStyle, const Color* pF offsets.push_back( OffsetAndHalfWidthAndColor( fRefModeOffset, - rStyle.Prim() * 0.5, - nullptr != pForceColor ? *pForceColor : rStyle.GetColorPrim())); + fPrim * 0.5, + nullptr != pForceColor ? *pForceColor : aPrim)); } } } + + return fRefModeOffset; } void getCutSet( @@ -525,7 +526,7 @@ void getExtends( for(const auto& rStyleVectorCombination : rStyleVectorTable) { std::vector< OffsetAndHalfWidthAndColor > otherOffsets; - getOffsetAndHalfWidthAndColorFromStyle(rStyleVectorCombination.getStyle(), nullptr, otherOffsets); + getOffsetAndHalfWidthAndColorFromStyle(rStyleVectorCombination.getStyle(), nullptr, rStyleVectorCombination.isMirrored(), otherOffsets); if(!otherOffsets.empty()) { @@ -568,7 +569,7 @@ void CreateBorderPrimitives( { // get offset color pairs for style, one per visible line std::vector< OffsetAndHalfWidthAndColor > myOffsets; - getOffsetAndHalfWidthAndColorFromStyle(rBorder, pForceColor, myOffsets); + const double fRefModeOffset(getOffsetAndHalfWidthAndColorFromStyle(rBorder, pForceColor, false, myOffsets)); const size_t nOffsets(myOffsets.size()); if(nOffsets) @@ -624,12 +625,13 @@ void CreateBorderPrimitives( static double fPatScFact(10.0); // 10.0 multiply, see old code const std::vector<double> aDashing(svtools::GetLineDashing(rBorder.Type(), rBorder.PatternScale() * fPatScFact)); const drawinglayer::attribute::StrokeAttribute aStrokeAttribute(aDashing); + const basegfx::B2DPoint aStart(rOrigin + (aPerpendX * fRefModeOffset)); rTarget.append( drawinglayer::primitive2d::Primitive2DReference( new drawinglayer::primitive2d::BorderLinePrimitive2D( - rOrigin, - rOrigin + rX, + aStart, + aStart + rX, aBorderlines, aStrokeAttribute))); } diff --git a/svx/source/dialog/framelinkarray.cxx b/svx/source/dialog/framelinkarray.cxx index 6052c23f3e8a..2d81caebd3a7 100644 --- a/svx/source/dialog/framelinkarray.cxx +++ b/svx/source/dialog/framelinkarray.cxx @@ -954,11 +954,11 @@ void HelperCreateHorizontalEntry( const Style& rStartFromBR(rArray.GetCellStyleTL( col, row )); StyleVectorTable aStart; - if(rStartFromTR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromTR, rX - rY)); - if(rStartLFromT.IsUsed()) aStart.push_back(StyleVectorCombination(rStartLFromT, -rY)); - if(rStartLFromL.IsUsed()) aStart.push_back(StyleVectorCombination(rStartLFromL, -rX)); - if(rStartLFromB.IsUsed()) aStart.push_back(StyleVectorCombination(rStartLFromB, rY)); - if(rStartFromBR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromBR, rX + rY)); + if(rStartFromTR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromTR, rX - rY, false)); + if(rStartLFromT.IsUsed()) aStart.push_back(StyleVectorCombination(rStartLFromT, -rY, true)); + if(rStartLFromL.IsUsed()) aStart.push_back(StyleVectorCombination(rStartLFromL, -rX, true)); + if(rStartLFromB.IsUsed()) aStart.push_back(StyleVectorCombination(rStartLFromB, rY, false)); + if(rStartFromBR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromBR, rX + rY, false)); // get involved styles at end const Style& rEndFromTL(rArray.GetCellStyleBR( col, row - 1 )); @@ -968,11 +968,11 @@ void HelperCreateHorizontalEntry( const Style& rEndFromBL(rArray.GetCellStyleTR( col, row )); StyleVectorTable aEnd; - if(rEndFromTL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromTL, -rX -rY)); - if(rEndRFromT.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndRFromT, -rY)); - if(rEndRFromR.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndRFromR, rX)); - if(rEndRFromB.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndRFromB, rY)); - if(rEndFromBL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromBL, rY - rX)); + if(rEndFromTL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromTL, -rX -rY, true)); + if(rEndRFromT.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndRFromT, -rY, true)); + if(rEndRFromR.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndRFromR, rX, false)); + if(rEndRFromB.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndRFromB, rY, false)); + if(rEndFromBL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromBL, rY - rX, true)); CreateBorderPrimitives( rSequence, @@ -999,11 +999,11 @@ void HelperCreateVerticalEntry( const Style& rStartFromBR(rArray.GetCellStyleTL( col, row )); StyleVectorTable aStart; - if(rStartFromBR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromBR, rX + rY)); - if(rStartTFromR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartTFromR, rX)); - if(rStartTFromT.IsUsed()) aStart.push_back(StyleVectorCombination(rStartTFromT, rY)); - if(rStartTFromL.IsUsed()) aStart.push_back(StyleVectorCombination(rStartTFromL, -rX)); - if(rStartFromBL.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromBL, rY - rX)); + if(rStartFromBR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromBR, rX + rY, false)); + if(rStartTFromR.IsUsed()) aStart.push_back(StyleVectorCombination(rStartTFromR, rX, false)); + if(rStartTFromT.IsUsed()) aStart.push_back(StyleVectorCombination(rStartTFromT, rY, true)); + if(rStartTFromL.IsUsed()) aStart.push_back(StyleVectorCombination(rStartTFromL, -rX, true)); + if(rStartFromBL.IsUsed()) aStart.push_back(StyleVectorCombination(rStartFromBL, rY - rX, true)); // get involved styles at end const Style& rEndFromTL(rArray.GetCellStyleBR( col - 1, row )); @@ -1013,11 +1013,11 @@ void HelperCreateVerticalEntry( const Style& rEndFromTR(rArray.GetCellStyleBL( col, row )); StyleVectorTable aEnd; - if(rEndFromTR.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromTR, rX - rY)); - if(rEndBFromR.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndBFromR, rX)); - if(rEndBFromB.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndBFromB, -rY)); - if(rEndBFromL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndBFromL, rX)); - if(rEndFromTL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromTL, rX + rY)); + if(rEndFromTR.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromTR, rX - rY, false)); + if(rEndBFromR.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndBFromR, rX, false)); + if(rEndBFromB.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndBFromB, -rY, false)); + if(rEndBFromL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndBFromL, rX, true)); + if(rEndFromTL.IsUsed()) aEnd.push_back(StyleVectorCombination(rEndFromTL, rX + rY, true)); CreateBorderPrimitives( rSequence, @@ -1069,6 +1069,48 @@ void HelperCreateEntry(const Array& rArray, const Style& rStyle, drawinglayer::p } } +void HelperMergeInB2DPrimitiveArray( + const drawinglayer::primitive2d::Primitive2DContainer& rSource, + drawinglayer::primitive2d::Primitive2DContainer& rTarget) +{ + if(rSource.size() > 1) + { + drawinglayer::primitive2d::Primitive2DReference aCandidate; + + for(const auto& a : rSource) + { + if(aCandidate.is()) + { + const drawinglayer::primitive2d::Primitive2DReference aMerge( + drawinglayer::primitive2d::tryMergeBorderLinePrimitive2D(aCandidate, a)); + + if(aMerge.is()) + { + aCandidate = aMerge; + } + else + { + rTarget.append(aCandidate); + aCandidate = a; + } + } + else + { + aCandidate = a; + } + } + + if(aCandidate.is()) + { + rTarget.append(aCandidate); + } + } + else + { + rTarget.append(rSource); + } +} + drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( size_t nFirstCol, size_t nFirstRow, size_t nLastCol, size_t nLastRow, const Color* pForceColor ) const @@ -1078,7 +1120,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( // various primitive sequences to collect the different border types drawinglayer::primitive2d::Primitive2DContainer aHorizontalSequence; - drawinglayer::primitive2d::Primitive2DContainer aVerticalSequence; + std::vector< drawinglayer::primitive2d::Primitive2DContainer > aVerticalSequences(nLastCol - nFirstCol + 1); drawinglayer::primitive2d::Primitive2DContainer aCrossSequence; for (size_t nRow = nFirstRow; nRow <= nLastRow; ++nRow) @@ -1131,7 +1173,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( if(rLeft.IsUsed()) { - HelperCreateEntry(*this, rLeft, aVerticalSequence, pForceColor); + HelperCreateEntry(*this, rLeft, aVerticalSequences[nCol - nFirstCol], pForceColor); } } @@ -1141,7 +1183,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( if(rRight.IsUsed()) { - HelperCreateEntry(*this, rRight, aVerticalSequence, pForceColor); + HelperCreateEntry(*this, rRight, aVerticalSequences[nCol - nFirstCol], pForceColor); } } @@ -1156,15 +1198,15 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( /// Fill top-left Style Table const Style& rTLFromRight(GetCellStyleTop(_nFirstCol, _nFirstRow)); - if(rTLFromRight.IsUsed()) aStart.push_back(StyleVectorCombination(rTLFromRight, aX)); + if(rTLFromRight.IsUsed()) aStart.push_back(StyleVectorCombination(rTLFromRight, aX, false)); const Style& rTLFromBottom(GetCellStyleLeft(_nFirstCol, _nFirstRow)); - if(rTLFromBottom.IsUsed()) aStart.push_back(StyleVectorCombination(rTLFromBottom, aY)); + if(rTLFromBottom.IsUsed()) aStart.push_back(StyleVectorCombination(rTLFromBottom, aY, false)); /// Fill bottom-right Style Table const Style& rBRFromBottom(GetCellStyleRight(_nLastCol, _nLastRow)); - if(rBRFromBottom.IsUsed()) aEnd.push_back(StyleVectorCombination(rBRFromBottom, -aY)); + if(rBRFromBottom.IsUsed()) aEnd.push_back(StyleVectorCombination(rBRFromBottom, -aY, true)); const Style& rBRFromLeft(GetCellStyleBottom(_nLastCol, _nLastRow)); - if(rBRFromLeft.IsUsed()) aEnd.push_back(StyleVectorCombination(rBRFromLeft, -aX)); + if(rBRFromLeft.IsUsed()) aEnd.push_back(StyleVectorCombination(rBRFromLeft, -aX, true)); CreateBorderPrimitives( aCrossSequence, @@ -1186,15 +1228,15 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( /// Fill bottom-left Style Table const Style& rBLFromTop(GetCellStyleLeft(_nFirstCol, _nLastRow)); - if(rBLFromTop.IsUsed()) aStart.push_back(StyleVectorCombination(rBLFromTop, -aY)); + if(rBLFromTop.IsUsed()) aStart.push_back(StyleVectorCombination(rBLFromTop, -aY, true)); const Style& rBLFromBottom(GetCellStyleBottom(_nFirstCol, _nLastRow)); - if(rBLFromBottom.IsUsed()) aStart.push_back(StyleVectorCombination(rBLFromBottom, aX)); + if(rBLFromBottom.IsUsed()) aStart.push_back(StyleVectorCombination(rBLFromBottom, aX, false)); /// Fill top-right Style Table const Style& rTRFromBottom(GetCellStyleRight(_nLastCol, _nFirstRow)); - if(rTRFromBottom.IsUsed()) aEnd.push_back(StyleVectorCombination(rTRFromBottom, -aY)); + if(rTRFromBottom.IsUsed()) aEnd.push_back(StyleVectorCombination(rTRFromBottom, -aY, true)); const Style& rTRFromLeft(GetCellStyleTop(_nLastCol, _nFirstRow)); - if(rTRFromLeft.IsUsed()) aEnd.push_back(StyleVectorCombination(rTRFromLeft, -aX)); + if(rTRFromLeft.IsUsed()) aEnd.push_back(StyleVectorCombination(rTRFromLeft, -aX, false)); CreateBorderPrimitives( aCrossSequence, @@ -1211,9 +1253,13 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange( } } - // to stay compatible, create order as it was formally - aCrossSequence.append(aHorizontalSequence); - aCrossSequence.append(aVerticalSequence); + // to stay compatible, create order as it was formally. Also try to + // merge primitives as far as possible + HelperMergeInB2DPrimitiveArray(aHorizontalSequence, aCrossSequence); + for(const auto& aVert : aVerticalSequences) + { + HelperMergeInB2DPrimitiveArray(aVert, aCrossSequence); + } return aCrossSequence; } diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx index d696569dc329..52d6ce42b943 100644 --- a/svx/source/table/viewcontactoftableobj.cxx +++ b/svx/source/table/viewcontactoftableobj.cxx @@ -197,7 +197,7 @@ namespace sdr return svx::frame::Style(); } - void createForVector(drawinglayer::primitive2d::Primitive2DContainer& rContainer, const basegfx::B2DPoint& rOrigin, const basegfx::B2DVector& rX, + void createForVector(bool bHor, drawinglayer::primitive2d::Primitive2DContainer& rContainer, const basegfx::B2DPoint& rOrigin, const basegfx::B2DVector& rX, const svx::frame::Style& rLine, const svx::frame::Style& rLeftA, const svx::frame::Style& rLeftB, const svx::frame::Style& rLeftC, const svx::frame::Style& rRightA, const svx::frame::Style& rRightB, const svx::frame::Style& rRightC) @@ -206,17 +206,16 @@ namespace sdr svx::frame::StyleVectorTable aStart; svx::frame::StyleVectorTable aEnd; const basegfx::B2DVector aY(basegfx::getNormalizedPerpendicular(rX)); - const double fTwipsToMM(127.0 / 72.0); /// Fill top-left Style Table - if(rLeftA.IsUsed()) aStart.push_back(svx::frame::StyleVectorCombination(rLeftA, -aY)); - if(rLeftB.IsUsed()) aStart.push_back(svx::frame::StyleVectorCombination(rLeftB, -rX)); - if(rLeftC.IsUsed()) aStart.push_back(svx::frame::StyleVectorCombination(rLeftC, aY)); + if(rLeftA.IsUsed()) aStart.push_back(svx::frame::StyleVectorCombination(rLeftA, -aY, bHor ? true : false)); + if(rLeftB.IsUsed()) aStart.push_back(svx::frame::StyleVectorCombination(rLeftB, -rX, bHor ? true : true)); + if(rLeftC.IsUsed()) aStart.push_back(svx::frame::StyleVectorCombination(rLeftC, aY, bHor ? false : true)); /// Fill bottom-right Style Table - if(rRightA.IsUsed()) aEnd.push_back(svx::frame::StyleVectorCombination(rRightA, -aY)); - if(rRightB.IsUsed()) aEnd.push_back(svx::frame::StyleVectorCombination(rRightB, rX)); - if(rRightC.IsUsed()) aEnd.push_back(svx::frame::StyleVectorCombination(rRightC, aY)); + if(rRightA.IsUsed()) aEnd.push_back(svx::frame::StyleVectorCombination(rRightA, -aY, bHor ? true : false)); + if(rRightB.IsUsed()) aEnd.push_back(svx::frame::StyleVectorCombination(rRightB, rX, bHor ? false : false)); + if(rRightC.IsUsed()) aEnd.push_back(svx::frame::StyleVectorCombination(rRightC, aY, bHor ? false : true)); CreateBorderPrimitives( rContainer, @@ -350,32 +349,31 @@ namespace sdr const basegfx::B2DPoint aOrigin(aCellMatrix * basegfx::B2DPoint(0.0, 0.0)); const basegfx::B2DVector aX(aCellMatrix * basegfx::B2DVector(1.0, 0.0)); const basegfx::B2DVector aY(aCellMatrix * basegfx::B2DVector(0.0, 1.0)); - const double fTwipsToMM(127.0 / 72.0); if(aLeftLine.IsUsed()) { - createForVector(aBorderSequence, aOrigin, aY, aLeftLine, + createForVector(false, aBorderSequence, aOrigin, aY, aLeftLine, aTopLine, aLeftFromTLine, aTopFromLLine, aBottomLine, aLeftFromBLine, aBottomFromLLine); } if(aBottomLine.IsUsed()) { - createForVector(aBorderSequence, aOrigin + aY, aX, aBottomLine, + createForVector(true, aBorderSequence, aOrigin + aY, aX, aBottomLine, aLeftLine, aBottomFromLLine, aLeftFromBLine, aRightLine, aBottomFromRLine, aRightFromBLine); } if(aRightLine.IsUsed()) { - createForVector(aBorderSequence, aOrigin + aX, aY, aRightLine, + createForVector(false, aBorderSequence, aOrigin + aX, aY, aRightLine, aTopFromRLine, aRightFromTLine, aTopLine, aBottomFromRLine, aRightFromBLine, aBottomLine); } if(aTopLine.IsUsed()) { - createForVector(aBorderSequence, aOrigin, aX, aTopLine, + createForVector(true, aBorderSequence, aOrigin, aX, aTopLine, aLeftFromTLine, aTopFromLLine, aLeftLine, aRightFromTLine, aTopFromRLine, aRightLine); } |