This file is indexed.

/usr/include/obs/obs-ui.h is in libobs-dev 0.15.4+dfsg1-1+b1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/******************************************************************************
    Copyright (C) 2013-2014 by Hugh Bailey <obs.jim@gmail.com>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/

#pragma once

#include "util/c99defs.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 *   @file
 *
 *   Modules can specify custom user-interface-specific exports.  UI functions
 * can be within the same library as the actual core logic, or separated in to
 * different modules to split up UI logic and core module logic.
 *
 *   The reasoning for this is to allow for custom user interface of differing
 * toolkits or for automatically generated user interface, or to simply allow
 * separation of UI code from core code (which may often be in differing
 * languages).
 */

/** Modal UI definition structure */
struct obs_modal_ui {
	const char *id;     /**< Identifier associated with this UI */
	const char *task;   /**< Task of the UI */
	const char *target; /**< UI target (UI toolkit or program name) */

	/**
	 * Callback to execute modal interface.
	 *
	 * The @b object variable points to the input/output/encoder/etc.  The
	 * @b ui_data varaible points to the UI parent or UI-specific data to
	 * be used with the custom user interface.
	 *
	 * What @b ui_data points to differs depending on the target, and you
	 * should use discretion and consistency when using this variable to
	 * relay information to the UI function.  For example, it would be
	 * ideal to have @b ui_data point to a parent, QWidget for Qt, or a
	 * wxWindow for wxWidgets, etc., though it's up to the discretion of
	 * the developer to define that value.  Because of the nature of void
	 * pointers, discretion and consistency is advised.
	 *
	 * @param  object   Pointer/handle to the data associated with this
	 *                  call.
	 * @param  ui_data  UI data to pass associated with this specific
	 *                  target, if any.
	 * @return          @b true if user completed the task, or
	 *                  @b false if user cancelled the task.
	 */
	bool (*exec)(void *object, void *ui_data);

	void *type_data;
	void (*free_type_data)(void *type_data);
};

/**
 * Regsiters a modal UI definition to the current obs context.  This should be
 * used in obs_module_load.
 *
 * @param  info  Pointer to the modal definition structure
 */
EXPORT void obs_register_modal_ui(const struct obs_modal_ui *info);

/* ------------------------------------------------------------------------- */

/** Modeless UI definition structure */
struct obs_modeless_ui {
	const char *id;     /**< Identifier associated with this UI */
	const char *task;   /**< Task of the UI */
	const char *target; /**< UI target (UI toolkit or program name) */

	/**
	 * Callback to create modeless interface.
	 *
	 * This function is almost identical to the modal exec function,
	 * except modeless UI calls return immediately, and typically are
	 * supposed to return a pointer or handle to the specific UI object
	 * that was created.  For example, a Qt object would ideally return a
	 * pointer to a QWidget.  Again, discretion and consistency is advised
	 * for the return value.
	 *
	 * @param   object  Pointer/handle to the data associated with this
	 *                  call.
	 * @param  ui_data  UI data to pass associated with this specific
	 *                  target, if any.
	 * @return          Pointer/handle to the modeless UI associated with
	 *                  the specific target.
	 */
	void *(*create)(void *object, void *ui_data);

	void *type_data;
	void (*free_type_data)(void *type_data);
};

/**
 * Registers a modeless UI definition to the current obs context.  This should
 * be used in obs_module_load.
 *
 * @param  info  Pointer to the modal definition structure
 */
EXPORT void obs_register_modeless_ui(const struct obs_modeless_ui *info);

/* ------------------------------------------------------------------------- */

#define OBS_UI_SUCCESS   0
#define OBS_UI_CANCEL   -1
#define OBS_UI_NOTFOUND -2

/**
 * Requests modal UI to be displayed.  Returns when user is complete.
 *
 * @param    name  Name of the input/output/etc type that UI was requested for
 * @param    task  Task of the user interface (usually "config")
 * @param  target  Desired target (i.e. "qt", "wx", "gtk3", "win32", etc)
 * @param    data  Pointer to the obs input/output/etc
 * @param ui_data  UI-specific data, usually a parent pointer/handle (if any)
 *
 * @return         OBS_UI_SUCCESS if the UI was successful,
 *                 OBS_UI_CANCEL if the UI was cancelled by the user, or
 *                 OBS_UI_NOTFOUND if the UI callback was not found
 */
EXPORT int obs_exec_ui(const char *id, const char *task, const char *target,
		void *data, void *ui_data);

/**
 * Requests modeless UI to be created.  Returns immediately.
 *
 * @param    name  Name of the input/output/etc type that UI was requested for
 * @param    task  Task of the user interface
 * @param  target  Desired target (i.e. "qt", "wx", "gtk3", "win32", etc)
 * @param    data  Pointer to the obs input/output/etc
 * @param ui_data  UI-specific data, usually a parent pointer/handle (if any)
 *
 * @return         Pointer/handle to the target-specific modeless object, or
 *                 NULL if not found or failed.
 */
EXPORT void *obs_create_ui(const char *id, const char *task,
		const char *target, void *data, void *ui_data);


#ifdef __cplusplus
}
#endif