Bug 1716846 [wpt PR 29402] - Update wpt metadata, a=testonly
[gecko.git] / widget / LookAndFeelTypes.ipdlh
blobdbeb1a1bcb425e1474db365dac9ffc2920430e1b
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=99: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 using nscolor from "nsColor.h";
9 namespace mozilla {
10 namespace widget {
12 [Comparable] struct LookAndFeelFont {
13     bool haveFont;
14     nsString name;
15     float size;
16     float weight;
17     bool italic;
20 /**
21  * The format allows for some compression compared with having fixed
22  * length arrays for each value type and some indication of whether
23  * a value is present.  This is because not all values are present on
24  * a given platform, and because there is also substantial repetition
25  * of specific values.
26  *
27  * Each of ints, floats, colors, and fonts is an array that stores the
28  * unique values that occur in the LookAndFeel.  intMap, floatMap,
29  * colorMap, and fontMap map from value IDs (LookAndFeel::IntID, etc.)
30  * to indexes into the value arrays.  The map arrays are of fixed
31  * length, determined by the maximum ID value.  If a value for a
32  * particular ID is not present, the entry in the map is set to -1.
33  */
34 struct LookAndFeelTables {
35     int32_t[] ints;
36     float[] floats;
37     LookAndFeelFont[] fonts;
38     nscolor[] lightColors;
39     nscolor[] darkColors;
41     uint8_t[] intMap;
42     uint8_t[] floatMap;
43     uint8_t[] fontMap;
44     uint8_t[] lightColorMap;
45     uint8_t[] darkColorMap;
47     uint16_t passwordChar;
48     bool passwordEcho;
51 struct LookAndFeelTheme {
52 #ifdef MOZ_WIDGET_GTK
53     nsCString themeName;
54     bool preferDarkTheme;
55 #endif
58 /**
59  * Stores the entirety of a LookAndFeel's data.
60  */
61 struct FullLookAndFeel {
62     LookAndFeelTables tables;
63 #ifdef MOZ_WIDGET_GTK
64     LookAndFeelTheme theme;
65 #endif
68 } // namespace widget
69 } // namespace mozilla