summaryrefslogtreecommitdiffstats
path: root/gfx/graphite2/geckoextra/include
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /gfx/graphite2/geckoextra/include
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/graphite2/geckoextra/include')
-rw-r--r--gfx/graphite2/geckoextra/include/GraphiteExtra.h42
-rw-r--r--gfx/graphite2/geckoextra/include/GraphiteStructsForRLBox.h70
2 files changed, 112 insertions, 0 deletions
diff --git a/gfx/graphite2/geckoextra/include/GraphiteExtra.h b/gfx/graphite2/geckoextra/include/GraphiteExtra.h
new file mode 100644
index 0000000000..9352e70991
--- /dev/null
+++ b/gfx/graphite2/geckoextra/include/GraphiteExtra.h
@@ -0,0 +1,42 @@
+// -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+// vim: set ts=2 et sw=2 tw=80:
+// This Source Code is subject to the terms of the Mozilla Public License
+// version 2.0 (the "License"). You can obtain a copy of the License at
+// http://mozilla.org/MPL/2.0/.
+
+#ifndef GraphiteExtra_h__
+#define GraphiteExtra_h__
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "graphite2/Segment.h"
+
+typedef struct {
+ uint32_t baseChar; // in UTF16 code units, not Unicode character indices
+ uint32_t baseGlyph;
+ uint32_t nChars; // UTF16 code units
+ uint32_t nGlyphs;
+} gr_glyph_to_char_cluster;
+
+typedef struct {
+ gr_glyph_to_char_cluster* clusters;
+ uint16_t* gids;
+ float* xLocs;
+ float* yLocs;
+ uint32_t cIndex;
+} gr_glyph_to_char_association;
+
+gr_glyph_to_char_association* gr_get_glyph_to_char_association(
+ gr_segment* aSegment, uint32_t aLength, const char16_t* aText);
+
+void gr_free_char_association(gr_glyph_to_char_association* aData);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif \ No newline at end of file
diff --git a/gfx/graphite2/geckoextra/include/GraphiteStructsForRLBox.h b/gfx/graphite2/geckoextra/include/GraphiteStructsForRLBox.h
new file mode 100644
index 0000000000..64fb198936
--- /dev/null
+++ b/gfx/graphite2/geckoextra/include/GraphiteStructsForRLBox.h
@@ -0,0 +1,70 @@
+// -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+// vim: set ts=2 et sw=2 tw=80:
+// This Source Code is subject to the terms of the Mozilla Public License
+// version 2.0 (the "License"). You can obtain a copy of the License at
+// http://mozilla.org/MPL/2.0/.
+
+#ifndef GraphiteStructsForRLBox_h__
+#define GraphiteStructsForRLBox_h__
+
+#if defined(__clang__)
+# pragma clang diagnostic push
+# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+#elif defined(__GNUC__) || defined(__GNUG__)
+// Can't turn off the variadic macro warning emitted from -pedantic
+# pragma GCC system_header
+#elif defined(_MSC_VER)
+// Doesn't seem to emit the warning
+#else
+// Don't know the compiler... just let it go through
+#endif
+
+// Note that the two size fields below are actually size_t in the headers
+// However RLBox currently does not handle these correctly. See Bug 1722127.
+// Use a workaround of unsiged int instead of size_t.
+#define sandbox_fields_reflection_graphite_class_gr_font_ops(f, g, ...) \
+ f(unsigned int, size, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(float (*)(const void*, unsigned short), glyph_advance_x, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(float (*)(const void*, unsigned short), glyph_advance_y, FIELD_NORMAL, ##__VA_ARGS__) g()
+
+#define sandbox_fields_reflection_graphite_class_gr_face_ops(f, g, ...) \
+ f(unsigned int, size, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(const void* (*)(const void*, unsigned int, unsigned int*), get_table, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(void (*)(const void*, const void*), release_table, FIELD_NORMAL, ##__VA_ARGS__) g()
+
+#define sandbox_fields_reflection_graphite_class_gr_glyph_to_char_cluster(f, g, ...) \
+ f(unsigned int, baseChar, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(unsigned int, baseGlyph, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(unsigned int, nChars, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(unsigned int, nGlyphs, FIELD_NORMAL, ##__VA_ARGS__) g()
+
+#define sandbox_fields_reflection_graphite_class_gr_glyph_to_char_association(f, g, ...) \
+ f(gr_glyph_to_char_cluster*, clusters, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(unsigned short*, gids, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(float*, xLocs, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(float*, yLocs, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(unsigned int, cIndex, FIELD_NORMAL, ##__VA_ARGS__) g()
+
+#define sandbox_fields_reflection_graphite_class_gr_faceinfo(f, g, ...) \
+ f(short, extra_ascent, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(short, extra_descent, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(short, upem, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(gr_faceinfo::gr_space_contextuals, space_contextuals, FIELD_NORMAL, ##__VA_ARGS__) g() \
+ f(unsigned int, has_bidi_pass, FIELD_NORMAL, ##__VA_ARGS__) g()
+ // Remaining bitfields skipped, as bitfields are not fully supported
+
+#define sandbox_fields_reflection_graphite_allClasses(f, ...) \
+ f(gr_font_ops, graphite, ##__VA_ARGS__) \
+ f(gr_face_ops, graphite, ##__VA_ARGS__) \
+ f(gr_glyph_to_char_cluster, graphite, ##__VA_ARGS__) \
+ f(gr_glyph_to_char_association, graphite, ##__VA_ARGS__) \
+ f(gr_faceinfo, graphite, ##__VA_ARGS__)
+
+#if defined(__clang__)
+# pragma clang diagnostic pop
+#elif defined(__GNUC__) || defined(__GNUG__)
+#elif defined(_MSC_VER)
+#else
+#endif
+
+#endif \ No newline at end of file