summaryrefslogtreecommitdiffhomepage
path: root/X-Plane-SDK/CHeaders/Widgets/XPUIGraphics.h
diff options
context:
space:
mode:
Diffstat (limited to 'X-Plane-SDK/CHeaders/Widgets/XPUIGraphics.h')
-rwxr-xr-xX-Plane-SDK/CHeaders/Widgets/XPUIGraphics.h363
1 files changed, 363 insertions, 0 deletions
diff --git a/X-Plane-SDK/CHeaders/Widgets/XPUIGraphics.h b/X-Plane-SDK/CHeaders/Widgets/XPUIGraphics.h
new file mode 100755
index 0000000..24822c6
--- /dev/null
+++ b/X-Plane-SDK/CHeaders/Widgets/XPUIGraphics.h
@@ -0,0 +1,363 @@
+#ifndef _XPUIGraphics_h_
+#define _XPUIGraphics_h_
+
+/*
+ * Copyright 2005-2012 Sandy Barbour and Ben Supnik
+ *
+ * All rights reserved. See license.txt for usage.
+ *
+ * X-Plane SDK Version: 2.1.1
+ *
+ */
+
+/*
+ *
+ *
+ */
+
+#include "XPWidgetDefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+ * UI GRAPHICS
+ ***************************************************************************/
+/*
+ *
+ *
+ */
+
+
+/*
+ * XPWindowStyle
+ *
+ * There are a few built-in window styles in X-Plane that you can use.
+ *
+ * Note that X-Plane 6 does not offer real shadow-compositing; you must make
+ * sure to put a window on top of another window of the right style to the
+ * shadows work, etc. This applies to elements with insets and shadows. The
+ * rules are:
+ *
+ * Sub windows must go on top of main windows, and screens and list views on
+ * top of subwindows. Only help and main windows can be over the main screen.
+ *
+ *
+ * With X-Plane 7 any window or element may be placed over any other element.
+ *
+ * Some windows are scaled by stretching, some by repeating. The drawing
+ * routines know which scaling method to use. The list view cannot be
+ * rescaled in x-plane 6 because it has both a repeating pattern and a
+ * gradient in one element. All other elements can be rescaled.
+ *
+ */
+enum {
+ /* An LCD screen that shows help. */
+ xpWindow_Help = 0
+
+ /* A dialog box window. */
+ ,xpWindow_MainWindow = 1
+
+ /* A panel or frame within a dialog box window. */
+ ,xpWindow_SubWindow = 2
+
+ /* An LCD screen within a panel to hold text displays. */
+ ,xpWindow_Screen = 4
+
+ /* A list view within a panel for scrolling file names, etc. */
+ ,xpWindow_ListView = 5
+
+
+};
+typedef int XPWindowStyle;
+
+/*
+ * XPDrawWindow
+ *
+ * This routine draws a window of the given dimensions at the given offset on
+ * the virtual screen in a given style. The window is automatically scaled as
+ * appropriate using a bitmap scaling technique (scaling or repeating) as
+ * appropriate to the style.
+ *
+ */
+WIDGET_API void XPDrawWindow(
+ int inX1,
+ int inY1,
+ int inX2,
+ int inY2,
+ XPWindowStyle inStyle);
+
+/*
+ * XPGetWindowDefaultDimensions
+ *
+ * This routine returns the default dimensions for a window. Output is either
+ * a minimum or fixed value depending on whether the window is scalable.
+ *
+ */
+WIDGET_API void XPGetWindowDefaultDimensions(
+ XPWindowStyle inStyle,
+ int * outWidth, /* Can be NULL */
+ int * outHeight); /* Can be NULL */
+
+/*
+ * XPElementStyle
+ *
+ * Elements are individually drawable UI things like push buttons, etc. The
+ * style defines what kind of element you are drawing. Elements can be
+ * stretched in one or two dimensions (depending on the element). Some
+ * elements can be lit.
+ *
+ * In x-plane 6 some elements must be drawn over metal. Some are scalable and
+ * some are not. Any element can be drawn anywhere in x-plane 7.
+ *
+ * Scalable Axis Required Background
+ *
+ */
+enum {
+ /* x metal */
+ xpElement_TextField = 6
+
+ /* none metal */
+ ,xpElement_CheckBox = 9
+
+ /* none metal */
+ ,xpElement_CheckBoxLit = 10
+
+ /* none window header */
+ ,xpElement_WindowCloseBox = 14
+
+ /* none window header */
+ ,xpElement_WindowCloseBoxPressed = 15
+
+ /* x metal */
+ ,xpElement_PushButton = 16
+
+ /* x metal */
+ ,xpElement_PushButtonLit = 17
+
+ /* none any */
+ ,xpElement_OilPlatform = 24
+
+ /* none any */
+ ,xpElement_OilPlatformSmall = 25
+
+ /* none any */
+ ,xpElement_Ship = 26
+
+ /* none any */
+ ,xpElement_ILSGlideScope = 27
+
+ /* none any */
+ ,xpElement_MarkerLeft = 28
+
+ /* none any */
+ ,xpElement_Airport = 29
+
+ /* none any */
+ ,xpElement_Waypoint = 30
+
+ /* none any */
+ ,xpElement_NDB = 31
+
+ /* none any */
+ ,xpElement_VOR = 32
+
+ /* none any */
+ ,xpElement_RadioTower = 33
+
+ /* none any */
+ ,xpElement_AircraftCarrier = 34
+
+ /* none any */
+ ,xpElement_Fire = 35
+
+ /* none any */
+ ,xpElement_MarkerRight = 36
+
+ /* none any */
+ ,xpElement_CustomObject = 37
+
+ /* none any */
+ ,xpElement_CoolingTower = 38
+
+ /* none any */
+ ,xpElement_SmokeStack = 39
+
+ /* none any */
+ ,xpElement_Building = 40
+
+ /* none any */
+ ,xpElement_PowerLine = 41
+
+ /* none metal */
+ ,xpElement_CopyButtons = 45
+
+ /* none metal */
+ ,xpElement_CopyButtonsWithEditingGrid = 46
+
+ /* x, y metal */
+ ,xpElement_EditingGrid = 47
+
+ /* THIS CAN PROBABLY BE REMOVED */
+ ,xpElement_ScrollBar = 48
+
+ /* none any */
+ ,xpElement_VORWithCompassRose = 49
+
+ /* none metal */
+ ,xpElement_Zoomer = 51
+
+ /* x, y metal */
+ ,xpElement_TextFieldMiddle = 52
+
+ /* none metal */
+ ,xpElement_LittleDownArrow = 53
+
+ /* none metal */
+ ,xpElement_LittleUpArrow = 54
+
+ /* none metal */
+ ,xpElement_WindowDragBar = 61
+
+ /* none metal */
+ ,xpElement_WindowDragBarSmooth = 62
+
+
+};
+typedef int XPElementStyle;
+
+/*
+ * XPDrawElement
+ *
+ * XPDrawElement draws a given element at an offset on the virtual screen in
+ * set dimensions. EVEN if the element is not scalable, it will be scaled if
+ * the width and height do not match the preferred dimensions; it'll just look
+ * ugly. Pass inLit to see the lit version of the element; if the element
+ * cannot be lit this is ignored.
+ *
+ */
+WIDGET_API void XPDrawElement(
+ int inX1,
+ int inY1,
+ int inX2,
+ int inY2,
+ XPElementStyle inStyle,
+ int inLit);
+
+/*
+ * XPGetElementDefaultDimensions
+ *
+ * This routine returns the recommended or minimum dimensions of a given UI
+ * element. outCanBeLit tells whether the element has both a lit and unlit
+ * state. Pass NULL to not receive any of these parameters.
+ *
+ */
+WIDGET_API void XPGetElementDefaultDimensions(
+ XPElementStyle inStyle,
+ int * outWidth, /* Can be NULL */
+ int * outHeight, /* Can be NULL */
+ int * outCanBeLit); /* Can be NULL */
+
+/*
+ * XPTrackStyle
+ *
+ * A track is a UI element that displays a value vertically or horizontally.
+ * X-Plane has three kinds of tracks: scroll bars, sliders, and progress bars.
+ * Tracks can be displayed either horizontally or vertically; tracks will
+ * choose their own layout based on the larger dimension of their dimensions
+ * (e.g. they know if they are tall or wide). Sliders may be lit or unlit
+ * (showing the user manipulating them).
+ *
+ * ScrollBar - this is a standard scroll bar with arrows and a thumb to drag.
+ * Slider - this is a simple track with a ball in the middle that can be
+ * slid. Progress - this is a progress indicator showing how a long task is
+ * going.
+ *
+ */
+enum {
+ /* not over metal can be lit can be rotated */
+ xpTrack_ScrollBar = 0
+
+ /* over metal can be lit can be rotated */
+ ,xpTrack_Slider = 1
+
+ /* over metal cannot be lit cannot be rotated */
+ ,xpTrack_Progress = 2
+
+
+};
+typedef int XPTrackStyle;
+
+/*
+ * XPDrawTrack
+ *
+ * This routine draws a track. You pass in the track dimensions and size; the
+ * track picks the optimal orientation for these dimensions. Pass in the
+ * track's minimum current and maximum values; the indicator will be
+ * positioned appropriately. You can also specify whether the track is lit or
+ * not.
+ *
+ */
+WIDGET_API void XPDrawTrack(
+ int inX1,
+ int inY1,
+ int inX2,
+ int inY2,
+ int inMin,
+ int inMax,
+ int inValue,
+ XPTrackStyle inTrackStyle,
+ int inLit);
+
+/*
+ * XPGetTrackDefaultDimensions
+ *
+ * This routine returns a track's default smaller dimension; all tracks are
+ * scalable in the larger dimension. It also returns whether a track can be
+ * lit.
+ *
+ */
+WIDGET_API void XPGetTrackDefaultDimensions(
+ XPTrackStyle inStyle,
+ int * outWidth,
+ int * outCanBeLit);
+
+/*
+ * XPGetTrackMetrics
+ *
+ * This routine returns the metrics of a track. If you want to write UI code
+ * to manipulate a track, this routine helps you know where the mouse
+ * locations are. For most other elements, the rectangle the element is drawn
+ * in is enough information. However, the scrollbar drawing routine does some
+ * automatic placement; this routine lets you know where things ended up. You
+ * pass almost everything you would pass to the draw routine. You get out the
+ * orientation, and other useful stuff.
+ *
+ * Besides orientation, you get five dimensions for the five parts of a
+ * scrollbar, which are the down button, down area (area before the thumb),
+ * the thumb, and the up area and button. For horizontal scrollers, the left
+ * button decreases; for vertical scrollers, the top button decreases.
+ *
+ */
+WIDGET_API void XPGetTrackMetrics(
+ int inX1,
+ int inY1,
+ int inX2,
+ int inY2,
+ int inMin,
+ int inMax,
+ int inValue,
+ XPTrackStyle inTrackStyle,
+ int * outIsVertical,
+ int * outDownBtnSize,
+ int * outDownPageSize,
+ int * outThumbSize,
+ int * outUpPageSize,
+ int * outUpBtnSize);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif