RaspGetUnscaledGlyphData
__int64 __fastcall RaspGetUnscaledGlyphData(
__int64 a1,
WCHAR a2,
_GLYPH_DATA **a3,
int *a4,
_BG_RASTERIZER_WORKSPACE *Workspace){
_MAPPING_TABLE *v7;
_GLYPH_DATA *v8;
UINT16 v10;
NTSTATUS v11;
_BG_RASTERIZER_WORKSPACE *v12;
NTSTATUS v13;
NTSTATUS Bearings;
_GLYPH_DATA *GlyphData;
UINT16 GlyphIndex;
int v18;
GlyphIndex = 0;
v7 = *(_MAPPING_TABLE **)(a1 + 24);
v8 = 0i64;
v18 = 0;
GlyphData = 0i64;
v10 = 0;
if( RaspMapCharacterCodeToGlyphIndex(v7, a2, &GlyphIndex) >= 0 )
v10 = GlyphIndex;
v11 = RaspMapGlyphIndexToLocation(a1, v10, &v18);
v12 = Workspace;
if( v11 >= 0 || (v10 = 0, Bearings = RaspMapGlyphIndexToLocation(a1, 0, &v18), Bearings >= 0) )
{
GlyphIndex = v10;
v13 = RaspLoadGlyphData(a1, v18, (__int64)&GlyphIndex, &GlyphData, v12);
v8 = GlyphData;
Bearings = v13;
if( v13 >= 0 )
{
Bearings = RaspConvertDeltas(GlyphData);
if( Bearings >= 0 )
Bearings = RaspLoadBearings(a1, GlyphIndex, (__int64)v8, a4);
}
}
if( a3 )
{
*a3 = v8;
v8 = 0i64;
}
if( v8 )
RaspFreeMemory(v8, v12);
return(unsigned int)Bearings;
}Referenced by:
RaspRasterize