Atlas - xsettings-client.h
Home / ext / SDL / src / video / x11 Lines: 1 | Size: 5858 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1/* 2 * Copyright © 2001, 2007 Red Hat, Inc. 3 * Copyright 2024 Igalia S.L. 4 * 5 * Permission to use, copy, modify, distribute, and sell this software and its 6 * documentation for any purpose is hereby granted without fee, provided that 7 * the above copyright notice appear in all copies and that both that 8 * copyright notice and this permission notice appear in supporting 9 * documentation, and that the name of Red Hat not be used in advertising or 10 * publicity pertaining to distribution of the software without specific, 11 * written prior permission. Red Hat makes no representations about the 12 * suitability of this software for any purpose. It is provided "as is" 13 * without express or implied warranty. 14 * 15 * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT 17 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 19 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 20 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 21 * 22 * Author: Owen Taylor, Red Hat, Inc. 23 */ 24#ifndef XSETTINGS_CLIENT_H 25#define XSETTINGS_CLIENT_H 26 27#ifdef __cplusplus 28extern "C" { 29#endif /* __cplusplus */ 30 31typedef struct _XSettingsBuffer XSettingsBuffer; 32typedef struct _XSettingsColor XSettingsColor; 33typedef struct _XSettingsList XSettingsList; 34typedef struct _XSettingsSetting XSettingsSetting; 35 36/* Types of settings possible. Enum values correspond to 37 * protocol values. 38 */ 39typedef enum 40{ 41 XSETTINGS_TYPE_INT = 0, 42 XSETTINGS_TYPE_STRING = 1, 43 XSETTINGS_TYPE_COLOR = 2 44} XSettingsType; 45 46typedef enum 47{ 48 XSETTINGS_SUCCESS, 49 XSETTINGS_NO_MEM, 50 XSETTINGS_ACCESS, 51 XSETTINGS_FAILED, 52 XSETTINGS_NO_ENTRY, 53 XSETTINGS_DUPLICATE_ENTRY 54} XSettingsResult; 55 56struct _XSettingsBuffer 57{ 58 char byte_order; 59 size_t len; 60 unsigned char *data; 61 unsigned char *pos; 62}; 63 64struct _XSettingsColor 65{ 66 unsigned short red, green, blue, alpha; 67}; 68 69struct _XSettingsList 70{ 71 XSettingsSetting *setting; 72 XSettingsList *next; 73}; 74 75struct _XSettingsSetting 76{ 77 char *name; 78 XSettingsType type; 79 80 union { 81 int v_int; 82 char *v_string; 83 XSettingsColor v_color; 84 } data; 85 86 unsigned long last_change_serial; 87}; 88 89XSettingsSetting *xsettings_setting_copy (XSettingsSetting *setting); 90void xsettings_setting_free (XSettingsSetting *setting); 91int xsettings_setting_equal (XSettingsSetting *setting_a, 92 XSettingsSetting *setting_b); 93 94void xsettings_list_free (XSettingsList *list); 95XSettingsList *xsettings_list_copy (XSettingsList *list); 96XSettingsResult xsettings_list_insert (XSettingsList **list, 97 XSettingsSetting *setting); 98XSettingsSetting *xsettings_list_lookup (XSettingsList *list, 99 const char *name); 100XSettingsResult xsettings_list_delete (XSettingsList **list, 101 const char *name); 102 103char xsettings_byte_order (void); 104 105#define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1))) 106 107typedef struct _XSettingsClient XSettingsClient; 108 109typedef enum 110{ 111 XSETTINGS_ACTION_NEW, 112 XSETTINGS_ACTION_CHANGED, 113 XSETTINGS_ACTION_DELETED 114} XSettingsAction; 115 116typedef void (*XSettingsNotifyFunc) (const char *name, 117 XSettingsAction action, 118 XSettingsSetting *setting, 119 void *cb_data); 120typedef Bool (*XSettingsWatchFunc) (Window window, 121 Bool is_start, 122 long mask, 123 void *cb_data); 124typedef void (*XSettingsGrabFunc) (Display *display); 125 126XSettingsClient *xsettings_client_new (Display *display, 127 int screen, 128 XSettingsNotifyFunc notify, 129 XSettingsWatchFunc watch, 130 void *cb_data); 131XSettingsClient *xsettings_client_new_with_grab_funcs (Display *display, 132 int screen, 133 XSettingsNotifyFunc notify, 134 XSettingsWatchFunc watch, 135 void *cb_data, 136 XSettingsGrabFunc grab, 137 XSettingsGrabFunc ungrab); 138void xsettings_client_set_grab_func (XSettingsClient *client, 139 XSettingsGrabFunc grab); 140void xsettings_client_set_ungrab_func (XSettingsClient *client, 141 XSettingsGrabFunc ungrab); 142void xsettings_client_destroy (XSettingsClient *client); 143Bool xsettings_client_process_event (XSettingsClient *client, 144 const XEvent *xev); 145XSettingsResult xsettings_client_get_setting (XSettingsClient *client, 146 const char *name, 147 XSettingsSetting **setting); 148 149#ifdef __cplusplus 150} 151#endif /* __cplusplus */ 152 153#endif /* XSETTINGS_CLIENT_H */ 154[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.