static i_tt_engine * i_init_tt(void) { TT_Error error; im_context_t ctx = im_get_context(); TT_Byte palette[] = { 0, 64, 127, 191, 255 }; i_tt_engine *result = im_context_slot_get(ctx, slot); i_clear_error(); if (result == NULL) { result = mymalloc(sizeof(i_tt_engine)); memset(result, 0, sizeof(*result)); im_context_slot_set(ctx, slot, result); mm_log((1, "allocated FT1 state %p\n", result)); } mm_log((1,"init_tt()\n")); if (result->initialized) return result; error = TT_Init_FreeType( &result->engine ); if ( error ){ mm_log((1,"Initialization of freetype failed, code = 0x%x\n", (unsigned)error)); i_tt_push_error(error); i_push_error(0, "Could not initialize freetype 1.x"); return NULL; } #ifdef FTXPOST error = TT_Init_Post_Extension( result->engine ); if (error) { mm_log((1, "Initialization of Post extension failed = 0x%x\n", (unsigned)error)); i_tt_push_error(error); i_push_error(0, "Could not initialize FT 1.x POST extension"); return NULL; } #endif error = TT_Set_Raster_Gray_Palette(result->engine, palette); if (error) { mm_log((1, "Initialization of gray levels failed = 0x%x\n", (unsigned)error)); i_tt_push_error(error); i_push_error(0, "Could not initialize FT 1.x POST extension"); return NULL; } mm_log((1, "initialized FT1 state %p\n", result)); result->initialized = 1; return result; }
static im_context_t get_context(void) { return im_get_context(); }