|
Packit |
0ec9dd |
/* Pango
|
|
Packit |
0ec9dd |
* pango-engine.h: Engines for script and language specific processing
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Copyright (C) 2000,2003 Red Hat Software
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* This library is free software; you can redistribute it and/or
|
|
Packit |
0ec9dd |
* modify it under the terms of the GNU Library General Public
|
|
Packit |
0ec9dd |
* License as published by the Free Software Foundation; either
|
|
Packit |
0ec9dd |
* version 2 of the License, or (at your option) any later version.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
0ec9dd |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
0ec9dd |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
0ec9dd |
* Library General Public License for more details.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* You should have received a copy of the GNU Library General Public
|
|
Packit |
0ec9dd |
* License along with this library; if not, write to the
|
|
Packit |
0ec9dd |
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Packit |
0ec9dd |
* Boston, MA 02111-1307, USA.
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#ifndef __PANGO_ENGINE_H__
|
|
Packit |
0ec9dd |
#define __PANGO_ENGINE_H__
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#include <pango/pango-types.h>
|
|
Packit |
0ec9dd |
#include <pango/pango-item.h>
|
|
Packit |
0ec9dd |
#include <pango/pango-font.h>
|
|
Packit |
0ec9dd |
#include <pango/pango-glyph.h>
|
|
Packit |
0ec9dd |
#include <pango/pango-script.h>
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
G_BEGIN_DECLS
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#ifdef PANGO_ENABLE_ENGINE
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PANGO_RENDER_TYPE_NONE:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* A string constant defining the render type
|
|
Packit |
0ec9dd |
* for engines that are not rendering-system specific.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
#define PANGO_RENDER_TYPE_NONE "PangoRenderNone"
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#define PANGO_TYPE_ENGINE (pango_engine_get_type ())
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_ENGINE, PangoEngine))
|
|
Packit |
0ec9dd |
#define PANGO_IS_ENGINE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_ENGINE))
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_ENGINE, PangoEngineClass))
|
|
Packit |
0ec9dd |
#define PANGO_IS_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_ENGINE))
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_ENGINE, PangoEngineClass))
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
typedef struct _PangoEngine PangoEngine;
|
|
Packit |
0ec9dd |
typedef struct _PangoEngineClass PangoEngineClass;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngine:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* #PangoEngine is the base class for all types of language and
|
|
Packit |
0ec9dd |
* script specific engines. It has no functionality by itself.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
struct _PangoEngine
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
/*< private >*/
|
|
Packit |
0ec9dd |
GObject parent_instance;
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineClass:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Class structure for #PangoEngine
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
struct _PangoEngineClass
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
/*< private >*/
|
|
Packit |
0ec9dd |
GObjectClass parent_class;
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
GType pango_engine_get_type (void) G_GNUC_CONST;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PANGO_ENGINE_TYPE_LANG:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* A string constant defining the engine type for language engines.
|
|
Packit |
0ec9dd |
* These engines derive from #PangoEngineLang.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_TYPE_LANG "PangoEngineLang"
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#define PANGO_TYPE_ENGINE_LANG (pango_engine_lang_get_type ())
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_LANG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_ENGINE_LANG, PangoEngineLang))
|
|
Packit |
0ec9dd |
#define PANGO_IS_ENGINE_LANG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_ENGINE_LANG))
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_LANG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_ENGINE_LANG, PangoEngineLangClass))
|
|
Packit |
0ec9dd |
#define PANGO_IS_ENGINE_LANG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_ENGINE_LANG))
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_LANG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_ENGINE_LANG, PangoEngineLangClass))
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
typedef struct _PangoEngineLangClass PangoEngineLangClass;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineLang:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The #PangoEngineLang class is implemented by engines that
|
|
Packit |
0ec9dd |
* customize the rendering-system independent part of the
|
|
Packit |
0ec9dd |
* Pango pipeline for a particular script or language. For
|
|
Packit |
0ec9dd |
* instance, a custom #PangoEngineLang could be provided for
|
|
Packit |
0ec9dd |
* Thai to implement the dictionary-based word boundary
|
|
Packit |
0ec9dd |
* lookups needed for that language.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
struct _PangoEngineLang
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
/*< private >*/
|
|
Packit |
0ec9dd |
PangoEngine parent_instance;
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineLangClass:
|
|
Packit |
0ec9dd |
* @script_break: (nullable): Provides a custom implementation of
|
|
Packit |
0ec9dd |
* pango_break(). If %NULL, pango_default_break() is used instead. If
|
|
Packit |
0ec9dd |
* not %NULL, for Pango versions before 1.16 (module interface version
|
|
Packit |
0ec9dd |
* before 1.6.0), this was called instead of pango_default_break(),
|
|
Packit |
0ec9dd |
* but in newer versions, pango_default_break() is always called and
|
|
Packit |
0ec9dd |
* this is called after that to allow tailoring the breaking results.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Class structure for #PangoEngineLang
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
struct _PangoEngineLangClass
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
/*< private >*/
|
|
Packit |
0ec9dd |
PangoEngineClass parent_class;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/*< public >*/
|
|
Packit |
0ec9dd |
void (*script_break) (PangoEngineLang *engine,
|
|
Packit |
0ec9dd |
const char *text,
|
|
Packit |
0ec9dd |
int len,
|
|
Packit |
0ec9dd |
PangoAnalysis *analysis,
|
|
Packit |
0ec9dd |
PangoLogAttr *attrs,
|
|
Packit |
0ec9dd |
int attrs_len);
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
GType pango_engine_lang_get_type (void) G_GNUC_CONST;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PANGO_ENGINE_TYPE_SHAPE:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* A string constant defining the engine type for shaping engines.
|
|
Packit |
0ec9dd |
* These engines derive from #PangoEngineShape.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_TYPE_SHAPE "PangoEngineShape"
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#define PANGO_TYPE_ENGINE_SHAPE (pango_engine_shape_get_type ())
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_SHAPE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_ENGINE_SHAPE, PangoEngineShape))
|
|
Packit |
0ec9dd |
#define PANGO_IS_ENGINE_SHAPE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_ENGINE_SHAPE))
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_SHAPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_ENGINE_SHAPE, PangoEngine_ShapeClass))
|
|
Packit |
0ec9dd |
#define PANGO_IS_ENGINE_SHAPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_ENGINE_SHAPE))
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_SHAPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_ENGINE_SHAPE, PangoEngineShapeClass))
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
typedef struct _PangoEngineShapeClass PangoEngineShapeClass;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineShape:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The #PangoEngineShape class is implemented by engines that
|
|
Packit |
0ec9dd |
* customize the rendering-system dependent part of the
|
|
Packit |
0ec9dd |
* Pango pipeline for a particular script or language.
|
|
Packit |
0ec9dd |
* A #PangoEngineShape implementation is then specific to both
|
|
Packit |
0ec9dd |
* a particular rendering system or group of rendering systems
|
|
Packit |
0ec9dd |
* and to a particular script. For instance, there is one
|
|
Packit |
0ec9dd |
* #PangoEngineShape implementation to handle shaping Arabic
|
|
Packit |
0ec9dd |
* for Fontconfig-based backends.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
struct _PangoEngineShape
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
PangoEngine parent_instance;
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineShapeClass:
|
|
Packit |
0ec9dd |
* @script_shape: Given a font, a piece of text, and a #PangoAnalysis
|
|
Packit |
0ec9dd |
* structure, converts characters to glyphs and positions the
|
|
Packit |
0ec9dd |
* resulting glyphs. The results are stored in the #PangoGlyphString
|
|
Packit |
0ec9dd |
* that is passed in. (The implementation should resize it
|
|
Packit |
0ec9dd |
* appropriately using pango_glyph_string_set_size()). All fields
|
|
Packit |
0ec9dd |
* of the @log_clusters and @glyphs array must be filled in, with
|
|
Packit |
0ec9dd |
* the exception that Pango will automatically generate
|
|
Packit |
0ec9dd |
* <literal>glyphs->glyphs[i].attr.is_cluster_start</literal>
|
|
Packit |
0ec9dd |
* using the @log_clusters array. Each input character must occur in one
|
|
Packit |
0ec9dd |
* of the output logical clusters;
|
|
Packit |
0ec9dd |
* if no rendering is desired for a character, this may involve
|
|
Packit |
0ec9dd |
* inserting glyphs with the #PangoGlyph ID #PANGO_GLYPH_EMPTY, which
|
|
Packit |
0ec9dd |
* is guaranteed never to render. If the shaping fails for any reason,
|
|
Packit |
0ec9dd |
* the shaper should return with an empty (zero-size) glyph string.
|
|
Packit |
0ec9dd |
* If the shaper has not set the size on the glyph string yet, simply
|
|
Packit |
0ec9dd |
* returning signals the failure too.
|
|
Packit |
0ec9dd |
* @covers: Returns the characters that this engine can cover
|
|
Packit |
0ec9dd |
* with a given font for a given language. If not overridden, the default
|
|
Packit |
0ec9dd |
* implementation simply returns the coverage information for the
|
|
Packit |
0ec9dd |
* font itself unmodified.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Class structure for #PangoEngineShape
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
struct _PangoEngineShapeClass
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
/*< private >*/
|
|
Packit |
0ec9dd |
PangoEngineClass parent_class;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/*< public >*/
|
|
Packit |
0ec9dd |
void (*script_shape) (PangoEngineShape *engine,
|
|
Packit |
0ec9dd |
PangoFont *font,
|
|
Packit |
0ec9dd |
const char *item_text,
|
|
Packit |
0ec9dd |
unsigned int item_length,
|
|
Packit |
0ec9dd |
const PangoAnalysis *analysis,
|
|
Packit |
0ec9dd |
PangoGlyphString *glyphs,
|
|
Packit |
0ec9dd |
const char *paragraph_text,
|
|
Packit |
0ec9dd |
unsigned int paragraph_length);
|
|
Packit |
0ec9dd |
PangoCoverageLevel (*covers) (PangoEngineShape *engine,
|
|
Packit |
0ec9dd |
PangoFont *font,
|
|
Packit |
0ec9dd |
PangoLanguage *language,
|
|
Packit |
0ec9dd |
gunichar wc);
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
GType pango_engine_shape_get_type (void) G_GNUC_CONST;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
typedef struct _PangoEngineInfo PangoEngineInfo;
|
|
Packit |
0ec9dd |
typedef struct _PangoEngineScriptInfo PangoEngineScriptInfo;
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineScriptInfo:
|
|
Packit |
0ec9dd |
* @script: a #PangoScript. The value %PANGO_SCRIPT_COMMON has
|
|
Packit |
0ec9dd |
* the special meaning here of "all scripts"
|
|
Packit |
0ec9dd |
* @langs: a semicolon separated list of languages that this
|
|
Packit |
0ec9dd |
* engine handles for this script. This may be empty,
|
|
Packit |
0ec9dd |
* in which case the engine is saying that it is a
|
|
Packit |
0ec9dd |
* fallback choice for all languages for this range,
|
|
Packit |
0ec9dd |
* but should not be used if another engine
|
|
Packit |
0ec9dd |
* indicates that it is specific for the language for
|
|
Packit |
0ec9dd |
* a given code point. An entry in this list of "*"
|
|
Packit |
0ec9dd |
* indicates that this engine is specific to all
|
|
Packit |
0ec9dd |
* languages for this range.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The #PangoEngineScriptInfo structure contains
|
|
Packit |
0ec9dd |
* information about how the shaper covers a particular script.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
struct _PangoEngineScriptInfo
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
PangoScript script;
|
|
Packit |
0ec9dd |
const gchar *langs;
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PangoEngineInfo:
|
|
Packit |
0ec9dd |
* @id: a unique string ID for the engine.
|
|
Packit |
0ec9dd |
* @engine_type: a string identifying the engine type.
|
|
Packit |
0ec9dd |
* @render_type: a string identifying the render type.
|
|
Packit |
0ec9dd |
* @scripts: array of scripts this engine supports.
|
|
Packit |
0ec9dd |
* @n_scripts: number of items in @scripts.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The #PangoEngineInfo structure contains information about a particular
|
|
Packit |
0ec9dd |
* engine. It contains the following fields:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
struct _PangoEngineInfo
|
|
Packit |
0ec9dd |
{
|
|
Packit |
0ec9dd |
const gchar *id;
|
|
Packit |
0ec9dd |
const gchar *engine_type;
|
|
Packit |
0ec9dd |
const gchar *render_type;
|
|
Packit |
0ec9dd |
PangoEngineScriptInfo *scripts;
|
|
Packit |
0ec9dd |
gint n_scripts;
|
|
Packit |
0ec9dd |
};
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* script_engine_list: (skip)
|
|
Packit |
0ec9dd |
* @engines: location to store a pointer to an array of engines.
|
|
Packit |
0ec9dd |
* @n_engines: location to store the number of elements in @engines.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Do not use.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
void script_engine_list (PangoEngineInfo **engines,
|
|
Packit |
0ec9dd |
int *n_engines);
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* script_engine_init: (skip)
|
|
Packit |
0ec9dd |
* @module: a #GTypeModule structure used to associate any
|
|
Packit |
0ec9dd |
* GObject types created in this module with the module.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Do not use.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
void script_engine_init (GTypeModule *module);
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* script_engine_exit: (skip)
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Do not use.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
void script_engine_exit (void);
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* script_engine_create: (skip)
|
|
Packit |
0ec9dd |
* @id: the ID of an engine as reported by script_engine_list.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Do not use.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
PANGO_DEPRECATED_IN_1_38
|
|
Packit |
0ec9dd |
PangoEngine *script_engine_create (const char *id);
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/* Utility macro used by PANGO_ENGINE_LANG_DEFINE_TYPE and
|
|
Packit |
0ec9dd |
* PANGO_ENGINE_LANG_DEFINE_TYPE
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_DEFINE_TYPE(name, prefix, class_init, instance_init, parent_type) \
|
|
Packit |
0ec9dd |
static GType prefix ## _type; \
|
|
Packit |
0ec9dd |
static void \
|
|
Packit |
0ec9dd |
prefix ## _register_type (GTypeModule *module) \
|
|
Packit |
0ec9dd |
{ \
|
|
Packit |
0ec9dd |
const GTypeInfo object_info = \
|
|
Packit |
0ec9dd |
{ \
|
|
Packit |
0ec9dd |
sizeof (name ## Class), \
|
|
Packit |
0ec9dd |
(GBaseInitFunc) NULL, \
|
|
Packit |
0ec9dd |
(GBaseFinalizeFunc) NULL, \
|
|
Packit |
0ec9dd |
(GClassInitFunc) class_init, \
|
|
Packit |
0ec9dd |
(GClassFinalizeFunc) NULL, \
|
|
Packit |
0ec9dd |
NULL, /* class_data */ \
|
|
Packit |
0ec9dd |
sizeof (name), \
|
|
Packit |
0ec9dd |
0, /* n_prelocs */ \
|
|
Packit |
0ec9dd |
(GInstanceInitFunc) instance_init, \
|
|
Packit |
0ec9dd |
NULL /* value_table */ \
|
|
Packit |
0ec9dd |
}; \
|
|
Packit |
0ec9dd |
\
|
|
Packit |
0ec9dd |
prefix ## _type = g_type_module_register_type (module, parent_type, \
|
|
Packit |
0ec9dd |
# name, \
|
|
Packit |
0ec9dd |
&object_info, 0); \
|
|
Packit |
0ec9dd |
}
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PANGO_ENGINE_LANG_DEFINE_TYPE:
|
|
Packit |
0ec9dd |
* @name: Name of the the type to register (for example:, <literal>ArabicEngineFc</literal>
|
|
Packit |
0ec9dd |
* @prefix: Prefix for symbols that will be defined (for example:, <literal>arabic_engine_fc</literal>
|
|
Packit |
0ec9dd |
* @class_init: (nullable): Class initialization function for the new type, or %NULL
|
|
Packit |
0ec9dd |
* @instance_init: (nullable): Instance initialization function for the new type, or %NULL
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Outputs the necessary code for GObject type registration for a
|
|
Packit |
0ec9dd |
* #PangoEngineLang class defined in a module. Two static symbols
|
|
Packit |
0ec9dd |
* are defined.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* <programlisting>
|
|
Packit |
0ec9dd |
* static GType <replaceable>prefix</replaceable>_type;
|
|
Packit |
0ec9dd |
* static void <replaceable>prefix</replaceable>_register_type (GTypeModule module);
|
|
Packit |
0ec9dd |
* </programlisting>
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The <function><replaceable>prefix</replaceable>_register_type()</function>
|
|
Packit |
0ec9dd |
* function should be called in your script_engine_init() function for
|
|
Packit |
0ec9dd |
* each type that your module implements, and then your script_engine_create()
|
|
Packit |
0ec9dd |
* function can create instances of the object as follows:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* <informalexample><programlisting>
|
|
Packit |
0ec9dd |
* PangoEngine *engine = g_object_new (<replaceable>prefix</replaceable>_type, NULL);
|
|
Packit |
0ec9dd |
* </programlisting></informalexample>
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_LANG_DEFINE_TYPE(name, prefix, class_init, instance_init) \
|
|
Packit |
0ec9dd |
PANGO_ENGINE_DEFINE_TYPE (name, prefix, \
|
|
Packit |
0ec9dd |
class_init, instance_init, \
|
|
Packit |
0ec9dd |
PANGO_TYPE_ENGINE_LANG)
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/**
|
|
Packit |
0ec9dd |
* PANGO_ENGINE_SHAPE_DEFINE_TYPE:
|
|
Packit |
0ec9dd |
* @name: Name of the the type to register (for example:, <literal>ArabicEngineFc</literal>
|
|
Packit |
0ec9dd |
* @prefix: Prefix for symbols that will be defined (for example:, <literal>arabic_engine_fc</literal>
|
|
Packit |
0ec9dd |
* @class_init: (nullable): Class initialization function for the new type, or %NULL
|
|
Packit |
0ec9dd |
* @instance_init: (nullable): Instance initialization function for the new type, or %NULL
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Outputs the necessary code for GObject type registration for a
|
|
Packit |
0ec9dd |
* #PangoEngineShape class defined in a module. Two static symbols
|
|
Packit |
0ec9dd |
* are defined.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* <programlisting>
|
|
Packit |
0ec9dd |
* static GType <replaceable>prefix</replaceable>_type;
|
|
Packit |
0ec9dd |
* static void <replaceable>prefix</replaceable>_register_type (GTypeModule module);
|
|
Packit |
0ec9dd |
* </programlisting>
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The <function><replaceable>prefix</replaceable>_register_type()</function>
|
|
Packit |
0ec9dd |
* function should be called in your script_engine_init() function for
|
|
Packit |
0ec9dd |
* each type that your module implements, and then your script_engine_create()
|
|
Packit |
0ec9dd |
* function can create instances of the object as follows:
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* <informalexample><programlisting>
|
|
Packit |
0ec9dd |
* PangoEngine *engine = g_object_new (<replaceable>prefix</replaceable>_type, NULL);
|
|
Packit |
0ec9dd |
* </programlisting></informalexample>
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* Deprecated: 1.38
|
|
Packit |
0ec9dd |
**/
|
|
Packit |
0ec9dd |
#define PANGO_ENGINE_SHAPE_DEFINE_TYPE(name, prefix, class_init, instance_init) \
|
|
Packit |
0ec9dd |
PANGO_ENGINE_DEFINE_TYPE (name, prefix, \
|
|
Packit |
0ec9dd |
class_init, instance_init, \
|
|
Packit |
0ec9dd |
PANGO_TYPE_ENGINE_SHAPE)
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
/* Macro used for possibly builtin Pango modules. Not useful
|
|
Packit |
0ec9dd |
* for externally build modules. If we are compiling a module standalone,
|
|
Packit |
0ec9dd |
* then we name the entry points script_engine_list, etc. But if we
|
|
Packit |
0ec9dd |
* are compiling it for inclusion directly in Pango, then we need them to
|
|
Packit |
0ec9dd |
* to have distinct names for this module, so we prepend a prefix.
|
|
Packit |
0ec9dd |
*
|
|
Packit |
0ec9dd |
* The two intermediate macros are to deal with details of the C
|
|
Packit |
0ec9dd |
* preprocessor; token pasting tokens must be function arguments,
|
|
Packit |
0ec9dd |
* and macro substitution isn't used on function arguments that
|
|
Packit |
0ec9dd |
* are used for token pasting.
|
|
Packit |
0ec9dd |
*/
|
|
Packit |
0ec9dd |
#ifdef PANGO_MODULE_PREFIX
|
|
Packit |
0ec9dd |
#define PANGO_MODULE_ENTRY(func) _PANGO_MODULE_ENTRY2(PANGO_MODULE_PREFIX,func)
|
|
Packit |
0ec9dd |
#define _PANGO_MODULE_ENTRY2(prefix,func) _PANGO_MODULE_ENTRY3(prefix,func)
|
|
Packit |
0ec9dd |
#define _PANGO_MODULE_ENTRY3(prefix,func) prefix##_script_engine_##func
|
|
Packit |
0ec9dd |
#else
|
|
Packit |
0ec9dd |
#define PANGO_MODULE_ENTRY(func) script_engine_##func
|
|
Packit |
0ec9dd |
#endif
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#endif /* PANGO_ENABLE_ENGINE */
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
G_END_DECLS
|
|
Packit |
0ec9dd |
|
|
Packit |
0ec9dd |
#endif /* __PANGO_ENGINE_H__ */
|