tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

hb-shape-plan.h (4121B)


      1 /*
      2 * Copyright © 2012  Google, Inc.
      3 *
      4 *  This is part of HarfBuzz, a text shaping library.
      5 *
      6 * Permission is hereby granted, without written agreement and without
      7 * license or royalty fees, to use, copy, modify, and distribute this
      8 * software and its documentation for any purpose, provided that the
      9 * above copyright notice and the following two paragraphs appear in
     10 * all copies of this software.
     11 *
     12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
     13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
     14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
     15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
     16 * DAMAGE.
     17 *
     18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
     19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     20 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
     21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
     22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
     23 *
     24 * Google Author(s): Behdad Esfahbod
     25 */
     26 
     27 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
     28 #error "Include <hb.h> instead."
     29 #endif
     30 
     31 #ifndef HB_SHAPE_PLAN_H
     32 #define HB_SHAPE_PLAN_H
     33 
     34 #include "hb-common.h"
     35 #include "hb-font.h"
     36 
     37 HB_BEGIN_DECLS
     38 
     39 /**
     40 * hb_shape_plan_t:
     41 *
     42 * Data type for holding a shaping plan. 
     43 *
     44 * Shape plans contain information about how HarfBuzz will shape a
     45 * particular text segment, based on the segment's properties and the
     46 * capabilities in the font face in use.
     47 *
     48 * Shape plans can be queried about how shaping will perform, given a set
     49 * of specific input parameters (script, language, direction, features,
     50 * etc.).
     51 *
     52 **/
     53 typedef struct hb_shape_plan_t hb_shape_plan_t;
     54 
     55 HB_EXTERN hb_shape_plan_t *
     56 hb_shape_plan_create (hb_face_t                     *face,
     57 	      const hb_segment_properties_t *props,
     58 	      const hb_feature_t            *user_features,
     59 	      unsigned int                   num_user_features,
     60 	      const char * const            *shaper_list);
     61 
     62 HB_EXTERN hb_shape_plan_t *
     63 hb_shape_plan_create_cached (hb_face_t                     *face,
     64 		     const hb_segment_properties_t *props,
     65 		     const hb_feature_t            *user_features,
     66 		     unsigned int                   num_user_features,
     67 		     const char * const            *shaper_list);
     68 
     69 HB_EXTERN hb_shape_plan_t *
     70 hb_shape_plan_create2 (hb_face_t                     *face,
     71 	       const hb_segment_properties_t *props,
     72 	       const hb_feature_t            *user_features,
     73 	       unsigned int                   num_user_features,
     74 	       const int                     *coords,
     75 	       unsigned int                   num_coords,
     76 	       const char * const            *shaper_list);
     77 
     78 HB_EXTERN hb_shape_plan_t *
     79 hb_shape_plan_create_cached2 (hb_face_t                     *face,
     80 		      const hb_segment_properties_t *props,
     81 		      const hb_feature_t            *user_features,
     82 		      unsigned int                   num_user_features,
     83 		      const int                     *coords,
     84 		      unsigned int                   num_coords,
     85 		      const char * const            *shaper_list);
     86 
     87 
     88 HB_EXTERN hb_shape_plan_t *
     89 hb_shape_plan_get_empty (void);
     90 
     91 HB_EXTERN hb_shape_plan_t *
     92 hb_shape_plan_reference (hb_shape_plan_t *shape_plan);
     93 
     94 HB_EXTERN void
     95 hb_shape_plan_destroy (hb_shape_plan_t *shape_plan);
     96 
     97 HB_EXTERN hb_bool_t
     98 hb_shape_plan_set_user_data (hb_shape_plan_t    *shape_plan,
     99 		     hb_user_data_key_t *key,
    100 		     void *              data,
    101 		     hb_destroy_func_t   destroy,
    102 		     hb_bool_t           replace);
    103 
    104 HB_EXTERN void *
    105 hb_shape_plan_get_user_data (const hb_shape_plan_t *shape_plan,
    106 		     hb_user_data_key_t    *key);
    107 
    108 
    109 HB_EXTERN hb_bool_t
    110 hb_shape_plan_execute (hb_shape_plan_t    *shape_plan,
    111 	       hb_font_t          *font,
    112 	       hb_buffer_t        *buffer,
    113 	       const hb_feature_t *features,
    114 	       unsigned int        num_features);
    115 
    116 HB_EXTERN const char *
    117 hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan);
    118 
    119 
    120 HB_END_DECLS
    121 
    122 #endif /* HB_SHAPE_PLAN_H */