From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- gfx/graphite2/geckoextra/include/GraphiteExtra.h | 42 +++++++++++++ .../geckoextra/include/GraphiteStructsForRLBox.h | 70 ++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 gfx/graphite2/geckoextra/include/GraphiteExtra.h create mode 100644 gfx/graphite2/geckoextra/include/GraphiteStructsForRLBox.h (limited to 'gfx/graphite2/geckoextra/include') 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 + +#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 -- cgit v1.2.3