summaryrefslogtreecommitdiffhomepage
path: root/X-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-08-18 05:02:34 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-06-09 10:27:50 +0200
commit24e37795d2db8fdc6f7809e793dadbae80211d26 (patch)
treef2fd152fb44518222e290e555f0274af18d877bd /X-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h
parent9a87e2cb6e588641e3cff52655013594c492e033 (diff)
add SDKs
Diffstat (limited to 'X-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h')
-rwxr-xr-xX-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h234
1 files changed, 234 insertions, 0 deletions
diff --git a/X-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h b/X-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h
new file mode 100755
index 0000000..e61d272
--- /dev/null
+++ b/X-Plane-SDK/CHeaders/Widgets/XPWidgetUtils.h
@@ -0,0 +1,234 @@
+#ifndef _XPWidgetUtils_h_
+#define _XPWidgetUtils_h_
+
+/*
+ * Copyright 2005-2012 Sandy Barbour and Ben Supnik
+ *
+ * All rights reserved. See license.txt for usage.
+ *
+ * X-Plane SDK Version: 2.1.1
+ *
+ */
+
+/*
+ * XPWidgetUtils - USAGE NOTES
+ *
+ * The XPWidgetUtils library contains useful functions that make writing and
+ * using widgets less of a pain.
+ *
+ * One set of functions are the widget behavior functions. These functions
+ * each add specific useful behaviors to widgets. They can be used in two
+ * manners:
+ *
+ * 1. You can add a widget behavior function to a widget as a callback proc
+ * using the XPAddWidgetCallback function. The widget will gain that
+ * behavior. Remember that the last function you add has highest priority.
+ * You can use this to change or augment the behavior of an existing finished
+ * widget.
+ *
+ * 2. You can call a widget function from inside your own widget function.
+ * This allows you to include useful behaviors in custom-built widgets. A
+ * number of the standard widgets get their behavior from this library. To do
+ * this, call the behavior function from your function first. If it returns
+ * 1, that means it handled the event and you don't need to; simply return 1.
+ *
+ */
+
+#include "XPWidgetDefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+ * GENERAL UTILITIES
+ ***************************************************************************/
+/*
+ *
+ *
+ */
+
+
+
+
+/*
+ * Convenience accessors
+ *
+ * It can be clumsy accessing the variables passed in by pointer to a struct
+ * for mouse and reshape messages; these accessors let you simply pass in the param
+ * right from the arguments of your widget proc and get back the value you want.
+ *
+ */
+#define MOUSE_X(param) (((XPMouseState_t *) (param))->x)
+#define MOUSE_Y(param) (((XPMouseState_t *) (param))->y)
+
+#define DELTA_X(param) (((XPWidgetGeometryChange_t *) (param))->dx)
+#define DELTA_Y(param) (((XPWidgetGeometryChange_t *) (param))->dy)
+#define DELTA_W(param) (((XPWidgetGeometryChange_t *) (param))->dwidth)
+#define DELTA_H(param) (((XPWidgetGeometryChange_t *) (param))->dheight)
+
+#define KEY_CHAR(param) (((XPKeyState_t *) (param))->key)
+#define KEY_FLAGS(param) (((XPKeyState_t *) (param))->flags)
+#define KEY_VKEY(param) (((XPKeyState_t *) (param))->vkey)
+
+#define IN_RECT(x, y, l, t, r, b) \
+ (((x) >= (l)) && ((x) <= (r)) && ((y) >= (b)) && ((y) <= (t)))
+
+/*
+ * XPWidgetCreate_t
+ *
+ * This structure contains all of the parameters needed to create a wiget. It
+ * is used with XPUCreateWidgets to create widgets in bulk from an array. All
+ * parameters correspond to those of XPCreateWidget except for the container
+ * index. If the container index is equal to the index of a widget in the
+ * array, the widget in the array passed to XPUCreateWidgets is used as the
+ * parent of this widget. Note that if you pass an index greater than your
+ * own position in the array, the parent you are requesting will not exist
+ * yet. If the container index is NO_PARENT, the parent widget is specified as
+ * NULL. If the container index is PARAM_PARENT, the widget passed into
+ * XPUCreateWidgets is used.
+ *
+ */
+typedef struct {
+ int left;
+ int top;
+ int right;
+ int bottom;
+ int visible;
+ const char * descriptor;
+ int isRoot;
+ int containerIndex;
+ XPWidgetClass widgetClass;
+} XPWidgetCreate_t;
+
+#define NO_PARENT -1
+
+#define PARAM_PARENT -2
+
+#define WIDGET_COUNT(x) ((sizeof(x) / sizeof(XPWidgetCreate_t)))
+
+/*
+ * XPUCreateWidgets
+ *
+ * This function creates a series of widgets from a table...see
+ * XPCreateWidget_t above. Pass in an array of widget creation structures and
+ * an array of widget IDs that will receive each widget.
+ *
+ * Widget parents are specified by index into the created widget table,
+ * allowing you to create nested widget structures. You can create multiple
+ * widget trees in one table. Generally you should create widget trees from
+ * the top down.
+ *
+ * You can also pass in a widget ID that will be used when the widget's parent
+ * is listed as PARAM_PARENT; this allows you to embed widgets created with
+ * XPUCreateWidgets in a widget created previously.
+ *
+ */
+WIDGET_API void XPUCreateWidgets(
+ const XPWidgetCreate_t * inWidgetDefs,
+ int inCount,
+ XPWidgetID inParamParent,
+ XPWidgetID * ioWidgets);
+
+/*
+ * XPUMoveWidgetBy
+ *
+ * Simply moves a widget by an amount, +x = right, +y=up, without resizing the
+ * widget.
+ *
+ */
+WIDGET_API void XPUMoveWidgetBy(
+ XPWidgetID inWidget,
+ int inDeltaX,
+ int inDeltaY);
+
+/***************************************************************************
+ * LAYOUT MANAGERS
+ ***************************************************************************/
+/*
+ * The layout managers are widget behavior functions for handling where
+ * widgets move. Layout managers can be called from a widget function or
+ * attached to a widget later.
+ *
+ */
+
+
+
+/*
+ * XPUFixedLayout
+ *
+ * This function causes the widget to maintain its children in fixed position
+ * relative to itself as it is resized. Use this on the top level 'window'
+ * widget for your window.
+ *
+ */
+WIDGET_API int XPUFixedLayout(
+ XPWidgetMessage inMessage,
+ XPWidgetID inWidget,
+ intptr_t inParam1,
+ intptr_t inParam2);
+
+/***************************************************************************
+ * WIDGET PROC BEHAVIORS
+ ***************************************************************************/
+/*
+ * These widget behavior functions add other useful behaviors to widgets.
+ * These functions cannot be attached to a widget; they must be called from
+ * your widget function.
+ *
+ */
+
+
+
+/*
+ * XPUSelectIfNeeded
+ *
+ * This causes the widget to bring its window to the foreground if it is not
+ * already. inEatClick specifies whether clicks in the background should be
+ * consumed by bringin the window to the foreground.
+ *
+ */
+WIDGET_API int XPUSelectIfNeeded(
+ XPWidgetMessage inMessage,
+ XPWidgetID inWidget,
+ intptr_t inParam1,
+ intptr_t inParam2,
+ int inEatClick);
+
+/*
+ * XPUDefocusKeyboard
+ *
+ * This causes a click in the widget to send keyboard focus back to X-Plane.
+ * This stops editing of any text fields, etc.
+ *
+ */
+WIDGET_API int XPUDefocusKeyboard(
+ XPWidgetMessage inMessage,
+ XPWidgetID inWidget,
+ intptr_t inParam1,
+ intptr_t inParam2,
+ int inEatClick);
+
+/*
+ * XPUDragWidget
+ *
+ * XPUDragWidget drags the widget in response to mouse clicks. Pass in not
+ * only the event, but the global coordinates of the drag region, which might
+ * be a sub-region of your widget (for example, a title bar).
+ *
+ */
+WIDGET_API int XPUDragWidget(
+ XPWidgetMessage inMessage,
+ XPWidgetID inWidget,
+ intptr_t inParam1,
+ intptr_t inParam2,
+ int inLeft,
+ int inTop,
+ int inRight,
+ int inBottom);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif