• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2022  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  */
25 
26 #ifndef HB_SUBSET_SERIALIZE_H
27 #define HB_SUBSET_SERIALIZE_H
28 
29 #include "hb.h"
30 
31 HB_BEGIN_DECLS
32 
33 /**
34  * hb_subset_serialize_link_t:
35  * @width: offsetSize in bytes
36  * @position: position of the offset field in bytes from
37  *            beginning of subtable
38  * @objidx: index of subtable
39  *
40  * Represents a link between two objects in the object graph
41  * to be serialized.
42  *
43  * Since: 10.2.0
44  */
45 typedef struct hb_subset_serialize_link_t {
46   unsigned int width;
47   unsigned int position;
48   unsigned int objidx;
49 } hb_subset_serialize_link_t;
50 
51 /**
52  * hb_subset_serialize_object_t:
53  * @head: start of object data
54  * @tail: end of object data
55  * @num_real_links: number of offset field in the object
56  * @real_links: array of offset info
57  * @num_virtual_links: number of objects that must be packed
58  *                     after current object in the final
59  *                     serialized order
60  * @virtual_links: array of virtual link info
61  *
62  * Represents an object in the object graph to be serialized.
63  *
64  * Since: 10.2.0
65  */
66 typedef struct hb_subset_serialize_object_t {
67   char *head;
68   char *tail;
69   unsigned int num_real_links;
70   hb_subset_serialize_link_t *real_links;
71   unsigned int num_virtual_links;
72   hb_subset_serialize_link_t *virtual_links;
73 } hb_subset_serialize_object_t;
74 
75 HB_EXTERN hb_blob_t *
76 hb_subset_serialize_or_fail (hb_tag_t                      table_tag,
77                              hb_subset_serialize_object_t *hb_objects,
78                              unsigned                      num_hb_objs);
79 
80 
81 HB_END_DECLS
82 
83 #endif /* HB_SUBSET_SERIALIZE_H */
84