Coverage Report

Created: 2026-09-28 10:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/workdir/UnpackedTarball/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
0
  HB_INTERNAL void fini () { hb_free ((void *) user_features); user_features = nullptr; }
58
59
  HB_INTERNAL bool user_features_match (const hb_shape_plan_key_t *other);
60
61
  HB_INTERNAL bool equal (const hb_shape_plan_key_t *other);
62
};
63
64
struct hb_shape_plan_t
65
{
66
  HB_INTERNAL ~hb_shape_plan_t ();
67
  hb_object_header_t header;
68
  hb_face_t *face_unsafe; /* We don't carry a reference to face. */
69
  hb_shape_plan_key_t key;
70
#ifndef HB_NO_OT_SHAPE
71
  hb_ot_shape_plan_t ot;
72
#endif
73
#ifdef HAVE_HARFRUST
74
  hb_atomic_t<void *> harfrust_data;
75
#endif
76
};
77
78
79
#endif /* HB_SHAPE_PLAN_HH */