hb-ot-color.h 3.9 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 29 30 31 32 33 34 35 36
 */

#ifndef HB_OT_H_IN
#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
 *
B
2.1.0  
Behdad Esfahbod 已提交
69
 * Since: 2.1.0
70 71
 */
typedef enum { /*< flags >*/
B
Behdad Esfahbod 已提交
72 73
  HB_OT_COLOR_PALETTE_FLAG_DEFAULT			= 0x00000000u,
  HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND	= 0x00000001u,
74
  HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND	= 0x00000002u
75 76 77
} hb_ot_color_palette_flags_t;

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

B
Behdad Esfahbod 已提交
81
HB_EXTERN unsigned int
82 83 84 85 86
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 已提交
87

B
Behdad Esfahbod 已提交
88 89 90 91 92 93 94 95

/*
 * Color layers.
 */

HB_EXTERN hb_bool_t
hb_ot_color_has_layers (hb_face_t *face);

B
Behdad Esfahbod 已提交
96
/**
B
Behdad Esfahbod 已提交
97 98 99
 * hb_ot_color_layer_t:
 *
 * Pairs of glyph and color index.
B
Behdad Esfahbod 已提交
100
 *
B
2.1.0  
Behdad Esfahbod 已提交
101
 * Since: 2.1.0
B
Behdad Esfahbod 已提交
102 103 104 105 106 107 108
 **/
typedef struct hb_ot_color_layer_t
{
  hb_codepoint_t glyph;
  unsigned int   color_index;
} hb_ot_color_layer_t;

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

116 117 118 119 120 121 122 123
/*
 * SVG
 */

HB_EXTERN hb_bool_t
hb_ot_color_has_svg (hb_face_t *face);

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

/*
 * 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 已提交
134
hb_ot_color_glyph_reference_png (hb_font_t *font, hb_codepoint_t glyph);
135 136


K
Khaled Hosny 已提交
137 138 139
HB_END_DECLS

#endif /* HB_OT_COLOR_H */