Coverage Report

Created: 2026-10-16 07:07

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
struct hb_shape_plan_key_t
35
{
36
  hb_segment_properties_t  props;
37
38
  const hb_feature_t      *user_features;
39
  unsigned int             num_user_features;
40
41
#ifndef HB_NO_OT_SHAPE
42
  hb_ot_shape_plan_key_t   ot;
43
#endif
44
45
  hb_shape_func_t         *shaper_func;
46
  const char              *shaper_name;
47
48
  HB_INTERNAL bool init (bool                           copy,
49
       hb_face_t                     *face,
50
       const hb_segment_properties_t *props,
51
       const hb_feature_t            *user_features,
52
       unsigned int                   num_user_features,
53
       const int                     *coords,
54
       unsigned int                   num_coords,
55
       const char * const            *shaper_list);
56
57
  HB_INTERNAL void fini ()
58
0
  {
59
0
    hb_free ((void *) user_features);
60
0
    user_features = nullptr;
61
0
#ifndef HB_NO_OT_SHAPE
62
0
    ot.fini ();
63
0
#endif
64
0
  }
65
66
  HB_INTERNAL bool user_features_match (const hb_shape_plan_key_t *other);
67
68
  HB_INTERNAL bool equal (const hb_shape_plan_key_t *other);
69
};
70
71
struct hb_shape_plan_t
72
{
73
  HB_INTERNAL ~hb_shape_plan_t ();
74
  hb_object_header_t header;
75
  hb_face_t *face_unsafe; /* We don't carry a reference to face. */
76
  hb_shape_plan_key_t key;
77
#ifndef HB_NO_OT_SHAPE
78
  hb_ot_shape_plan_t ot;
79
#endif
80
#ifdef HAVE_HARFRUST
81
  hb_atomic_t<void *> harfrust_data;
82
#endif
83
};
84
85
86
#endif /* HB_SHAPE_PLAN_HH */