123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949 |
- /*
- * 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, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- */
- /** \file
- * \ingroup GHOST
- * \brief GHOST C-API function and type declarations.
- */
- #ifndef __GHOST_C_API_H__
- #define __GHOST_C_API_H__
- #include "GHOST_Types.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * Creates a "handle" for a C++ GHOST object.
- * A handle is just an opaque pointer to an empty struct.
- * In the API the pointer is cast to the actual C++ class.
- * The 'name' argument to the macro is the name of the handle to create.
- */
- GHOST_DECLARE_HANDLE(GHOST_SystemHandle);
- GHOST_DECLARE_HANDLE(GHOST_TimerTaskHandle);
- GHOST_DECLARE_HANDLE(GHOST_WindowHandle);
- GHOST_DECLARE_HANDLE(GHOST_EventHandle);
- GHOST_DECLARE_HANDLE(GHOST_RectangleHandle);
- GHOST_DECLARE_HANDLE(GHOST_EventConsumerHandle);
- GHOST_DECLARE_HANDLE(GHOST_ContextHandle);
- /**
- * Definition of a callback routine that receives events.
- * \param event The event received.
- * \param userdata The callback's user data, supplied to GHOST_CreateSystem.
- */
- typedef int (*GHOST_EventCallbackProcPtr)(GHOST_EventHandle event, GHOST_TUserDataPtr userdata);
- /**
- * Creates the one and only system.
- * \return a handle to the system.
- */
- extern GHOST_SystemHandle GHOST_CreateSystem(void);
- /**
- * Disposes the one and only system.
- * \param systemhandle The handle to the system
- * \return An indication of success.
- */
- extern GHOST_TSuccess GHOST_DisposeSystem(GHOST_SystemHandle systemhandle);
- /**
- * Creates an event consumer object
- * \param eventCallback The event callback routine.
- * \param userdata Pointer to user data returned to the callback routine.
- */
- extern GHOST_EventConsumerHandle GHOST_CreateEventConsumer(
- GHOST_EventCallbackProcPtr eventCallback, GHOST_TUserDataPtr userdata);
- /**
- * Disposes an event consumer object
- * \param consumerhandle Handle to the event consumer.
- * \return An indication of success.
- */
- extern GHOST_TSuccess GHOST_DisposeEventConsumer(GHOST_EventConsumerHandle consumerhandle);
- /**
- * Returns the system time.
- * Returns the number of milliseconds since the start of the system process.
- * Based on ANSI clock() routine.
- * \param systemhandle The handle to the system
- * \return The number of milliseconds.
- */
- extern GHOST_TUns64 GHOST_GetMilliSeconds(GHOST_SystemHandle systemhandle);
- /**
- * Installs a timer.
- * Note that, on most operating systems, messages need to be processed in order
- * for the timer callbacks to be invoked.
- * \param systemhandle The handle to the system
- * \param delay The time to wait for the first call to the timerProc (in milliseconds)
- * \param interval The interval between calls to the timerProc (in milliseconds)
- * \param timerProc The callback invoked when the interval expires,
- * \param userData Placeholder for user data.
- * \return A timer task (0 if timer task installation failed).
- */
- extern GHOST_TimerTaskHandle GHOST_InstallTimer(GHOST_SystemHandle systemhandle,
- GHOST_TUns64 delay,
- GHOST_TUns64 interval,
- GHOST_TimerProcPtr timerProc,
- GHOST_TUserDataPtr userData);
- /**
- * Removes a timer.
- * \param systemhandle The handle to the system
- * \param timertaskhandle Timer task to be removed.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_RemoveTimer(GHOST_SystemHandle systemhandle,
- GHOST_TimerTaskHandle timertaskhandle);
- /***************************************************************************************
- * Display/window management functionality
- ***************************************************************************************/
- /**
- * Returns the number of displays on this system.
- * \param systemhandle The handle to the system
- * \return The number of displays.
- */
- extern GHOST_TUns8 GHOST_GetNumDisplays(GHOST_SystemHandle systemhandle);
- /**
- * Returns the dimensions of the main display on this system.
- * \param systemhandle The handle to the system
- * \param width A pointer the width gets put in
- * \param height A pointer the height gets put in
- * \return void.
- */
- extern void GHOST_GetMainDisplayDimensions(GHOST_SystemHandle systemhandle,
- GHOST_TUns32 *width,
- GHOST_TUns32 *height);
- /**
- * Returns the dimensions of all displays combine
- * (the current workspace).
- * No need to worry about overlapping monitors.
- * \param systemhandle The handle to the system
- * \param width A pointer the width gets put in
- * \param height A pointer the height gets put in
- * \return void.
- */
- extern void GHOST_GetAllDisplayDimensions(GHOST_SystemHandle systemhandle,
- GHOST_TUns32 *width,
- GHOST_TUns32 *height);
- /**
- * Create a new window.
- * The new window is added to the list of windows managed.
- * Never explicitly delete the window, use disposeWindow() instead.
- * \param systemhandle The handle to the system
- * \param title The name of the window
- * (displayed in the title bar of the window if the OS supports it).
- * \param left The coordinate of the left edge of the window.
- * \param top The coordinate of the top edge of the window.
- * \param width The width the window.
- * \param height The height the window.
- * \param state The state of the window when opened.
- * \param type The type of drawing context installed in this window.
- * \param glSettings: Misc OpenGL options.
- * \return A handle to the new window ( == NULL if creation failed).
- */
- extern GHOST_WindowHandle GHOST_CreateWindow(GHOST_SystemHandle systemhandle,
- const char *title,
- GHOST_TInt32 left,
- GHOST_TInt32 top,
- GHOST_TUns32 width,
- GHOST_TUns32 height,
- GHOST_TWindowState state,
- GHOST_TDrawingContextType type,
- GHOST_GLSettings glSettings);
- /**
- * Create a new offscreen context.
- * Never explicitly delete the context, use disposeContext() instead.
- * \param systemhandle The handle to the system
- * \return A handle to the new context ( == NULL if creation failed).
- */
- extern GHOST_ContextHandle GHOST_CreateOpenGLContext(GHOST_SystemHandle systemhandle);
- /**
- * Dispose of a context.
- * \param systemhandle The handle to the system
- * \param contexthandle Handle to the context to be disposed.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_DisposeOpenGLContext(GHOST_SystemHandle systemhandle,
- GHOST_ContextHandle contexthandle);
- /**
- * Returns the window user data.
- * \param windowhandle The handle to the window
- * \return The window user data.
- */
- extern GHOST_TUserDataPtr GHOST_GetWindowUserData(GHOST_WindowHandle windowhandle);
- /**
- * Changes the window user data.
- * \param windowhandle The handle to the window
- * \param userdata The window user data.
- */
- extern void GHOST_SetWindowUserData(GHOST_WindowHandle windowhandle, GHOST_TUserDataPtr userdata);
- /**
- * Dispose a window.
- * \param systemhandle The handle to the system
- * \param windowhandle Handle to the window to be disposed.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_DisposeWindow(GHOST_SystemHandle systemhandle,
- GHOST_WindowHandle windowhandle);
- /**
- * Returns whether a window is valid.
- * \param systemhandle The handle to the system
- * \param windowhandle Handle to the window to be checked.
- * \return Indication of validity.
- */
- extern int GHOST_ValidWindow(GHOST_SystemHandle systemhandle, GHOST_WindowHandle windowhandle);
- /**
- * Begins full screen mode.
- * \param systemhandle The handle to the system
- * \param setting The new setting of the display.
- * \param stereoVisual Option for stereo display.
- * \return A handle to the window displayed in full screen.
- * This window is invalid after full screen has been ended.
- */
- extern GHOST_WindowHandle GHOST_BeginFullScreen(GHOST_SystemHandle systemhandle,
- GHOST_DisplaySetting *setting,
- const int stereoVisual);
- /**
- * Ends full screen mode.
- * \param systemhandle The handle to the system
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_EndFullScreen(GHOST_SystemHandle systemhandle);
- /**
- * Returns current full screen mode status.
- * \param systemhandle The handle to the system
- * \return The current status.
- */
- extern int GHOST_GetFullScreen(GHOST_SystemHandle systemhandle);
- /***************************************************************************************
- * Event management functionality
- ***************************************************************************************/
- /**
- * Retrieves events from the system and stores them in the queue.
- * \param systemhandle The handle to the system
- * \param waitForEvent Boolean to indicate that ProcessEvents should
- * wait (block) until the next event before returning.
- * \return Indication of the presence of events.
- */
- extern int GHOST_ProcessEvents(GHOST_SystemHandle systemhandle, int waitForEvent);
- /**
- * Retrieves events from the queue and send them to the event consumers.
- * \param systemhandle The handle to the system
- */
- extern void GHOST_DispatchEvents(GHOST_SystemHandle systemhandle);
- /**
- * Adds the given event consumer to our list.
- * \param systemhandle The handle to the system
- * \param consumerhandle The event consumer to add.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_AddEventConsumer(GHOST_SystemHandle systemhandle,
- GHOST_EventConsumerHandle consumerhandle);
- /**
- * Remove the given event consumer to our list.
- * \param systemhandle The handle to the system
- * \param consumerhandle The event consumer to remove.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_RemoveEventConsumer(GHOST_SystemHandle systemhandle,
- GHOST_EventConsumerHandle consumerhandle);
- /***************************************************************************************
- * Progress bar functionality
- ***************************************************************************************/
- /**
- * Sets the progress bar value displayed in the window/application icon
- * \param windowhandle The handle to the window
- * \param progress The progress % (0.0 to 1.0)
- */
- extern GHOST_TSuccess GHOST_SetProgressBar(GHOST_WindowHandle windowhandle, float progress);
- /**
- * Hides the progress bar in the icon
- * \param windowhandle The handle to the window
- */
- extern GHOST_TSuccess GHOST_EndProgressBar(GHOST_WindowHandle windowhandle);
- /***************************************************************************************
- * Cursor management functionality
- ***************************************************************************************/
- /**
- * Returns the current cursor shape.
- * \param windowhandle The handle to the window
- * \return The current cursor shape.
- */
- extern GHOST_TStandardCursor GHOST_GetCursorShape(GHOST_WindowHandle windowhandle);
- /**
- * Set the shape of the cursor.
- * \param windowhandle The handle to the window
- * \param cursorshape The new cursor shape type id.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetCursorShape(GHOST_WindowHandle windowhandle,
- GHOST_TStandardCursor cursorshape);
- /**
- * Set the shape of the cursor to a custom cursor of specified size.
- * \param windowhandle The handle to the window
- * \param bitmap The bitmap data for the cursor.
- * \param mask The mask data for the cursor.
- * \param sizex The width of the cursor
- * \param sizey The height of the cursor
- * \param hotX The X coordinate of the cursor hotspot.
- * \param hotY The Y coordinate of the cursor hotspot.
- * \param canInvertColor Let macOS invert cursor color to match platform convention.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetCustomCursorShape(GHOST_WindowHandle windowhandle,
- GHOST_TUns8 *bitmap,
- GHOST_TUns8 *mask,
- int sizex,
- int sizey,
- int hotX,
- int hotY,
- GHOST_TUns8 canInvertColor);
- /**
- * Returns the visibility state of the cursor.
- * \param windowhandle The handle to the window
- * \return The visibility state of the cursor.
- */
- extern int GHOST_GetCursorVisibility(GHOST_WindowHandle windowhandle);
- /**
- * Shows or hides the cursor.
- * \param windowhandle The handle to the window
- * \param visible The new visibility state of the cursor.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetCursorVisibility(GHOST_WindowHandle windowhandle, int visible);
- /**
- * Returns the current location of the cursor (location in screen coordinates)
- * \param systemhandle The handle to the system
- * \param x The x-coordinate of the cursor.
- * \param y The y-coordinate of the cursor.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_GetCursorPosition(GHOST_SystemHandle systemhandle,
- GHOST_TInt32 *x,
- GHOST_TInt32 *y);
- /**
- * Updates the location of the cursor (location in screen coordinates).
- * Not all operating systems allow the cursor to be moved (without the input device being moved).
- * \param systemhandle The handle to the system
- * \param x The x-coordinate of the cursor.
- * \param y The y-coordinate of the cursor.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetCursorPosition(GHOST_SystemHandle systemhandle,
- GHOST_TInt32 x,
- GHOST_TInt32 y);
- /**
- * Grabs the cursor for a modal operation, to keep receiving
- * events when the mouse is outside the window. X11 only, others
- * do this automatically.
- * \param windowhandle The handle to the window
- * \param mode The new grab state of the cursor.
- * \param bounds The grab region (optional) - left,top,right,bottom
- * \param mouse_ungrab_xy XY for new mouse location (optional) - x,y
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetCursorGrab(GHOST_WindowHandle windowhandle,
- GHOST_TGrabCursorMode mode,
- GHOST_TAxisFlag warp_axis,
- int bounds[4],
- const int mouse_ungrab_xy[2]);
- /***************************************************************************************
- * Access to mouse button and keyboard states.
- ***************************************************************************************/
- /**
- * Returns the state of a modifier key (ouside the message queue).
- * \param systemhandle The handle to the system
- * \param mask The modifier key state to retrieve.
- * \param isDown Pointer to return modifier state in.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_GetModifierKeyState(GHOST_SystemHandle systemhandle,
- GHOST_TModifierKeyMask mask,
- int *isDown);
- /**
- * Returns the state of a mouse button (ouside the message queue).
- * \param systemhandle The handle to the system
- * \param mask The button state to retrieve.
- * \param isDown Pointer to return button state in.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_GetButtonState(GHOST_SystemHandle systemhandle,
- GHOST_TButtonMask mask,
- int *isDown);
- #ifdef WITH_INPUT_NDOF
- /***************************************************************************************
- * Access to 3D mouse.
- ***************************************************************************************/
- /**
- * Sets 3D mouse dead-zone.
- * \param deadzone: Dead-zone of the 3D mouse (both for rotation and pan) relative to full range.
- */
- extern void GHOST_setNDOFDeadZone(float deadzone);
- #endif
- /***************************************************************************************
- * Drag'n'drop operations
- ***************************************************************************************/
- /**
- * Tells if the ongoing drag'n'drop object can be accepted upon mouse drop
- */
- extern void GHOST_setAcceptDragOperation(GHOST_WindowHandle windowhandle, GHOST_TInt8 canAccept);
- /**
- * Returns the event type.
- * \param eventhandle The handle to the event
- * \return The event type.
- */
- extern GHOST_TEventType GHOST_GetEventType(GHOST_EventHandle eventhandle);
- /**
- * Returns the time this event was generated.
- * \param eventhandle The handle to the event
- * \return The event generation time.
- */
- extern GHOST_TUns64 GHOST_GetEventTime(GHOST_EventHandle eventhandle);
- /**
- * Returns the window this event was generated on,
- * or NULL if it is a 'system' event.
- * \param eventhandle The handle to the event
- * \return The generating window.
- */
- extern GHOST_WindowHandle GHOST_GetEventWindow(GHOST_EventHandle eventhandle);
- /**
- * Returns the event data.
- * \param eventhandle The handle to the event
- * \return The event data.
- */
- extern GHOST_TEventDataPtr GHOST_GetEventData(GHOST_EventHandle eventhandle);
- /**
- * Returns the timer callback.
- * \param timertaskhandle The handle to the timertask
- * \return The timer callback.
- */
- extern GHOST_TimerProcPtr GHOST_GetTimerProc(GHOST_TimerTaskHandle timertaskhandle);
- /**
- * Changes the timer callback.
- * \param timertaskhandle The handle to the timertask
- * \param timerProc The timer callback.
- */
- extern void GHOST_SetTimerProc(GHOST_TimerTaskHandle timertaskhandle,
- GHOST_TimerProcPtr timerProc);
- /**
- * Returns the timer user data.
- * \param timertaskhandle The handle to the timertask
- * \return The timer user data.
- */
- extern GHOST_TUserDataPtr GHOST_GetTimerTaskUserData(GHOST_TimerTaskHandle timertaskhandle);
- /**
- * Changes the time user data.
- * \param timertaskhandle The handle to the timertask
- * \param userdata The timer user data.
- */
- extern void GHOST_SetTimerTaskUserData(GHOST_TimerTaskHandle timertaskhandle,
- GHOST_TUserDataPtr userdata);
- /**
- * Returns indication as to whether the window is valid.
- * \param windowhandle The handle to the window
- * \return The validity of the window.
- */
- extern int GHOST_GetValid(GHOST_WindowHandle windowhandle);
- /**
- * Returns the type of drawing context used in this window.
- * \param windowhandle The handle to the window
- * \return The current type of drawing context.
- */
- extern GHOST_TDrawingContextType GHOST_GetDrawingContextType(GHOST_WindowHandle windowhandle);
- /**
- * Tries to install a rendering context in this window.
- * \param windowhandle The handle to the window
- * \param type The type of rendering context installed.
- * \return Indication as to whether installation has succeeded.
- */
- extern GHOST_TSuccess GHOST_SetDrawingContextType(GHOST_WindowHandle windowhandle,
- GHOST_TDrawingContextType type);
- /**
- * Sets the title displayed in the title bar.
- * \param windowhandle The handle to the window
- * \param title The title to display in the title bar.
- */
- extern void GHOST_SetTitle(GHOST_WindowHandle windowhandle, const char *title);
- /**
- * Returns the title displayed in the title bar. The title
- * should be free'd with free().
- *
- * \param windowhandle The handle to the window
- * \return The title, free with free().
- */
- extern char *GHOST_GetTitle(GHOST_WindowHandle windowhandle);
- /**
- * Returns the window rectangle dimensions.
- * These are screen coordinates.
- * \param windowhandle The handle to the window
- * \return A handle to the bounding rectangle of the window.
- */
- extern GHOST_RectangleHandle GHOST_GetWindowBounds(GHOST_WindowHandle windowhandle);
- /**
- * Returns the client rectangle dimensions.
- * The left and top members of the rectangle are always zero.
- * \param windowhandle The handle to the window
- * \return A handle to the bounding rectangle of the window.
- */
- extern GHOST_RectangleHandle GHOST_GetClientBounds(GHOST_WindowHandle windowhandle);
- /**
- * Disposes a rectangle object
- * \param rectanglehandle Handle to the rectangle.
- */
- void GHOST_DisposeRectangle(GHOST_RectangleHandle rectanglehandle);
- /**
- * Resizes client rectangle width.
- * \param windowhandle The handle to the window
- * \param width The new width of the client area of the window.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetClientWidth(GHOST_WindowHandle windowhandle, GHOST_TUns32 width);
- /**
- * Resizes client rectangle height.
- * \param windowhandle The handle to the window
- * \param height The new height of the client area of the window.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetClientHeight(GHOST_WindowHandle windowhandle, GHOST_TUns32 height);
- /**
- * Resizes client rectangle.
- * \param windowhandle The handle to the window
- * \param width The new width of the client area of the window.
- * \param height The new height of the client area of the window.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetClientSize(GHOST_WindowHandle windowhandle,
- GHOST_TUns32 width,
- GHOST_TUns32 height);
- /**
- * Converts a point in screen coordinates to client rectangle coordinates
- * \param windowhandle The handle to the window
- * \param inX The x-coordinate on the screen.
- * \param inY The y-coordinate on the screen.
- * \param outX The x-coordinate in the client rectangle.
- * \param outY The y-coordinate in the client rectangle.
- */
- extern void GHOST_ScreenToClient(GHOST_WindowHandle windowhandle,
- GHOST_TInt32 inX,
- GHOST_TInt32 inY,
- GHOST_TInt32 *outX,
- GHOST_TInt32 *outY);
- /**
- * Converts a point in screen coordinates to client rectangle coordinates
- * \param windowhandle The handle to the window
- * \param inX The x-coordinate in the client rectangle.
- * \param inY The y-coordinate in the client rectangle.
- * \param outX The x-coordinate on the screen.
- * \param outY The y-coordinate on the screen.
- */
- extern void GHOST_ClientToScreen(GHOST_WindowHandle windowhandle,
- GHOST_TInt32 inX,
- GHOST_TInt32 inY,
- GHOST_TInt32 *outX,
- GHOST_TInt32 *outY);
- /**
- * Returns the state of the window (normal, minimized, maximized).
- * \param windowhandle The handle to the window
- * \return The state of the window.
- */
- extern GHOST_TWindowState GHOST_GetWindowState(GHOST_WindowHandle windowhandle);
- /**
- * Sets the state of the window (normal, minimized, maximized).
- * \param windowhandle The handle to the window
- * \param state The state of the window.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetWindowState(GHOST_WindowHandle windowhandle,
- GHOST_TWindowState state);
- /**
- * Sets the window "modified" status, indicating unsaved changes
- * \param windowhandle The handle to the window
- * \param isUnsavedChanges Unsaved changes or not
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetWindowModifiedState(GHOST_WindowHandle windowhandle,
- GHOST_TUns8 isUnsavedChanges);
- /**
- * Sets the order of the window (bottom, top).
- * \param windowhandle The handle to the window
- * \param order The order of the window.
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_SetWindowOrder(GHOST_WindowHandle windowhandle,
- GHOST_TWindowOrder order);
- /**
- * Swaps front and back buffers of a window.
- * \param windowhandle The handle to the window
- * \return A success indicator.
- */
- extern GHOST_TSuccess GHOST_SwapWindowBuffers(GHOST_WindowHandle windowhandle);
- /**
- * Sets the swap interval for swapBuffers.
- * \param interval The swap interval to use.
- * \return A boolean success indicator.
- */
- extern GHOST_TSuccess GHOST_SetSwapInterval(GHOST_WindowHandle windowhandle, int interval);
- /**
- * Gets the current swap interval for swapBuffers.
- * \param windowhandle: The handle to the window
- * \param intervalOut: pointer to location to return swap interval
- * (left untouched if there is an error)
- * \return A boolean success indicator of if swap interval was successfully read.
- */
- extern GHOST_TSuccess GHOST_GetSwapInterval(GHOST_WindowHandle windowhandle, int *intervalOut);
- /**
- * Activates the drawing context of this window.
- * \param windowhandle The handle to the window
- * \return A success indicator.
- */
- extern GHOST_TSuccess GHOST_ActivateWindowDrawingContext(GHOST_WindowHandle windowhandle);
- /**
- * Invalidates the contents of this window.
- * \param windowhandle The handle to the window
- * \return Indication of success.
- */
- extern GHOST_TSuccess GHOST_InvalidateWindow(GHOST_WindowHandle windowhandle);
- /**
- * Activates the drawing context of this context.
- * \param contexthandle The handle to the context
- * \return A success indicator.
- */
- extern GHOST_TSuccess GHOST_ActivateOpenGLContext(GHOST_ContextHandle contexthandle);
- /**
- * Release the drawing context bound to this thread.
- * \param contexthandle The handle to the context
- * \return A success indicator.
- */
- extern GHOST_TSuccess GHOST_ReleaseOpenGLContext(GHOST_ContextHandle contexthandle);
- /**
- * Get the OpenGL framebuffer handle that serves as a default framebuffer.
- */
- extern unsigned int GHOST_GetDefaultOpenGLFramebuffer(GHOST_WindowHandle windwHandle);
- /**
- * Set which tablet API to use. Only affects Windows, other platforms have a single API.
- * \param systemhandle The handle to the system
- * \param api Enum indicating which API to use.
- */
- extern void GHOST_SetTabletAPI(GHOST_SystemHandle systemhandle, GHOST_TTabletAPI api);
- /**
- * Returns the status of the tablet
- * \param windowhandle The handle to the window
- * \return Status of tablet
- */
- extern const GHOST_TabletData *GHOST_GetTabletData(GHOST_WindowHandle windowhandle);
- /**
- * Access to rectangle width.
- * \param rectanglehandle The handle to the rectangle
- * \return width of the rectangle
- */
- extern GHOST_TInt32 GHOST_GetWidthRectangle(GHOST_RectangleHandle rectanglehandle);
- /**
- * Access to rectangle height.
- * \param rectanglehandle The handle to the rectangle
- * \return height of the rectangle
- */
- extern GHOST_TInt32 GHOST_GetHeightRectangle(GHOST_RectangleHandle rectanglehandle);
- /**
- * Gets all members of the rectangle.
- * \param rectanglehandle The handle to the rectangle
- * \param l Pointer to return left coordinate in.
- * \param t Pointer to return top coordinate in.
- * \param r Pointer to return right coordinate in.
- * \param b Pointer to return bottom coordinate in.
- */
- extern void GHOST_GetRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_TInt32 *l,
- GHOST_TInt32 *t,
- GHOST_TInt32 *r,
- GHOST_TInt32 *b);
- /**
- * Sets all members of the rectangle.
- * \param rectanglehandle The handle to the rectangle
- * \param l requested left coordinate of the rectangle
- * \param t requested top coordinate of the rectangle
- * \param r requested right coordinate of the rectangle
- * \param b requested bottom coordinate of the rectangle
- */
- extern void GHOST_SetRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_TInt32 l,
- GHOST_TInt32 t,
- GHOST_TInt32 r,
- GHOST_TInt32 b);
- /**
- * Returns whether this rectangle is empty.
- * Empty rectangles are rectangles that have width==0 and/or height==0.
- * \param rectanglehandle The handle to the rectangle
- * \return Success value (true == empty rectangle)
- */
- extern GHOST_TSuccess GHOST_IsEmptyRectangle(GHOST_RectangleHandle rectanglehandle);
- /**
- * Returns whether this rectangle is valid.
- * Valid rectangles are rectangles that have m_l <= m_r and m_t <= m_b.
- * Thus, empty rectangles are valid.
- * \param rectanglehandle The handle to the rectangle
- * \return Success value (true == valid rectangle)
- */
- extern GHOST_TSuccess GHOST_IsValidRectangle(GHOST_RectangleHandle rectanglehandle);
- /**
- * Grows (or shrinks the rectangle).
- * The method avoids negative insets making the rectangle invalid
- * \param rectanglehandle The handle to the rectangle
- * \param i The amount of offset given to each extreme (negative values shrink the rectangle).
- */
- extern void GHOST_InsetRectangle(GHOST_RectangleHandle rectanglehandle, GHOST_TInt32 i);
- /**
- * Does a union of the rectangle given and this rectangle.
- * The result is stored in this rectangle.
- * \param rectanglehandle The handle to the rectangle
- * \param anotherrectanglehandle The rectangle that is input for the union operation.
- */
- extern void GHOST_UnionRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_RectangleHandle anotherrectanglehandle);
- /**
- * Grows the rectangle to included a point.
- * \param rectanglehandle The handle to the rectangle
- * \param x The x-coordinate of the point.
- * \param y The y-coordinate of the point.
- */
- extern void GHOST_UnionPointRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_TInt32 x,
- GHOST_TInt32 y);
- /**
- * Returns whether the point is inside this rectangle.
- * Point on the boundary is considered inside.
- * \param rectanglehandle The handle to the rectangle
- * \param x x-coordinate of point to test.
- * \param y y-coordinate of point to test.
- * \return Success value (true if point is inside).
- */
- extern GHOST_TSuccess GHOST_IsInsideRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_TInt32 x,
- GHOST_TInt32 y);
- /**
- * Returns whether the rectangle is inside this rectangle.
- * \param rectanglehandle The handle to the rectangle
- * \param anotherrectanglehandle The rectangle to test.
- * \return visibility (not, partially or fully visible).
- */
- extern GHOST_TVisibility GHOST_GetRectangleVisibility(
- GHOST_RectangleHandle rectanglehandle, GHOST_RectangleHandle anotherrectanglehandle);
- /**
- * Sets rectangle members.
- * Sets rectangle members such that it is centered at the given location.
- * \param rectanglehandle The handle to the rectangle
- * \param cx Requested center x-coordinate of the rectangle
- * \param cy Requested center y-coordinate of the rectangle
- */
- extern void GHOST_SetCenterRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_TInt32 cx,
- GHOST_TInt32 cy);
- /**
- * Sets rectangle members.
- * Sets rectangle members such that it is centered at the given location,
- * with the width requested.
- * \param rectanglehandle The handle to the rectangle
- * \param cx requested center x-coordinate of the rectangle
- * \param cy requested center y-coordinate of the rectangle
- * \param w requested width of the rectangle
- * \param h requested height of the rectangle
- */
- extern void GHOST_SetRectangleCenter(GHOST_RectangleHandle rectanglehandle,
- GHOST_TInt32 cx,
- GHOST_TInt32 cy,
- GHOST_TInt32 w,
- GHOST_TInt32 h);
- /**
- * Clips a rectangle.
- * Updates the rectangle given such that it will fit within this one.
- * This can result in an empty rectangle.
- * \param rectanglehandle The handle to the rectangle
- * \param anotherrectanglehandle The rectangle to clip
- * \return Whether clipping has occurred
- */
- extern GHOST_TSuccess GHOST_ClipRectangle(GHOST_RectangleHandle rectanglehandle,
- GHOST_RectangleHandle anotherrectanglehandle);
- /**
- * Return the data from the clipboard
- * \param selection Boolean to return the selection instead, X11 only feature.
- * \return clipboard data
- */
- extern GHOST_TUns8 *GHOST_getClipboard(int selection);
- /**
- * Put data to the Clipboard
- * \param buffer the string buffer to set.
- * \param selection Set the selection instead, X11 only feature.
- */
- extern void GHOST_putClipboard(GHOST_TInt8 *buffer, int selection);
- /**
- * Toggles console
- * \param action
- * - 0: Hides
- * - 1: Shows
- * - 2: Toggles
- * - 3: Hides if it runs not from command line
- * - *: Does nothing
- * \return current status (1 -visible, 0 - hidden)
- */
- extern int GHOST_toggleConsole(int action);
- /**
- * Use native pixel size (MacBook pro 'retina'), if supported.
- */
- extern int GHOST_UseNativePixels(void);
- /**
- * Focus window after opening, or put them in the background.
- */
- extern void GHOST_UseWindowFocus(int use_focus);
- /**
- * If window was opened using native pixel size, it returns scaling factor.
- */
- extern float GHOST_GetNativePixelSize(GHOST_WindowHandle windowhandle);
- /**
- * Returns the suggested DPI for this window.
- */
- extern GHOST_TUns16 GHOST_GetDPIHint(GHOST_WindowHandle windowhandle);
- /**
- * Enable IME attached to the given window, i.e. allows user-input
- * events to be dispatched to the IME.
- * \param windowhandle Window handle of the caller
- * \param x Requested x-coordinate of the rectangle
- * \param y Requested y-coordinate of the rectangle
- * \param w Requested width of the rectangle
- * \param h Requested height of the rectangle
- * \param complete Whether or not to complete the ongoing composition
- * true: Start a new composition
- * false: Move the IME windows to the given position without finishing it.
- */
- extern void GHOST_BeginIME(GHOST_WindowHandle windowhandle,
- GHOST_TInt32 x,
- GHOST_TInt32 y,
- GHOST_TInt32 w,
- GHOST_TInt32 h,
- int complete);
- /**
- * Disable the IME attached to the given window, i.e. prohibits any user-input
- * events from being dispatched to the IME.
- * \param windowhandle The window handle of the caller
- */
- extern void GHOST_EndIME(GHOST_WindowHandle windowhandle);
- #ifdef __cplusplus
- }
- #endif
- #endif
|