diff options
-rw-r--r-- | svtools/source/control/ruler.cxx | 98 | ||||
-rw-r--r-- | svx/source/dialog/svxruler.cxx | 22 |
2 files changed, 66 insertions, 54 deletions
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx index 1ac385326d93..5654af027153 100644 --- a/svtools/source/control/ruler.cxx +++ b/svtools/source/control/ruler.cxx @@ -807,71 +807,79 @@ static void ImplDrawRulerTab( OutputDevice* pDevice, sal_uInt16 nTabStyle = nStyle & RULER_TAB_STYLE; bool bRTL = 0 != (nStyle & RULER_TAB_RTL); - Rectangle aRect1, aRect2, aRect3; + + Rectangle aRect1; + Rectangle aRect2; + Rectangle aRect3; + aRect3.SetEmpty(); if ( nTabStyle == RULER_TAB_DEFAULT ) { - aRect1.Left() = rPos.X() - RULER_TAB_DWIDTH2 + 1 ; - aRect1.Top() = rPos.Y() - RULER_TAB_DHEIGHT2 + 1 ; - aRect1.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH ; - aRect1.Bottom() = rPos.Y(); - aRect2.Left() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3; - aRect2.Top() = rPos.Y() - RULER_TAB_DHEIGHT + 1; - aRect2.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3 + RULER_TAB_DWIDTH4 - 1; - aRect2.Bottom() = rPos.Y(); + aRect1.Left() = rPos.X() - RULER_TAB_DWIDTH2 + 1; + aRect1.Top() = rPos.Y() - RULER_TAB_DHEIGHT2 + 1; + aRect1.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH; + aRect1.Bottom() = rPos.Y(); + + aRect2.Left() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3; + aRect2.Top() = rPos.Y() - RULER_TAB_DHEIGHT + 1; + aRect2.Right() = rPos.X() - RULER_TAB_DWIDTH2 + RULER_TAB_DWIDTH3 + RULER_TAB_DWIDTH4 - 1; + aRect2.Bottom() = rPos.Y(); } - else if ( (!bRTL && nTabStyle == RULER_TAB_LEFT) ||( bRTL && nTabStyle == RULER_TAB_RIGHT)) + else if ( (!bRTL && nTabStyle == RULER_TAB_LEFT) || ( bRTL && nTabStyle == RULER_TAB_RIGHT)) { - aRect1.Left() = rPos.X(); - aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1; - aRect1.Right() = rPos.X() + RULER_TAB_WIDTH - 1; - aRect1.Bottom() = rPos.Y(); - aRect2.Left() = rPos.X(); - aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1; - aRect2.Right() = rPos.X() + RULER_TAB_WIDTH2 - 1; - aRect2.Bottom() = rPos.Y(); + aRect1.Left() = rPos.X(); + aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1; + aRect1.Right() = rPos.X() + RULER_TAB_WIDTH - 1; + aRect1.Bottom() = rPos.Y(); + + aRect2.Left() = rPos.X(); + aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1; + aRect2.Right() = rPos.X() + RULER_TAB_WIDTH2 - 1; + aRect2.Bottom() = rPos.Y(); } else if ( (!bRTL && nTabStyle == RULER_TAB_RIGHT) ||( bRTL && nTabStyle == RULER_TAB_LEFT)) { - aRect1.Left() = rPos.X() - RULER_TAB_WIDTH + 1; - aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1; - aRect1.Right() = rPos.X(); - aRect1.Bottom() = rPos.Y(); - aRect2.Left() = rPos.X() - RULER_TAB_WIDTH2 + 1; - aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1; - aRect2.Right() = rPos.X(); - aRect2.Bottom() = rPos.Y(); + aRect1.Left() = rPos.X() - RULER_TAB_WIDTH + 1; + aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1; + aRect1.Right() = rPos.X(); + aRect1.Bottom() = rPos.Y(); + + aRect2.Left() = rPos.X() - RULER_TAB_WIDTH2 + 1; + aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1; + aRect2.Right() = rPos.X(); + aRect2.Bottom() = rPos.Y(); } else { - aRect1.Left() = rPos.X() - RULER_TAB_CWIDTH2 + 1; - aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1; - aRect1.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH; - aRect1.Bottom() = rPos.Y(); - aRect2.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3; - aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1; - aRect2.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3 + RULER_TAB_CWIDTH4 - 1; - aRect2.Bottom() = rPos.Y(); + aRect1.Left() = rPos.X() - RULER_TAB_CWIDTH2 + 1; + aRect1.Top() = rPos.Y() - RULER_TAB_HEIGHT2 + 1; + aRect1.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH; + aRect1.Bottom() = rPos.Y(); + + aRect2.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3; + aRect2.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1; + aRect2.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH3 + RULER_TAB_CWIDTH4 - 1; + aRect2.Bottom() = rPos.Y(); if ( nTabStyle == RULER_TAB_DECIMAL ) { - aRect3.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH - 1; - aRect3.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1 + 1; + aRect3.Left() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH - 1; + aRect3.Top() = rPos.Y() - RULER_TAB_HEIGHT + 1 + 1; aRect3.Right() = rPos.X() - RULER_TAB_CWIDTH2 + RULER_TAB_CWIDTH; aRect3.Bottom()= rPos.Y() - RULER_TAB_HEIGHT + 1 + 2 ; } } - if( 0 == (nWinBits&WB_HORZ) ) + if( 0 == (nWinBits & WB_HORZ) ) { - bool bRightAligned = 0 != (nWinBits&WB_RIGHT_ALIGNED); + bool bRightAligned = 0 != (nWinBits & WB_RIGHT_ALIGNED); lcl_RotateRect_Impl(aRect1, rPos.Y(), bRightAligned); lcl_RotateRect_Impl(aRect2, rPos.Y(), bRightAligned); lcl_RotateRect_Impl(aRect3, rPos.Y(), bRightAligned); } pDevice->DrawRect( aRect1 ); pDevice->DrawRect( aRect2 ); - if(!aRect2.IsEmpty()) + if(!aRect3.IsEmpty()) pDevice->DrawRect( aRect3 ); } @@ -903,12 +911,12 @@ void Ruler::ImplDrawTabs( long nMin, long nMax, long nVirTop, long nVirBottom ) if ( mpData->pTabs[i].nStyle & RULER_STYLE_INVISIBLE ) continue; - long n; - n = mpData->pTabs[i].nPos; - n += +mpData->nNullVirOff; - long nTopBottom = GetStyle() & WB_RIGHT_ALIGNED ? nVirTop : nVirBottom; - if ( (n >= nMin) && (n <= nMax) ) - ImplDrawTab( &maVirDev, Point( n, nTopBottom ), mpData->pTabs[i].nStyle ); + long aPosition; + aPosition = mpData->pTabs[i].nPos; + aPosition += +mpData->nNullVirOff; + long nTopBottom = (GetStyle() & WB_RIGHT_ALIGNED) ? nVirTop : nVirBottom; + if (nMin <= aPosition && aPosition <= nMax) + ImplDrawTab( &maVirDev, Point( aPosition, nTopBottom ), mpData->pTabs[i].nStyle ); } } diff --git a/svx/source/dialog/svxruler.cxx b/svx/source/dialog/svxruler.cxx index 3e1e943c8818..6918ebae6927 100644 --- a/svx/source/dialog/svxruler.cxx +++ b/svx/source/dialog/svxruler.cxx @@ -1003,15 +1003,19 @@ void SvxRuler::UpdateTabs() // fill the rest with default Tabs if(bRTL) { + sal_Int32 aFirst = pTabs[nTabCount].nPos; for(j = 0; j < nDefTabBuf; ++j) { pTabs[nTabCount + TAB_GAP].nPos = - pTabs[nTabCount].nPos - nDefTabDist; + aFirst - ConvertHPosPixel(j * lDefTabDist); if(j == 0 ) + { pTabs[nTabCount + TAB_GAP].nPos -= ((pTabs[nTabCount + TAB_GAP].nPos - lRightPixMargin) % nDefTabDist ); + } + if(pTabs[nTabCount+TAB_GAP].nPos <= lParaIndentPix) break; pTabs[nTabCount + TAB_GAP].nStyle = RULER_TAB_DEFAULT; @@ -1020,6 +1024,7 @@ void SvxRuler::UpdateTabs() } else { + sal_Int32 aFirst = 0; for(j = 0; j < nDefTabBuf; ++j) { if( j == 0 ) @@ -1029,27 +1034,26 @@ void SvxRuler::UpdateTabs() { pTabs[nTabCount + TAB_GAP].nPos = (pTabs[nTabCount].nPos + nDefTabDist); + pTabs[nTabCount + TAB_GAP].nPos -= ((pTabs[nTabCount + TAB_GAP].nPos - lParaIndentPix) % nDefTabDist ); + aFirst = pTabs[nTabCount + TAB_GAP].nPos; } else { if( pTabs[nTabCount].nPos < 0 ) - { - pTabs[nTabCount + TAB_GAP].nPos = ( pTabs[nTabCount].nPos / nDefTabDist ) * nDefTabDist; - } + aFirst = ( pTabs[nTabCount].nPos / nDefTabDist ) * nDefTabDist; else - { - pTabs[nTabCount + TAB_GAP].nPos = ( pTabs[nTabCount].nPos / nDefTabDist + 1 ) * nDefTabDist; - } + aFirst = ( pTabs[nTabCount].nPos / nDefTabDist + 1 ) * nDefTabDist; + pTabs[nTabCount + TAB_GAP].nPos = aFirst; } - } else { //simply add the default distance to the last position - pTabs[nTabCount + TAB_GAP].nPos = pTabs[nTabCount].nPos + nDefTabDist; + + pTabs[nTabCount + TAB_GAP].nPos = aFirst + ConvertHPosPixel(j * lDefTabDist); } if(pTabs[nTabCount + TAB_GAP].nPos >= lRightIndent) |