xref: /aosp_15_r20/external/harfbuzz_ng/src/OT/Layout/GPOS/MarkRecord.hh (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1 #ifndef OT_LAYOUT_GPOS_MARKRECORD_HH
2 #define OT_LAYOUT_GPOS_MARKRECORD_HH
3 
4 namespace OT {
5 namespace Layout {
6 namespace GPOS_impl {
7 
8 struct MarkRecord
9 {
10   friend struct MarkArray;
11 
12   public:
13   HBUINT16      klass;                  /* Class defined for this mark */
14   Offset16To<Anchor>
15                 markAnchor;             /* Offset to Anchor table--from
16                                          * beginning of MarkArray table */
17   public:
18   DEFINE_SIZE_STATIC (4);
19 
get_classOT::Layout::GPOS_impl::MarkRecord20   unsigned get_class () const { return (unsigned) klass; }
sanitizeOT::Layout::GPOS_impl::MarkRecord21   bool sanitize (hb_sanitize_context_t *c, const void *base) const
22   {
23     TRACE_SANITIZE (this);
24     return_trace (c->check_struct (this) && markAnchor.sanitize (c, base));
25   }
26 
subsetOT::Layout::GPOS_impl::MarkRecord27   bool subset (hb_subset_context_t    *c,
28 	       const void             *src_base,
29 	       const hb_map_t         *klass_mapping) const
30   {
31     TRACE_SUBSET (this);
32     auto *out = c->serializer->embed (this);
33     if (unlikely (!out)) return_trace (false);
34 
35     out->klass = klass_mapping->get (klass);
36     return_trace (out->markAnchor.serialize_subset (c, markAnchor, src_base));
37   }
38 
collect_variation_indicesOT::Layout::GPOS_impl::MarkRecord39   void collect_variation_indices (hb_collect_variation_indices_context_t *c,
40                                   const void *src_base) const
41   {
42     (src_base+markAnchor).collect_variation_indices (c);
43   }
44 };
45 
46 
47 }
48 }
49 }
50 
51 #endif /* OT_LAYOUT_GPOS_MARKRECORD_HH */
52