summaryrefslogtreecommitdiff
path: root/Build/source/libs/libttf/ttengine.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/libttf/ttengine.h')
-rw-r--r--Build/source/libs/libttf/ttengine.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/Build/source/libs/libttf/ttengine.h b/Build/source/libs/libttf/ttengine.h
new file mode 100644
index 00000000000..e946d06ce2b
--- /dev/null
+++ b/Build/source/libs/libttf/ttengine.h
@@ -0,0 +1,115 @@
+/*******************************************************************
+ *
+ * ttengine.h 1.1
+ *
+ * Engine instance structure definition.
+ *
+ * Copyright 1996-1999 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT. By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ * New in 1.1 :
+ *
+ * - added the 'raster_lock' mutex field to synchronize
+ * scan-line conversion in thread-safe and re-entrant builds.
+ *
+ ******************************************************************/
+
+#ifndef TTENGINE_H
+#define TTENGINE_H
+
+#include "tttypes.h"
+#include "ttconfig.h"
+#include "freetype.h"
+#include "ttmutex.h"
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+ /********************************************************************/
+ /* */
+ /* The freetype engine instance structure. */
+ /* */
+ /* This structure holds all the data that is necessary to run */
+ /* one instance of the freetype engine. It is needed to get a */
+ /* completely re-entrant version of the library. */
+ /* */
+ /* The goal is to move _all_ component-specific variables, either */
+ /* static or global in the structure; the component initializers */
+ /* and finalizers will all be called with the address of a valid */
+ /* TEngine_Instance. */
+ /* */
+ /********************************************************************/
+
+ struct TEngine_Instance_
+ {
+ TMutex lock; /* engine lock */
+
+ void* list_free_elements;
+
+ void* objs_face_class; /* the face cache class */
+ void* objs_instance_class; /* the instance cache class */
+ void* objs_execution_class; /* the context cache class */
+ void* objs_glyph_class; /* the glyph cache class */
+
+ void* objs_face_cache; /* these caches are used to track */
+ void* objs_exec_cache; /* the current face and execution */
+ /* context objects */
+
+ void* file_component; /* ttfile implementation dependent */
+
+ TMutex raster_lock; /* mutex for this engine's render pool */
+ void* raster_component; /* ttraster implementation depedent */
+ Byte raster_palette[5]; /* gray-levels palette for anti-aliasing */
+
+ void* extension_component; /* extensions dependent */
+
+#if 0
+ TT_Glyph_Loader_Callback glCallback; /* glyph loader callback, if any */
+#endif
+ };
+
+ /* NOTE : The raster's lock is only acquired by the Render_Glyph and */
+ /* Render_Gray_Glyph functions, which always release it on exit */
+ /* They do not lock the engine mutex. This means you shouldn't */
+ /* be concerned about deadlocks between the two mutexes, as these */
+ /* should never appear.. */
+
+ typedef struct TEngine_Instance_ TEngine_Instance;
+ typedef TEngine_Instance* PEngine_Instance;
+
+
+#ifdef TT_CONFIG_OPTION_THREAD_SAFE /* for re-entrant builds */
+
+#define ENGINE_ARG TEngine_Instance* _engine
+#define ENGINE_ARGS TEngine_Instance* _engine,
+
+#define ENGINE_VAR _engine
+#define ENGINE_VARS _engine,
+
+#define ENGINE _engine
+
+#else /* for thread-safe builds */
+
+#define ENGINE_ARG /* void */
+#define ENGINE_ARGS
+
+#define ENGINE_VAR
+#define ENGINE_VARS
+
+#endif /* TT_CONFIG_OPTION_THREAD_SAFE */
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* TTENGINE_H */
+
+
+/* END */