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