blob: 20b62183822a31e055ffeabd64d3aa39a15624b1 [file] [log] [blame]
Werner Lembergf13516c2005-03-03 17:09:08 +00001/***************************************************************************/
2/* */
3/* afmodule.c */
4/* */
5/* Auto-fitter module implementation (body). */
6/* */
Werner Lemberg6cfbb232011-02-26 17:32:38 +01007/* Copyright 2003-2006, 2009, 2011 by */
Werner Lembergf13516c2005-03-03 17:09:08 +00008/* David Turner, Robert Wilhelm, and Werner Lemberg. */
9/* */
10/* This file is part of the FreeType project, and may only be used, */
11/* modified, and distributed under the terms of the FreeType project */
12/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13/* this file you indicate that you have read the license and */
14/* understand and accept it fully. */
15/* */
16/***************************************************************************/
17
18
David Turner8ccb4552004-01-16 09:51:00 +000019#include "afmodule.h"
David Turnerf546bac2004-02-01 16:59:06 +000020#include "afloader.h"
Oran Agra59b4af82009-04-05 18:23:38 +030021#include "afpic.h"
Werner Lembergf13516c2005-03-03 17:09:08 +000022
Werner Lembergd503b1b2011-04-18 19:05:28 +020023#ifdef FT_DEBUG_AUTOFIT
Werner Lemberg111b5ae2006-11-03 09:40:12 +000024 int _af_debug_disable_horz_hints;
25 int _af_debug_disable_vert_hints;
26 int _af_debug_disable_blue_hints;
David Turner40604742006-11-02 16:37:35 +000027 void* _af_debug_hints;
David Turner6f8c6222006-09-26 15:42:44 +000028#endif
29
David Turnerf546bac2004-02-01 16:59:06 +000030#include FT_INTERNAL_OBJECTS_H
David Turner8ccb4552004-01-16 09:51:00 +000031
Werner Lembergf13516c2005-03-03 17:09:08 +000032
David Turnerf546bac2004-02-01 16:59:06 +000033 typedef struct FT_AutofitterRec_
David Turner8ccb4552004-01-16 09:51:00 +000034 {
David Turnerf546bac2004-02-01 16:59:06 +000035 FT_ModuleRec root;
36 AF_LoaderRec loader[1];
David Turner8ccb4552004-01-16 09:51:00 +000037
David Turnerf546bac2004-02-01 16:59:06 +000038 } FT_AutofitterRec, *FT_Autofitter;
David Turner8ccb4552004-01-16 09:51:00 +000039
David Turner8ccb4552004-01-16 09:51:00 +000040
David Turnerf546bac2004-02-01 16:59:06 +000041 FT_CALLBACK_DEF( FT_Error )
42 af_autofitter_init( FT_Autofitter module )
43 {
44 return af_loader_init( module->loader, module->root.library->memory );
David Turner8ccb4552004-01-16 09:51:00 +000045 }
46
47
David Turnerf546bac2004-02-01 16:59:06 +000048 FT_CALLBACK_DEF( void )
49 af_autofitter_done( FT_Autofitter module )
David Turner8ccb4552004-01-16 09:51:00 +000050 {
David Turnerf546bac2004-02-01 16:59:06 +000051 af_loader_done( module->loader );
David Turner8ccb4552004-01-16 09:51:00 +000052 }
David Turnerf546bac2004-02-01 16:59:06 +000053
54
55 FT_CALLBACK_DEF( FT_Error )
56 af_autofitter_load_glyph( FT_Autofitter module,
57 FT_GlyphSlot slot,
58 FT_Size size,
59 FT_UInt glyph_index,
60 FT_Int32 load_flags )
61 {
Werner Lemberg07dcc102004-04-21 22:27:11 +000062 FT_UNUSED( size );
David Turner10bf05a2004-04-21 14:30:37 +000063
David Turnerf546bac2004-02-01 16:59:06 +000064 return af_loader_load_glyph( module->loader, slot->face,
65 glyph_index, load_flags );
66 }
67
68
Werner Lemberg6cfbb232011-02-26 17:32:38 +010069 FT_DEFINE_AUTOHINTER_SERVICE(
70 af_autofitter_service,
David Turnerf546bac2004-02-01 16:59:06 +000071 NULL,
72 NULL,
73 NULL,
Werner Lemberg6cfbb232011-02-26 17:32:38 +010074 (FT_AutoHinter_GlyphLoadFunc)af_autofitter_load_glyph )
David Turnerf546bac2004-02-01 16:59:06 +000075
Werner Lemberg6cfbb232011-02-26 17:32:38 +010076 FT_DEFINE_MODULE(
77 autofit_module_class,
David Turnerf546bac2004-02-01 16:59:06 +000078
David Turnerf546bac2004-02-01 16:59:06 +000079 FT_MODULE_HINTER,
80 sizeof ( FT_AutofitterRec ),
81
82 "autofitter",
83 0x10000L, /* version 1.0 of the autofitter */
84 0x20000L, /* requires FreeType 2.0 or above */
85
Oran Agra59b4af82009-04-05 18:23:38 +030086 (const void*)&AF_AF_AUTOFITTER_SERVICE_GET,
David Turnerf546bac2004-02-01 16:59:06 +000087
Werner Lembergf13516c2005-03-03 17:09:08 +000088 (FT_Module_Constructor)af_autofitter_init,
89 (FT_Module_Destructor) af_autofitter_done,
Werner Lemberg6cfbb232011-02-26 17:32:38 +010090 (FT_Module_Requester) NULL )
David Turnerf546bac2004-02-01 16:59:06 +000091
92
93/* END */