diff options
author | Caolán McNamara <caolanm@redhat.com> | 2022-01-11 19:51:54 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2022-01-12 15:08:36 +0100 |
commit | be30c734bf420f9dd890906c84d2b4460385a2ba (patch) | |
tree | 5b6219b8f666e0493ad5961bdca7b132f63b3d85 /vcl | |
parent | 9a850dd9f3c221660b6259bdfd64a77343f2256c (diff) |
keep positions as DeviceCoordinate within SalLayout
Change-Id: I20bbb0e252ffd09901f587599430e715dbe977b3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128300
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/impglyphitem.hxx | 4 | ||||
-rw-r--r-- | vcl/inc/sallayout.hxx | 4 | ||||
-rw-r--r-- | vcl/qt5/QtGraphics_Text.cxx | 4 | ||||
-rw-r--r-- | vcl/quartz/salgdi.cxx | 4 | ||||
-rw-r--r-- | vcl/skia/gdiimpl.cxx | 4 | ||||
-rw-r--r-- | vcl/source/gdi/CommonSalLayout.cxx | 21 | ||||
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.cxx | 24 | ||||
-rw-r--r-- | vcl/source/gdi/sallayout.cxx | 45 | ||||
-rw-r--r-- | vcl/source/outdev/font.cxx | 8 | ||||
-rw-r--r-- | vcl/source/outdev/text.cxx | 15 | ||||
-rw-r--r-- | vcl/source/outdev/textline.cxx | 10 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/cairotextrender.cxx | 6 | ||||
-rw-r--r-- | vcl/unx/generic/print/genpspgraphics.cxx | 4 | ||||
-rw-r--r-- | vcl/win/gdi/DWriteTextRenderer.cxx | 6 | ||||
-rw-r--r-- | vcl/win/gdi/winlayout.cxx | 6 |
15 files changed, 84 insertions, 81 deletions
diff --git a/vcl/inc/impglyphitem.hxx b/vcl/inc/impglyphitem.hxx index b33ccbd37d7c..bb981d011a8d 100644 --- a/vcl/inc/impglyphitem.hxx +++ b/vcl/inc/impglyphitem.hxx @@ -58,10 +58,10 @@ class VCL_DLLPUBLIC GlyphItem GlyphItemFlags m_nFlags; public: - Point m_aLinearPos; // absolute position of non rotated string + DevicePoint m_aLinearPos; // absolute position of non rotated string sal_Int32 m_nNewWidth; // width after adjustments - GlyphItem(int nCharPos, int nCharCount, sal_GlyphId aGlyphId, const Point& rLinearPos, + GlyphItem(int nCharPos, int nCharCount, sal_GlyphId aGlyphId, const DevicePoint& rLinearPos, GlyphItemFlags nFlags, int nOrigWidth, int nXOffset) : m_nOrigWidth(nOrigWidth) , m_nCharPos(nCharPos) diff --git a/vcl/inc/sallayout.hxx b/vcl/inc/sallayout.hxx index ab29a2022985..acd49edfda30 100644 --- a/vcl/inc/sallayout.hxx +++ b/vcl/inc/sallayout.hxx @@ -64,7 +64,7 @@ public: sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra, int nFactor) const override; DeviceCoordinate FillDXArray(std::vector<DeviceCoordinate>* pDXArray) const override; void GetCaretPositions(int nArraySize, sal_Int32* pCaretXArray) const override; - bool GetNextGlyph(const GlyphItem** pGlyph, Point& rPos, int& nStart, + bool GetNextGlyph(const GlyphItem** pGlyph, DevicePoint& rPos, int& nStart, const LogicalFontInstance** ppGlyphFont = nullptr, const vcl::font::PhysicalFontFace** pFallbackFont = nullptr) const override; bool GetOutline(basegfx::B2DPolyPolygonVector&) const override; @@ -121,7 +121,7 @@ public: LogicalFontInstance& GetFont() const { return *m_GlyphItems.GetFont(); } - bool GetNextGlyph(const GlyphItem** pGlyph, Point& rPos, int& nStart, + bool GetNextGlyph(const GlyphItem** pGlyph, DevicePoint& rPos, int& nStart, const LogicalFontInstance** ppGlyphFont = nullptr, const vcl::font::PhysicalFontFace** pFallbackFont = nullptr) const override; diff --git a/vcl/qt5/QtGraphics_Text.cxx b/vcl/qt5/QtGraphics_Text.cxx index b509c2a946bd..37825c970327 100644 --- a/vcl/qt5/QtGraphics_Text.cxx +++ b/vcl/qt5/QtGraphics_Text.cxx @@ -311,13 +311,13 @@ void QtGraphics::DrawTextLayout(const GenericSalLayout& rLayout) if (nOrientation) pQtLayout->SetOrientation(0_deg10); - Point aPos; + DevicePoint aPos; const GlyphItem* pGlyph; int nStart = 0; while (rLayout.GetNextGlyph(&pGlyph, aPos, nStart)) { glyphIndexes.push_back(pGlyph->glyphId()); - positions.push_back(QPointF(aPos.X(), aPos.Y())); + positions.push_back(QPointF(aPos.getX(), aPos.getY())); } // seems to be common to try to layout an empty string... diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx index 51ffda669832..5a1051965b6c 100644 --- a/vcl/quartz/salgdi.cxx +++ b/vcl/quartz/salgdi.cxx @@ -386,7 +386,7 @@ void AquaGraphicsBackend::drawTextLayout(const GenericSalLayout& rLayout) CTFontRef pFont = static_cast<CTFontRef>(CFDictionaryGetValue(rStyle.GetStyleDict(), kCTFontAttributeName)); CGAffineTransform aRotMatrix = CGAffineTransformMakeRotation(-rStyle.mfFontRotation); - Point aPos; + DevicePoint aPos; const GlyphItem* pGlyph; std::vector<CGGlyph> aGlyphIds; std::vector<CGPoint> aGlyphPos; @@ -394,7 +394,7 @@ void AquaGraphicsBackend::drawTextLayout(const GenericSalLayout& rLayout) int nStart = 0; while (rLayout.GetNextGlyph(&pGlyph, aPos, nStart)) { - CGPoint aGCPos = CGPointMake(aPos.X(), -aPos.Y()); + CGPoint aGCPos = CGPointMake(aPos.getX(), -aPos.getY()); // Whether the glyph should be upright in vertical mode or not bool bUprightGlyph = false; diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index 362508a5cdbe..930865591ac7 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -2105,7 +2105,7 @@ void SkiaSalGraphicsImpl::drawGenericLayout(const GenericSalLayout& layout, Colo glyphIds.reserve(256); glyphForms.reserve(256); verticals.reserve(256); - Point aPos; + DevicePoint aPos; const GlyphItem* pGlyph; int nStart = 0; while (layout.GetNextGlyph(&pGlyph, aPos, nStart)) @@ -2114,7 +2114,7 @@ void SkiaSalGraphicsImpl::drawGenericLayout(const GenericSalLayout& layout, Colo Degree10 angle = layout.GetOrientation(); if (pGlyph->IsVertical()) angle += 900_deg10; - SkRSXform form = SkRSXform::Make(toCos(angle), toSin(angle), aPos.X(), aPos.Y()); + SkRSXform form = SkRSXform::Make(toCos(angle), toSin(angle), aPos.getX(), aPos.getY()); glyphForms.emplace_back(std::move(form)); verticals.emplace_back(pGlyph->IsVertical()); } diff --git a/vcl/source/gdi/CommonSalLayout.cxx b/vcl/source/gdi/CommonSalLayout.cxx index 13bc53ebbdab..f1cbb149dd33 100644 --- a/vcl/source/gdi/CommonSalLayout.cxx +++ b/vcl/source/gdi/CommonSalLayout.cxx @@ -331,7 +331,7 @@ bool GenericSalLayout::LayoutText(vcl::text::ImplLayoutArgs& rArgs, const SalLay double nYScale = 0; GetFont().GetScale(&nXScale, &nYScale); - Point aCurrPos(0, 0); + DevicePoint aCurrPos(0, 0); while (true) { int nBidiMinRunPos, nBidiEndRunPos; @@ -584,12 +584,12 @@ bool GenericSalLayout::LayoutText(vcl::text::ImplLayoutArgs& rArgs, const SalLay nXOffset = std::lround(nXOffset * nXScale); nYOffset = std::lround(nYOffset * nYScale); - Point aNewPos(aCurrPos.X() + nXOffset, aCurrPos.Y() + nYOffset); + DevicePoint aNewPos(aCurrPos.getX() + nXOffset, aCurrPos.getY() + nYOffset); const GlyphItem aGI(nCharPos, nCharCount, nGlyphIndex, aNewPos, nGlyphFlags, nAdvance, nXOffset); m_GlyphItems.push_back(aGI); - aCurrPos.AdjustX(nAdvance ); + aCurrPos.adjustX(nAdvance); } } } @@ -689,14 +689,14 @@ void GenericSalLayout::ApplyDXArray(const DeviceCoordinate* pDXArray, SalLayoutF // Adjust the width and position of the first (leftmost) glyph in // the cluster. m_GlyphItems[i].m_nNewWidth += nDiff; - m_GlyphItems[i].m_aLinearPos.AdjustX(nDelta); + m_GlyphItems[i].m_aLinearPos.adjustX(nDelta); // Adjust the position of the rest of the glyphs in the cluster. while (++i < m_GlyphItems.size()) { if (!m_GlyphItems[i].IsInCluster()) break; - m_GlyphItems[i].m_aLinearPos.AdjustX(nDelta); + m_GlyphItems[i].m_aLinearPos.adjustX(nDelta); } } else if (m_GlyphItems[i].IsInCluster()) @@ -711,7 +711,7 @@ void GenericSalLayout::ApplyDXArray(const DeviceCoordinate* pDXArray, SalLayoutF // the cluster. // For RTL, we put all the adjustment to the left of the glyph. m_GlyphItems[i].m_nNewWidth += nDiff; - m_GlyphItems[i].m_aLinearPos.AdjustX(nDelta + nDiff); + m_GlyphItems[i].m_aLinearPos.adjustX(nDelta + nDiff); // Adjust the X position of all glyphs in the cluster. size_t j = i; @@ -720,7 +720,7 @@ void GenericSalLayout::ApplyDXArray(const DeviceCoordinate* pDXArray, SalLayoutF --j; if (!m_GlyphItems[j].IsInCluster()) break; - m_GlyphItems[j].m_aLinearPos.AdjustX(nDelta + nDiff); + m_GlyphItems[j].m_aLinearPos.adjustX(nDelta + nDiff); } // If this glyph is Kashida-justifiable, then mark this as a @@ -737,7 +737,7 @@ void GenericSalLayout::ApplyDXArray(const DeviceCoordinate* pDXArray, SalLayoutF { if (!m_GlyphItems[j].IsDiacritic()) break; - m_GlyphItems[j--].m_aLinearPos.AdjustX(nDiff); + m_GlyphItems[j--].m_aLinearPos.adjustX(nDiff); } } i++; @@ -779,15 +779,14 @@ void GenericSalLayout::ApplyDXArray(const DeviceCoordinate* pDXArray, SalLayoutF nOverlap = nExcess / (nCopies - 1); } - Point aPos(pGlyphIter->m_aLinearPos.getX() - nTotalWidth, 0); + DevicePoint aPos(pGlyphIter->m_aLinearPos.getX() - nTotalWidth, 0); int nCharPos = pGlyphIter->charPos(); GlyphItemFlags const nFlags = GlyphItemFlags::IS_IN_CLUSTER | GlyphItemFlags::IS_RTL_GLYPH; while (nCopies--) { GlyphItem aKashida(nCharPos, 0, nKashidaIndex, aPos, nFlags, nKashidaWidth, 0); pGlyphIter = m_GlyphItems.insert(pGlyphIter, aKashida); - aPos.AdjustX(nKashidaWidth ); - aPos.AdjustX( -nOverlap ); + aPos.adjustX(nKashidaWidth - nOverlap); ++pGlyphIter; ++nInserted; } diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index d102108a8513..b85592e8fa51 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -3895,7 +3895,7 @@ void PDFWriterImpl::createDefaultCheckBoxAppearance( PDFWidget& rBox, const PDFW // make sure OpenSymbol is embedded, and includes our checkmark const sal_Unicode cMark=0x2713; const GlyphItem aItem(0, 0, pMap->GetGlyphIndex(cMark), - Point(), GlyphItemFlags::NONE, 0, 0); + DevicePoint(), GlyphItemFlags::NONE, 0, 0); const std::vector<sal_Ucs> aCodeUnits={ cMark }; sal_uInt8 nMappedGlyph; sal_Int32 nMappedFontObject; @@ -6129,7 +6129,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool std::vector< PDFGlyph > aGlyphs; aGlyphs.reserve( nMaxGlyphs ); // first get all the glyphs and register them; coordinates still in Pixel - Point aPos; + DevicePoint aPos; while (rLayout.GetNextGlyph(&pGlyph, aPos, nIndex, nullptr, &pFallbackFont)) { const auto* pFont = pFallbackFont ? pFallbackFont : pDevFont; @@ -6202,7 +6202,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool if (bUseActualText || pGlyph->IsInCluster()) nCharPos = pGlyph->charPos(); - aGlyphs.emplace_back(aPos, + aGlyphs.emplace_back(Point(aPos.getX(), aPos.getY()), pGlyph, nGlyphWidth, nMappedFontObject, @@ -6225,7 +6225,8 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool // The rectangle is the bounding box of the text, but also includes // ascent / descent to match the on-screen rendering. // This is the top left of the text without ascent / descent. - tools::Rectangle aRectangle(PixelToLogic(rLayout.GetDrawPosition()), + DevicePoint aDrawPosition(rLayout.GetDrawPosition()); + tools::Rectangle aRectangle(PixelToLogic(Point(aDrawPosition.getX(), aDrawPosition.getY())), Size(ImplDevicePixelToLogicWidth(rLayout.GetTextWidth()), 0)); aRectangle.AdjustTop(-aRefDevFontMetric.GetAscent()); // This includes ascent / descent. @@ -6236,7 +6237,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool { // Adapt rectangle for rotated text. tools::Polygon aPolygon(aRectangle); - aPolygon.Rotate(PixelToLogic(rLayout.GetDrawPosition()), pFontInstance->mnOrientation); + aPolygon.Rotate(PixelToLogic(Point(aDrawPosition.getX(), aDrawPosition.getY())), pFontInstance->mnOrientation); drawPolygon(aPolygon); } else @@ -6333,7 +6334,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool if (!pGlyph->IsSpacing()) { if( !nWidth ) - aStartPt = aPos; + aStartPt = Point(aPos.getX(), aPos.getY()); nWidth += pGlyph->m_nNewWidth; } @@ -6355,9 +6356,9 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool } else { - Point aStartPt = rLayout.GetDrawPosition(); + DevicePoint aStartPt = rLayout.GetDrawPosition(); int nWidth = rLayout.GetTextWidth() / rLayout.GetUnitsPerPixel(); - drawTextLine( PixelToLogic( aStartPt ), + drawTextLine( PixelToLogic(Point(aStartPt.getX(), aStartPt.getY()) ), ImplDevicePixelToLogicWidth( nWidth ), eStrikeout, eUnderline, eOverline, bUnderlineAbove ); } @@ -6433,9 +6434,10 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool aAdjOffset -= Point( nEmphWidth2, nEmphHeight2 ); - aPos += aAdjOffset; - aPos = PixelToLogic( aPos ); - drawEmphasisMark( aPos.X(), aPos.Y(), + Point aMarkPos(aPos.getX(), aPos.getY()); + aMarkPos += aAdjOffset; + aMarkPos = PixelToLogic(aMarkPos); + drawEmphasisMark( aMarkPos.X(), aMarkPos.Y(), aEmphPoly, bEmphPolyLine, aEmphRect1, aEmphRect2 ); } diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx index ebf10bf8e17c..8c7542a3b79f 100644 --- a/vcl/source/gdi/sallayout.cxx +++ b/vcl/source/gdi/sallayout.cxx @@ -148,10 +148,11 @@ void SalLayout::AdjustLayout( vcl::text::ImplLayoutArgs& rArgs ) mnOrientation = rArgs.mnOrientation; } -Point SalLayout::GetDrawPosition( const Point& rRelative ) const +DevicePoint SalLayout::GetDrawPosition(const DevicePoint& rRelative) const { - Point aPos = maDrawBase; - Point aOfs = rRelative + maDrawOffset; + DevicePoint aPos(maDrawBase.X(), maDrawBase.Y()); + DevicePoint aOfs(rRelative.getX() + maDrawOffset.X(), + rRelative.getY() + maDrawOffset.Y()); if( mnOrientation == 0_deg10 ) aPos += aOfs; @@ -168,11 +169,11 @@ Point SalLayout::GetDrawPosition( const Point& rRelative ) const fSin = sin( fRad ); } - double fX = aOfs.X(); - double fY = aOfs.Y(); + double fX = aOfs.getX(); + double fY = aOfs.getY(); tools::Long nX = static_cast<tools::Long>( +fCos * fX + fSin * fY ); tools::Long nY = static_cast<tools::Long>( +fCos * fY - fSin * fX ); - aPos += Point( nX, nY ); + aPos += DevicePoint(nX, nY); } return aPos; @@ -185,7 +186,7 @@ bool SalLayout::GetOutline(basegfx::B2DPolyPolygonVector& rVector) const basegfx::B2DPolyPolygon aGlyphOutline; - Point aPos; + DevicePoint aPos; const GlyphItem* pGlyph; int nStart = 0; const LogicalFontInstance* pGlyphFont; @@ -198,9 +199,9 @@ bool SalLayout::GetOutline(basegfx::B2DPolyPolygonVector& rVector) const // only add non-empty outlines if( bSuccess && (aGlyphOutline.count() > 0) ) { - if( aPos.X() || aPos.Y() ) + if( aPos.getX() || aPos.getY() ) { - aGlyphOutline.transform(basegfx::utils::createTranslateB2DHomMatrix(aPos.X(), aPos.Y())); + aGlyphOutline.transform(basegfx::utils::createTranslateB2DHomMatrix(aPos.getX(), aPos.getY())); } // insert outline at correct position @@ -218,7 +219,7 @@ bool SalLayout::GetBoundRect(tools::Rectangle& rRect) const tools::Rectangle aRectangle; - Point aPos; + DevicePoint aPos; const GlyphItem* pGlyph; int nStart = 0; const LogicalFontInstance* pGlyphFont; @@ -228,7 +229,7 @@ bool SalLayout::GetBoundRect(tools::Rectangle& rRect) const if (pGlyph->GetGlyphBoundRect(pGlyphFont, aRectangle)) { // merge rectangle - aRectangle += aPos; + aRectangle += Point(aPos.getX(), aPos.getY()); if (rRect.IsEmpty()) rRect = aRectangle; else @@ -322,7 +323,7 @@ void GenericSalLayout::Justify( DeviceCoordinate nNewWidth ) for( pGlyphIter = m_GlyphItems.begin(); pGlyphIter != pGlyphIterRight; ++pGlyphIter ) { // move glyph to justified position - pGlyphIter->m_aLinearPos.AdjustX(nDeltaSum ); + pGlyphIter->m_aLinearPos.adjustX(nDeltaSum); // do not stretch non-stretchable glyphs if( pGlyphIter->IsDiacritic() || (nStretchable <= 0) ) @@ -438,7 +439,7 @@ void GenericSalLayout::ApplyAsianKerning(const OUString& rStr) // adjust the glyph positions to the new glyph widths if( pGlyphIter+1 != pGlyphIterEnd ) - pGlyphIter->m_aLinearPos.AdjustX(nOffset); + pGlyphIter->m_aLinearPos.adjustX(nOffset); } } @@ -491,7 +492,7 @@ sal_Int32 GenericSalLayout::GetTextBreak( DeviceCoordinate nMaxWidth, DeviceCoor } bool GenericSalLayout::GetNextGlyph(const GlyphItem** pGlyph, - Point& rPos, int& nStart, + DevicePoint& rPos, int& nStart, const LogicalFontInstance** ppGlyphFont, const vcl::font::PhysicalFontFace**) const { @@ -521,10 +522,10 @@ bool GenericSalLayout::GetNextGlyph(const GlyphItem** pGlyph, *ppGlyphFont = m_GlyphItems.GetFont().get(); // calculate absolute position in pixel units - Point aRelativePos = pGlyphIter->m_aLinearPos; + DevicePoint aRelativePos = pGlyphIter->m_aLinearPos; - aRelativePos.setX( aRelativePos.X() / mnUnitsPerPixel ); - aRelativePos.setY( aRelativePos.Y() / mnUnitsPerPixel ); + aRelativePos.setX( aRelativePos.getX() / mnUnitsPerPixel ); + aRelativePos.setY( aRelativePos.getY() / mnUnitsPerPixel ); rPos = GetDrawPosition( aRelativePos ); return true; @@ -550,7 +551,7 @@ void GenericSalLayout::MoveGlyph( int nStart, tools::Long nNewXPos ) { for( std::vector<GlyphItem>::iterator pGlyphIterEnd = m_GlyphItems.end(); pGlyphIter != pGlyphIterEnd; ++pGlyphIter ) { - pGlyphIter->m_aLinearPos.AdjustX(nXDelta ); + pGlyphIter->m_aLinearPos.adjustX(nXDelta); } } } @@ -721,7 +722,7 @@ void MultiSalLayout::AdjustLayout( vcl::text::ImplLayoutArgs& rArgs ) const GlyphItem* pGlyphs[MAX_FALLBACK]; bool bValid[MAX_FALLBACK] = { false }; - Point aPos; + DevicePoint aPos; int nLevel = 0, n; for( n = 0; n < mnLevel; ++n ) { @@ -1105,7 +1106,7 @@ void MultiSalLayout::GetCaretPositions( int nMaxIndex, sal_Int32* pCaretXArray ) } bool MultiSalLayout::GetNextGlyph(const GlyphItem** pGlyph, - Point& rPos, int& nStart, + DevicePoint& rPos, int& nStart, const LogicalFontInstance** ppGlyphFont, const vcl::font::PhysicalFontFace** pFallbackFont) const { @@ -1123,8 +1124,8 @@ bool MultiSalLayout::GetNextGlyph(const GlyphItem** pGlyph, nStart |= nFontTag; if (pFallbackFont) *pFallbackFont = pFontFace; - rPos += maDrawBase; - rPos += maDrawOffset; + rPos.adjustX(maDrawBase.X() + maDrawOffset.X()); + rPos.adjustY(maDrawBase.Y() + maDrawOffset.Y()); return true; } } diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx index 5139f1fc03a4..1182ac96a6b9 100644 --- a/vcl/source/outdev/font.cxx +++ b/vcl/source/outdev/font.cxx @@ -1117,7 +1117,7 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout ) tools::Long nEmphasisHeight2 = nEmphasisHeight / 2; aOffset += Point( nEmphasisWidth2, nEmphasisHeight2 ); - Point aOutPoint; + DevicePoint aOutPoint; tools::Rectangle aRectangle; const GlyphItem* pGlyph; const LogicalFontInstance* pGlyphFont; @@ -1136,10 +1136,10 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout ) Point aOriginPt(0, 0); aOriginPt.RotateAround( aAdjPoint, mpFontInstance->mnOrientation ); } - aOutPoint += aAdjPoint; - aOutPoint -= Point( nEmphasisWidth2, nEmphasisHeight2 ); + aOutPoint.adjustX(aAdjPoint.X() - nEmphasisWidth2); + aOutPoint.adjustY(aAdjPoint.Y() - nEmphasisHeight2); ImplDrawEmphasisMark( rSalLayout.DrawBase().X(), - aOutPoint.X(), aOutPoint.Y(), + aOutPoint.getX(), aOutPoint.getY(), aPolyPoly, bPolyLine, aRect1, aRect2 ); } } diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 9a9e3d9f5399..0e9cf85492e3 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -187,9 +187,9 @@ void OutputDevice::ImplDrawTextBackground( const SalLayout& rSalLayout ) tools::Rectangle OutputDevice::ImplGetTextBoundRect( const SalLayout& rSalLayout ) const { - Point aPoint = rSalLayout.GetDrawPosition(); - tools::Long nX = aPoint.X(); - tools::Long nY = aPoint.Y(); + DevicePoint aPoint = rSalLayout.GetDrawPosition(); + tools::Long nX = aPoint.getX(); + tools::Long nY = aPoint.getY(); tools::Long nWidth = rSalLayout.GetTextWidth(); tools::Long nHeight = mpFontInstance->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent; @@ -2366,7 +2366,8 @@ bool OutputDevice::GetTextBoundRect( tools::Rectangle& rRect, } Point aRotatedOfs( mnTextOffX, mnTextOffY ); - aRotatedOfs -= pSalLayout->GetDrawPosition( Point( nXOffset, 0 ) ); + DevicePoint aPos = pSalLayout->GetDrawPosition(DevicePoint(nXOffset, 0)); + aRotatedOfs -= Point(aPos.getX(), aPos.getY()); aPixelRect += aRotatedOfs; rRect = PixelToLogic( aPixelRect ); if( mbMap ) @@ -2433,9 +2434,9 @@ bool OutputDevice::GetTextOutlines( basegfx::B2DPolyPolygonVector& rVector, int nWidthFactor = pSalLayout->GetUnitsPerPixel(); if( nXOffset | mnTextOffX | mnTextOffY ) { - Point aRotatedOfs( mnTextOffX*nWidthFactor, mnTextOffY*nWidthFactor ); - aRotatedOfs -= pSalLayout->GetDrawPosition( Point( nXOffset, 0 ) ); - aMatrix.translate( aRotatedOfs.X(), aRotatedOfs.Y() ); + DevicePoint aRotatedOfs( mnTextOffX*nWidthFactor, mnTextOffY*nWidthFactor ); + aRotatedOfs -= pSalLayout->GetDrawPosition(DevicePoint(nXOffset, 0)); + aMatrix.translate( aRotatedOfs.getX(), aRotatedOfs.getY() ); } if( nWidthFactor > 1 ) diff --git a/vcl/source/outdev/textline.cxx b/vcl/source/outdev/textline.cxx index c4fcb33bf5d0..c950d345da00 100644 --- a/vcl/source/outdev/textline.cxx +++ b/vcl/source/outdev/textline.cxx @@ -814,7 +814,7 @@ void OutputDevice::ImplDrawTextLines( SalLayout& rSalLayout, FontStrikeout eStri const Point aStartPt = rSalLayout.DrawBase(); // calculate distance of each word from the base point - Point aPos; + DevicePoint aPos; DeviceCoordinate nDist = 0; DeviceCoordinate nWidth = 0; const GlyphItem* pGlyph; @@ -827,10 +827,10 @@ void OutputDevice::ImplDrawTextLines( SalLayout& rSalLayout, FontStrikeout eStri if( !nWidth ) { // get the distance to the base point (as projected to baseline) - nDist = aPos.X() - aStartPt.X(); + nDist = aPos.getX() - aStartPt.X(); if( mpFontInstance->mnOrientation ) { - const tools::Long nDY = aPos.Y() - aStartPt.Y(); + const DeviceCoordinate nDY = aPos.getY() - aStartPt.Y(); const double fRad = toRadians(mpFontInstance->mnOrientation); nDist = FRound( nDist*cos(fRad) - nDY*sin(fRad) ); } @@ -857,8 +857,8 @@ void OutputDevice::ImplDrawTextLines( SalLayout& rSalLayout, FontStrikeout eStri } else { - Point aStartPt = rSalLayout.GetDrawPosition(); - ImplDrawTextLine( aStartPt.X(), aStartPt.Y(), 0, + DevicePoint aStartPt = rSalLayout.GetDrawPosition(); + ImplDrawTextLine( aStartPt.getX(), aStartPt.getY(), 0, rSalLayout.GetTextWidth() / rSalLayout.GetUnitsPerPixel(), eStrikeout, eUnderline, eOverline, bUnderlineAbove ); } diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index b14c018652a4..721528bc3683 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -125,15 +125,15 @@ void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalG std::vector<int> glyph_extrarotation; cairo_glyphs.reserve( 256 ); - Point aPos; + DevicePoint aPos; const GlyphItem* pGlyph; int nStart = 0; while (rLayout.GetNextGlyph(&pGlyph, aPos, nStart)) { cairo_glyph_t aGlyph; aGlyph.index = pGlyph->glyphId(); - aGlyph.x = aPos.X(); - aGlyph.y = aPos.Y(); + aGlyph.x = aPos.getX(); + aGlyph.y = aPos.getY(); cairo_glyphs.push_back(aGlyph); if (pGlyph->IsVertical()) diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx index 359c33026cfd..da0a406dea0b 100644 --- a/vcl/unx/generic/print/genpspgraphics.cxx +++ b/vcl/unx/generic/print/genpspgraphics.cxx @@ -149,10 +149,10 @@ void PspSalLayout::InitFont() const void GenPspGraphics::DrawTextLayout(const GenericSalLayout& rLayout) { const GlyphItem* pGlyph; - Point aPos; + DevicePoint aPos; int nStart = 0; while (rLayout.GetNextGlyph(&pGlyph, aPos, nStart)) - m_pPrinterGfx->DrawGlyph(aPos, *pGlyph); + m_pPrinterGfx->DrawGlyph(Point(aPos.getX(), aPos.getY()), *pGlyph); } FontCharMapRef GenPspGraphics::GetFontCharMap() const diff --git a/vcl/win/gdi/DWriteTextRenderer.cxx b/vcl/win/gdi/DWriteTextRenderer.cxx index 2f089ee3d2d4..fbed3d28eddf 100644 --- a/vcl/win/gdi/DWriteTextRenderer.cxx +++ b/vcl/win/gdi/DWriteTextRenderer.cxx @@ -252,15 +252,15 @@ bool D2DWriteTextOutRenderer::performRender(GenericSalLayout const & rLayout, Sa mpRT->BeginDraw(); int nStart = 0; - Point aPos(0, 0); + DevicePoint aPos; const GlyphItem* pGlyph; while (rLayout.GetNextGlyph(&pGlyph, aPos, nStart)) { UINT16 glyphIndices[] = { pGlyph->glyphId() }; FLOAT glyphAdvances[] = { static_cast<FLOAT>(pGlyph->m_nNewWidth) / fHScale }; DWRITE_GLYPH_OFFSET glyphOffsets[] = { { 0.0f, 0.0f }, }; - D2D1_POINT_2F baseline = { static_cast<FLOAT>(aPos.X() - bounds.Left()) / fHScale, - static_cast<FLOAT>(aPos.Y() - bounds.Top()) }; + D2D1_POINT_2F baseline = { static_cast<FLOAT>(aPos.getX() - bounds.Left()) / fHScale, + static_cast<FLOAT>(aPos.getY() - bounds.Top()) }; WinFontTransformGuard aTransformGuard(mpRT, fHScale, rLayout, baseline, pGlyph->IsVertical()); DWRITE_GLYPH_RUN glyphs = { mpFontFace, diff --git a/vcl/win/gdi/winlayout.cxx b/vcl/win/gdi/winlayout.cxx index 04178bf877d2..cb9bcc6a29da 100644 --- a/vcl/win/gdi/winlayout.cxx +++ b/vcl/win/gdi/winlayout.cxx @@ -81,7 +81,7 @@ bool ExTextOutRenderer::operator()(GenericSalLayout const& rLayout, SalGraphics& HDC hDC) { int nStart = 0; - Point aPos(0, 0); + DevicePoint aPos; const GlyphItem* pGlyph; const WinFontInstance* pWinFont = static_cast<const WinFontInstance*>(&rLayout.GetFont()); UINT nTextAlign = GetTextAlign(hDC); @@ -105,8 +105,8 @@ bool ExTextOutRenderer::operator()(GenericSalLayout const& rLayout, SalGraphics& if (nCurTextAlign != nNewTextAlign) SetTextAlign(hDC, nNewTextAlign); - ExtTextOutW(hDC, aPos.X(), aPos.Y() + nYOffset, ETO_GLYPH_INDEX, nullptr, &glyphWStr, 1, - nullptr); + ExtTextOutW(hDC, aPos.getX(), aPos.getY() + nYOffset, ETO_GLYPH_INDEX, nullptr, &glyphWStr, + 1, nullptr); nCurTextAlign = nNewTextAlign; } |