Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/harfbuzz/hb-blob.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* | |
2 * Copyright © 2009 Red Hat, 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 * Red Hat Author(s): Behdad Esfahbod | |
25 */ | |
26 | |
27 #ifndef HB_H_IN | |
28 #error "Include <hb.h> instead." | |
29 #endif | |
30 | |
31 #ifndef HB_BLOB_H | |
32 #define HB_BLOB_H | |
33 | |
34 #include "hb-common.h" | |
35 | |
36 HB_BEGIN_DECLS | |
37 | |
38 | |
39 /* | |
40 * Note re various memory-modes: | |
41 * | |
42 * - In no case shall the HarfBuzz client modify memory | |
43 * that is passed to HarfBuzz in a blob. If there is | |
44 * any such possibility, MODE_DUPLICATE should be used | |
45 * such that HarfBuzz makes a copy immediately, | |
46 * | |
47 * - Use MODE_READONLY otherwise, unless you really really | |
48 * really know what you are doing, | |
49 * | |
50 * - MODE_WRITABLE is appropriate if you really made a | |
51 * copy of data solely for the purpose of passing to | |
52 * HarfBuzz and doing that just once (no reuse!), | |
53 * | |
54 * - If the font is mmap()ed, it's ok to use | |
55 * READONLY_MAY_MAKE_WRITABLE, however, using that mode | |
56 * correctly is very tricky. Use MODE_READONLY instead. | |
57 */ | |
58 typedef enum { | |
59 HB_MEMORY_MODE_DUPLICATE, | |
60 HB_MEMORY_MODE_READONLY, | |
61 HB_MEMORY_MODE_WRITABLE, | |
62 HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE | |
63 } hb_memory_mode_t; | |
64 | |
65 typedef struct hb_blob_t hb_blob_t; | |
66 | |
67 HB_EXTERN hb_blob_t * | |
68 hb_blob_create (const char *data, | |
69 unsigned int length, | |
70 hb_memory_mode_t mode, | |
71 void *user_data, | |
72 hb_destroy_func_t destroy); | |
73 | |
74 HB_EXTERN hb_blob_t * | |
75 hb_blob_create_from_file (const char *file_name); | |
76 | |
77 /* Always creates with MEMORY_MODE_READONLY. | |
78 * Even if the parent blob is writable, we don't | |
79 * want the user of the sub-blob to be able to | |
80 * modify the parent data as that data may be | |
81 * shared among multiple sub-blobs. | |
82 */ | |
83 HB_EXTERN hb_blob_t * | |
84 hb_blob_create_sub_blob (hb_blob_t *parent, | |
85 unsigned int offset, | |
86 unsigned int length); | |
87 | |
88 HB_EXTERN hb_blob_t * | |
89 hb_blob_copy_writable_or_fail (hb_blob_t *blob); | |
90 | |
91 HB_EXTERN hb_blob_t * | |
92 hb_blob_get_empty (void); | |
93 | |
94 HB_EXTERN hb_blob_t * | |
95 hb_blob_reference (hb_blob_t *blob); | |
96 | |
97 HB_EXTERN void | |
98 hb_blob_destroy (hb_blob_t *blob); | |
99 | |
100 HB_EXTERN hb_bool_t | |
101 hb_blob_set_user_data (hb_blob_t *blob, | |
102 hb_user_data_key_t *key, | |
103 void * data, | |
104 hb_destroy_func_t destroy, | |
105 hb_bool_t replace); | |
106 | |
107 | |
108 HB_EXTERN void * | |
109 hb_blob_get_user_data (hb_blob_t *blob, | |
110 hb_user_data_key_t *key); | |
111 | |
112 | |
113 HB_EXTERN void | |
114 hb_blob_make_immutable (hb_blob_t *blob); | |
115 | |
116 HB_EXTERN hb_bool_t | |
117 hb_blob_is_immutable (hb_blob_t *blob); | |
118 | |
119 | |
120 HB_EXTERN unsigned int | |
121 hb_blob_get_length (hb_blob_t *blob); | |
122 | |
123 HB_EXTERN const char * | |
124 hb_blob_get_data (hb_blob_t *blob, unsigned int *length); | |
125 | |
126 HB_EXTERN char * | |
127 hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length); | |
128 | |
129 HB_END_DECLS | |
130 | |
131 #endif /* HB_BLOB_H */ |