gecko-dev/widget/LookAndFeelTypes.ipdlh
Jed Davis 907aa1cd3c Bug 1470983 - Remote all LookAndFeel values for the Gtk backend. r=spohl,jld
This adds a new LookAndFeel implementation, RemoteLookAndFeel, which can
be used in content processes and is supplied with all of its values by the
parent process.

Co-authored-by: Cameron McCormack <cam@mcc.id.au>

Differential Revision: https://phabricator.services.mozilla.com/D97977
2020-12-16 04:17:36 +00:00

80 lines
2.2 KiB
Plaintext

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
using mozilla::LookAndFeel::IntID from "mozilla/widget/WidgetMessageUtils.h";
using mozilla::LookAndFeel::ColorID from "mozilla/widget/WidgetMessageUtils.h";
using nscolor from "nsColor.h";
namespace mozilla {
namespace widget {
struct LookAndFeelInt {
IntID id;
int32_t value;
};
comparable struct LookAndFeelFont {
bool haveFont;
nsString name;
float size;
float weight;
bool italic;
};
struct LookAndFeelColor {
ColorID id;
nscolor color;
};
struct LookAndFeelCache {
LookAndFeelInt[] mInts;
LookAndFeelFont[] mFonts;
LookAndFeelColor[] mColors;
};
/**
* Stores the entirety of a LookAndFeel's data.
*
* The format allows for some compression compared with having fixed
* length arrays for each value type and some indication of whether
* a value is present. This is because not all values are present on
* a given platform, and because there is also substantial repetition
* of specific values.
*
* Each of ints, floats, colors, and fonts is an array that stores the
* unique values that occur in the LookAndFeel. intMap, floatMap,
* colorMap, and fontMap map from value IDs (LookAndFeel::IntID, etc.)
* to indexes into the value arrays. The map arrays are of fixed
* length, determined by the maximum ID value. If a value for a
* particular ID is not present, the entry in the map is set to -1.
*
* (Note that fontMap is different from the others since it maps from a
* LookAndFeel::FontID value minus 1, as 1 is the minimum value of that
* enum.)
*/
struct FullLookAndFeel {
int32_t[] ints;
float[] floats;
nscolor[] colors;
LookAndFeelFont[] fonts;
uint8_t[] intMap;
uint8_t[] floatMap;
uint8_t[] colorMap;
uint8_t[] fontMap;
uint16_t passwordChar;
bool passwordEcho;
};
union LookAndFeelData {
LookAndFeelCache;
FullLookAndFeel;
};
} // namespace widget
} // namespace mozilla