summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortagezi <lera.goncharuk@gmail.com>2017-11-22 01:01:43 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2017-11-22 11:32:10 +0100
commit2f34bec2a7b939e24c3c5e884fdfe2057b732248 (patch)
treeef971e4e8ccaf914644fb39e6cc8180e8dfa82ce
parentfd6150915253e382a7e9f674fe23a72a9a801761 (diff)
tdf#39593 deduplicate code in ScOutputData
Change-Id: Ie7efcdf23e65b2047af7972756c2ba11cc178672 Reviewed-on: https://gerrit.libreoffice.org/45064 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--sc/source/ui/inc/output.hxx2
-rw-r--r--sc/source/ui/view/output2.cxx178
2 files changed, 41 insertions, 139 deletions
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
index 1e84d2920504..7abff2e541e2 100644
--- a/sc/source/ui/inc/output.hxx
+++ b/sc/source/ui/inc/output.hxx
@@ -250,6 +250,8 @@ private:
bool Clip( DrawEditParam& rParam, const Size& aCellSize, OutputAreaParam& aAreaParam,
long nEngineHeight, bool bWrapFields);
+ bool AdjustAreaParamClipRect(OutputAreaParam& aAreaParam);
+
public:
/**
* @param nNewScrX: X-Offset in the output device for the table
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index a257c8f1a576..a3a0348a3dd5 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -1847,30 +1847,9 @@ tools::Rectangle ScOutputData::LayoutStrings(bool bPixelToLogic, bool bPaint, co
long nOutHeight = aAreaParam.maAlignRect.GetHeight();
bool bOutside = ( aAreaParam.maClipRect.Right() < nScrX || aAreaParam.maClipRect.Left() >= nScrX + nScrW );
- if ( aAreaParam.maClipRect.Left() < nScrX )
- {
- aAreaParam.maClipRect.Left() = nScrX;
- aAreaParam.mbLeftClip = true;
- }
- if ( aAreaParam.maClipRect.Right() > nScrX + nScrW )
- {
- aAreaParam.maClipRect.Right() = nScrX + nScrW; //! minus one?
- aAreaParam.mbRightClip = true;
- }
-
+ // Take adjusted values of aAreaParam.mbLeftClip and aAreaParam.mbRightClip
+ bool bVClip = AdjustAreaParamClipRect(aAreaParam);
bool bHClip = aAreaParam.mbLeftClip || aAreaParam.mbRightClip;
- bool bVClip = false;
-
- if ( aAreaParam.maClipRect.Top() < nScrY )
- {
- aAreaParam.maClipRect.Top() = nScrY;
- bVClip = true;
- }
- if ( aAreaParam.maClipRect.Bottom() > nScrY + nScrH )
- {
- aAreaParam.maClipRect.Bottom() = nScrY + nScrH; //! minus one?
- bVClip = true;
- }
// check horizontal space
@@ -2740,6 +2719,35 @@ void ScOutputData::DrawEditParam::adjustForHyperlinkInPDF(Point aURLStart, const
lcl_DoHyperlinkResult(pDev, aURLRect, maCell);
}
+// Returns true if the rect is clipped vertically
+bool ScOutputData::AdjustAreaParamClipRect(OutputAreaParam& aAreaParam)
+{
+ if( aAreaParam.maClipRect.Left() < nScrX )
+ {
+ aAreaParam.maClipRect.Left() = nScrX;
+ aAreaParam.mbLeftClip = true;
+ }
+ if( aAreaParam.maClipRect.Right() > nScrX + nScrW )
+ {
+ aAreaParam.maClipRect.Right() = nScrX + nScrW; //! minus one?
+ aAreaParam.mbRightClip = true;
+ }
+
+ bool bVClip = false;
+
+ if( aAreaParam.maClipRect.Top() < nScrY )
+ {
+ aAreaParam.maClipRect.Top() = nScrY;
+ bVClip = true;
+ }
+ if( aAreaParam.maClipRect.Bottom() > nScrY + nScrH )
+ {
+ aAreaParam.maClipRect.Bottom() = nScrY + nScrH; //! minus one?
+ bVClip = true;
+ }
+ return bVClip;
+}
+
void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
{
OSL_ASSERT(rParam.meOrient == SvxCellOrientation::Standard);
@@ -2970,37 +2978,10 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
if (bOutside)
return;
- if ( aAreaParam.maClipRect.Left() < nScrX )
- {
- aAreaParam.maClipRect.Left() = nScrX;
- aAreaParam.mbLeftClip = true;
- }
- if ( aAreaParam.maClipRect.Right() > nScrX + nScrW )
- {
- aAreaParam.maClipRect.Right() = nScrX + nScrW; //! minus one?
- aAreaParam.mbRightClip = true;
- }
-
- bool bClip = aAreaParam.mbLeftClip || aAreaParam.mbRightClip;
+ // Also take fields in a cell with automatic breaks into account: clip to cell width
+ bool bClip = AdjustAreaParamClipRect(aAreaParam) || aAreaParam.mbLeftClip || aAreaParam.mbRightClip || bWrapFields;
bool bSimClip = false;
- if ( bWrapFields )
- {
- // Fields in a cell with automatic breaks: clip to cell width
- bClip = true;
- }
-
- if ( aAreaParam.maClipRect.Top() < nScrY )
- {
- aAreaParam.maClipRect.Top() = nScrY;
- bClip = true;
- }
- if ( aAreaParam.maClipRect.Bottom() > nScrY + nScrH )
- {
- aAreaParam.maClipRect.Bottom() = nScrY + nScrH; //! minus one?
- bClip = true;
- }
-
Size aCellSize; // output area, excluding margins, in logical units
if (rParam.mbPixelToLogic)
aCellSize = mpRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );
@@ -3187,37 +3168,10 @@ bool ScOutputData::Clip( DrawEditParam& rParam, const Size& aCellSize,
OutputAreaParam& aAreaParam, long nEngineHeight,
bool bWrapFields)
{
- if ( aAreaParam.maClipRect.Left() < nScrX )
- {
- aAreaParam.maClipRect.Left() = nScrX;
- aAreaParam.mbLeftClip = true;
- }
- if ( aAreaParam.maClipRect.Right() > nScrX + nScrW )
- {
- aAreaParam.maClipRect.Right() = nScrX + nScrW; //! minus one?
- aAreaParam.mbRightClip = true;
- }
-
- bool bClip = aAreaParam.mbLeftClip || aAreaParam.mbRightClip;
+ // Also take fields in a cell with automatic breaks into account: clip to cell width
+ bool bClip = AdjustAreaParamClipRect(aAreaParam) || aAreaParam.mbLeftClip || aAreaParam.mbRightClip || bWrapFields;
bool bSimClip = false;
- if ( bWrapFields )
- {
- // Fields in a cell with automatic breaks: clip to cell width
- bClip = true;
- }
-
- if ( aAreaParam.maClipRect.Top() < nScrY )
- {
- aAreaParam.maClipRect.Top() = nScrY;
- bClip = true;
- }
- if ( aAreaParam.maClipRect.Bottom() > nScrY + nScrH )
- {
- aAreaParam.maClipRect.Bottom() = nScrY + nScrH; //! minus one?
- bClip = true;
- }
-
const Size& aRefOne = mpRefDevice->PixelToLogic(Size(1,1));
if ( nEngineHeight >= aCellSize.Height() + aRefOne.Height() )
{
@@ -3945,37 +3899,10 @@ void ScOutputData::DrawEditStacked(DrawEditParam& rParam)
if (bOutside)
return;
- if ( aAreaParam.maClipRect.Left() < nScrX )
- {
- aAreaParam.maClipRect.Left() = nScrX;
- aAreaParam.mbLeftClip = true;
- }
- if ( aAreaParam.maClipRect.Right() > nScrX + nScrW )
- {
- aAreaParam.maClipRect.Right() = nScrX + nScrW; //! minus one?
- aAreaParam.mbRightClip = true;
- }
-
- bool bClip = aAreaParam.mbLeftClip || aAreaParam.mbRightClip;
+ // Also take fields in a cell with automatic breaks into account: clip to cell width
+ bool bClip = AdjustAreaParamClipRect(aAreaParam) || aAreaParam.mbLeftClip || aAreaParam.mbRightClip || bWrapFields;
bool bSimClip = false;
- if ( bWrapFields )
- {
- // Fields in a cell with automatic breaks: clip to cell width
- bClip = true;
- }
-
- if ( aAreaParam.maClipRect.Top() < nScrY )
- {
- aAreaParam.maClipRect.Top() = nScrY;
- bClip = true;
- }
- if ( aAreaParam.maClipRect.Bottom() > nScrY + nScrH )
- {
- aAreaParam.maClipRect.Bottom() = nScrY + nScrH; //! minus one?
- bClip = true;
- }
-
Size aCellSize; // output area, excluding margins, in logical units
if (rParam.mbPixelToLogic)
aCellSize = mpRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );
@@ -4291,37 +4218,10 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam)
if (bOutside)
return;
- if ( aAreaParam.maClipRect.Left() < nScrX )
- {
- aAreaParam.maClipRect.Left() = nScrX;
- aAreaParam.mbLeftClip = true;
- }
- if ( aAreaParam.maClipRect.Right() > nScrX + nScrW )
- {
- aAreaParam.maClipRect.Right() = nScrX + nScrW; //! minus one?
- aAreaParam.mbRightClip = true;
- }
-
- bool bClip = aAreaParam.mbLeftClip || aAreaParam.mbRightClip;
+ // Also take fields in a cell with automatic breaks into account: clip to cell width
+ bool bClip = AdjustAreaParamClipRect(aAreaParam) || aAreaParam.mbLeftClip || aAreaParam.mbRightClip || bWrapFields;
bool bSimClip = false;
- if ( bWrapFields )
- {
- // Fields in a cell with automatic breaks: clip to cell width
- bClip = true;
- }
-
- if ( aAreaParam.maClipRect.Top() < nScrY )
- {
- aAreaParam.maClipRect.Top() = nScrY;
- bClip = true;
- }
- if ( aAreaParam.maClipRect.Bottom() > nScrY + nScrH )
- {
- aAreaParam.maClipRect.Bottom() = nScrY + nScrH; //! minus one?
- bClip = true;
- }
-
Size aCellSize; // output area, excluding margins, in logical units
if (rParam.mbPixelToLogic)
aCellSize = mpRefDevice->PixelToLogic( Size( nOutWidth, nOutHeight ) );