Kaydet (Commit) cc7a94cf authored tarafından Zolnai Tamás's avatar Zolnai Tamás

Reduce text background painting rect with border

Change-Id: I48fa36aafa17b9660c65ed713ae2faf9c0c4d056
üst d055f7eb
...@@ -396,7 +396,12 @@ public: ...@@ -396,7 +396,12 @@ public:
sal_uInt16 GetRightBorderDist() const { return m_nRightBorderDist; } sal_uInt16 GetRightBorderDist() const { return m_nRightBorderDist; }
sal_uInt16 GetLeftBorderDist() const { return m_nLeftBorderDist; } sal_uInt16 GetLeftBorderDist() const { return m_nLeftBorderDist; }
// Return with the border width plus spacing sal_uInt16 GetTopBorderWidth() const;
sal_uInt16 GetBottomBorderWidth() const;
sal_uInt16 GetRightBorderWidth() const;
sal_uInt16 GetLeftBorderWidth() const;
// Return the border width plus spacing
sal_uInt16 GetTopBorderSpace() const; sal_uInt16 GetTopBorderSpace() const;
sal_uInt16 GetBottomBorderSpace() const; sal_uInt16 GetBottomBorderSpace() const;
sal_uInt16 GetRightBorderSpace() const; sal_uInt16 GetRightBorderSpace() const;
...@@ -881,6 +886,26 @@ inline void SwFont::SetLeftBorderDist( const sal_uInt16 nLeftDist ) ...@@ -881,6 +886,26 @@ inline void SwFont::SetLeftBorderDist( const sal_uInt16 nLeftDist )
aSub[SW_LATIN].pMagic = aSub[SW_CJK].pMagic = aSub[SW_CTL].pMagic = 0; aSub[SW_LATIN].pMagic = aSub[SW_CJK].pMagic = aSub[SW_CTL].pMagic = 0;
} }
inline sal_uInt16 SwFont::GetTopBorderWidth() const
{
return m_aTopBorder ? m_aTopBorder.get().GetScaledWidth() : 0;
}
inline sal_uInt16 SwFont::GetBottomBorderWidth() const
{
return m_aBottomBorder ? m_aBottomBorder.get().GetScaledWidth() : 0;
}
inline sal_uInt16 SwFont::GetRightBorderWidth() const
{
return m_aRightBorder ? m_aRightBorder.get().GetScaledWidth() : 0;
}
inline sal_uInt16 SwFont::GetLeftBorderWidth() const
{
return m_aLeftBorder ? m_aLeftBorder.get().GetScaledWidth() : 0;
}
inline sal_uInt16 SwFont::GetTopBorderSpace() const inline sal_uInt16 SwFont::GetTopBorderSpace() const
{ {
if( m_aTopBorder ) if( m_aTopBorder )
......
...@@ -748,9 +748,23 @@ void SwTxtPaintInfo::_DrawText( const XubString &rText, const SwLinePortion &rPo ...@@ -748,9 +748,23 @@ void SwTxtPaintInfo::_DrawText( const XubString &rText, const SwLinePortion &rPo
} }
void SwTxtPaintInfo::CalcRect( const SwLinePortion& rPor, void SwTxtPaintInfo::CalcRect( const SwLinePortion& rPor,
SwRect* pRect, SwRect* pIntersect ) const SwRect* pRect, SwRect* pIntersect,
const bool bInsideBorder ) const
{ {
Size aSize( rPor.Width(), rPor.Height() ); KSHORT nPorHeight = rPor.Height();
KSHORT nPorAscent = rPor.GetAscent();
KSHORT nPorWidth = rPor.Width();
SwTwips nX = X();
if( bInsideBorder )
{
nPorAscent -= GetFont()->GetTopBorderWidth();
nPorHeight -= GetFont()->GetTopBorderWidth() + GetFont()->GetBottomBorderWidth();
nPorWidth -= GetFont()->GetRightBorderWidth() + GetFont()->GetLeftBorderWidth();
nX += GetFont()->GetLeftBorderWidth();
}
Size aSize( nPorWidth, nPorHeight );
if( rPor.IsHangingPortion() ) if( rPor.IsHangingPortion() )
aSize.Width() = ((SwHangingPortion&)rPor).GetInnerWidth(); aSize.Width() = ((SwHangingPortion&)rPor).GetInnerWidth();
if( rPor.InSpaceGrp() && GetSpaceAdd() ) if( rPor.InSpaceGrp() && GetSpaceAdd() )
...@@ -770,23 +784,23 @@ void SwTxtPaintInfo::CalcRect( const SwLinePortion& rPor, ...@@ -770,23 +784,23 @@ void SwTxtPaintInfo::CalcRect( const SwLinePortion& rPor,
aSize.Height() = nTmp; aSize.Height() = nTmp;
if ( 1 == GetDirection() ) if ( 1 == GetDirection() )
{ {
aPoint.A() = X() - rPor.GetAscent(); aPoint.A() = nX - nPorAscent;
aPoint.B() = Y() - aSize.Height(); aPoint.B() = Y() - aSize.Height();
} }
else else
{ {
aPoint.A() = X() - rPor.Height() + rPor.GetAscent(); aPoint.A() = nX - nPorHeight + nPorAscent;
aPoint.B() = Y(); aPoint.B() = Y();
} }
} }
else else
{ {
aPoint.A() = X(); aPoint.A() = nX;
//Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
if ( GetTxtFrm()->IsVertLR() ) if ( GetTxtFrm()->IsVertLR() )
aPoint.B() = Y() - rPor.Height() + rPor.GetAscent(); aPoint.B() = Y() - nPorHeight + nPorAscent;
else else
aPoint.B() = Y() - rPor.GetAscent(); aPoint.B() = Y() - nPorAscent;
} }
// Adjust x coordinate if we are inside a bidi portion // Adjust x coordinate if we are inside a bidi portion
...@@ -1124,7 +1138,7 @@ void SwTxtPaintInfo::DrawBackground( const SwLinePortion &rPor ) const ...@@ -1124,7 +1138,7 @@ void SwTxtPaintInfo::DrawBackground( const SwLinePortion &rPor ) const
OSL_ENSURE( OnWin(), "SwTxtPaintInfo::DrawBackground: printer pollution ?" ); OSL_ENSURE( OnWin(), "SwTxtPaintInfo::DrawBackground: printer pollution ?" );
SwRect aIntersect; SwRect aIntersect;
CalcRect( rPor, 0, &aIntersect ); CalcRect( rPor, 0, &aIntersect, true );
if ( aIntersect.HasArea() ) if ( aIntersect.HasArea() )
{ {
...@@ -1209,7 +1223,7 @@ void SwTxtPaintInfo::_DrawBackBrush( const SwLinePortion &rPor ) const ...@@ -1209,7 +1223,7 @@ void SwTxtPaintInfo::_DrawBackBrush( const SwLinePortion &rPor ) const
OSL_ENSURE( m_pFnt->GetBackColor(), "DrawBackBrush: Lost Color" ); OSL_ENSURE( m_pFnt->GetBackColor(), "DrawBackBrush: Lost Color" );
SwRect aIntersect; SwRect aIntersect;
CalcRect( rPor, 0, &aIntersect ); CalcRect( rPor, 0, &aIntersect, true );
if ( aIntersect.HasArea() ) if ( aIntersect.HasArea() )
{ {
......
...@@ -449,7 +449,7 @@ public: ...@@ -449,7 +449,7 @@ public:
inline void NotifyURL( const SwLinePortion &rPor ) const inline void NotifyURL( const SwLinePortion &rPor ) const
{ if( URLNotify() ) _NotifyURL( rPor ); } { if( URLNotify() ) _NotifyURL( rPor ); }
void CalcRect( const SwLinePortion& rPor, SwRect* pRect, SwRect* pIntersect = 0 ) const; void CalcRect( const SwLinePortion& rPor, SwRect* pRect, SwRect* pIntersect = 0, const bool bInsideBorder = false ) const;
inline SwTwips GetPaintOfst() const; inline SwTwips GetPaintOfst() const;
inline void SetPaintOfst( const SwTwips nNew ); inline void SetPaintOfst( const SwTwips nNew );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment