svtools/source/svhtml/parhtml.cxx | 12 + sw/source/core/layout/paintfrm.cxx | 257 ++++++++++++++++++------------------- 2 files changed, 137 insertions(+), 132 deletions(-)
New commits: commit 22b709e84a7b6d38cab2dd37f2f2b28e0fc9d062 Author: Michael Stahl <mst...@redhat.com> Date: Wed Feb 19 22:01:47 2014 +0100 unindent SwTabFrmPainter::PaintLines a little Change-Id: I1602bd62bf970092ecffba579d428fadaf8574cc diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index 81d7cbc..f9f2d23 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -2405,7 +2405,7 @@ void SwTabFrmPainter::HandleFrame( const SwLayoutFrm& rLayoutFrm ) } } -void SwTabFrmPainter::PaintLines( OutputDevice& rDev, const SwRect& rRect ) const +void SwTabFrmPainter::PaintLines(OutputDevice& rDev, const SwRect& rRect) const { // #i16816# tagged pdf support SwTaggedPDFHelper aTaggedPDFHelper( 0, 0, 0, rDev ); @@ -2496,141 +2496,141 @@ void SwTabFrmPainter::PaintLines( OutputDevice& rDev, const SwRect& rRect ) cons aRepaintRect.Pos().X() -= nRepaintRectSize; } - if ( rRect.IsOver( aRepaintRect ) ) + if (!rRect.IsOver(aRepaintRect)) { - svx::frame::Style aStyles[ 7 ]; - aStyles[ 0 ] = rEntryStyle; - FindStylesForLine( aStart, aEnd, aStyles, bHori ); + continue; + } - // subsidiary lines - const Color* pTmpColor = 0; - if ( 0 == aStyles[ 0 ].GetWidth() ) - { - if ( IS_SUBS_TABLE && pGlobalShell->GetWin() ) - aStyles[ 0 ].Set( rCol, rCol, rCol, false, 1, 0, 0 ); - } - else - pTmpColor = pHCColor; + svx::frame::Style aStyles[ 7 ]; + aStyles[ 0 ] = rEntryStyle; + FindStylesForLine( aStart, aEnd, aStyles, bHori ); - // The line sizes stored in the line style have to be adjusted as well. - // This will guarantee that lines with the same twip size will have the - // same pixel size. - for ( int i = 0; i < 7; ++i ) - { - sal_uInt16 nPrim = aStyles[ i ].Prim(); - sal_uInt16 nDist = aStyles[ i ].Dist(); - sal_uInt16 nSecn = aStyles[ i ].Secn(); - - if ( nPrim > 0 ) - nPrim = (sal_uInt16)( std::max( 1L, nPixelSzH * ( nPrim / nPixelSzH ) ) ); - if ( nDist > 0 ) - nDist = (sal_uInt16)( std::max( 1L, nPixelSzH * ( nDist / nPixelSzH ) ) ); - if ( nSecn > 0 ) - nSecn = (sal_uInt16)( std::max( 1L, nPixelSzH * ( nSecn / nPixelSzH ) ) ); - - aStyles[ i ].Set( nPrim, nDist, nSecn ); - } + // subsidiary lines + const Color* pTmpColor = 0; + if (0 == aStyles[ 0 ].GetWidth()) + { + if (IS_SUBS_TABLE && pGlobalShell->GetWin()) + aStyles[ 0 ].Set( rCol, rCol, rCol, false, 1, 0, 0 ); + } + else + pTmpColor = pHCColor; - // The (twip) positions will be adjusted to meet these requirements: - // 1. The y coordinates are located in the middle of the pixel grid - // 2. The x coordinated are located at the beginning of the pixel grid - // This is done, because the horizontal lines are painted "at beginning", - // whereas the vertical lines are painted "centered". By making the line - // sizes a multiple of one pixel size, we can assure, that all lines having - // the same twip size have the same pixel size, independent of their position - // on the screen. - Point aPaintStart = rDev.PixelToLogic( rDev.LogicToPixel( aStart ) ); - Point aPaintEnd = rDev.PixelToLogic( rDev.LogicToPixel( aEnd ) ); - - if( pGlobalShell->GetWin() ) - { - // The table borders do not use SwAlignRect, but all the other frames do. - // Therefore we tweak the outer borders a bit to achieve that the outer - // borders match the subsidiary lines of the upper: - if ( aStart.X() == aUpper.Left() ) - aPaintStart.X() = aUpperAligned.Left(); - else if ( aStart.X() == aUpper._Right() ) - aPaintStart.X() = aUpperAligned._Right(); - if ( aStart.Y() == aUpper.Top() ) - aPaintStart.Y() = aUpperAligned.Top(); - else if ( aStart.Y() == aUpper._Bottom() ) - aPaintStart.Y() = aUpperAligned._Bottom(); - - if ( aEnd.X() == aUpper.Left() ) - aPaintEnd.X() = aUpperAligned.Left(); - else if ( aEnd.X() == aUpper._Right() ) - aPaintEnd.X() = aUpperAligned._Right(); - if ( aEnd.Y() == aUpper.Top() ) - aPaintEnd.Y() = aUpperAligned.Top(); - else if ( aEnd.Y() == aUpper._Bottom() ) - aPaintEnd.Y() = aUpperAligned._Bottom(); - } + // The line sizes stored in the line style have to be adjusted as + // well. This will guarantee that lines with the same twip size + // will have the same pixel size. + for ( int i = 0; i < 7; ++i ) + { + sal_uInt16 nPrim = aStyles[ i ].Prim(); + sal_uInt16 nDist = aStyles[ i ].Dist(); + sal_uInt16 nSecn = aStyles[ i ].Secn(); + + if (nPrim > 0) + nPrim = (sal_uInt16)( std::max( 1L, nPixelSzH * ( nPrim / nPixelSzH ) ) ); + if (nDist > 0) + nDist = (sal_uInt16)( std::max( 1L, nPixelSzH * ( nDist / nPixelSzH ) ) ); + if (nSecn > 0) + nSecn = (sal_uInt16)( std::max( 1L, nPixelSzH * ( nSecn / nPixelSzH ) ) ); + + aStyles[ i ].Set( nPrim, nDist, nSecn ); + } - // logically vertical lines are painted centered on the line, - // logically horizontal lines are painted "below" the line - bool const isBelow((mrTabFrm.IsVertical()) ? !bHori : bHori); - double const offsetStart = (isBelow) - ? aStyles[0].GetWidth() / 2.0 - : std::max<double>(aStyles[1].GetWidth(), - aStyles[3].GetWidth()) / 2.0; - double const offsetEnd = (isBelow) - ? aStyles[0].GetWidth() / 2.0 - : std::max<double>(aStyles[4].GetWidth(), - aStyles[6].GetWidth()) / 2.0; - if (mrTabFrm.IsVertical()) - { - aPaintStart.X() -= static_cast<long>(offsetStart + 0.5); - aPaintEnd.X() -= static_cast<long>(offsetEnd + 0.5); - } - else - { - aPaintStart.Y() += static_cast<long>(offsetStart + 0.5); - aPaintEnd.Y() += static_cast<long>(offsetEnd + 0.5); - } + // The (twip) positions will be adjusted to meet these requirements: + // 1. The y coordinates are located in the middle of the pixel grid + // 2. The x coordinated are located at the beginning of the pixel grid + // This is done, because the horizontal lines are painted "at + // beginning", whereas the vertical lines are painted "centered". + // By making the line sizes a multiple of one pixel size, we can + // assure that all lines having the same twip size have the same + // pixel size, independent of their position on the screen. + Point aPaintStart = rDev.PixelToLogic( rDev.LogicToPixel(aStart) ); + Point aPaintEnd = rDev.PixelToLogic( rDev.LogicToPixel(aEnd) ); + + if (pGlobalShell->GetWin()) + { + // The table borders do not use SwAlignRect, but all the other frames do. + // Therefore we tweak the outer borders a bit to achieve that the outer + // borders match the subsidiary lines of the upper: + if (aStart.X() == aUpper.Left()) + aPaintStart.X() = aUpperAligned.Left(); + else if (aStart.X() == aUpper._Right()) + aPaintStart.X() = aUpperAligned._Right(); + if (aStart.Y() == aUpper.Top()) + aPaintStart.Y() = aUpperAligned.Top(); + else if (aStart.Y() == aUpper._Bottom()) + aPaintStart.Y() = aUpperAligned._Bottom(); + + if (aEnd.X() == aUpper.Left()) + aPaintEnd.X() = aUpperAligned.Left(); + else if (aEnd.X() == aUpper._Right()) + aPaintEnd.X() = aUpperAligned._Right(); + if (aEnd.Y() == aUpper.Top()) + aPaintEnd.Y() = aUpperAligned.Top(); + else if (aEnd.Y() == aUpper._Bottom()) + aPaintEnd.Y() = aUpperAligned._Bottom(); + } - aPaintStart.X() -= nTwipXCorr; // nHalfPixelSzW - 2 to assure that we do not leave the pixel - aPaintEnd.X() -= nTwipXCorr; - aPaintStart.Y() -= nTwipYCorr; - aPaintEnd.Y() -= nTwipYCorr; + // logically vertical lines are painted centered on the line, + // logically horizontal lines are painted "below" the line + bool const isBelow((mrTabFrm.IsVertical()) ? !bHori : bHori); + double const offsetStart = (isBelow) + ? aStyles[0].GetWidth() / 2.0 + : std::max<double>(aStyles[1].GetWidth(), + aStyles[3].GetWidth()) / 2.0; + double const offsetEnd = (isBelow) + ? aStyles[0].GetWidth() / 2.0 + : std::max<double>(aStyles[4].GetWidth(), + aStyles[6].GetWidth()) / 2.0; + if (mrTabFrm.IsVertical()) + { + aPaintStart.X() -= static_cast<long>(offsetStart + 0.5); + aPaintEnd.X() -= static_cast<long>(offsetEnd + 0.5); + } + else + { + aPaintStart.Y() += static_cast<long>(offsetStart + 0.5); + aPaintEnd.Y() += static_cast<long>(offsetEnd + 0.5); + } - if (aStyles[0].Prim() <= 0 && aStyles[0].Secn() <= 0) - { - continue; // fdo#75118 do not paint zero-width lines - } + aPaintStart.X() -= nTwipXCorr; // nHalfPixelSzW - 2 to assure that we do not leave the pixel + aPaintEnd.X() -= nTwipXCorr; + aPaintStart.Y() -= nTwipYCorr; + aPaintEnd.Y() -= nTwipYCorr; - // Here comes the painting stuff: Thank you, DR, great job!!! - if ( bHori ) - { - mrTabFrm.ProcessPrimitives( svx::frame::CreateBorderPrimitives( - aPaintStart, - aPaintEnd, - aStyles[ 0 ], // current style - aStyles[ 1 ], // aLFromT - aStyles[ 2 ], // aLFromL - aStyles[ 3 ], // aLFromB - aStyles[ 4 ], // aRFromT - aStyles[ 5 ], // aRFromR - aStyles[ 6 ], // aRFromB - pTmpColor - ) - ); - } - else - { - mrTabFrm.ProcessPrimitives( svx::frame::CreateBorderPrimitives( - aPaintEnd, - aPaintStart, - aStyles[ 0 ], // current style - aStyles[ 4 ], // aBFromL - aStyles[ 5 ], // aBFromB - aStyles[ 6 ], // aBFromR - aStyles[ 1 ], // aTFromL - aStyles[ 2 ], // aTFromT - aStyles[ 3 ], // aTFromR - pTmpColor - ) - ); - } + if (aStyles[0].Prim() <= 0 && aStyles[0].Secn() <= 0) + { + continue; // fdo#75118 do not paint zero-width lines + } + + // Here comes the painting stuff: Thank you, DR, great job!!! + if (bHori) + { + mrTabFrm.ProcessPrimitives( svx::frame::CreateBorderPrimitives( + aPaintStart, + aPaintEnd, + aStyles[ 0 ], // current style + aStyles[ 1 ], // aLFromT + aStyles[ 2 ], // aLFromL + aStyles[ 3 ], // aLFromB + aStyles[ 4 ], // aRFromT + aStyles[ 5 ], // aRFromR + aStyles[ 6 ], // aRFromB + pTmpColor) + ); + } + else + { + mrTabFrm.ProcessPrimitives( svx::frame::CreateBorderPrimitives( + aPaintEnd, + aPaintStart, + aStyles[ 0 ], // current style + aStyles[ 4 ], // aBFromL + aStyles[ 5 ], // aBFromB + aStyles[ 6 ], // aBFromR + aStyles[ 1 ], // aTFromL + aStyles[ 2 ], // aTFromT + aStyles[ 3 ], // aTFromR + pTmpColor) + ); } } commit 128d3d51c208ec5c37a105ea5c751530bd017d4b Author: Michael Stahl <mst...@redhat.com> Date: Wed Feb 19 21:46:11 2014 +0100 fdo#75118: sw: do not paint zero-width lines Since commit 6a3fb868b2b8af21f7b6140424b6f8377599a786 zero-width BorderLinePrimitive2D will actually be painted as hairlines by VclPixelProcessor2D::tryDrawBorderLinePrimitive2DDirect(), so don't create such pointless primitives. Change-Id: I4c2404b73f106156b83a6d72efa3c8991e5d659e diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index 3d6aa4f..81d7cbc 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -2459,8 +2459,8 @@ void SwTabFrmPainter::PaintLines( OutputDevice& rDev, const SwRect& rRect ) cons break; const SwLineEntrySet& rEntrySet = (*aIter).second; - SwLineEntrySetConstIter aSetIter = rEntrySet.begin(); - while ( aSetIter != rEntrySet.end() ) + for (SwLineEntrySetConstIter aSetIter = rEntrySet.begin(); + aSetIter != rEntrySet.end(); ++aSetIter) { const SwLineEntry& rEntry = *aSetIter; const svx::frame::Style& rEntryStyle( (*aSetIter).maAttribute ); @@ -2593,6 +2593,11 @@ void SwTabFrmPainter::PaintLines( OutputDevice& rDev, const SwRect& rRect ) cons aPaintStart.Y() -= nTwipYCorr; aPaintEnd.Y() -= nTwipYCorr; + if (aStyles[0].Prim() <= 0 && aStyles[0].Secn() <= 0) + { + continue; // fdo#75118 do not paint zero-width lines + } + // Here comes the painting stuff: Thank you, DR, great job!!! if ( bHori ) { @@ -2627,8 +2632,6 @@ void SwTabFrmPainter::PaintLines( OutputDevice& rDev, const SwRect& rRect ) cons ); } } - - ++aSetIter; } ++aIter; commit 3c84fa61570113d1dfb2523ab88f268eeeb46c3c Author: Michael Stahl <mst...@redhat.com> Date: Thu Feb 20 00:37:12 2014 +0100 fdo#74584: Revert "fix html tests" This reverts commit 277922e7a0a4ae8076c10936c4b12df6dcc5ddac. ...since 73e3aafa990168aa532fa7b81fc4de8f455b10e1 was reverted and sw_htmlexport test fails. Change-Id: I32a390a3058e43bc3314b678e27c74036b90f200 diff --git a/svtools/source/svhtml/parhtml.cxx b/svtools/source/svhtml/parhtml.cxx index 08ec21a..a941a06 100644 --- a/svtools/source/svhtml/parhtml.cxx +++ b/svtools/source/svhtml/parhtml.cxx @@ -881,7 +881,7 @@ int HTMLParser::_GetNextRawToken() } OUString aTok( sTmpBuffer.toString() ); - aTok = aTok.toAsciiLowerCase(); + aTok = aTok.toAsciiUpperCase(); bool bDone = false; if( bReadScript || !aEndToken.isEmpty() ) { @@ -1126,7 +1126,7 @@ int HTMLParser::_GetNextToken() // Search token in table: sSaveToken = aToken; - aToken = aToken.toAsciiLowerCase(); + aToken = aToken.toAsciiUpperCase(); if( 0 == (nRet = GetHTMLToken( aToken )) ) // Unknown control nRet = HTML_UNKNOWNCONTROL_ON; @@ -1913,7 +1913,7 @@ bool HTMLParser::IsHTMLFormat( const sal_Char* pHeader, sCmp = pHeader; } - sCmp = sCmp.toAsciiLowerCase(); + sCmp = sCmp.toAsciiUpperCase(); // A HTML document must have a '<' in the first line sal_Int32 nStart = sCmp.indexOf('<'); commit 96a1f60aeb2a7954533da9b4aa4947efb7a65e70 Author: Michael Stahl <mst...@redhat.com> Date: Thu Feb 20 00:36:57 2014 +0100 fdo#74584: Revert "html: Options need to be lowercase, too" This reverts commit 700883b34ebcdb77f398b4423f358bdf4648a853. ...since 73e3aafa990168aa532fa7b81fc4de8f455b10e1 was reverted and sw_htmlexport test fails. Change-Id: Ia83705279e792a0c2375619b6a209e46a319fea7 diff --git a/svtools/source/svhtml/parhtml.cxx b/svtools/source/svhtml/parhtml.cxx index 6517e5c..08ec21a 100644 --- a/svtools/source/svhtml/parhtml.cxx +++ b/svtools/source/svhtml/parhtml.cxx @@ -1462,8 +1462,10 @@ const HTMLOptions& HTMLParser::GetOptions( sal_uInt16 *pNoConvertToken ) OUString sName( aToken.copy( nStt, nPos-nStt ) ); - // PlugIns require original token name. Convert to lower case only for searching. - nToken = GetHTMLOption( sName.toAsciiLowerCase() ); // Name is ready + // PlugIns require original token name. Convert to upper case only for searching. + OUString sNameUpperCase( sName.toAsciiUpperCase() ); + + nToken = GetHTMLOption( sNameUpperCase ); // Name is ready DBG_ASSERTWARNING( nToken!=HTML_O_UNKNOWN, "GetOption: unknown HTML option" ); bool bStripCRLF = (nToken < HTML_OPTION_SCRIPT_START || _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits