You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by hd...@apache.org on 2013/12/16 17:07:43 UTC
svn commit: r1551244 [2/2] - in /openoffice/trunk/main: padmin/source/
vcl/aqua/source/gdi/ vcl/inc/ vcl/inc/aqua/ vcl/inc/os2/ vcl/inc/unx/
vcl/inc/vcl/ vcl/inc/win/ vcl/os2/source/gdi/ vcl/source/fontsubset/
vcl/source/gdi/ vcl/source/glyphs/ vcl/unx...
Modified: openoffice/trunk/main/vcl/unx/generic/gdi/gcach_xpeer.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/gdi/gcach_xpeer.hxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/gdi/gcach_xpeer.hxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/gdi/gcach_xpeer.hxx Mon Dec 16 16:07:41 2013
@@ -32,6 +32,7 @@
class SalDisplay;
struct MultiScreenGlyph;
+typedef Glyph XRenderGlyph;
class X11GlyphPeer
: public GlyphCachePeer
@@ -40,24 +41,24 @@ public:
X11GlyphPeer();
virtual ~X11GlyphPeer();
- Pixmap GetPixmap( ServerFont&, int nGlyphIndex, int nScreen );
- const RawBitmap* GetRawBitmap( ServerFont&, int nGlyphIndex );
+ Pixmap GetPixmap( ServerFont&, sal_GlyphId, int nScreen );
+ const RawBitmap* GetRawBitmap( ServerFont&, sal_GlyphId );
bool ForcedAntialiasing( const ServerFont&, int nScreen ) const;
GlyphSet GetGlyphSet( ServerFont&, int nScreen );
- Glyph GetGlyphId( ServerFont&, int nGlyphIndex );
+ XRenderGlyph GetXRGlyph( ServerFont&, sal_GlyphId );
protected:
void InitAntialiasing();
virtual void RemovingFont( ServerFont& );
- virtual void RemovingGlyph( ServerFont&, GlyphData&, int nGlyphIndex );
+ virtual void RemovingGlyph( ServerFont&, GlyphData&, sal_GlyphId );
MultiScreenGlyph* PrepareForMultiscreen( ExtGlyphData& ) const;
void SetRenderGlyph( GlyphData&, Glyph ) const;
void SetRawBitmap( GlyphData&, const RawBitmap* ) const;
void SetPixmap( GlyphData&, Pixmap, int nScreen ) const;
- Glyph GetRenderGlyph( const GlyphData& ) const;
+ XRenderGlyph GetRenderGlyph( const GlyphData& ) const;
const RawBitmap* GetRawBitmap( const GlyphData& ) const;
Pixmap GetPixmap( const GlyphData&, int nScreen ) const;
Modified: openoffice/trunk/main/vcl/unx/generic/gdi/pspgraphics.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/gdi/pspgraphics.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/gdi/pspgraphics.cxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/gdi/pspgraphics.cxx Mon Dec 16 16:07:41 2013
@@ -603,7 +603,7 @@ bool PspFontLayout::LayoutText( ImplLayo
mbVertical = ((rArgs.mnFlags & SAL_LAYOUT_VERTICAL) != 0);
long nUnitsPerPixel = 1;
- int nOldGlyphId = -1;
+ sal_GlyphId aOldGlyphId( GF_DROPPED);
long nGlyphWidth = 0;
int nCharPos = -1;
Point aNewPos( 0, 0 );
@@ -622,7 +622,7 @@ bool PspFontLayout::LayoutText( ImplLayo
if( aFontEnc == RTL_TEXTENCODING_SYMBOL )
if( cChar < 256 )
cChar += 0xf000;
- int nGlyphIndex = cChar; // printer glyphs = unicode
+ sal_GlyphId aGlyphId( cChar); // printer glyphs = unicode
// update fallback_runs if needed
psp::CharacterMetric aMetric;
@@ -633,13 +633,13 @@ bool PspFontLayout::LayoutText( ImplLayo
// apply pair kerning to prev glyph if requested
if( SAL_LAYOUT_KERNING_PAIRS & rArgs.mnFlags )
{
- if( nOldGlyphId > 0 )
+ if( aOldGlyphId > 0 )
{
const std::list< KernPair >& rKernPairs = mrPrinterGfx.getKernPairs(mbVertical);
for( std::list< KernPair >::const_iterator it = rKernPairs.begin();
it != rKernPairs.end(); ++it )
{
- if( it->first == nOldGlyphId && it->second == nGlyphIndex )
+ if( (it->first == aOldGlyphId) && (it->second == aGlyphId) )
{
int nTextScale = mrPrinterGfx.GetFontWidth();
if( ! nTextScale )
@@ -654,25 +654,25 @@ bool PspFontLayout::LayoutText( ImplLayo
}
// finish previous glyph
- if( nOldGlyphId >= 0 )
+ if( aOldGlyphId != GF_DROPPED )
AppendGlyph( aPrevItem );
- nOldGlyphId = nGlyphIndex;
+ aOldGlyphId = aGlyphId;
aNewPos.X() += nGlyphWidth;
// prepare GlyphItem for appending it in next round
nUnitsPerPixel = mrPrinterGfx.GetCharWidth( cChar, cChar, &nGlyphWidth );
int nGlyphFlags = bRightToLeft ? GlyphItem::IS_RTL_GLYPH : 0;
- nGlyphIndex |= GF_ISCHAR;
- aPrevItem = GlyphItem( nCharPos, nGlyphIndex, aNewPos, nGlyphFlags, nGlyphWidth );
+ aGlyphId |= GF_ISCHAR;
+ aPrevItem = GlyphItem( nCharPos, aGlyphId, aNewPos, nGlyphFlags, nGlyphWidth );
}
// append last glyph item if any
- if( nOldGlyphId >= 0 )
+ if( aOldGlyphId != GF_DROPPED )
AppendGlyph( aPrevItem );
SetOrientation( mrPrinterGfx.GetFontAngle() );
SetUnitsPerPixel( nUnitsPerPixel );
- return (nOldGlyphId >= 0);
+ return (aOldGlyphId != GF_DROPPED);
}
class PspServerFontLayout : public ServerFontLayout
@@ -721,7 +721,7 @@ void PspServerFontLayout::InitFont() con
static void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx, bool bIsPspServerFontLayout )
{
const int nMaxGlyphs = 200;
- sal_uInt32 aGlyphAry[ nMaxGlyphs ]; // TODO: use sal_GlyphId
+ sal_GlyphId aGlyphAry[ nMaxGlyphs ];
sal_Int32 aWidthAry[ nMaxGlyphs ];
sal_Int32 aIdxAry [ nMaxGlyphs ];
sal_Unicode aUnicodes[ nMaxGlyphs ];
@@ -769,15 +769,15 @@ static void DrawPrinterLayout( const Sal
{
nXOffset += aWidthAry[ i ];
aIdxAry[ i ] = nXOffset / nUnitsPerPixel;
- sal_Int32 nGlyphIdx = aGlyphAry[i] & (GF_IDXMASK | GF_ROTMASK);
+ sal_GlyphId aGlyphId = aGlyphAry[i] & (GF_IDXMASK | GF_ROTMASK);
if( pText )
aUnicodes[i] = (aCharPosAry[i] >= nMinCharPos && aCharPosAry[i] <= nMaxCharPos) ? pText[ aCharPosAry[i] ] : 0;
else
- aUnicodes[i] = (aGlyphAry[i] & GF_ISCHAR) ? nGlyphIdx : 0;
- aGlyphAry[i] = nGlyphIdx;
+ aUnicodes[i] = (aGlyphAry[i] & GF_ISCHAR) ? aGlyphId : 0;
+ aGlyphAry[i] = aGlyphId;
}
- rGfx.DrawGlyphs( aPos, (sal_uInt32 *)aGlyphAry, aUnicodes, nGlyphCount, aIdxAry );
+ rGfx.DrawGlyphs( aPos, aGlyphAry, aUnicodes, nGlyphCount, aIdxAry );
}
}
@@ -964,38 +964,36 @@ sal_uLong PspGraphics::GetKernPairs( sal
return nHavePairs;
}
-sal_Bool PspGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
+bool PspGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
ServerFont* pSF = m_pServerFont[ nLevel ];
if( !pSF )
- return sal_False;
+ return false;
- nGlyphIndex &= ~GF_FONTMASK;
- const GlyphMetric& rGM = pSF->GetGlyphMetric( nGlyphIndex );
+ aGlyphId &= ~GF_FONTMASK;
+ const GlyphMetric& rGM = pSF->GetGlyphMetric( aGlyphId );
rRect = Rectangle( rGM.GetOffset(), rGM.GetSize() );
- return sal_True;
+ return true;
}
-sal_Bool PspGraphics::GetGlyphOutline( long nGlyphIndex,
+bool PspGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
::basegfx::B2DPolyPolygon& rB2DPolyPoly )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
ServerFont* pSF = m_pServerFont[ nLevel ];
if( !pSF )
- return sal_False;
+ return false;
- nGlyphIndex &= ~GF_FONTMASK;
- if( pSF->GetGlyphOutline( nGlyphIndex, rB2DPolyPoly ) )
- return sal_True;
-
- return sal_False;
+ aGlyphId &= ~GF_FONTMASK;
+ bool bOK = pSF->GetGlyphOutline( aGlyphId, rB2DPolyPoly );
+ return bOK;
}
SalLayout* PspGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
@@ -1037,7 +1035,7 @@ SalLayout* PspGraphics::GetTextLayout( I
sal_Bool PspGraphics::CreateFontSubset(
const rtl::OUString& rToFile,
const ImplFontData* pFont,
- sal_Int32* pGlyphIDs,
+ sal_GlyphId* pGlyphIds,
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphCount,
@@ -1055,7 +1053,7 @@ sal_Bool PspGraphics::CreateFontSubset(
bool bSuccess = rMgr.createFontSubset( rInfo,
aFont,
rToFile,
- pGlyphIDs,
+ pGlyphIds,
pEncoding,
pWidths,
nGlyphCount );
Modified: openoffice/trunk/main/vcl/unx/generic/gdi/salgdi3.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/gdi/salgdi3.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/gdi/salgdi3.cxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/gdi/salgdi3.cxx Mon Dec 16 16:07:41 2013
@@ -638,7 +638,7 @@ void X11SalGraphics::DrawServerAAFontStr
unsigned int aRenderAry[ MAXGLYPHS ];
for( int i = 0; i < nGlyphs; ++i )
- aRenderAry[ i ] = rGlyphPeer.GetGlyphId( rFont, aGlyphAry[i] );
+ aRenderAry[ i ] = rGlyphPeer.GetXRGlyph( rFont, aGlyphAry[i] );
rRenderPeer.CompositeString32( rEntry.m_aPicture, aDstPic,
aGlyphSet, aPos.X(), aPos.Y(), aRenderAry, nGlyphs );
}
@@ -1231,40 +1231,38 @@ X11SalGraphics::GetKernPairs( sal_uLong
// ---------------------------------------------------------------------------
-sal_Bool X11SalGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
+bool X11SalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
ServerFont* pSF = mpServerFont[ nLevel ];
if( !pSF )
- return sal_False;
+ return false;
- nGlyphIndex &= ~GF_FONTMASK;
- const GlyphMetric& rGM = pSF->GetGlyphMetric( nGlyphIndex );
+ aGlyphId &= ~GF_FONTMASK;
+ const GlyphMetric& rGM = pSF->GetGlyphMetric( aGlyphId );
rRect = Rectangle( rGM.GetOffset(), rGM.GetSize() );
- return sal_True;
+ return true;
}
// ---------------------------------------------------------------------------
-sal_Bool X11SalGraphics::GetGlyphOutline( long nGlyphIndex,
+bool X11SalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
::basegfx::B2DPolyPolygon& rPolyPoly )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
ServerFont* pSF = mpServerFont[ nLevel ];
if( !pSF )
- return sal_False;
-
- nGlyphIndex &= ~GF_FONTMASK;
- if( pSF->GetGlyphOutline( nGlyphIndex, rPolyPoly ) )
- return sal_True;
+ return false;
- return sal_False;
+ aGlyphId &= ~GF_FONTMASK;
+ bool bOK = pSF->GetGlyphOutline( aGlyphId, rPolyPoly );
+ return bOK;
}
//--------------------------------------------------------------------------
@@ -1328,7 +1326,7 @@ SystemFontData X11SalGraphics::GetSysFon
sal_Bool X11SalGraphics::CreateFontSubset(
const rtl::OUString& rToFile,
const ImplFontData* pFont,
- sal_Int32* pGlyphIDs,
+ sal_GlyphId* pGlyphIds,
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphCount,
@@ -1346,7 +1344,7 @@ sal_Bool X11SalGraphics::CreateFontSubse
bool bSuccess = rMgr.createFontSubset( rInfo,
aFont,
rToFile,
- pGlyphIDs,
+ pGlyphIds,
pEncoding,
pWidths,
nGlyphCount );
Modified: openoffice/trunk/main/vcl/unx/generic/gdi/xrender_peer.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/gdi/xrender_peer.hxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/gdi/xrender_peer.hxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/gdi/xrender_peer.hxx Mon Dec 16 16:07:41 2013
@@ -32,6 +32,8 @@ struct _XTrap; // on some older systems
#include <vcl/salgtype.hxx>
#include <osl/module.h>
+typedef Glyph XRenderGlyph;
+
class XRenderPeer
{
public:
@@ -70,9 +72,9 @@ public:
GlyphSet CreateGlyphSet() const;
void FreeGlyphSet( GlyphSet ) const;
- void AddGlyph( GlyphSet, Glyph nGlyphId, const XGlyphInfo&,
+ void AddGlyph( GlyphSet, XRenderGlyph nXRGlyph, const XGlyphInfo&,
const char* pBuffer, int nBufSize ) const;
- void FreeGlyph( GlyphSet, Glyph nGlyphId ) const;
+ void FreeGlyph( GlyphSet, XRenderGlyph nXRGlyphId ) const;
void CompositeString32( Picture aSrc, Picture aDst, GlyphSet,
int nDstX, int nDstY, const unsigned* pText, int nTextLen ) const;
void FillRectangle( int nOp, Picture aDst, const XRenderColor*,
@@ -253,21 +255,21 @@ inline void XRenderPeer::FreeGlyphSet( G
#endif
}
-inline void XRenderPeer::AddGlyph( GlyphSet aGS, Glyph nGlyphId,
+inline void XRenderPeer::AddGlyph( GlyphSet aGS, XRenderGlyph nXRGlyph,
const XGlyphInfo& rGI, const char* pBuffer, int nBufSize ) const
{
#ifdef XRENDER_LINK
- XRenderAddGlyphs( mpDisplay, aGS, &nGlyphId, &rGI, 1,
+ XRenderAddGlyphs( mpDisplay, aGS, &nXRGlyph, &rGI, 1,
const_cast<char*>(pBuffer), nBufSize );
#else
- (*mpXRenderAddGlyphs)( mpDisplay, aGS, &nGlyphId, &rGI, 1,
+ (*mpXRenderAddGlyphs)( mpDisplay, aGS, &nXRGlyph, &rGI, 1,
const_cast<char*>(pBuffer), nBufSize );
#endif
}
-inline void XRenderPeer::FreeGlyph( GlyphSet aGS, Glyph nGlyphId ) const
+inline void XRenderPeer::FreeGlyph( GlyphSet aGS, XRenderGlyph nXRGlyph ) const
{
- (void)aGS; (void)nGlyphId;
+ (void)aGS; (void)nXRGlyph;
// XRenderFreeGlyphs not implemented yet for version<=0.2
// #108209# disabled because of crash potential,
@@ -277,9 +279,9 @@ inline void XRenderPeer::FreeGlyph( Glyp
if( mnRenderVersion >= 0x05 )
{
#ifdef XRENDER_LINK
- XRenderFreeGlyphs( mpDisplay, aGS, &nGlyphId, 1 );
+ XRenderFreeGlyphs( mpDisplay, aGS, &nXRGlyph, 1 );
#else
- (*mpXRenderFreeGlyphs)( mpDisplay, aGS, &nGlyphId, 1 );
+ (*mpXRenderFreeGlyphs)( mpDisplay, aGS, &nXRGlyph, 1 );
#endif
}
#endif
Modified: openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.cxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.cxx Mon Dec 16 16:07:41 2013
@@ -121,7 +121,7 @@ GlyphSet::GetCharID (
sal_Bool
GlyphSet::GetGlyphID (
- sal_uInt32 nGlyph,
+ sal_GlyphId nGlyph,
sal_Unicode nUnicode,
sal_uChar* nOutGlyphID,
sal_Int32* nOutGlyphSetID
@@ -164,7 +164,7 @@ GlyphSet::LookupCharID (
sal_Bool
GlyphSet::LookupGlyphID (
- sal_uInt32 nGlyph,
+ sal_GlyphId nGlyph,
sal_uChar* nOutGlyphID,
sal_Int32* nOutGlyphSetID
)
@@ -298,7 +298,7 @@ GlyphSet::AddCharID (
sal_Bool
GlyphSet::AddGlyphID (
- sal_uInt32 nGlyph,
+ sal_GlyphId nGlyph,
sal_Unicode nUnicode,
sal_uChar* nOutGlyphID,
sal_Int32* nOutGlyphSetID
@@ -494,7 +494,7 @@ GlyphSet::GetReencodedFontName (sal_Int3
void GlyphSet::DrawGlyphs(
PrinterGfx& rGfx,
const Point& rPoint,
- const sal_uInt32* pGlyphIds,
+ const sal_GlyphId* pGlyphIds,
const sal_Unicode* pUnicodes,
sal_Int16 nLen,
const sal_Int32* pDeltaArray )
@@ -814,7 +814,7 @@ static void CreatePSUploadableFont( True
std::stable_sort( aSorted.begin(), aSorted.end() );
std::vector< sal_uChar > aEncoding( nGlyphCount );
- std::vector< long > aRequestedGlyphs( nGlyphCount );
+ std::vector< sal_GlyphId> aRequestedGlyphs( nGlyphCount );
for( int i = 0; i < nGlyphCount; i++ )
{
Modified: openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.hxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.hxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/printergfx/glyphset.hxx Mon Dec 16 16:07:41 2013
@@ -53,7 +53,7 @@ private:
typedef std::hash_map< sal_Unicode, sal_uInt8 > char_map_t;
typedef std::list< char_map_t > char_list_t;
- typedef std::hash_map< sal_uInt32, sal_uInt8 > glyph_map_t;
+ typedef std::hash_map< sal_GlyphId, sal_uInt8 > glyph_map_t;
typedef std::list< glyph_map_t > glyph_list_t;
char_list_t maCharList;
@@ -75,11 +75,11 @@ private:
sal_Bool AddCharID (sal_Unicode nChar,
sal_uChar* nOutGlyphID,
sal_Int32* nOutGlyphSetID);
- sal_Bool GetGlyphID (sal_uInt32 nGlyph, sal_Unicode nUnicode,
+ sal_Bool GetGlyphID( sal_GlyphId nGlyphId, sal_Unicode nUnicode,
sal_uChar* nOutGlyphID, sal_Int32* nOutGlyphSetID);
- sal_Bool LookupGlyphID (sal_uInt32 nGlyph,
+ sal_Bool LookupGlyphID( sal_GlyphId nGlyphId,
sal_uChar* nOutGlyphID, sal_Int32* nOutGlyphSetID);
- sal_Bool AddGlyphID (sal_uInt32 nGlyph, sal_Unicode nUnicode,
+ sal_Bool AddGlyphID (sal_GlyphId nGlyphId, sal_Unicode nUnicode,
sal_uChar* nOutGlyphID,
sal_Int32* nOutGlyphSetID);
void AddNotdef (char_map_t &rCharMap);
@@ -116,7 +116,7 @@ public:
const sal_Int32* pDeltaArray = NULL);
void DrawGlyphs (PrinterGfx& rGfx,
const Point& rPoint,
- const sal_uInt32* pGlyphIds,
+ const sal_GlyphId* pGlyphIds,
const sal_Unicode* pUnicodes,
sal_Int16 nLen,
const sal_Int32* pDeltaArray );
Modified: openoffice/trunk/main/vcl/unx/generic/printergfx/text_gfx.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/generic/printergfx/text_gfx.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/generic/printergfx/text_gfx.cxx (original)
+++ openoffice/trunk/main/vcl/unx/generic/printergfx/text_gfx.cxx Mon Dec 16 16:07:41 2013
@@ -164,7 +164,7 @@ PrinterGfx::SetFallbackFont ( sal_Int32
void PrinterGfx::drawGlyphs(
const Point& rPoint,
- sal_uInt32* pGlyphIds,
+ sal_GlyphId* pGlyphIds,
sal_Unicode* pUnicodes,
sal_Int16 nLen,
sal_Int32* pDeltaArray
@@ -233,7 +233,7 @@ void PrinterGfx::DrawGlyphs(
// vertical glyphs can have an additional rotation ... sigh.
// so break up text in chunks of normal glyphs and print out
// specially rotated glyphs extra
- sal_uInt32* pTempGlyphIds = (sal_uInt32*)alloca(sizeof(sal_Int32)*nLen);
+ sal_GlyphId* pTempGlyphIds = (sal_GlyphId*)alloca(sizeof(sal_Int32)*nLen);
sal_Int32* pTempDelta = (sal_Int32*)alloca(sizeof(sal_Int32)*nLen);
sal_Unicode* pTempUnicodes = (sal_Unicode*)alloca(sizeof(sal_Unicode)*nLen);
sal_Int16 nTempLen = 0;
Modified: openoffice/trunk/main/vcl/unx/headless/svpgdi.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/headless/svpgdi.hxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/headless/svpgdi.hxx (original)
+++ openoffice/trunk/main/vcl/unx/headless/svpgdi.hxx Mon Dec 16 16:07:41 2013
@@ -94,7 +94,7 @@ public:
virtual bool AddTempDevFont( ImplDevFontList*, const String& rFileURL, const String& rFontName );
virtual sal_Bool CreateFontSubset( const rtl::OUString& rToFile,
const ImplFontData*,
- sal_Int32* pGlyphIDs,
+ sal_GlyphId* pGlyphIds,
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphs,
@@ -111,8 +111,8 @@ public:
bool bVertical,
Int32Vector& rWidths,
Ucs2UIntMap& rUnicodeEnc );
- virtual sal_Bool GetGlyphBoundRect( long nIndex, Rectangle& );
- virtual sal_Bool GetGlyphOutline( long nIndex, ::basegfx::B2DPolyPolygon& );
+ virtual bool GetGlyphBoundRect( sal_GlyphId, Rectangle& );
+ virtual bool GetGlyphOutline( sal_GlyphId, ::basegfx::B2DPolyPolygon& );
virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel );
virtual void DrawServerFontLayout( const ServerFontLayout& );
virtual bool supportsOperation( OutDevSupportType ) const;
Modified: openoffice/trunk/main/vcl/unx/headless/svppspgraphics.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/headless/svppspgraphics.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/headless/svppspgraphics.cxx (original)
+++ openoffice/trunk/main/vcl/unx/headless/svppspgraphics.cxx Mon Dec 16 16:07:41 2013
@@ -564,7 +564,7 @@ bool PspFontLayout::LayoutText( ImplLayo
if( aFontEnc == RTL_TEXTENCODING_SYMBOL )
if( cChar < 256 )
cChar += 0xf000;
- int nGlyphIndex = cChar; // printer glyphs = unicode
+ sal_GlyphId aGlyphId( cChar); // printer glyphs = unicode
// update fallback_runs if needed
psp::CharacterMetric aMetric;
@@ -581,7 +581,7 @@ bool PspFontLayout::LayoutText( ImplLayo
for( std::list< KernPair >::const_iterator it = rKernPairs.begin();
it != rKernPairs.end(); ++it )
{
- if( it->first == nOldGlyphId && it->second == nGlyphIndex )
+ if( it->first == nOldGlyphId && it->second == aGlyphId )
{
int nTextScale = mrPrinterGfx.GetFontWidth();
if( ! nTextScale )
@@ -598,14 +598,14 @@ bool PspFontLayout::LayoutText( ImplLayo
// finish previous glyph
if( nOldGlyphId >= 0 )
AppendGlyph( aPrevItem );
- nOldGlyphId = nGlyphIndex;
+ nOldGlyphId = aGlyphId;
aNewPos.X() += nGlyphWidth;
// prepare GlyphItem for appending it in next round
nUnitsPerPixel = mrPrinterGfx.GetCharWidth( cChar, cChar, &nGlyphWidth );
int nGlyphFlags = bRightToLeft ? GlyphItem::IS_RTL_GLYPH : 0;
- nGlyphIndex |= GF_ISCHAR;
- aPrevItem = GlyphItem( nCharPos, nGlyphIndex, aNewPos, nGlyphFlags, nGlyphWidth );
+ aGlyphId |= GF_ISCHAR;
+ aPrevItem = GlyphItem( nCharPos, aGlyphId, aNewPos, nGlyphFlags, nGlyphWidth );
}
// append last glyph item if any
@@ -685,15 +685,15 @@ static void DrawPrinterLayout( const Sal
{
nXOffset += aWidthAry[ i ];
aIdxAry[ i ] = nXOffset / nUnitsPerPixel;
- sal_Int32 nGlyphIdx = aGlyphAry[i] & (GF_IDXMASK | GF_ROTMASK);
+ sal_GlyphId aGlyphId = aGlyphAry[i] & (GF_IDXMASK | GF_ROTMASK);
if( bIsPspServerFontLayout )
aUnicodes[i] = (aCharPosAry[i] >= nMinCharPos && aCharPosAry[i] <= nMaxCharPos) ? pText[ aCharPosAry[i] ] : 0;
else
- aUnicodes[i] = (aGlyphAry[i] & GF_ISCHAR) ? nGlyphIdx : 0;
- aGlyphAry[i] = nGlyphIdx;
+ aUnicodes[i] = (aGlyphAry[i] & GF_ISCHAR) ? aGlyphId : 0;
+ aGlyphAry[i] = aGlyphId;
}
- rGfx.DrawGlyphs( aPos, (sal_uInt32 *)aGlyphAry, aUnicodes, nGlyphCount, aIdxAry );
+ rGfx.DrawGlyphs( aPos, aGlyphAry, aUnicodes, nGlyphCount, aIdxAry );
}
}
@@ -874,26 +874,26 @@ sal_uLong PspGraphics::GetKernPairs( sal
return nHavePairs;
}
-sal_Bool PspGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
+bool PspGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
ServerFont* pSF = m_pServerFont[ nLevel ];
if( !pSF )
- return sal_False;
+ return false;
- nGlyphIndex &= ~GF_FONTMASK;
- const GlyphMetric& rGM = pSF->GetGlyphMetric( nGlyphIndex );
+ aGlyphId &= ~GF_FONTMASK;
+ const GlyphMetric& rGM = pSF->GetGlyphMetric( aGlyphId );
rRect = Rectangle( rGM.GetOffset(), rGM.GetSize() );
- return sal_True;
+ return true;
}
-sal_Bool PspGraphics::GetGlyphOutline( long nGlyphIndex,
+bool PspGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
::basegfx::B2DPolyPolygon& rB2DPolyPoly )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
return sal_False;
@@ -901,11 +901,9 @@ sal_Bool PspGraphics::GetGlyphOutline( l
if( !pSF )
return sal_False;
- nGlyphIndex &= ~GF_FONTMASK;
- if( pSF->GetGlyphOutline( nGlyphIndex, rB2DPolyPoly ) )
- return sal_True;
-
- return sal_False;
+ aGlyphId &= ~GF_FONTMASK;
+ bool bOK = pSF->GetGlyphOutline( aGlyphId, rB2DPolyPoly );
+ return bOK;
}
SalLayout* PspGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
@@ -933,7 +931,7 @@ SalLayout* PspGraphics::GetTextLayout( I
sal_Bool PspGraphics::CreateFontSubset(
const rtl::OUString& rToFile,
const ImplFontData* pFont,
- sal_Int32* pGlyphIDs,
+ sal_GlyphId* pGlyphIds,
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphCount,
@@ -951,7 +949,7 @@ sal_Bool PspGraphics::CreateFontSubset(
bool bSuccess = rMgr.createFontSubset( rInfo,
aFont,
rToFile,
- pGlyphIDs,
+ pGlyphIds,
pEncoding,
pWidths,
nGlyphCount );
Modified: openoffice/trunk/main/vcl/unx/headless/svppspgraphics.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/headless/svppspgraphics.hxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/headless/svppspgraphics.hxx (original)
+++ openoffice/trunk/main/vcl/unx/headless/svppspgraphics.hxx Mon Dec 16 16:07:41 2013
@@ -113,7 +113,7 @@ public:
virtual bool AddTempDevFont( ImplDevFontList*, const String& rFileURL, const String& rFontName );
virtual sal_Bool CreateFontSubset( const rtl::OUString& rToFile,
const ImplFontData*,
- sal_Int32* pGlyphIDs,
+ sal_GlyphId* pGlyphIds,
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphs,
@@ -130,8 +130,8 @@ public:
bool bVertical,
Int32Vector& rWidths,
Ucs2UIntMap& rUnicodeEnc );
- virtual sal_Bool GetGlyphBoundRect( long nIndex, Rectangle& );
- virtual sal_Bool GetGlyphOutline( long nIndex, ::basegfx::B2DPolyPolygon& );
+ virtual bool GetGlyphBoundRect( sal_GlyphId, Rectangle& );
+ virtual bool GetGlyphOutline( sal_GlyphId, ::basegfx::B2DPolyPolygon& );
virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel );
virtual void DrawServerFontLayout( const ServerFontLayout& );
virtual bool supportsOperation( OutDevSupportType ) const;
Modified: openoffice/trunk/main/vcl/unx/headless/svptext.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/unx/headless/svptext.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/unx/headless/svptext.cxx (original)
+++ openoffice/trunk/main/vcl/unx/headless/svptext.cxx Mon Dec 16 16:07:41 2013
@@ -52,12 +52,12 @@ class SvpGlyphPeer
public:
SvpGlyphPeer() {}
- BitmapDeviceSharedPtr GetGlyphBmp( ServerFont&, int nGlyphIndex,
+ BitmapDeviceSharedPtr GetGlyphBmp( ServerFont&, sal_GlyphId,
sal_uInt32 nBmpFormat, B2IPoint& rTargetPos );
protected:
virtual void RemovingFont( ServerFont& );
- virtual void RemovingGlyph( ServerFont&, GlyphData&, int nGlyphIndex );
+ virtual void RemovingGlyph( ServerFont&, GlyphData&, sal_GlyphId );
class SvpGcpHelper
{
@@ -90,9 +90,9 @@ SvpGlyphCache& SvpGlyphCache::GetInstanc
// ===========================================================================
BitmapDeviceSharedPtr SvpGlyphPeer::GetGlyphBmp( ServerFont& rServerFont,
- int nGlyphIndex, sal_uInt32 nBmpFormat, B2IPoint& rTargetPos )
+ sal_GlyphId aGlyphId, sal_uInt32 nBmpFormat, B2IPoint& rTargetPos )
{
- GlyphData& rGlyphData = rServerFont.GetGlyphData( nGlyphIndex );
+ GlyphData& rGlyphData = rServerFont.GetGlyphData( aGlyphId );
SvpGcpHelper* pGcpHelper = (SvpGcpHelper*)rGlyphData.ExtDataRef().mpData;
// nothing to do if the GlyphPeer hasn't allocated resources for the glyph
@@ -107,10 +107,10 @@ BitmapDeviceSharedPtr SvpGlyphPeer::GetG
switch( nBmpFormat )
{
case Format::ONE_BIT_LSB_GREY:
- bFound = rServerFont.GetGlyphBitmap1( nGlyphIndex, pGcpHelper->maRawBitmap );
+ bFound = rServerFont.GetGlyphBitmap1( aGlyphId, pGcpHelper->maRawBitmap );
break;
case Format::EIGHT_BIT_GREY:
- bFound = rServerFont.GetGlyphBitmap8( nGlyphIndex, pGcpHelper->maRawBitmap );
+ bFound = rServerFont.GetGlyphBitmap8( aGlyphId, pGcpHelper->maRawBitmap );
break;
default:
DBG_ERROR( "SVP GCP::GetGlyphBmp(): illegal scanline format");
@@ -121,7 +121,7 @@ BitmapDeviceSharedPtr SvpGlyphPeer::GetG
}
// return .notdef glyph if needed
- if( !bFound && (nGlyphIndex != 0) )
+ if( !bFound && (aGlyphId != 0) )
{
delete pGcpHelper;
return GetGlyphBmp( rServerFont, 0, nBmpFormat, rTargetPos );
@@ -152,7 +152,7 @@ void SvpGlyphPeer::RemovingFont( ServerF
//--------------------------------------------------------------------------
-void SvpGlyphPeer::RemovingGlyph( ServerFont&, GlyphData& rGlyphData, int /*nGlyphIndex*/ )
+void SvpGlyphPeer::RemovingGlyph( ServerFont&, GlyphData& rGlyphData, sal_GlyphId /*aGlyphId*/ )
{
if( rGlyphData.ExtDataRef().mpData != Format::NONE )
{
@@ -338,7 +338,7 @@ bool SvpSalGraphics::AddTempDevFont( Imp
sal_Bool SvpSalGraphics::CreateFontSubset(
const rtl::OUString& rToFile,
const ImplFontData* pFont,
- sal_Int32* pGlyphIDs,
+ sal_GlyphId* pGlyphIds,
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphCount,
@@ -356,7 +356,7 @@ sal_Bool SvpSalGraphics::CreateFontSubse
bool bSuccess = rMgr.createFontSubset( rInfo,
aFont,
rToFile,
- pGlyphIDs,
+ pGlyphIds,
pEncoding,
pWidths,
nGlyphCount );
@@ -418,39 +418,37 @@ void SvpSalGraphics::GetGlyphWidths( con
// ---------------------------------------------------------------------------
-sal_Bool SvpSalGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
+bool SvpSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
ServerFont* pSF = m_pServerFont[ nLevel ];
if( !pSF )
- return sal_False;
+ return false;
- nGlyphIndex &= ~GF_FONTMASK;
- const GlyphMetric& rGM = pSF->GetGlyphMetric( nGlyphIndex );
+ aGlyphId &= ~GF_FONTMASK;
+ const GlyphMetric& rGM = pSF->GetGlyphMetric( aGlyphId );
rRect = Rectangle( rGM.GetOffset(), rGM.GetSize() );
- return sal_True;
+ return true;
}
// ---------------------------------------------------------------------------
-sal_Bool SvpSalGraphics::GetGlyphOutline( long nGlyphIndex, B2DPolyPolygon& rPolyPoly )
+bool SvpSalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId, B2DPolyPolygon& rPolyPoly )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ const int nLevel = aGlyphId >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
- return sal_False;
+ return false;
const ServerFont* pSF = m_pServerFont[ nLevel ];
if( !pSF )
- return sal_False;
+ return false;
- nGlyphIndex &= ~GF_FONTMASK;
- if( pSF->GetGlyphOutline( nGlyphIndex, rPolyPoly ) )
- return sal_True;
-
- return sal_False;
+ aGlyphId &= ~GF_FONTMASK;
+ bool bOK = pSF->GetGlyphOutline( aGlyphId, rPolyPoly );
+ return bOK;
}
// ---------------------------------------------------------------------------
@@ -471,21 +469,21 @@ void SvpSalGraphics::DrawServerFontLayou
{
// iterate over all glyphs in the layout
Point aPos;
- sal_GlyphId nGlyphIndex;
+ sal_GlyphId aGlyphId;
SvpGlyphPeer& rGlyphPeer = SvpGlyphCache::GetInstance().GetPeer();
- for( int nStart = 0; rSalLayout.GetNextGlyphs( 1, &nGlyphIndex, aPos, nStart ); )
+ for( int nStart = 0; rSalLayout.GetNextGlyphs( 1, &aGlyphId, aPos, nStart ); )
{
- int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ int nLevel = aGlyphId >> GF_FONTSHIFT;
DBG_ASSERT( nLevel < MAX_FALLBACK, "SvpGDI: invalid glyph fallback level" );
ServerFont* pSF = m_pServerFont[ nLevel ];
if( !pSF )
continue;
// get the glyph's alpha mask and adjust the drawing position
- nGlyphIndex &= ~GF_FONTMASK;
+ aGlyphId &= ~GF_FONTMASK;
B2IPoint aDstPoint( aPos.X(), aPos.Y() );
BitmapDeviceSharedPtr aAlphaMask
- = rGlyphPeer.GetGlyphBmp( *pSF, nGlyphIndex, m_eTextFmt, aDstPoint );
+ = rGlyphPeer.GetGlyphBmp( *pSF, aGlyphId, m_eTextFmt, aDstPoint );
if( !aAlphaMask ) // ignore empty glyphs
continue;
Modified: openoffice/trunk/main/vcl/win/source/gdi/salgdi3.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/win/source/gdi/salgdi3.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/win/source/gdi/salgdi3.cxx (original)
+++ openoffice/trunk/main/vcl/win/source/gdi/salgdi3.cxx Mon Dec 16 16:07:41 2013
@@ -2426,7 +2426,7 @@ void WinSalGraphics::GetDevFontSubstList
// -----------------------------------------------------------------------
-sal_Bool WinSalGraphics::GetGlyphBoundRect( long nIndex, Rectangle& rRect )
+bool WinSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
{
HDC hDC = getHDC();
@@ -2436,14 +2436,14 @@ sal_Bool WinSalGraphics::GetGlyphBoundRe
aMat.eM12 = aMat.eM21 = FixedFromDouble( 0.0 );
UINT nGGOFlags = GGO_METRICS;
- if( !(nIndex & GF_ISCHAR) )
+ if( !(aGlyphId & GF_ISCHAR) )
nGGOFlags |= GGO_GLYPH_INDEX;
- nIndex &= GF_IDXMASK;
+ aGlyphId &= GF_IDXMASK;
GLYPHMETRICS aGM;
aGM.gmptGlyphOrigin.x = aGM.gmptGlyphOrigin.y = 0;
aGM.gmBlackBoxX = aGM.gmBlackBoxY = 0;
- DWORD nSize = ::GetGlyphOutlineW( hDC, nIndex, nGGOFlags, &aGM, 0, NULL, &aMat );
+ DWORD nSize = ::GetGlyphOutlineW( hDC, aGlyphId, nGGOFlags, &aGM, 0, NULL, &aMat );
if( nSize == GDI_ERROR )
return false;
@@ -2458,7 +2458,7 @@ sal_Bool WinSalGraphics::GetGlyphBoundRe
// -----------------------------------------------------------------------
-sal_Bool WinSalGraphics::GetGlyphOutline( long nIndex,
+bool WinSalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
::basegfx::B2DPolyPolygon& rB2DPolyPoly )
{
rB2DPolyPoly.clear();
@@ -2471,23 +2471,23 @@ sal_Bool WinSalGraphics::GetGlyphOutline
aMat.eM12 = aMat.eM21 = FixedFromDouble( 0.0 );
UINT nGGOFlags = GGO_NATIVE;
- if( !(nIndex & GF_ISCHAR) )
+ if( !(aGlyphId & GF_ISCHAR) )
nGGOFlags |= GGO_GLYPH_INDEX;
- nIndex &= GF_IDXMASK;
+ aGlyphId &= GF_IDXMASK;
GLYPHMETRICS aGlyphMetrics;
- const DWORD nSize1 = ::GetGlyphOutlineW( hDC, nIndex, nGGOFlags, &aGlyphMetrics, 0, NULL, &aMat );
+ const DWORD nSize1 = ::GetGlyphOutlineW( hDC, aGlyphId, nGGOFlags, &aGlyphMetrics, 0, NULL, &aMat );
if( !nSize1 ) // blank glyphs are ok
- return TRUE;
+ return true;
else if( nSize1 == GDI_ERROR )
- return FALSE;
+ return false;
- BYTE* pData = new BYTE[ nSize1 ];
- const DWORD nSize2 = ::GetGlyphOutlineW( hDC, nIndex, nGGOFlags,
+ BYTE* pData = new BYTE[ nSize1 ];
+ const DWORD nSize2 = ::GetGlyphOutlineW( hDC, aGlyphId, nGGOFlags,
&aGlyphMetrics, nSize1, pData, &aMat );
if( nSize1 != nSize2 )
- return FALSE;
+ return false;
// TODO: avoid tools polygon by creating B2DPolygon directly
int nPtSize = 512;
@@ -2637,7 +2637,7 @@ sal_Bool WinSalGraphics::GetGlyphOutline
rB2DPolyPoly.transform(basegfx::tools::createScaleB2DHomMatrix(fFactor, fFactor));
}
- return TRUE;
+ return true;
}
// -----------------------------------------------------------------------
@@ -2701,7 +2701,7 @@ int ScopedTrueTypeFont::open(void * pBuf
}
sal_Bool WinSalGraphics::CreateFontSubset( const rtl::OUString& rToFile,
- const ImplFontData* pFont, long* pGlyphIDs, sal_uInt8* pEncoding,
+ const ImplFontData* pFont, sal_GlyphId* pGlyphIds, sal_uInt8* pEncoding,
sal_Int32* pGlyphWidths, int nGlyphCount, FontSubsetInfo& rInfo )
{
// TODO: use more of the central font-subsetting code, move stuff there if needed
@@ -2744,18 +2744,18 @@ sal_Bool WinSalGraphics::CreateFontSubse
const ImplFontCharMap* pCharMap = pWinFontData->GetImplFontCharMap();
pCharMap->AddReference();
- long nRealGlyphIds[ 256 ];
+ sal_GlyphId aRealGlyphIds[ 256 ];
for( int i = 0; i < nGlyphCount; ++i )
{
// TODO: remap notdef glyph if needed
// TODO: use GDI's GetGlyphIndices instead? Does it handle GSUB properly?
- sal_uInt32 nGlyphIdx = pGlyphIDs[i] & GF_IDXMASK;
- if( pGlyphIDs[i] & GF_ISCHAR ) // remaining pseudo-glyphs need to be translated
- nGlyphIdx = pCharMap->GetGlyphIndex( nGlyphIdx );
- if( (pGlyphIDs[i] & (GF_ROTMASK|GF_GSUB)) != 0) // TODO: vertical substitution
+ sal_GlyphId aGlyphId = pGlyphIds[i] & GF_IDXMASK;
+ if( pGlyphIds[i] & GF_ISCHAR ) // remaining pseudo-glyphs need to be translated
+ aGlyphId = pCharMap->GetGlyphIndex( aGlyphId );
+ if( (pGlyphIds[i] & (GF_ROTMASK|GF_GSUB)) != 0) // TODO: vertical substitution
{/*####*/}
- nRealGlyphIds[i] = nGlyphIdx;
+ aRealGlyphIds[i] = aGlyphId;
}
pCharMap->DeReference(); // TODO: and and use a RAII object
@@ -2764,7 +2764,7 @@ sal_Bool WinSalGraphics::CreateFontSubse
FILE* pOutFile = fopen( aToFile.GetBuffer(), "wb" );
rInfo.LoadFont( FontSubsetInfo::CFF_FONT, aRawCffData.get(), aRawCffData.size() );
bool bRC = rInfo.CreateFontSubset( FontSubsetInfo::TYPE1_PFB, pOutFile, NULL,
- nRealGlyphIds, pEncoding, nGlyphCount, pGlyphWidths );
+ aRealGlyphIds, pEncoding, nGlyphCount, pGlyphWidths );
fclose( pOutFile );
return bRC;
}
@@ -2804,21 +2804,21 @@ sal_Bool WinSalGraphics::CreateFontSubse
for( i = 0; i < nGlyphCount; ++i )
{
aTempEncs[i] = pEncoding[i];
- sal_uInt32 nGlyphIdx = pGlyphIDs[i] & GF_IDXMASK;
- if( pGlyphIDs[i] & GF_ISCHAR )
+ sal_GlyphId aGlyphId = pGlyphIds[i] & GF_IDXMASK;
+ if( pGlyphIds[i] & GF_ISCHAR )
{
- sal_Unicode cChar = static_cast<sal_Unicode>(nGlyphIdx); // TODO: sal_UCS4
- const bool bVertical = ((pGlyphIDs[i] & (GF_ROTMASK|GF_GSUB)) != 0);
- nGlyphIdx = ::MapChar( aSftTTF.get(), cChar, bVertical );
- if( (nGlyphIdx == 0) && pFont->IsSymbolFont() )
+ sal_Unicode cChar = static_cast<sal_Unicode>(aGlyphId); // TODO: sal_UCS4
+ const bool bVertical = ((pGlyphIds[i] & (GF_ROTMASK|GF_GSUB)) != 0);
+ aGlyphId = ::MapChar( aSftTTF.get(), cChar, bVertical );
+ if( (aGlyphId == 0) && pFont->IsSymbolFont() )
{
// #i12824# emulate symbol aliasing U+FXXX <-> U+0XXX
cChar = (cChar & 0xF000) ? (cChar & 0x00FF) : (cChar | 0xF000);
- nGlyphIdx = ::MapChar( aSftTTF.get(), cChar, bVertical );
+ aGlyphId = ::MapChar( aSftTTF.get(), cChar, bVertical );
}
}
- aShortIDs[i] = static_cast<sal_uInt16>( nGlyphIdx );
- if( !nGlyphIdx )
+ aShortIDs[i] = static_cast<sal_uInt16>( aGlyphId );
+ if( !aGlyphId )
if( nNotDef < 0 )
nNotDef = i; // first NotDef glyph found
}
Modified: openoffice/trunk/main/vcl/win/source/gdi/winlayout.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/win/source/gdi/winlayout.cxx?rev=1551244&r1=1551243&r2=1551244&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/win/source/gdi/winlayout.cxx (original)
+++ openoffice/trunk/main/vcl/win/source/gdi/winlayout.cxx Mon Dec 16 16:07:41 2013
@@ -570,7 +570,7 @@ bool SimpleWinLayout::LayoutText( ImplLa
// -----------------------------------------------------------------------
-int SimpleWinLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphs, Point& rPos, int& nStart,
+int SimpleWinLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphIds, Point& rPos, int& nStart,
long* pGlyphAdvances, int* pCharIndexes ) const
{
// return zero if no more glyph found
@@ -590,27 +590,27 @@ int SimpleWinLayout::GetNextGlyphs( int
int nCount = 0;
while( nCount < nLen )
{
- // update return values {nGlyphIndex,nCharPos,nGlyphAdvance}
- sal_GlyphId nGlyphIndex = mpOutGlyphs[ nStart ];
+ // update return values {aGlyphId,nCharPos,nGlyphAdvance}
+ sal_GlyphId aGlyphId = mpOutGlyphs[ nStart ];
if( mbDisableGlyphs )
{
if( mnLayoutFlags & SAL_LAYOUT_VERTICAL )
{
- const sal_UCS4 cChar = static_cast<sal_UCS4>(nGlyphIndex & GF_IDXMASK);
+ const sal_UCS4 cChar = static_cast<sal_UCS4>(aGlyphId & GF_IDXMASK);
if( mrWinFontData.HasGSUBstitutions( mhDC )
&& mrWinFontData.IsGSUBstituted( cChar ) )
- nGlyphIndex |= GF_GSUB | GF_ROTL;
+ aGlyphId |= GF_GSUB | GF_ROTL;
else
{
- nGlyphIndex |= GetVerticalFlags( cChar );
- if( (nGlyphIndex & GF_ROTMASK) == 0 )
- nGlyphIndex |= GF_VERT;
+ aGlyphId |= GetVerticalFlags( cChar );
+ if( (aGlyphId & GF_ROTMASK) == 0 )
+ aGlyphId |= GF_VERT;
}
}
- nGlyphIndex |= GF_ISCHAR;
+ aGlyphId |= GF_ISCHAR;
}
++nCount;
- *(pGlyphs++) = nGlyphIndex;
+ *(pGlyphIds++) = aGlyphId;
if( pGlyphAdvances )
*(pGlyphAdvances++) = mpGlyphAdvances[ nStart ];
if( pCharIndexes )