1*2d1272b8SAndroid Build Coastguard Worker /*
2*2d1272b8SAndroid Build Coastguard Worker * Copyright © 2020 Google, Inc.
3*2d1272b8SAndroid Build Coastguard Worker *
4*2d1272b8SAndroid Build Coastguard Worker * This is part of HarfBuzz, a text shaping library.
5*2d1272b8SAndroid Build Coastguard Worker *
6*2d1272b8SAndroid Build Coastguard Worker * Permission is hereby granted, without written agreement and without
7*2d1272b8SAndroid Build Coastguard Worker * license or royalty fees, to use, copy, modify, and distribute this
8*2d1272b8SAndroid Build Coastguard Worker * software and its documentation for any purpose, provided that the
9*2d1272b8SAndroid Build Coastguard Worker * above copyright notice and the following two paragraphs appear in
10*2d1272b8SAndroid Build Coastguard Worker * all copies of this software.
11*2d1272b8SAndroid Build Coastguard Worker *
12*2d1272b8SAndroid Build Coastguard Worker * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13*2d1272b8SAndroid Build Coastguard Worker * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14*2d1272b8SAndroid Build Coastguard Worker * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15*2d1272b8SAndroid Build Coastguard Worker * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16*2d1272b8SAndroid Build Coastguard Worker * DAMAGE.
17*2d1272b8SAndroid Build Coastguard Worker *
18*2d1272b8SAndroid Build Coastguard Worker * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19*2d1272b8SAndroid Build Coastguard Worker * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20*2d1272b8SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
21*2d1272b8SAndroid Build Coastguard Worker * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22*2d1272b8SAndroid Build Coastguard Worker * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23*2d1272b8SAndroid Build Coastguard Worker *
24*2d1272b8SAndroid Build Coastguard Worker */
25*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot-var-common.hh"
26*2d1272b8SAndroid Build Coastguard Worker #include "hb-ot-var-hvar-table.hh"
27*2d1272b8SAndroid Build Coastguard Worker // HVAR table data from SourceSerif4Variable-Roman_subset.otf
28*2d1272b8SAndroid Build Coastguard Worker const char hvar_data[] = "\x0\x1\x0\x0\x0\x0\x0\x14\x0\x0\x0\xc4\x0\x0\x0\x0\x0\x0\x0\x0\x0\x1\x0\x0\x0\x10\x0\x2\x0\x0\x0\x74\x0\x0\x0\x7a\x0\x2\x0\x8\xc0\x0\xc0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x40\x0\x40\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xc0\x0\xc0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x40\x0\x40\x0\xc0\x0\xc0\x0\x0\x0\xc0\x0\xc0\x0\x0\x0\xc0\x0\xc0\x0\x0\x0\x0\x0\x40\x0\x40\x0\x0\x0\x40\x0\x40\x0\xc0\x0\xc0\x0\x0\x0\x0\x0\x40\x0\x40\x0\x0\x0\x40\x0\x40\x0\x0\x1\x0\x0\x0\x0\x0\x4\x0\x0\x0\x8\x0\x0\x0\x1\x0\x2\x0\x3\x0\x4\x0\x5\x0\x6\x0\x7\xf9\xf\x2f\xbf\xfb\xfb\x35\xf9\x4\x4\xf3\xb4\xf2\xfb\x2e\xf3\x4\x4\xe\xad\xfa\x1\x1a\x1\x15\x22\x59\xd6\xe3\xf6\x6\xf5\x0\x1\x0\x5\x0\x4\x7\x5\x6";
29*2d1272b8SAndroid Build Coastguard Worker
30*2d1272b8SAndroid Build Coastguard Worker static void
test_item_variations()31*2d1272b8SAndroid Build Coastguard Worker test_item_variations ()
32*2d1272b8SAndroid Build Coastguard Worker {
33*2d1272b8SAndroid Build Coastguard Worker const OT::HVAR* hvar_table = reinterpret_cast<const OT::HVAR*> (hvar_data);
34*2d1272b8SAndroid Build Coastguard Worker
35*2d1272b8SAndroid Build Coastguard Worker hb_tag_t axis_tag = HB_TAG ('w', 'g', 'h', 't');
36*2d1272b8SAndroid Build Coastguard Worker hb_map_t axis_idx_tag_map;
37*2d1272b8SAndroid Build Coastguard Worker axis_idx_tag_map.set (0, axis_tag);
38*2d1272b8SAndroid Build Coastguard Worker
39*2d1272b8SAndroid Build Coastguard Worker axis_tag = HB_TAG ('o', 'p', 's', 'z');
40*2d1272b8SAndroid Build Coastguard Worker axis_idx_tag_map.set (1, axis_tag);
41*2d1272b8SAndroid Build Coastguard Worker
42*2d1272b8SAndroid Build Coastguard Worker OT::item_variations_t item_vars;
43*2d1272b8SAndroid Build Coastguard Worker const OT::ItemVariationStore& src_var_store = hvar_table+(hvar_table->varStore);
44*2d1272b8SAndroid Build Coastguard Worker bool result = item_vars.create_from_item_varstore (src_var_store, axis_idx_tag_map);
45*2d1272b8SAndroid Build Coastguard Worker
46*2d1272b8SAndroid Build Coastguard Worker assert (result);
47*2d1272b8SAndroid Build Coastguard Worker
48*2d1272b8SAndroid Build Coastguard Worker /* partial instancing wght=300:800 */
49*2d1272b8SAndroid Build Coastguard Worker hb_hashmap_t<hb_tag_t, Triple> normalized_axes_location;
50*2d1272b8SAndroid Build Coastguard Worker normalized_axes_location.set (axis_tag, Triple (-0.512817, 0.0, 0.7000120));
51*2d1272b8SAndroid Build Coastguard Worker
52*2d1272b8SAndroid Build Coastguard Worker hb_hashmap_t<hb_tag_t, TripleDistances> axes_triple_distances;
53*2d1272b8SAndroid Build Coastguard Worker axes_triple_distances.set (axis_tag, TripleDistances (200.0, 500.0));
54*2d1272b8SAndroid Build Coastguard Worker
55*2d1272b8SAndroid Build Coastguard Worker result = item_vars.instantiate_tuple_vars (normalized_axes_location, axes_triple_distances);
56*2d1272b8SAndroid Build Coastguard Worker assert (result);
57*2d1272b8SAndroid Build Coastguard Worker result = item_vars.as_item_varstore (false);
58*2d1272b8SAndroid Build Coastguard Worker assert (result);
59*2d1272b8SAndroid Build Coastguard Worker assert (item_vars.get_region_list().length == 8);
60*2d1272b8SAndroid Build Coastguard Worker }
61*2d1272b8SAndroid Build Coastguard Worker
62*2d1272b8SAndroid Build Coastguard Worker int
main(int argc,char ** argv)63*2d1272b8SAndroid Build Coastguard Worker main (int argc, char **argv)
64*2d1272b8SAndroid Build Coastguard Worker {
65*2d1272b8SAndroid Build Coastguard Worker test_item_variations ();
66*2d1272b8SAndroid Build Coastguard Worker }
67