Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
6ca2d0d6
Kaydet (Commit)
6ca2d0d6
authored
Tem 18, 2014
tarafından
Norbert Thiebaud
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
vcl use DeviceCoordinate got GetNextGlyphs
Change-Id: I0b03973b2d09a0ce51a6ee7dcca5a310a544c3a9
üst
cd3d26b7
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
65 additions
and
58 deletions
+65
-58
outdev.hxx
include/vcl/outdev.hxx
+5
-2
genpspgraphics.cxx
vcl/generic/print/genpspgraphics.cxx
+2
-2
sallayout.hxx
vcl/inc/sallayout.hxx
+5
-5
ctlayout.cxx
vcl/quartz/ctlayout.cxx
+2
-2
pdfwriter_impl.cxx
vcl/source/gdi/pdfwriter_impl.cxx
+3
-3
sallayout.cxx
vcl/source/gdi/sallayout.cxx
+11
-11
graphite_layout.cxx
vcl/source/glyphs/graphite_layout.cxx
+3
-3
text.cxx
vcl/source/outdev/text.cxx
+15
-13
textline.cxx
vcl/source/outdev/textline.cxx
+7
-5
winlayout.cxx
vcl/win/source/gdi/winlayout.cxx
+12
-12
No files found.
include/vcl/outdev.hxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -941,9 +941,12 @@ public:
FontUnderline
eOverline
,
bool
bUnderlineAbove
=
false
);
void
ImplDrawTextLine
(
long
nBaseX
,
long
nX
,
long
nY
,
long
nWidth
,
FontStrikeout
eStrikeout
,
FontUnderline
eUnderline
,
FontUnderline
eOverline
,
bool
bUnderlineAbove
);
void
ImplDrawTextLine
(
long
nBaseX
,
long
nX
,
long
nY
,
DeviceCoordinate
nWidth
,
FontStrikeout
eStrikeout
,
FontUnderline
eUnderline
,
FontUnderline
eOverline
,
bool
bUnderlineAbove
);
void
ImplDrawTextLines
(
SalLayout
&
,
FontStrikeout
eStrikeout
,
FontUnderline
eUnderline
,
FontUnderline
eOverline
,
bool
bWordLine
,
bool
bUnderlineAbove
);
void
ImplDrawTextLines
(
SalLayout
&
,
FontStrikeout
eStrikeout
,
FontUnderline
eUnderline
,
FontUnderline
eOverline
,
bool
bWordLine
,
bool
bUnderlineAbove
);
void
DrawWaveLine
(
const
Point
&
rStartPos
,
const
Point
&
rEndPos
);
...
...
vcl/generic/print/genpspgraphics.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -709,7 +709,7 @@ static void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx
{
const
int
nMaxGlyphs
=
200
;
sal_GlyphId
aGlyphAry
[
nMaxGlyphs
];
sal_Int32
aWidthAry
[
nMaxGlyphs
];
DeviceCoordinate
aWidthAry
[
nMaxGlyphs
];
sal_Int32
aIdxAry
[
nMaxGlyphs
];
sal_Unicode
aUnicodes
[
nMaxGlyphs
];
int
aCharPosAry
[
nMaxGlyphs
];
...
...
@@ -743,7 +743,7 @@ static void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx
if
(
!
nGlyphCount
)
break
;
sal_Int32
nXOffset
=
0
;
DeviceCoordinate
nXOffset
=
0
;
for
(
int
i
=
0
;
i
<
nGlyphCount
;
++
i
)
{
nXOffset
+=
aWidthAry
[
i
];
...
...
vcl/inc/sallayout.hxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -179,8 +179,8 @@ public:
// methods using glyph indexing
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphIdAry
,
Point
&
rPos
,
int
&
,
long
*
pGlyphAdvAry
=
NULL
,
int
*
pCharPosAry
=
NULL
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
=
0
;
DeviceCoordinate
*
pGlyphAdvAry
=
NULL
,
int
*
pCharPosAry
=
NULL
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
=
0
;
virtual
bool
GetOutline
(
SalGraphics
&
,
::
basegfx
::
B2DPolyPolygonVector
&
)
const
;
virtual
bool
GetBoundRect
(
SalGraphics
&
,
Rectangle
&
)
const
;
...
...
@@ -233,7 +233,7 @@ public:
virtual
DeviceCoordinate
FillDXArray
(
DeviceCoordinate
*
pDXArray
)
const
SAL_OVERRIDE
;
virtual
void
GetCaretPositions
(
int
nArraySize
,
long
*
pCaretXArray
)
const
SAL_OVERRIDE
;
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphIdxAry
,
Point
&
rPos
,
int
&
,
long
*
pGlyphAdvAry
,
int
*
pCharPosAry
,
int
&
,
DeviceCoordinate
*
pGlyphAdvAry
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
pFallbackFonts
)
const
SAL_OVERRIDE
;
virtual
bool
GetOutline
(
SalGraphics
&
,
::
basegfx
::
B2DPolyPolygonVector
&
)
const
SAL_OVERRIDE
;
...
...
@@ -336,8 +336,8 @@ public:
// used by display layers
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphIdxAry
,
Point
&
rPos
,
int
&
,
long
*
pGlyphAdvAry
=
NULL
,
int
*
pCharPosAry
=
NULL
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
SAL_OVERRIDE
;
DeviceCoordinate
*
pGlyphAdvAry
=
NULL
,
int
*
pCharPosAry
=
NULL
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
SAL_OVERRIDE
;
protected
:
GenericSalLayout
();
...
...
vcl/quartz/ctlayout.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -39,7 +39,7 @@ public:
virtual
bool
DrawTextSpecial
(
SalGraphics
&
rGraphics
,
sal_uInt32
flags
)
const
SAL_OVERRIDE
;
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pOutGlyphIds
,
Point
&
rPos
,
int
&
,
long
*
pGlyphAdvances
,
int
*
pCharIndexes
,
DeviceCoordinate
*
pGlyphAdvances
,
int
*
pCharIndexes
,
const
PhysicalFontFace
**
pFallbackFonts
)
const
SAL_OVERRIDE
;
virtual
long
GetTextWidth
()
const
SAL_OVERRIDE
;
...
...
@@ -473,7 +473,7 @@ bool CTLayout::CacheGlyphLayout(void) const // eew!
}
int
CTLayout
::
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pOutGlyphIds
,
Point
&
rPos
,
int
&
nStart
,
long
*
pGlyphAdvances
,
int
*
pCharIndexes
,
DeviceCoordinate
*
pGlyphAdvances
,
int
*
pCharIndexes
,
const
PhysicalFontFace
**
pFallbackFonts
)
const
{
if
(
!
mpCTLine
)
...
...
vcl/source/gdi/pdfwriter_impl.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -7416,7 +7416,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
aUnicodes
.
reserve
(
nMaxGlyphs
);
sal_Int32
pUnicodesPerGlyph
[
nMaxGlyphs
];
int
pCharPosAry
[
nMaxGlyphs
];
long
nAdvanceWidths
[
nMaxGlyphs
];
DeviceCoordinate
nAdvanceWidths
[
nMaxGlyphs
];
const
PhysicalFontFace
*
pFallbackFonts
[
nMaxGlyphs
]
=
{
NULL
};
bool
bVertical
=
m_aCurrentPDFState
.
m_aFont
.
IsVertical
();
int
nGlyphs
;
...
...
@@ -7655,7 +7655,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
{
Point
aPos
,
aStartPt
;
sal_Int32
nWidth
=
0
;
long
nAdvance
=
0
;
DeviceCoordinate
nAdvance
=
0
;
for
(
int
nStart
=
0
;;)
{
sal_GlyphId
aGlyphId
;
...
...
@@ -7758,7 +7758,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
{
Point
aPos
;
sal_GlyphId
aGlyphId
;
long
nAdvance
;
DeviceCoordinate
nAdvance
;
if
(
!
rLayout
.
GetNextGlyphs
(
1
,
&
aGlyphId
,
aPos
,
nStart
,
&
nAdvance
)
)
break
;
...
...
vcl/source/gdi/sallayout.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -1298,7 +1298,7 @@ sal_Int32 GenericSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int n
}
int
GenericSalLayout
::
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphs
,
Point
&
rPos
,
int
&
nStart
,
long
*
pGlyphAdvAry
,
int
*
pCharPosAry
,
int
&
nStart
,
DeviceCoordinate
*
pGlyphAdvAry
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
{
GlyphVector
::
const_iterator
pG
=
m_GlyphItems
.
begin
();
...
...
@@ -1607,7 +1607,7 @@ void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
int
nStartOld
[
MAX_FALLBACK
];
int
nStartNew
[
MAX_FALLBACK
];
int
nCharPos
[
MAX_FALLBACK
];
long
nGlyphAdv
[
MAX_FALLBACK
];
DeviceCoordinate
nGlyphAdv
[
MAX_FALLBACK
];
int
nValid
[
MAX_FALLBACK
]
=
{
0
};
sal_GlyphId
nDummy
;
...
...
@@ -1640,7 +1640,7 @@ void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
nValid
[
nLevel
]
=
mpLayouts
[
n
]
->
GetNextGlyphs
(
1
,
&
nDummy
,
aPos
,
nStartNew
[
nLevel
],
&
nGlyphAdv
[
nLevel
],
&
nCharPos
[
nLevel
]
);
#ifdef MULTI_SL_DEBUG
if
(
nValid
[
nLevel
])
fprintf
(
mslLog
(),
"layout[%d]->GetNextGlyphs %d,%d x%d a%d c%d %x
\n
"
,
n
,
nStartOld
[
nLevel
],
nStartNew
[
nLevel
],
aPos
.
X
(),
nGlyphAdv
[
nLevel
],
nCharPos
[
nLevel
],
if
(
nValid
[
nLevel
])
fprintf
(
mslLog
(),
"layout[%d]->GetNextGlyphs %d,%d x%d a%d c%d %x
\n
"
,
n
,
nStartOld
[
nLevel
],
nStartNew
[
nLevel
],
aPos
.
X
(),
(
long
)
nGlyphAdv
[
nLevel
],
nCharPos
[
nLevel
],
rArgs
.
mpStr
[
nCharPos
[
nLevel
]]);
#endif
if
(
(
n
>
0
)
&&
!
nValid
[
nLevel
]
)
...
...
@@ -1710,7 +1710,7 @@ void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
nValid
[
0
]
=
mpLayouts
[
0
]
->
GetNextGlyphs
(
1
,
&
nDummy
,
aPos
,
nStartNew
[
0
],
&
nGlyphAdv
[
0
],
&
nCharPos
[
0
]
);
#ifdef MULTI_SL_DEBUG
if
(
nValid
[
0
])
fprintf
(
mslLog
(),
"layout[0]->GetNextGlyphs %d,%d x%d a%d c%d %x
\n
"
,
nStartOld
[
0
],
nStartNew
[
0
],
aPos
.
X
(),
nGlyphAdv
[
0
],
nCharPos
[
0
],
rArgs
.
mpStr
[
nCharPos
[
0
]]);
if
(
nValid
[
0
])
fprintf
(
mslLog
(),
"layout[0]->GetNextGlyphs %d,%d x%d a%d c%d %x
\n
"
,
nStartOld
[
0
],
nStartNew
[
0
],
aPos
.
X
(),
(
long
)
nGlyphAdv
[
0
],
nCharPos
[
0
],
rArgs
.
mpStr
[
nCharPos
[
0
]]);
#endif
if
(
!
nValid
[
0
]
)
break
;
...
...
@@ -1718,7 +1718,7 @@ void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
}
// skip to end of layout run and calculate its advance width
int
nRunAdvance
=
0
;
DeviceCoordinate
nRunAdvance
=
0
;
bool
bKeepNotDef
=
(
nFBLevel
>=
nLevel
);
for
(;;)
{
...
...
@@ -1728,9 +1728,9 @@ void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
nStartOld
[
n
]
=
nStartNew
[
n
];
int
nOrigCharPos
=
nCharPos
[
n
];
nValid
[
n
]
=
mpLayouts
[
n
]
->
GetNextGlyphs
(
1
,
&
nDummy
,
aPos
,
nStartNew
[
n
],
&
nGlyphAdv
[
n
],
&
nCharPos
[
n
]
);
nStartNew
[
n
],
&
nGlyphAdv
[
n
],
&
nCharPos
[
n
]
);
#ifdef MULTI_SL_DEBUG
if
(
nValid
[
n
])
fprintf
(
mslLog
(),
"layout[%d]->GetNextGlyphs %d,%d a%d c%d %x
\n
"
,
n
,
nStartOld
[
n
],
nStartNew
[
n
],
nGlyphAdv
[
n
],
nCharPos
[
n
],
rArgs
.
mpStr
[
nCharPos
[
n
]]);
if
(
nValid
[
n
])
fprintf
(
mslLog
(),
"layout[%d]->GetNextGlyphs %d,%d a%d c%d %x
\n
"
,
n
,
nStartOld
[
n
],
nStartNew
[
n
],
(
long
)
nGlyphAdv
[
n
],
nCharPos
[
n
],
rArgs
.
mpStr
[
nCharPos
[
n
]]);
#endif
// break after last glyph of active layout
if
(
!
nValid
[
n
]
)
...
...
@@ -2015,7 +2015,7 @@ void MultiSalLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) cons
}
int
MultiSalLayout
::
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphIdxAry
,
Point
&
rPos
,
int
&
nStart
,
long
*
pGlyphAdvAry
,
int
*
pCharPosAry
,
int
&
nStart
,
DeviceCoordinate
*
pGlyphAdvAry
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
pFallbackFonts
)
const
{
// for multi-level fallback only single glyphs should be used
...
...
@@ -2041,8 +2041,8 @@ int MultiSalLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphIdxAry, Point& r
{
if
(
pGlyphAdvAry
)
{
long
w
=
pGlyphAdvAry
[
i
];
w
=
static_cast
<
long
>
(
w
*
fUnitMul
+
0.5
);
DeviceCoordinate
w
=
pGlyphAdvAry
[
i
];
w
=
static_cast
<
DeviceCoordinate
>
(
w
*
fUnitMul
+
0.5
);
pGlyphAdvAry
[
i
]
=
w
;
}
pGlyphIdxAry
[
i
]
|=
nFontTag
;
...
...
@@ -2063,7 +2063,7 @@ int MultiSalLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphIdxAry, Point& r
}
bool
MultiSalLayout
::
GetOutline
(
SalGraphics
&
rGraphics
,
::
basegfx
::
B2DPolyPolygonVector
&
rPPV
)
const
::
basegfx
::
B2DPolyPolygonVector
&
rPPV
)
const
{
bool
bRet
=
false
;
...
...
vcl/source/glyphs/graphite_layout.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -1212,8 +1212,8 @@ void GraphiteLayout::GetCaretPositions( int nArraySize, long* pCaretXArray ) con
// The logic in this method must match that expected in MultiSalLayout which
// is used when glyph fallback is in operation.
int
GraphiteLayout
::
GetNextGlyphs
(
int
length
,
sal_GlyphId
*
glyph_out
,
::
Point
&
aPosOut
,
int
&
glyph_slot
,
sal_Int32
*
glyph_adv
,
int
*
char_index
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
::
Point
&
aPosOut
,
int
&
glyph_slot
,
DeviceCoordinate
*
glyph_adv
,
int
*
char_index
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
{
// Sanity check on the slot index.
if
(
glyph_slot
>=
signed
(
mvGlyphs
.
size
()))
...
...
@@ -1277,7 +1277,7 @@ int GraphiteLayout::GetNextGlyphs( int length, sal_GlyphId * glyph_out,
#ifdef GRLAYOUT_DEBUG
fprintf
(
grLog
(),
"GetNextGlyphs g%d gid%d c%d x%ld,%ld adv%ld, pos %ld,%ld
\n
"
,
glyph_slot
-
1
,
glyph_itr
->
maGlyphId
,
mvGlyph2Char
[
glyph_slot
-
1
],
glyph_itr
->
maLinearPos
.
X
(),
glyph_itr
->
maLinearPos
.
Y
(),
nGlyphAdvance
,
mvGlyph2Char
[
glyph_slot
-
1
],
glyph_itr
->
maLinearPos
.
X
(),
glyph_itr
->
maLinearPos
.
Y
(),
(
long
)
nGlyphAdvance
,
aPosOut
.
X
(),
aPosOut
.
Y
());
#endif
...
...
vcl/source/outdev/text.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -1330,7 +1330,7 @@ SalLayout* OutputDevice::ImplLayout(const OUString& rOrigStr,
DeviceCoordinate
*
pDXPixelArray
=
NULL
;
if
(
nLogicalWidth
&&
mbMap
)
{
nPixelWidth
=
ImplLogicWidthToDevicePixel
(
nLogicalWidth
);
nPixelWidth
=
LogicWidthToDeviceCoordinate
(
nLogicalWidth
);
}
if
(
pDXArray
)
...
...
@@ -1340,9 +1340,11 @@ SalLayout* OutputDevice::ImplLayout(const OUString& rOrigStr,
// convert from logical units to font units using a temporary array
pDXPixelArray
=
(
DeviceCoordinate
*
)
alloca
(
nLen
*
sizeof
(
DeviceCoordinate
)
);
// using base position for better rounding a.k.a. "dancing characters"
DeviceCoordinate
nPixelXOfs
=
ImplLogicWidthToDevicePixel
(
rLogicalPos
.
X
()
);
DeviceCoordinate
nPixelXOfs
=
LogicWidthToDeviceCoordinate
(
rLogicalPos
.
X
()
);
for
(
int
i
=
0
;
i
<
nLen
;
++
i
)
pDXPixelArray
[
i
]
=
ImplLogicWidthToDevicePixel
(
rLogicalPos
.
X
()
+
pDXArray
[
i
]
)
-
nPixelXOfs
;
{
pDXPixelArray
[
i
]
=
LogicWidthToDeviceCoordinate
(
rLogicalPos
.
X
()
+
pDXArray
[
i
]
)
-
nPixelXOfs
;
}
}
else
{
...
...
@@ -1422,12 +1424,12 @@ sal_Int32 OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
long
nWidthFactor
=
pSalLayout
->
GetUnitsPerPixel
();
long
nSubPixelFactor
=
(
nWidthFactor
<
64
)
?
64
:
1
;
nTextWidth
*=
nWidthFactor
*
nSubPixelFactor
;
long
nTextPixelWidth
=
ImplLogicWidthToDevicePixel
(
nTextWidth
);
long
nExtraPixelWidth
=
0
;
DeviceCoordinate
nTextPixelWidth
=
LogicWidthToDeviceCoordinate
(
nTextWidth
);
DeviceCoordinate
nExtraPixelWidth
=
0
;
if
(
nCharExtra
!=
0
)
{
nCharExtra
*=
nWidthFactor
*
nSubPixelFactor
;
nExtraPixelWidth
=
ImplLogicWidthToDevicePixel
(
nCharExtra
);
nExtraPixelWidth
=
LogicWidthToDeviceCoordinate
(
nCharExtra
);
}
nRetVal
=
pSalLayout
->
GetTextBreak
(
nTextPixelWidth
,
nExtraPixelWidth
,
nSubPixelFactor
);
...
...
@@ -1456,12 +1458,12 @@ sal_Int32 OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
long
nSubPixelFactor
=
(
nWidthFactor
<
64
)
?
64
:
1
;
nTextWidth
*=
nWidthFactor
*
nSubPixelFactor
;
long
nTextPixelWidth
=
ImplLogicWidthToDevicePixel
(
nTextWidth
);
long
nExtraPixelWidth
=
0
;
DeviceCoordinate
nTextPixelWidth
=
LogicWidthToDeviceCoordinate
(
nTextWidth
);
DeviceCoordinate
nExtraPixelWidth
=
0
;
if
(
nCharExtra
!=
0
)
{
nCharExtra
*=
nWidthFactor
*
nSubPixelFactor
;
nExtraPixelWidth
=
ImplLogicWidthToDevicePixel
(
nCharExtra
);
nExtraPixelWidth
=
LogicWidthToDeviceCoordinate
(
nCharExtra
);
}
// calculate un-hyphenated break position
...
...
@@ -1646,14 +1648,14 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const Rectangle& r
{
long
nMnemonicX
;
long
nMnemonicY
;
long
nMnemonicWidth
;
DeviceCoordinate
nMnemonicWidth
;
long
*
pCaretXArray
=
(
long
*
)
alloca
(
2
*
sizeof
(
long
)
*
nLineLen
);
/*sal_Bool bRet =*/
_rLayout
.
GetCaretPositions
(
aStr
,
pCaretXArray
,
nIndex
,
nLineLen
);
long
lc_x1
=
pCaretXArray
[
2
*
(
nMnemonicPos
-
nIndex
)];
long
lc_x2
=
pCaretXArray
[
2
*
(
nMnemonicPos
-
nIndex
)
+
1
];
nMnemonicWidth
=
rTargetDevice
.
ImplLogicWidthToDevicePixel
(
::
abs
((
int
)(
lc_x1
-
lc_x2
))
);
nMnemonicWidth
=
rTargetDevice
.
LogicWidthToDeviceCoordinate
(
::
abs
((
long
)(
lc_x1
-
lc_x2
))
);
Point
aTempPos
=
rTargetDevice
.
LogicToPixel
(
aPos
);
nMnemonicX
=
rTargetDevice
.
GetOutOffXPixel
()
+
aTempPos
.
X
()
+
rTargetDevice
.
ImplLogicWidthToDevicePixel
(
std
::
min
(
lc_x1
,
lc_x2
)
);
...
...
@@ -1714,14 +1716,14 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const Rectangle& r
long
nMnemonicX
=
0
;
long
nMnemonicY
=
0
;
long
nMnemonicWidth
=
0
;
DeviceCoordinate
nMnemonicWidth
=
0
;
if
(
nMnemonicPos
!=
-
1
)
{
long
*
pCaretXArray
=
(
long
*
)
alloca
(
2
*
sizeof
(
long
)
*
aStr
.
getLength
()
);
/*sal_Bool bRet =*/
_rLayout
.
GetCaretPositions
(
aStr
,
pCaretXArray
,
0
,
aStr
.
getLength
()
);
long
lc_x1
=
pCaretXArray
[
2
*
(
nMnemonicPos
)];
long
lc_x2
=
pCaretXArray
[
2
*
(
nMnemonicPos
)
+
1
];
nMnemonicWidth
=
rTargetDevice
.
ImplLogicWidthToDevicePixel
(
::
abs
((
int
)(
lc_x1
-
lc_x2
))
);
nMnemonicWidth
=
rTargetDevice
.
LogicWidthToDeviceCoordinate
(
::
abs
((
long
)(
lc_x1
-
lc_x2
))
);
Point
aTempPos
=
rTargetDevice
.
LogicToPixel
(
aPos
);
nMnemonicX
=
rTargetDevice
.
GetOutOffXPixel
()
+
aTempPos
.
X
()
+
rTargetDevice
.
ImplLogicWidthToDevicePixel
(
std
::
min
(
lc_x1
,
lc_x2
)
);
...
...
vcl/source/outdev/textline.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -668,7 +668,7 @@ void OutputDevice::ImplDrawStrikeoutChar( long nBaseX, long nBaseY,
}
void
OutputDevice
::
ImplDrawTextLine
(
long
nX
,
long
nY
,
long
nDistX
,
long
nWidth
,
long
nDistX
,
DeviceCoordinate
nWidth
,
FontStrikeout
eStrikeout
,
FontUnderline
eUnderline
,
FontUnderline
eOverline
,
...
...
@@ -745,8 +745,9 @@ void OutputDevice::ImplDrawTextLines( SalLayout& rSalLayout, FontStrikeout eStri
// calculate distance of each word from the base point
Point
aPos
;
sal_Int32
nDist
=
0
,
nWidth
=
0
;
long
nAdvance
=
0
;
DeviceCoordinate
nDist
=
0
;
DeviceCoordinate
nWidth
=
0
;
DeviceCoordinate
nAdvance
=
0
;
for
(
int
nStart
=
0
;;)
{
// iterate through the layouted glyphs
...
...
@@ -964,9 +965,10 @@ void OutputDevice::DrawTextLine( const Point& rPos, long nWidth,
InitFont
();
Point
aPos
=
ImplLogicToDevicePixel
(
rPos
);
nWidth
=
ImplLogicWidthToDevicePixel
(
nWidth
);
DeviceCoordinate
fWidth
;
fWidth
=
LogicWidthToDeviceCoordinate
(
nWidth
);
aPos
+=
Point
(
mnTextOffX
,
mnTextOffY
);
ImplDrawTextLine
(
aPos
.
X
(),
aPos
.
X
(),
0
,
n
Width
,
eStrikeout
,
eUnderline
,
eOverline
,
bUnderlineAbove
);
ImplDrawTextLine
(
aPos
.
X
(),
aPos
.
X
(),
0
,
f
Width
,
eStrikeout
,
eUnderline
,
eOverline
,
bUnderlineAbove
);
if
(
mpAlphaVDev
)
mpAlphaVDev
->
DrawTextLine
(
rPos
,
nWidth
,
eStrikeout
,
eUnderline
,
eOverline
,
bUnderlineAbove
);
...
...
vcl/win/source/gdi/winlayout.cxx
Dosyayı görüntüle @
6ca2d0d6
...
...
@@ -142,8 +142,8 @@ public:
virtual
void
DrawText
(
SalGraphics
&
)
const
;
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphs
,
Point
&
rPos
,
int
&
,
sal_Int32
*
pGlyphAdvances
,
int
*
pCharIndexes
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
;
DeviceCoordinate
*
pGlyphAdvances
,
int
*
pCharIndexes
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
;
virtual
DeviceCoordinate
FillDXArray
(
DeviceCoordinate
*
pDXArray
)
const
;
virtual
sal_Int32
GetTextBreak
(
long
nMaxWidth
,
long
nCharExtra
,
int
nFactor
)
const
SAL_OVERRIDE
;
...
...
@@ -514,8 +514,8 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
}
int
SimpleWinLayout
::
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphIds
,
Point
&
rPos
,
int
&
nStart
,
long
*
pGlyphAdvances
,
int
*
pCharIndexes
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
DeviceCoordinate
*
pGlyphAdvances
,
int
*
pCharIndexes
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
{
// return zero if no more glyph found
if
(
nStart
>=
mnGlyphCount
)
...
...
@@ -963,8 +963,8 @@ public:
virtual
void
AdjustLayout
(
ImplLayoutArgs
&
);
virtual
void
DrawText
(
SalGraphics
&
)
const
;
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphs
,
Point
&
rPos
,
int
&
,
sal_Int32
*
pGlyphAdvances
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
;
DeviceCoordinate
*
pGlyphAdvances
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
;
virtual
DeviceCoordinate
FillDXArray
(
DeviceCoordinate
*
pDXArray
)
const
;
virtual
sal_Int32
GetTextBreak
(
long
nMaxWidth
,
long
nCharExtra
,
int
nFactor
)
const
SAL_OVERRIDE
;
...
...
@@ -1579,8 +1579,8 @@ bool UniscribeLayout::GetItemSubrange( const VisualItem& rVisualItem,
}
int
UniscribeLayout
::
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphs
,
Point
&
rPos
,
int
&
nStartx8
,
sal_Int32
*
pGlyphAdvances
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
int
&
nStartx8
,
DeviceCoordinate
*
pGlyphAdvances
,
int
*
pCharPosAry
,
const
PhysicalFontFace
**
/*pFallbackFonts*/
)
const
{
// HACK to allow fake-glyph insertion (e.g. for kashidas)
// TODO: use iterator idiom instead of GetNextGlyphs(...)
...
...
@@ -2647,8 +2647,8 @@ public:
// methods using glyph indexing
virtual
int
GetNextGlyphs
(
int
nLen
,
sal_GlyphId
*
pGlyphIdxAry
,
::
Point
&
rPos
,
int
&
,
long
*
pGlyphAdvAry
=
NULL
,
int
*
pCharPosAry
=
NULL
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
;
DeviceCoordinate
*
pGlyphAdvAry
=
NULL
,
int
*
pCharPosAry
=
NULL
,
const
PhysicalFontFace
**
pFallbackFonts
=
NULL
)
const
;
// used by glyph+font+script fallback
virtual
void
MoveGlyph
(
int
nStart
,
long
nNewXPos
);
...
...
@@ -2794,8 +2794,8 @@ void GraphiteWinLayout::GetCaretPositions( int nArraySize, long* pCaretXArray )
}
int
GraphiteWinLayout
::
GetNextGlyphs
(
int
length
,
sal_GlyphId
*
glyph_out
,
::
Point
&
pos_out
,
int
&
glyph_slot
,
long
*
glyph_adv
,
int
*
char_index
,
const
PhysicalFontFace
**
pFallbackFonts
)
const
::
Point
&
pos_out
,
int
&
glyph_slot
,
DeviceCoordinate
*
glyph_adv
,
int
*
char_index
,
const
PhysicalFontFace
**
pFallbackFonts
)
const
{
maImpl
.
DrawBase
()
=
WinLayout
::
maDrawBase
;
maImpl
.
DrawOffset
()
=
WinLayout
::
maDrawOffset
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment