summaryrefslogtreecommitdiff
path: root/include/freetype/cache/ftccmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/freetype/cache/ftccmap.h')
-rw-r--r--include/freetype/cache/ftccmap.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/include/freetype/cache/ftccmap.h b/include/freetype/cache/ftccmap.h
new file mode 100644
index 000000000..3966016bb
--- /dev/null
+++ b/include/freetype/cache/ftccmap.h
@@ -0,0 +1,195 @@
+/***************************************************************************/
+/* */
+/* ftccmap.h */
+/* */
+/* FreeType charmap cache */
+/* */
+/* Copyright 2000-2001 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. */
+/* */
+/***************************************************************************/
+
+#ifndef __FT_CACHE_CHARMAP_H__
+#define __FT_CACHE_CHARMAP_H__
+
+#include <ft2build.h>
+#include FT_CACHE_H
+
+FT_BEGIN_HEADER
+
+ /************************************************************************
+ *
+ * @type: FTC_CmapCache
+ *
+ * @description:
+ * opaque handle used to manager a charmap cache. This cache is used
+ * to hold character codes -> glyph indices mappings
+ */
+ typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
+
+
+ /************************************************************************
+ *
+ * @type: FTC_CMapDesc
+ *
+ * @description:
+ * handle to a @FTC_CMapDescRec structure used to describe a given charmap
+ * in a charmap cache.
+ *
+ * each @FTC_CMapDesc describes which charmap, of which @FTC_Face we
+ * want to use in @FTC_CMapCache_Lookup
+ */
+ typedef struct FTC_CMapDescRec_* FTC_CMapDesc;
+
+
+ /************************************************************************
+ *
+ * @enum: FTC_CMapType
+ *
+ * @description:
+ * the list of valid @FTC_CMap types, they indicate how we want to
+ * address a charmap within a @FTC_FaceID
+ *
+ * @values:
+ * FTC_CMAP_BY_INDEX ::
+ * used to indicate that we want to address a charmap by its index in
+ * the corresponding @FT_Face
+ *
+ * FTC_CMAP_BY_ENCODING ::
+ * used to indicate that we want to use a @FT_Face charmap that
+ * corresponds to a given encoding
+ *
+ * FTC_CMAP_BY_ID ::
+ * used to indicate that we want to use a @FT_Face charmap that
+ * corresponds to a given (platform,encoding) id. see @FTC_CMapIdRec
+ */
+ typedef enum
+ {
+ FTC_CMAP_BY_INDEX = 0,
+ FTC_CMAP_BY_ENCODING = 1,
+ FTC_CMAP_BY_ID = 2
+
+ } FTC_CMapType;
+
+
+ /************************************************************************
+ *
+ * @struct: FTC_CMapIdRec
+ *
+ * @description:
+ * a short structure used to identify a charmap by a (platform,encoding)
+ * pair of values
+ *
+ * @fields:
+ * platform :: platform ID
+ * encoding :: encoding ID
+ */
+ typedef struct FTC_CMapIdRec_
+ {
+ FT_UInt platform;
+ FT_UInt encoding;
+
+ } FTC_CMapIdRec;
+
+
+ /************************************************************************
+ *
+ * @struct: FTC_CMapDescRec
+ *
+ * @description:
+ * a structure used to describe a given charmap to the @FTC_CMapCache
+ *
+ * @fields:
+ * face_id :: @FTC_FaceID of the face this charmap belongs to
+ * type :: type of charmap, see @FTC_CMapType
+ *
+ * u.index :: for @FTC_CMAP_BY_INDEX types, this is the charmap index
+ * (within a @FT_Face) we want to use.
+ *
+ * u.encoding :: for @FTC_CMAP_BY_ENCODING types, this is the charmap
+ * encoding we want to use. see @FT_Encoding
+ *
+ * u.id :: for @FTC_CMAP_BY_ID types, this is the (platform,encoding)
+ * pair we want to use. see @FTC_CMapIdRec and
+ * @FT_CharMapRec
+ */
+ typedef struct FTC_CMapDescRec_
+ {
+ FTC_FaceID face_id;
+ FTC_CMapType type;
+
+ union
+ {
+ FT_UInt index;
+ FT_Encoding encoding;
+ FTC_CMapIdRec id;
+
+ } u;
+
+ } FTC_CMapDescRec;
+
+
+
+ /************************************************************************
+ *
+ * @function: FTC_CMapCache_New
+ *
+ * @description:
+ * create a new charmap cache
+ *
+ * @input:
+ * manager :: handle to cache manager
+ *
+ * @output:
+ * acache :: new cache handle. NULL in case of error
+ *
+ * @return:
+ * FreeType error code. 0 means success
+ *
+ * @note:
+ * like all other caches, this one will be destroyed with the
+ * cache manager
+ */
+ FT_EXPORT( FT_Error )
+ FTC_CMapCache_New( FTC_Manager manager,
+ FTC_CMapCache *acache );
+
+
+
+ /************************************************************************
+ *
+ * @function: FTC_CMapCache_Lookup
+ *
+ * @description:
+ * translate a character code into a glyph index, using the charmap
+ * cache.
+ *
+ * @input:
+ * cache :: charmap cache handle
+ * cmap_desc :: charmap descriptor handle
+ * char_code :: character code (in the corresponding charmap)
+ *
+ * @return:
+ * glyph index. 0 means "no glyph" !!
+ *
+ * @note:
+ * this function doesn't return @FTC_Node handles, since there is
+ * no real use for them with typical uses of charmaps
+ */
+ FT_EXPORT( FT_UInt )
+ FTC_CMapCache_Lookup( FTC_CMapCache cache,
+ FTC_CMapDesc cmap_desc,
+ FT_UInt32 char_code );
+
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __FT_CACHE_CHARMAP_H__ */