diff --git a/src/hb-old/harfbuzz-shape.h b/src/hb-old/harfbuzz-shape.h deleted file mode 100644 index e4b5f9ad8..000000000 --- a/src/hb-old/harfbuzz-shape.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (C) 2006 Red Hat, Inc. - * - * This is part of HarfBuzz, an OpenType Layout engine library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Red Hat Author(s): Owen Taylor - */ - -#include - -/* Base Types */ - -typedef hb_uint16 HB_CodePoint; /* UTF-16 codepoint (not character ) */ -typedef char HB_Boolean; -typedef hb_uint32 HB_Fixed; /* 26.6 */ -typedef hb_uint32 HB_Glyph; -typedef hb_uint32 HB_Unichar; - -/* Metrics reported by the font backend for use of the shaper */ -typedef struct _HB_GlyphMetrics HB_GlyphMetrics; -struct _HB_GlyphMetrics -{ - HB_Fixed advance; - - /* Do we need ink/logical extents for the glyph here? */ -}; - -/* - * HB_Font: Abstract font interface. - * First pass of this might just have FT_Face *getFace(); - */ -typedef struct _HB_Font HB_Font; -typedef struct _HB_FontClass HB_FontClass; - -struct HB_FontClass { - HB_Glyph (*charToGlyph)(HB_Font *font, HB_Unichar chr); - void (*getMetrics)(HB_Font *font, HB_Glyph glyph, HB_GlyphMetrics *metrics); - HB_Boolean (*getSFontTable)(HB_Font *font, void **cookie, char **start, int *len); - HB_Boolean (*freeSFontTable)(void **cookie); -}; - -struct _HB_Font { - HB_FontClass *clazz; -}; - -/* - * Language tags, of the form en-us; represented as interned, canonicalized - * strings. hb_language_from_string("en_US"), hb_language_from_string("en-us") - * both return the same (pointer-comparable) HB_Language). - */ -typedef struct HB_Language_ *HB_Language; - -HB_Language hb_language_from_string(const char *str); -const char *hb_language_to_string(HB_Language language); - -/* Special treatment for the edges of runs. - */ -typedef enum { - HB_RUN_EDGE_LINE_VISUAL_EDGE = 1 << 0, - HB_RUN_EDGE_LINE_LOGICAL_EDGE = 1 << 1, - HB_RUN_EDGE_LINE_ADD_HYPHEN = 1 << 2 /* ???? */ -} HB_RunEdge; - -/* Defines optional informaiton in HB_ShapeInput; this allows extension - * of HB_ShapeInput while keeping binary compatibility - */ -typedef enum { - HB_SHAPE_START_TYPE = 1 << 0, - HB_SHAPE_END_TYPE = 1 << 1 -} HB_ShapeFlags; - -/* Attributes types are described by "interned strings"; this is a little - * annoying if you want to write a switch statement, but keeps things - * simple. - */ -typedef struct _HB_AttributeType *HB_AttributeType; - -HB_AttributeType hb_attribute_type_from_string(const char *str); -const char *hb_attribute_type_to_string(HB_AttributeType attribute_type); - -struct HB_Attribute { - HB_AttributeType type; - int start; - int end; -}; - - -/** - * You could handle this like HB_Language, but an enum seems a little nicer; - * another approach would be to use OpenType script tags. - */ -typedef enum { - HB_SCRIPT_LATIN - /* ... */ -} HB_ShapeScript; - -/* This is just the subset of direction information needed by the shaper */ -typedef enum { - HB_DIRECTION_LTR, - HB_DIRECTION_RTL, - HB_DIRECTION_TTB -} HB_Direction; - -typedef struct _HB_ShapeInput HB_ShapeInput; -struct _HB_ShapeInput { - /* Defines what fields the caller has initialized - fields not in - * the enum are mandatory. - */ - HB_ShapeFlags flags; - - HB_CodePoint *text; - int length; /* total length of text to shape */ - int shape_offset; /* start of section to shape */ - int shape_length; /* number of code points to shape */ - - HB_Direction direction; - HB_ShapeScript script; - HB_Language language; - - HB_AttributeType *attributes; - int n_attributes; - - HB_RunEdge start_type; - HB_RunEdge end_type; -}; - -struct HB_GlyphItem { - HB_Glyph glyph; - - HB_Fixed x_offset; - HB_Fixed y_offset; - HB_Fixed advance; - - /* Add kashida information, etc, here */ -}; - -typedef enum { - HB_RESULT_SUCCESS, - HB_RESULT_NO_MEMORY, - HB_SHAPE_RESULT_FAILED -} HB_Result; - -/* - * Buffer for output - */ -typedef struct _HB_GlyphBuffer HB_GlyphBuffer; -struct _HB_GlyphBuffer { - int glyph_item_size; - int total_glyphs; - - int *log_clusters; /* Uniscribe style */ - int cluster_space; - - int glyph_space; - void *glyph_buffer; -}; - -/* Making this self-allocating simplifies writing shapers and - * also keeps things easier for caller. item_size passed in - * must be at least sizeof(HB_GlyphItem) but can be bigger, - * to accomodate application structures that extend HB_GlyphItem. - * The allocated items will be zero-initialized. - * - * (Hack: Harfbuzz could choose to use even a *bigger* item size - * and stick internal information before the public item structure. - * This hack could possibly be used to unify this with HB_Buffer) - */ -HB_GlyphBuffer *hb_glyph_buffer_new (size_t item_size); -void hb_glyph_buffer_clear (HB_GlyphBuffer *buf); -HB_Result hb_glyph_buffer_extend_glyphs (HB_GlyphBuffer *buf, int n_items); -HB_Result hb_glyph_buffer_extend_clusters (HB_GlyphBuffer *buf, int n_clusters); -void hb_glyph_buffer_free (HB_GlyphBuffer *buf); - - -/* Accessor for a particular glyph */ -#define HB_GLYPH_BUFFER_ITEM(buffer, index) - -/* - * Main shaping function - */ -HB_Result hb_shape(HB_ShapeInput *input, HB_GlyphBuffer *output);