|
Blender V5.0
|
#include <GHOST_SystemCocoa.hh>
Inherits GHOST_System.
Protected Member Functions | |
| GHOST_TSuccess | init () override |
| GHOST_TSuccess | setMouseCursorPosition (int32_t x, int32_t y) |
| Protected Member Functions inherited from GHOST_System | |
| GHOST_System () | |
| ~GHOST_System () override | |
| GHOST_TSuccess | exit () override |
| Protected Member Functions inherited from GHOST_ISystem | |
| GHOST_ISystem () | |
| virtual | ~GHOST_ISystem ()=default |
Protected Attributes | |
| bool | outside_loop_event_processed_ |
| bool | need_delayed_application_become_active_event_processing_ |
| uint32_t | modifier_mask_ |
| bool | ignore_window_sized_messages_ |
| bool | ignore_momentum_scroll_ |
| bool | multi_touch_scroll_ |
| double | last_warp_timestamp_ |
| Protected Attributes inherited from GHOST_System | |
| GHOST_TimerManager * | timer_manager_ |
| GHOST_WindowManager * | window_manager_ |
| GHOST_EventManager * | event_manager_ |
| bool | multitouch_gestures_ |
| GHOST_TTabletAPI | tablet_api_ |
| bool | is_debug_enabled_ |
Additional Inherited Members | |
| Static Public Member Functions inherited from GHOST_ISystem | |
| static GHOST_TSuccess | createSystem (bool verbose, bool background) |
| static GHOST_TSuccess | createSystemBackground () |
| static GHOST_TSuccess | disposeSystem () |
| static GHOST_ISystem * | getSystem () |
| static const char * | getSystemBackend () |
| static GHOST_TBacktraceFn | getBacktraceFn () |
| static void | setBacktraceFn (GHOST_TBacktraceFn backtrace_fn) |
| static bool | getUseWindowFrame () |
| static void | setUseWindowFrame (bool use_window_frame) |
| Public Attributes inherited from GHOST_System | |
| bool | native_pixel_ |
| bool | window_focus_ |
| bool | auto_focus_ |
| Static Protected Attributes inherited from GHOST_ISystem | |
| static GHOST_ISystem * | system_ = nullptr |
| static const char * | system_backend_id_ = nullptr |
| static GHOST_TBacktraceFn | backtrace_fn_ = nullptr |
| static bool | use_window_frame_ = true |
Definition at line 25 of file GHOST_SystemCocoa.hh.
| GHOST_SystemCocoa::GHOST_SystemCocoa | ( | ) |
Constructor.
Definition at line 538 of file GHOST_SystemCocoa.mm.
References ignore_momentum_scroll_, ignore_window_sized_messages_, last_warp_timestamp_, modifier_mask_, multi_touch_scroll_, need_delayed_application_become_active_event_processing_, and outside_loop_event_processed_.
|
override |
Destructor.
Definition at line 550 of file GHOST_SystemCocoa.mm.
|
overridevirtual |
Create a new off-screen context. Never explicitly delete the context, use disposeContext() instead.
Implements GHOST_System.
Definition at line 777 of file GHOST_SystemCocoa.mm.
References GHOST_GPUSettings::context_type, GHOST_CONTEXT_PARAMS_FROM_GPU_SETTINGS_OFFSCREEN, and GHOST_GPUSettings::preferred_device.
|
overridevirtual |
Create a new window. The new window is added to the list of windows managed. Never explicitly delete the window, use disposeWindow() instead.
| title | The name of the window. (displayed in the title bar of the window if the OS supports it). |
| left | The coordinate of the left edge of the window. |
| top | The coordinate of the top edge of the window. |
| width | The width the window. |
| height | The height the window. |
| state | The state of the window when opened. |
| gpu_settings | Misc GPU settings. |
| exclusive | Use to show the window on top and ignore others (used full-screen). |
| parent_window | Parent (embedder) window. |
Implements GHOST_ISystem.
Definition at line 717 of file GHOST_SystemCocoa.mm.
References GHOST_GPUSettings::context_type, getMilliSeconds(), GHOST_IWindow::getValid(), GHOST_ASSERT, GHOST_CONTEXT_PARAMS_FROM_GPU_SETTINGS, GHOST_kEventWindowActivate, GHOST_kEventWindowSize, GHOST_PRINT, left, GHOST_GPUSettings::preferred_device, pushEvent, state, top, and GHOST_System::window_manager_.
|
overridevirtual |
Dispose of a context.
| context | Pointer to the context to be disposed. |
Implements GHOST_ISystem.
Definition at line 817 of file GHOST_SystemCocoa.mm.
References GHOST_kSuccess.
|
overridevirtual |
Returns the combine dimensions of all monitors.
Implements GHOST_ISystem.
Definition at line 711 of file GHOST_SystemCocoa.mm.
References getMainDisplayDimensions().
|
overridevirtual |
Returns the state of the mouse buttons (outside the message queue).
| buttons | The state of the buttons. |
Implements GHOST_System.
Definition at line 957 of file GHOST_SystemCocoa.mm.
References GHOST_Buttons::clear(), GHOST_kButtonMaskButton4, GHOST_kButtonMaskButton5, GHOST_kButtonMaskLeft, GHOST_kButtonMaskMiddle, GHOST_kButtonMaskRight, GHOST_kSuccess, and GHOST_Buttons::set().
|
overridevirtual |
Return features supported by the system back-end.
The resulting value doesn't change at run-time.
Implements GHOST_ISystem.
Definition at line 970 of file GHOST_SystemCocoa.mm.
References GHOST_CAPABILITY_FLAG_ALL, GHOST_kCapabilityClipboardPrimary, GHOST_kCapabilityCursorGenerator, GHOST_kCapabilityCursorRGBA, and GHOST_kCapabilityKeyboardHyperKey.
|
overridevirtual |
Returns Clipboard data
| selection | Indicate which buffer to return. |
Implements GHOST_System.
Definition at line 1989 of file GHOST_SystemCocoa.mm.
|
overridevirtual |
Get image data from the Clipboard
| r_width | the returned image width in pixels. |
| r_height | the returned image height in pixels. |
Reimplemented from GHOST_System.
Definition at line 2080 of file GHOST_SystemCocoa.mm.
References ImBuf::byte_buffer, ImBufByteBuffer::data, getNSImagePixelSize(), hasClipboardImage(), IMB_freeImBuf(), NSImageToImBuf(), and NSPasteboardGetImageFile().
|
overridevirtual |
Returns the current location of the cursor (location in screen coordinates)
Implements GHOST_ISystem.
Definition at line 844 of file GHOST_SystemCocoa.mm.
References GHOST_kSuccess, x, and y.
|
overridevirtual |
Returns the dimensions of the main display on this system.
Implements GHOST_ISystem.
Definition at line 694 of file GHOST_SystemCocoa.mm.
Referenced by getAllDisplayDimensions().
|
overridevirtual |
Returns the system time. Returns the number of milliseconds since the start of the system process. Based on ANSI clock() routine.
Implements GHOST_ISystem.
Definition at line 681 of file GHOST_SystemCocoa.mm.
Referenced by createWindow(), handleApplicationBecomeActiveEvent(), handleDraggingEvent(), handleOpenDocumentRequest(), handleQuitRequest(), handleWindowEvent(), processEvents(), and setCursorPosition().
|
overridevirtual |
Returns the state of all modifier keys.
| keys | The state of all modifier keys (true == pressed). |
Implements GHOST_System.
Definition at line 945 of file GHOST_SystemCocoa.mm.
References GHOST_kModifierKeyLeftAlt, GHOST_kModifierKeyLeftControl, GHOST_kModifierKeyLeftOS, GHOST_kModifierKeyLeftShift, GHOST_kSuccess, modifier_mask_, and GHOST_ModifierKeys::set().
|
overridevirtual |
Returns the number of displays on this system.
Implements GHOST_ISystem.
Definition at line 687 of file GHOST_SystemCocoa.mm.
|
overridevirtual |
Get the color of the pixel at the current mouse cursor location
| r_color | returned sRGB float colors |
Reimplemented from GHOST_System.
Definition at line 878 of file GHOST_SystemCocoa.mm.
References GHOST_kFailure, and GHOST_kSuccess.
|
overridevirtual |
Get the Window under the cursor.
Reimplemented from GHOST_System.
Definition at line 824 of file GHOST_SystemCocoa.mm.
References GHOST_System::window_manager_, x, and y.
| GHOST_TSuccess GHOST_SystemCocoa::handleApplicationBecomeActiveEvent | ( | ) |
Handles the Cocoa event telling the application has become active (again)
Definition at line 1083 of file GHOST_SystemCocoa.mm.
References getMilliSeconds(), GHOST_kEventKeyDown, GHOST_kEventKeyUp, GHOST_kFailure, GHOST_kKeyLeftAlt, GHOST_kKeyLeftControl, GHOST_kKeyLeftOS, GHOST_kKeyLeftShift, GHOST_kSuccess, GHOST_WindowCocoa::isDialog(), modifier_mask_, need_delayed_application_become_active_event_processing_, outside_loop_event_processed_, pushEvent, and GHOST_System::window_manager_.
Referenced by processEvents().
| GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent | ( | GHOST_TEventType | eventType, |
| GHOST_TDragnDropTypes | draggedObjectType, | ||
| GHOST_WindowCocoa * | window, | ||
| int | mouseX, | ||
| int | mouseY, | ||
| void * | data ) |
Handles a drag & drop destination event. Called by GHOST_WindowCocoa window subclass.
| eventType | The type of drag & drop event. |
| draggedObjectType | The type object concerned. (currently array of file names, string, TIFF image). |
| mouseX | x mouse coordinate (in cocoa base window coordinates). |
| mouseY | y mouse coordinate. |
| window | The window on which the event occurred. |
Definition at line 1286 of file GHOST_SystemCocoa.mm.
References GHOST_WindowCocoa::clientToScreenIntern(), GHOST_TStringArray::count, data, free(), getMilliSeconds(), GHOST_kDragnDropTypeBitmap, GHOST_kDragnDropTypeFilenames, GHOST_kDragnDropTypeString, GHOST_kEventDraggingDropDone, GHOST_kEventDraggingEntered, GHOST_kEventDraggingExited, GHOST_kEventDraggingUpdated, GHOST_kFailure, GHOST_kSuccess, i, NSImageToImBuf(), outside_loop_event_processed_, pushEvent, GHOST_TStringArray::strings, and GHOST_System::validWindow().
| GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent | ( | void * | eventPtr | ) |
Handles a key event.
| eventPtr | An #NSEvent pointer (cast to void * to enable compilation in standard C++). |
Definition at line 1845 of file GHOST_SystemCocoa.mm.
References convertKey(), GHOST_kEventKeyDown, GHOST_kEventKeyUp, GHOST_kFailure, GHOST_kKeyDownArrow, GHOST_kKeyF1, GHOST_kKeyF20, GHOST_kKeyLeftAlt, GHOST_kKeyLeftArrow, GHOST_kKeyLeftControl, GHOST_kKeyLeftOS, GHOST_kKeyLeftShift, GHOST_kKeyQ, GHOST_kSuccess, ignore_momentum_scroll_, length(), modifier_mask_, printf, pushEvent, GHOST_System::window_manager_, and x.
Referenced by processEvents().
| GHOST_TSuccess GHOST_SystemCocoa::handleMouseEvent | ( | void * | eventPtr | ) |
Handles a mouse event.
| eventPtr | An #NSEvent pointer (cast to void * to enable compilation in standard C++). |
Definition at line 1532 of file GHOST_SystemCocoa.mm.
References GHOST_Rect::b_, bounds(), GHOST_WindowCocoa::clientToScreenIntern(), GHOST_Rect::clip(), convertButton(), GHOST_WindowCocoa::getClientBounds(), GHOST_WindowCocoa::GetCocoaTabletData(), GHOST_Window::getCursorGrabAccum(), GHOST_Window::getCursorGrabAxis(), GHOST_Window::getCursorGrabBounds(), GHOST_Window::getCursorGrabMode(), GHOST_Window::getCursorGrabModeIsWarp(), GHOST_WindowCocoa::getOSWindow(), GHOST_WindowCocoa::getScreen(), GHOST_kButtonMaskLeft, GHOST_kButtonMaskRight, GHOST_kEventButtonDown, GHOST_kEventButtonUp, GHOST_kEventCursorMove, GHOST_kEventWheelAxisHorizontal, GHOST_kEventWheelAxisVertical, GHOST_kFailure, GHOST_kGrabHide, GHOST_kSuccess, GHOST_kTrackpadEventMagnify, GHOST_kTrackpadEventRotate, GHOST_kTrackpadEventScroll, GHOST_kTrackpadEventSmartMagnify, handleTabletEvent(), ignore_momentum_scroll_, GHOST_Rect::l_, last_warp_timestamp_, modifier_mask_, multi_touch_scroll_, GHOST_System::multitouch_gestures_, pushEvent, GHOST_Rect::r_, GHOST_WindowCocoa::screenToClient(), GHOST_Window::setCursorGrabAccum(), setMouseCursorPosition(), GHOST_Rect::t_, GHOST_System::window_manager_, GHOST_Rect::wrapPoint(), x, and y.
| bool GHOST_SystemCocoa::handleOpenDocumentRequest | ( | void * | filepathStr | ) |
Handle Cocoa openFile event Display confirmation request panel if changes performed since last save
Definition at line 1411 of file GHOST_SystemCocoa.mm.
References count, GHOST_Window::getCursorGrabModeIsWarp(), getMilliSeconds(), GHOST_kEventOpenMainFile, GHOST_kFailure, nullptr, pushEvent, and GHOST_System::window_manager_.
| void GHOST_SystemCocoa::handleQuitRequest | ( | ) |
Handle User request to quit, from Menu bar Quit, and Command+Q Display alert panel if changes performed since last save
Definition at line 1397 of file GHOST_SystemCocoa.mm.
References GHOST_Window::getCursorGrabModeIsWarp(), getMilliSeconds(), GHOST_kEventQuitRequest, outside_loop_event_processed_, pushEvent, and GHOST_System::window_manager_.
| bool GHOST_SystemCocoa::handleTabletEvent | ( | void * | eventPtr | ) |
Definition at line 1515 of file GHOST_SystemCocoa.mm.
References handleTabletEvent().
| GHOST_TSuccess GHOST_SystemCocoa::handleTabletEvent | ( | void * | eventPtr, |
| short | eventType ) |
Handles a tablet event.
| eventPtr | An #NSEvent pointer (cast to void* to enable compilation in standard C++). |
| eventType | The type of the event. It needs to be passed separately as it can be either directly in the event type, or as a sub-type if combined with a mouse button event. |
Definition at line 1456 of file GHOST_SystemCocoa.mm.
References GHOST_TabletData::Active, FALSE, GHOST_ASSERT, GHOST_kFailure, GHOST_kSuccess, GHOST_kTabletModeEraser, GHOST_kTabletModeNone, GHOST_kTabletModeStylus, GHOST_TABLET_DATA_NONE, GHOST_TabletData::Pressure, GHOST_System::window_manager_, GHOST_TabletData::Xtilt, and GHOST_TabletData::Ytilt.
Referenced by handleMouseEvent(), and handleTabletEvent().
| GHOST_TSuccess GHOST_SystemCocoa::handleWindowEvent | ( | GHOST_TEventType | eventType, |
| GHOST_WindowCocoa * | window ) |
Handles a window event. Called by GHOST_WindowCocoa window delegate
| eventType | The type of window event. |
| window | The window on which the event occurred. |
Definition at line 1166 of file GHOST_SystemCocoa.mm.
References GHOST_Window::getCursorShape(), GHOST_Window::getCursorVisibility(), getMilliSeconds(), GHOST_kButtonMaskLeft, GHOST_kEventButtonUp, GHOST_kEventNativeResolutionChange, GHOST_kEventWindowActivate, GHOST_kEventWindowClose, GHOST_kEventWindowDeactivate, GHOST_kEventWindowMove, GHOST_kEventWindowSize, GHOST_kEventWindowUpdate, GHOST_kFailure, GHOST_kSuccess, GHOST_TABLET_DATA_NONE, ignore_window_sized_messages_, GHOST_WindowCocoa::loadCursor(), GHOST_System::native_pixel_, outside_loop_event_processed_, pushEvent, GHOST_WindowCocoa::setNativePixelSize(), GHOST_Window::updateDrawingContext(), GHOST_System::validWindow(), and GHOST_System::window_manager_.
|
overridevirtual |
Returns GHOST_kSuccess if the clipboard contains an image.
Reimplemented from GHOST_System.
Definition at line 2056 of file GHOST_SystemCocoa.mm.
References GHOST_kFailure, GHOST_kSuccess, and NSPasteboardGetImageFile().
Referenced by getClipboardImage().
| bool GHOST_SystemCocoa::hasDialogWindow | ( | ) |
Definition at line 1149 of file GHOST_SystemCocoa.mm.
References GHOST_WindowCocoa::isDialog(), and GHOST_System::window_manager_.
|
overrideprotectedvirtual |
Initializes the system. For now, it just registers the window class (WNDCLASS).
Reimplemented from GHOST_System.
Definition at line 566 of file GHOST_SystemCocoa.mm.
References GHOST_System::init().
| void GHOST_SystemCocoa::notifyExternalEventProcessed | ( | ) |
External objects should call this when they send an event outside processEvents.
Definition at line 1160 of file GHOST_SystemCocoa.mm.
References outside_loop_event_processed_.
|
overridevirtual |
Gets events from the system and stores them in the queue.
| waitForEvent | Flag to wait for an event (or return immediately). |
The event queue polling function
Implements GHOST_ISystem.
Definition at line 994 of file GHOST_SystemCocoa.mm.
References GHOST_TimerManager::fireTimers(), getMilliSeconds(), GHOST_System::getTimerManager(), GHOST_kFireTimeNever, handleApplicationBecomeActiveEvent(), handleKeyEvent(), ignore_window_sized_messages_, need_delayed_application_become_active_event_processing_, next, GHOST_TimerManager::nextFireTime(), and outside_loop_event_processed_.
|
overridevirtual |
Puts buffer to system clipboard
| buffer | The buffer to be copied. |
| selection | Indicates which buffer to copy too, only used on X11. |
Implements GHOST_System.
Definition at line 2017 of file GHOST_SystemCocoa.mm.
|
overridevirtual |
Put image data to the Clipboard
| rgba | uint array in RGBA byte order. |
| width | the image width in pixels. |
| height | the image height in pixels. |
Reimplemented from GHOST_System.
Definition at line 2128 of file GHOST_SystemCocoa.mm.
References GHOST_kFailure, GHOST_kSuccess, and y.
|
inlineoverridevirtual |
Implements GHOST_ISystem.
Definition at line 272 of file GHOST_SystemCocoa.hh.
|
overridevirtual |
Updates the location of the cursor (location in screen coordinates).
Implements GHOST_ISystem.
Definition at line 857 of file GHOST_SystemCocoa.mm.
References GHOST_WindowCocoa::GetCocoaTabletData(), getMilliSeconds(), GHOST_kEventCursorMove, GHOST_kFailure, GHOST_kSuccess, outside_loop_event_processed_, pushEvent, setMouseCursorPosition(), GHOST_System::window_manager_, x, and y.
|
protected |
Performs the actual cursor position update (location in screen coordinates).
Definition at line 912 of file GHOST_SystemCocoa.mm.
References float, GHOST_WindowCocoa::getScreen(), GHOST_kFailure, GHOST_kSuccess, GHOST_System::window_manager_, x, and y.
Referenced by handleMouseEvent(), and setCursorPosition().
|
overridevirtual |
Show a system message box
| title | The title of the message box. |
| message | The message to display. |
| help_label | Help button label. |
| continue_label | Continue button label. |
| link | An optional hyperlink. |
| dialog_options | Options how to display the message. |
Reimplemented from GHOST_System.
Definition at line 2170 of file GHOST_SystemCocoa.mm.
References GHOST_DialogError, GHOST_DialogWarning, and GHOST_kSuccess.
|
protected |
Temporarily ignore momentum scroll events
Definition at line 349 of file GHOST_SystemCocoa.hh.
Referenced by GHOST_SystemCocoa(), handleKeyEvent(), and handleMouseEvent().
|
protected |
Ignores window size messages (when window is dragged).
Definition at line 346 of file GHOST_SystemCocoa.hh.
Referenced by GHOST_SystemCocoa(), handleWindowEvent(), and processEvents().
|
protected |
To prevent multiple warp, we store the time of the last warp event and ignore mouse moved events generated before that.
Definition at line 354 of file GHOST_SystemCocoa.hh.
Referenced by GHOST_SystemCocoa(), and handleMouseEvent().
|
protected |
State of the modifiers.
Definition at line 343 of file GHOST_SystemCocoa.hh.
Referenced by getModifierKeys(), GHOST_SystemCocoa(), handleApplicationBecomeActiveEvent(), handleKeyEvent(), and handleMouseEvent().
|
protected |
Is the scroll wheel event generated by a multi-touch trackpad or mouse?
Definition at line 351 of file GHOST_SystemCocoa.hh.
Referenced by GHOST_SystemCocoa(), and handleMouseEvent().
|
protected |
Raised window is not yet known by the window manager, so delay application become active event handling
Definition at line 340 of file GHOST_SystemCocoa.hh.
Referenced by GHOST_SystemCocoa(), handleApplicationBecomeActiveEvent(), and processEvents().
|
protected |
Event has been processed directly by Cocoa (or NDOF manager) and has sent a ghost event to be dispatched
Definition at line 336 of file GHOST_SystemCocoa.hh.
Referenced by GHOST_SystemCocoa(), handleApplicationBecomeActiveEvent(), handleDraggingEvent(), handleQuitRequest(), handleWindowEvent(), notifyExternalEventProcessed(), processEvents(), and setCursorPosition().