summaryrefslogtreecommitdiff
path: root/modules/hangul/hangul-fc.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/hangul/hangul-fc.c')
-rw-r--r--modules/hangul/hangul-fc.c62
1 files changed, 22 insertions, 40 deletions
diff --git a/modules/hangul/hangul-fc.c b/modules/hangul/hangul-fc.c
index 3ba6a479..94216695 100644
--- a/modules/hangul/hangul-fc.c
+++ b/modules/hangul/hangul-fc.c
@@ -24,11 +24,15 @@
#include "pango-engine.h"
#include "pango-utils.h"
+#include "pangofc-font.h"
#include "hangul-defs.h"
#include "tables-jamos.i"
-#include "pangofc-font.h"
+/* No extra fields needed */
+typedef PangoEngineShape HangulEngineFc;
+typedef PangoEngineShapeClass HangulEngineFcClass ;
+
#define SCRIPT_ENGINE_NAME "HangulScriptEngineFc"
#define RENDER_TYPE PANGO_RENDER_TYPE_FC
@@ -275,7 +279,8 @@ render_syllable (PangoFont *font, gunichar *text, int length,
}
static void
-hangul_engine_shape (PangoFont *font,
+hangul_engine_shape (PangoEngineShape *engine,
+ PangoFont *font,
const char *text,
gint length,
PangoAnalysis *analysis,
@@ -357,42 +362,26 @@ hangul_engine_shape (PangoFont *font,
g_free(jamos);
}
-static PangoCoverage *
-hangul_engine_get_coverage (PangoFont *font,
- PangoLanguage *lang)
+static void
+hangul_engine_fc_class_init (PangoEngineShapeClass *class)
{
- PangoCoverage *result = pango_coverage_new ();
- int i;
-
- /* Well, no unicode rendering engine could render Hangul Jamo area
- _exactly_, I sure. */
- for (i = 0x1100; i <= 0x11ff; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_FALLBACK);
- pango_coverage_set (result, 0x302e, PANGO_COVERAGE_FALLBACK);
- pango_coverage_set (result, 0x302f, PANGO_COVERAGE_FALLBACK);
- for (i = 0xac00; i <= 0xd7a3; i++)
- pango_coverage_set (result, i, PANGO_COVERAGE_EXACT);
- return result;
+ class->script_shape = hangul_engine_shape;
}
-static PangoEngine *
-hangul_engine_xft_new ()
-{
- PangoEngineShape *result;
-
- result = g_new (PangoEngineShape, 1);
+PANGO_ENGINE_SHAPE_DEFINE_TYPE (HangulEngineFc, hangul_engine_fc,
+ hangul_engine_fc_class_init, NULL);
- result->engine.id = SCRIPT_ENGINE_NAME;
- result->engine.type = PANGO_ENGINE_TYPE_SHAPE;
- result->engine.length = sizeof (result);
- result->script_shape = hangul_engine_shape;
- result->get_coverage = hangul_engine_get_coverage;
+void
+PANGO_MODULE_ENTRY(init) (GTypeModule *module)
+{
+ hangul_engine_fc_register_type (module);
+}
- return (PangoEngine *)result;
+void
+PANGO_MODULE_ENTRY(exit) (void)
+{
}
-/* List the engines contained within this module
- */
void
PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
int *n_engines)
@@ -401,18 +390,11 @@ PANGO_MODULE_ENTRY(list) (PangoEngineInfo **engines,
*n_engines = G_N_ELEMENTS (script_engines);
}
-/* Load a particular engine given the ID for the engine
- */
PangoEngine *
-PANGO_MODULE_ENTRY(load) (const char *id)
+PANGO_MODULE_ENTRY(create) (const char *id)
{
if (!strcmp (id, SCRIPT_ENGINE_NAME))
- return hangul_engine_xft_new ();
+ return g_object_new (hangul_engine_fc_type, NULL);
else
return NULL;
}
-
-void
-PANGO_MODULE_ENTRY(unload) (PangoEngine *engine)
-{
-}