hb-ot-color.h 4.0 KB
Newer Older
K
Khaled Hosny 已提交
1 2
/*
 * Copyright © 2016  Google, Inc.
3 4
 * Copyright © 2018  Khaled Hosny
 * Copyright © 2018  Ebrahim Byagowi
K
Khaled Hosny 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
 *
 *  This is part of HarfBuzz, a text shaping library.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, provided that the
 * above copyright notice and the following two paragraphs appear in
 * all copies of this software.
 *
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 *
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 *
B
Behdad Esfahbod 已提交
26
 * Google Author(s): Sascha Brawer, Behdad Esfahbod
K
Khaled Hosny 已提交
27 28
 */

L
lancer 已提交
29
#if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
K
Khaled Hosny 已提交
30 31 32 33 34 35 36
#error "Include <hb-ot.h> instead."
#endif

#ifndef HB_OT_COLOR_H
#define HB_OT_COLOR_H

#include "hb.h"
37
#include "hb-ot-name.h"
K
Khaled Hosny 已提交
38 39 40

HB_BEGIN_DECLS

B
Behdad Esfahbod 已提交
41 42 43 44

/*
 * Color palettes.
 */
K
Khaled Hosny 已提交
45 46

HB_EXTERN hb_bool_t
B
Behdad Esfahbod 已提交
47
hb_ot_color_has_palettes (hb_face_t *face);
K
Khaled Hosny 已提交
48 49

HB_EXTERN unsigned int
B
Behdad Esfahbod 已提交
50
hb_ot_color_palette_get_count (hb_face_t *face);
K
Khaled Hosny 已提交
51

52
HB_EXTERN hb_ot_name_id_t
B
Behdad Esfahbod 已提交
53 54
hb_ot_color_palette_get_name_id (hb_face_t *face,
				 unsigned int palette_index);
K
Khaled Hosny 已提交
55

56
HB_EXTERN hb_ot_name_id_t
B
Behdad Esfahbod 已提交
57 58
hb_ot_color_palette_color_get_name_id (hb_face_t *face,
				       unsigned int color_index);
K
Khaled Hosny 已提交
59

60 61
/**
 * hb_ot_color_palette_flags_t:
62
 * @HB_OT_COLOR_PALETTE_FLAG_DEFAULT: Default indicating that there is nothing special
B
Behdad Esfahbod 已提交
63
 *   to note about a color palette.
64
 * @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND: Flag indicating that the color
B
Behdad Esfahbod 已提交
65
 *   palette is appropriate to use when displaying the font on a light background such as white.
66
 * @HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND: Flag indicating that the color
B
Behdad Esfahbod 已提交
67
 *   palette is appropriate to use when displaying the font on a dark background such as black.
68
 *
L
lancer 已提交
69 70
 * Flags that describe the properties of color palette.
 *
B
2.1.0  
Behdad Esfahbod 已提交
71
 * Since: 2.1.0
72 73
 */
typedef enum { /*< flags >*/
B
Behdad Esfahbod 已提交
74 75
  HB_OT_COLOR_PALETTE_FLAG_DEFAULT			= 0x00000000u,
  HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND	= 0x00000001u,
76
  HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND	= 0x00000002u
77 78 79
} hb_ot_color_palette_flags_t;

HB_EXTERN hb_ot_color_palette_flags_t
B
Behdad Esfahbod 已提交
80 81
hb_ot_color_palette_get_flags (hb_face_t *face,
			       unsigned int palette_index);
82

B
Behdad Esfahbod 已提交
83
HB_EXTERN unsigned int
84 85 86 87 88
hb_ot_color_palette_get_colors (hb_face_t    *face,
				unsigned int  palette_index,
				unsigned int  start_offset,
				unsigned int *color_count,  /* IN/OUT.  May be NULL. */
				hb_color_t   *colors        /* OUT.     May be NULL. */);
B
Behdad Esfahbod 已提交
89

B
Behdad Esfahbod 已提交
90 91 92 93 94 95 96 97

/*
 * Color layers.
 */

HB_EXTERN hb_bool_t
hb_ot_color_has_layers (hb_face_t *face);

B
Behdad Esfahbod 已提交
98
/**
B
Behdad Esfahbod 已提交
99
 * hb_ot_color_layer_t:
L
lancer 已提交
100 101
 * @glyph: the glyph ID of the layer
 * @color_index: the palette color index of the layer
B
Behdad Esfahbod 已提交
102 103
 *
 * Pairs of glyph and color index.
B
Behdad Esfahbod 已提交
104
 *
B
2.1.0  
Behdad Esfahbod 已提交
105
 * Since: 2.1.0
B
Behdad Esfahbod 已提交
106
 **/
L
lancer 已提交
107
typedef struct hb_ot_color_layer_t {
B
Behdad Esfahbod 已提交
108 109 110 111
  hb_codepoint_t glyph;
  unsigned int   color_index;
} hb_ot_color_layer_t;

B
Behdad Esfahbod 已提交
112
HB_EXTERN unsigned int
B
Behdad Esfahbod 已提交
113 114 115
hb_ot_color_glyph_get_layers (hb_face_t           *face,
			      hb_codepoint_t       glyph,
			      unsigned int         start_offset,
116
			      unsigned int        *layer_count, /* IN/OUT.  May be NULL. */
B
Behdad Esfahbod 已提交
117
			      hb_ot_color_layer_t *layers /* OUT.     May be NULL. */);
B
Behdad Esfahbod 已提交
118

119 120 121 122 123 124 125 126
/*
 * SVG
 */

HB_EXTERN hb_bool_t
hb_ot_color_has_svg (hb_face_t *face);

HB_EXTERN hb_blob_t *
E
Ebrahim Byagowi 已提交
127
hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph);
128 129 130 131 132 133 134 135 136

/*
 * PNG: CBDT or sbix
 */

HB_EXTERN hb_bool_t
hb_ot_color_has_png (hb_face_t *face);

HB_EXTERN hb_blob_t *
E
Ebrahim Byagowi 已提交
137
hb_ot_color_glyph_reference_png (hb_font_t *font, hb_codepoint_t glyph);
138 139


K
Khaled Hosny 已提交
140 141 142
HB_END_DECLS

#endif /* HB_OT_COLOR_H */