Coverage Report

Created: 2024-08-27 12:17

/src/harfbuzz/src/hb-shape-plan.hh
Line
Count
Source
1
/*
2
 * Copyright © 2012,2018  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
#ifndef HB_SHAPE_PLAN_HH
28
#define HB_SHAPE_PLAN_HH
29
30
#include "hb.hh"
31
#include "hb-shaper.hh"
32
#include "hb-ot-shape.hh"
33
34
35
struct hb_shape_plan_key_t
36
{
37
  hb_segment_properties_t  props;
38
39
  const hb_feature_t      *user_features;
40
  unsigned int             num_user_features;
41
42
#ifndef HB_NO_OT_SHAPE
43
  hb_ot_shape_plan_key_t   ot;
44
#endif
45
46
  hb_shape_func_t         *shaper_func;
47
  const char              *shaper_name;
48
49
  HB_INTERNAL bool init (bool                           copy,
50
       hb_face_t                     *face,
51
       const hb_segment_properties_t *props,
52
       const hb_feature_t            *user_features,
53
       unsigned int                   num_user_features,
54
       const int                     *coords,
55
       unsigned int                   num_coords,
56
       const char * const            *shaper_list);
57
58
327k
  HB_INTERNAL void fini () { hb_free ((void *) user_features); user_features = nullptr; }
59
60
  HB_INTERNAL bool user_features_match (const hb_shape_plan_key_t *other);
61
62
  HB_INTERNAL bool equal (const hb_shape_plan_key_t *other);
63
};
64
65
struct hb_shape_plan_t
66
{
67
326k
  ~hb_shape_plan_t () { key.fini (); }
68
  hb_object_header_t header;
69
  hb_face_t *face_unsafe; /* We don't carry a reference to face. */
70
  hb_shape_plan_key_t key;
71
#ifndef HB_NO_OT_SHAPE
72
  hb_ot_shape_plan_t ot;
73
#endif
74
};
75
76
77
#endif /* HB_SHAPE_PLAN_HH */