tor-browser

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

PosLookup.hh (2024B)


      1 #ifndef OT_LAYOUT_GPOS_POSLOOKUP_HH
      2 #define OT_LAYOUT_GPOS_POSLOOKUP_HH
      3 
      4 #include "PosLookupSubTable.hh"
      5 #include "../../../hb-ot-layout-common.hh"
      6 
      7 namespace OT {
      8 namespace Layout {
      9 namespace GPOS_impl {
     10 
     11 struct PosLookup : Lookup
     12 {
     13  using SubTable = PosLookupSubTable;
     14 
     15  const SubTable& get_subtable (unsigned int i) const
     16  { return Lookup::get_subtable<SubTable> (i); }
     17 
     18  bool is_reverse () const
     19  {
     20    return false;
     21  }
     22 
     23  bool apply (hb_ot_apply_context_t *c) const
     24  {
     25    TRACE_APPLY (this);
     26    return_trace (dispatch (c));
     27  }
     28 
     29  bool intersects (const hb_set_t *glyphs) const
     30  {
     31    hb_intersects_context_t c (glyphs);
     32    return dispatch (&c);
     33  }
     34 
     35  hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
     36  { return dispatch (c); }
     37 
     38  hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigned this_index) const
     39  {
     40    if (c->is_lookup_visited (this_index))
     41      return hb_closure_lookups_context_t::default_return_value ();
     42 
     43    c->set_lookup_visited (this_index);
     44    if (!intersects (c->glyphs))
     45    {
     46      c->set_lookup_inactive (this_index);
     47      return hb_closure_lookups_context_t::default_return_value ();
     48    }
     49 
     50    hb_closure_lookups_context_t::return_t ret = dispatch (c);
     51    return ret;
     52  }
     53 
     54  template <typename set_t>
     55  void collect_coverage (set_t *glyphs) const
     56  {
     57    hb_collect_coverage_context_t<set_t> c (glyphs);
     58    dispatch (&c);
     59  }
     60 
     61  template <typename context_t>
     62  static typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index);
     63 
     64  template <typename context_t, typename ...Ts>
     65  typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
     66  { return Lookup::dispatch<SubTable> (c, std::forward<Ts> (ds)...); }
     67 
     68  bool subset (hb_subset_context_t *c) const
     69  { return Lookup::subset<SubTable> (c); }
     70 
     71  bool sanitize (hb_sanitize_context_t *c) const
     72  { return Lookup::sanitize<SubTable> (c); }
     73 };
     74 
     75 }
     76 }
     77 }
     78 
     79 #endif  /* OT_LAYOUT_GPOS_POSLOOKUP_HH */