1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_GTK_GTK_TYPES_H_
#define UI_GTK_GTK_TYPES_H_
#include <gdk/gdk.h>
#include <gtk/gtk.h>
// This file provides types that are only available in specific versions of GTK.
// This struct uses doubles in Gtk3, but floats in Gtk4.
#define GdkRGBA Do_not_use_GdkRGBA_because_it_is_not_ABI_compatible
extern "C" {
#if GTK_MAJOR_VERSION == 3
using GskRenderNodeType = enum {
GSK_NOT_A_RENDER_NODE = 0,
GSK_CONTAINER_NODE,
GSK_CAIRO_NODE,
GSK_COLOR_NODE,
GSK_LINEAR_GRADIENT_NODE,
GSK_REPEATING_LINEAR_GRADIENT_NODE,
GSK_RADIAL_GRADIENT_NODE,
GSK_REPEATING_RADIAL_GRADIENT_NODE,
GSK_CONIC_GRADIENT_NODE,
GSK_BORDER_NODE,
GSK_TEXTURE_NODE,
GSK_INSET_SHADOW_NODE,
GSK_OUTSET_SHADOW_NODE,
GSK_TRANSFORM_NODE,
GSK_OPACITY_NODE,
GSK_COLOR_MATRIX_NODE,
GSK_REPEAT_NODE,
GSK_CLIP_NODE,
GSK_ROUNDED_CLIP_NODE,
GSK_SHADOW_NODE,
GSK_BLEND_NODE,
GSK_CROSS_FADE_NODE,
GSK_TEXT_NODE,
GSK_BLUR_NODE,
GSK_DEBUG_NODE,
GSK_GL_SHADER_NODE,
GSK_TEXTURE_SCALE_NODE,
GSK_MASK_NODE,
GSK_FILL_NODE,
GSK_STROKE_NODE,
GSK_SUBSURFACE_NODE,
// Not defined in GTK.
GSK_RENDER_NODE_MAX_VALUE = GSK_SUBSURFACE_NODE,
};
enum GdkMemoryFormat : int;
using GskRenderNode = struct _GskRenderNode;
using GtkIconPaintable = struct _GtkIconPaintable;
using GdkTexture = struct _GdkTexture;
using GdkSnapshot = struct _GdkSnapshot;
using GtkSnapshot = GdkSnapshot;
using GdkPaintable = struct _GdkPaintable;
using GtkNative = struct _GtkNative;
using GdkSurface = struct _GdkSurface;
using GdkToplevel = struct _GdkToplevel;
constexpr GdkMemoryFormat GDK_MEMORY_B8G8R8A8 = static_cast<GdkMemoryFormat>(3);
constexpr GdkModifierType GDK_ALT_MASK = GDK_MOD1_MASK;
// This is a macro instead of a constexpr variable to workaround an
// enum-constexpr-conversion error caused by creating a GtkStateFlags outside
// the range of values defined by in the enum.
#define GTK_STATE_FLAG_FOCUS_WITHIN static_cast<GtkStateFlags>(1 << 14)
#elif GTK_MAJOR_VERSION == 4
enum GtkWidgetHelpType : int;
enum GtkWindowType : int;
using GtkWidgetPath = struct _GtkWidgetPath;
using GtkContainer = struct _GtkContainer;
using GdkEventKey = struct _GdkEventKey;
using GdkWindow = struct _GdkWindow;
using GdkKeymap = struct _GdkKeymap;
using GtkIconInfo = struct _GtkIconInfo;
using GdkScreen = struct _GdkScreen;
using GdkColor = struct _GdkColor;
using GdkEventFunc = void (*)(GdkEvent* event, gpointer data);
struct _GdkEventKey {
GdkEventType type;
GdkWindow* window;
gint8 send_event;
guint32 time;
guint state;
guint keyval;
gint length;
gchar* string;
guint16 hardware_keycode;
guint8 group;
guint is_modifier : 1;
};
struct _GdkColor {
guint32 pixel;
guint16 red;
guint16 green;
guint16 blue;
};
// Not defined in GTK.
constexpr int GSK_RENDER_NODE_MAX_VALUE = GSK_SUBSURFACE_NODE;
constexpr int GTK_ICON_LOOKUP_USE_BUILTIN = 1 << 2;
constexpr int GTK_ICON_LOOKUP_GENERIC_FALLBACK = 1 << 3;
constexpr int GTK_ICON_LOOKUP_FORCE_SIZE = 1 << 4;
constexpr auto GTK_WINDOW_TOPLEVEL = static_cast<GtkWindowType>(0);
#else
#error "Unsupported GTK version"
#endif
}
#endif // UI_GTK_GTK_TYPES_H_
|