13# pragma clang diagnostic ignored "-Wdeprecated-declarations"
16#ifdef WITH_METAL_BACKEND
20#ifdef WITH_VULKAN_BACKEND
24#import <Cocoa/Cocoa.h>
25#import <Metal/Metal.h>
26#import <QuartzCore/QuartzCore.h>
28#include <sys/sysctl.h>
41- (void)windowDidBecomeKey:(NSNotification *)notification;
42- (void)windowDidResignKey:(NSNotification *)notification;
43- (void)windowDidExpose:(NSNotification *)notification;
44- (void)windowDidResize:(NSNotification *)notification;
45- (void)windowDidMove:(NSNotification *)notification;
46- (void)windowWillMove:(NSNotification *)notification;
47- (BOOL)windowShouldClose:(
id)sender;
48- (void)windowDidChangeBackingProperties:(NSNotification *)notification;
63 system_cocoa_ = sysCocoa;
64 window_cocoa_ = winCocoa;
70- (void)windowDidBecomeKey:(NSNotification *)notification
77- (void)windowDidResignKey:(NSNotification *)notification
82- (void)windowDidExpose:(NSNotification *)notification
87- (void)windowDidMove:(NSNotification *)notification
92- (void)windowWillMove:(NSNotification *)notification
97- (void)windowWillEnterFullScreen:(NSNotification *)notification
99 window_cocoa_->setImmediateDraw(
true);
102- (void)windowDidEnterFullScreen:(NSNotification *)notification
109 window_cocoa_->setImmediateDraw(
false);
112- (void)windowWillExitFullScreen:(NSNotification *)notification
114 window_cocoa_->setImmediateDraw(
true);
117- (void)windowDidExitFullScreen:(NSNotification *)notification
121 window_cocoa_->setImmediateDraw(
false);
124- (void)windowDidResize:(NSNotification *)notification
127 if (![[notification
object] inLiveResize])
135 if ([[notification
object] inLiveResize]) {
136 system_cocoa_->dispatchEvents();
140- (void)windowDidChangeBackingProperties:(NSNotification *)notification
146- (BOOL)windowShouldClose:(
id)sender;
163 contentRect:(NSRect)contentRect
164 styleMask:(NSWindowStyleMask)style
165 backing:(NSBackingStoreType)backingStoreType
178 contentRect:(NSRect)contentRect
179 styleMask:(NSWindowStyleMask)style
180 backing:(NSBackingStoreType)backingStoreType
183 self = [
super initWithContentRect:contentRect
185 backing:backingStoreType
189 system_cocoa_ = sysCocoa;
190 window_cocoa_ = winCocoa;
196- (BOOL)canBecomeKeyWindow
199 return (window_cocoa_->isDialog() || !system_cocoa_->hasDialogWindow());
203- (NSDragOperation)draggingEntered:(
id<NSDraggingInfo>)sender
206 NSPasteboard *draggingPBoard = sender.draggingPasteboard;
207 if ([[draggingPBoard
types] containsObject:NSPasteboardTypeTIFF]) {
210 else if ([[draggingPBoard
types] containsObject:NSFilenamesPboardType]) {
213 else if ([[draggingPBoard
types] containsObject:NSPasteboardTypeString]) {
217 return NSDragOperationNone;
220 const NSPoint mouseLocation = sender.draggingLocation;
221 window_cocoa_->setAcceptDragOperation(TRUE);
223 dragged_object_type_,
229 return NSDragOperationCopy;
232- (BOOL)wantsPeriodicDraggingUpdates
237- (NSDragOperation)draggingUpdated:(
id<NSDraggingInfo>)sender
239 const NSPoint mouseLocation = [sender draggingLocation];
242 dragged_object_type_,
247 return window_cocoa_->canAcceptDragOperation() ? NSDragOperationCopy : NSDragOperationNone;
250- (void)draggingExited:(
id<NSDraggingInfo>)sender
252 system_cocoa_->handleDraggingEvent(
257- (BOOL)prepareForDragOperation:(
id<NSDraggingInfo>)sender
259 if (window_cocoa_->canAcceptDragOperation()) {
265- (BOOL)performDragOperation:(
id<NSDraggingInfo>)sender
268 NSPasteboard *draggingPBoard = sender.draggingPasteboard;
271 switch (dragged_object_type_) {
273 if (![NSImage canInitWithPasteboard:draggingPBoard]) {
277 NSImage *droppedImg = [[NSImage alloc] initWithPasteboard:draggingPBoard];
282 data = [draggingPBoard propertyListForType:NSFilenamesPboardType];
285 data = [draggingPBoard stringForType:NSPasteboardTypeString];
292 const NSPoint mouseLocation = sender.draggingLocation;
294 dragged_object_type_,
306#define COCOA_VIEW_CLASS CocoaOpenGLView
307#define COCOA_VIEW_BASE_CLASS NSOpenGLView
309#undef COCOA_VIEW_CLASS
310#undef COCOA_VIEW_BASE_CLASS
312#define COCOA_VIEW_CLASS CocoaMetalView
313#define COCOA_VIEW_BASE_CLASS NSView
315#undef COCOA_VIEW_CLASS
316#undef COCOA_VIEW_BASE_CLASS
349 rect.origin.x =
left;
350 rect.origin.y = bottom;
351 rect.size.width = width;
352 rect.size.height = height;
354 NSWindowStyleMask styleMask = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable |
355 NSWindowStyleMaskResizable;
357 styleMask |= NSWindowStyleMaskMiniaturizable;
364 backing:NSBackingStoreBuffered
370 [
window_ setFrameOrigin:NSMakePoint(left, bottom)];
373 const NSSize minSize = {320, 240};
374 window_.contentMinSize = minSize;
377 id<MTLDevice> metalDevice = MTLCreateSystemDefaultDevice();
388 [metal_layer_ removeAllAnimations];
391 if (type == GHOST_kDrawingContextTypeMetal) {
400 const CFStringRef
name = kCGColorSpaceExtendedSRGB;
401 CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(
name);
403 CGColorSpaceRelease(colorspace);
429 if ([
view respondsToSelector:
@selector(setWantsBestResolutionOpenGLSurface:)]) {
430 view.wantsBestResolutionOpenGLSurface = YES;
437 [
window_ makeKeyAndOrderFront:nil];
448 initWithSystemCocoa:systemCocoa
450 window_.delegate = windowDelegate;
452 window_.acceptsMouseMovedEvents = YES;
454 NSView *contentview =
window_.contentView;
455 contentview.allowedTouchTypes = (NSTouchTypeMaskDirect | NSTouchTypeMaskIndirect);
457 [
window_ registerForDraggedTypes:[
NSArray arrayWithObjects:NSFilenamesPboardType,
458 NSPasteboardTypeString,
459 NSPasteboardTypeTIFF,
462 if (is_dialog && parent_window) {
463 [
parent_window->getViewWindow() addChildWindow:window_ ordered:NSWindowAbove];
464 window_.collectionBehavior = NSWindowCollectionBehaviorFullScreenAuxiliary;
467 window_.collectionBehavior = NSWindowCollectionBehaviorFullScreenPrimary;
482 [custom_cursor_ release];
489 [opengl_view_ release];
493 [metal_view_ release];
497 [metal_layer_ release];
507 NSArray *windowsList = [
NSApp orderedWindows];
538 NSString *windowTitle = [[
NSString alloc] initWithCString:title encoding:NSUTF8StringEncoding];
551 NSString *windowTitle =
window_.title;
552 if (windowTitle != nil) {
553 title = windowTitle.UTF8String;
564 NSString *associatedFileName = [[[
NSString alloc] initWithCString:filepath
565 encoding:NSUTF8StringEncoding]
568 window_.representedFilename = associatedFileName;
581 window_.backgroundColor = [
NSColor colorWithRed:background_color[0]
582 green:background_color[1]
583 blue:background_color[2]
591 const float hsv_v = MAX(background_color[0], MAX(background_color[1], background_color[2]));
593 const NSAppearanceName win_appearance = hsv_v > 0.5 ? NSAppearanceNameVibrantLight :
594 NSAppearanceNameVibrantDark;
597 window_.titlebarAppearsTransparent = YES;
600 window_.titlebarAppearsTransparent = NO;
612 const NSRect screenFrame = [getPrimaryScreen() visibleFrame];
613 const NSRect windowFrame =
window_.frame;
620 const int32_t screenMaxY = screenFrame.origin.y + screenFrame.size.height;
624 bounds.b_ = screenMaxY - windowFrame.origin.y;
625 bounds.t_ = screenMaxY - windowFrame.origin.y - windowFrame.size.height;
627 bounds.l_ = windowFrame.origin.x;
628 bounds.r_ = windowFrame.origin.x + windowFrame.size.width;
638 const NSRect screenFrame = [getPrimaryScreen() visibleFrame];
640 const NSRect screenContentRect = [
NSWindow contentRectForFrameRect:screenFrame
641 styleMask:[
window_ styleMask]];
643 const NSRect windowFrame =
window_.frame;
645 const NSRect windowContentRect = [
window_ contentRectForFrameRect:windowFrame];
647 const int32_t screenMaxY = screenContentRect.origin.y + screenContentRect.size.height;
651 bounds.b_ = screenMaxY - windowContentRect.origin.y;
652 bounds.t_ = screenMaxY - windowContentRect.origin.y - windowContentRect.size.height;
654 bounds.l_ = windowContentRect.origin.x;
655 bounds.r_ = windowContentRect.origin.x + windowContentRect.size.width;
667 if ((uint32_t(cBnds.
getWidth())) != width) {
668 const NSSize
size = {(CGFloat)width, (CGFloat)cBnds.
getHeight()};
683 if ((uint32_t(cBnds.
getHeight())) != height) {
684 const NSSize
size = {(CGFloat)cBnds.
getWidth(), (CGFloat)height};
698 if (((uint32_t(cBnds.
getWidth())) != width) || ((uint32_t(cBnds.
getHeight())) != height)) {
699 const NSSize
size = {(CGFloat)width, (CGFloat)height};
711 NSUInteger masks =
window_.styleMask;
713 if (masks & NSWindowStyleMaskFullScreen) {
769 screenCoord.origin = {(CGFloat)inX, (CGFloat)inY};
771 const NSRect baseCoord = [
window_ convertRectFromScreen:screenCoord];
773 outX = baseCoord.origin.x;
774 outY = baseCoord.origin.y;
783 baseCoord.origin = {(CGFloat)inX, (CGFloat)inY};
785 const NSRect screenCoord = [
window_ convertRectToScreen:baseCoord];
787 outX = screenCoord.origin.x;
788 outY = screenCoord.origin.y;
799 return [[
NSScreen screens] firstObject];
806 const NSRect backingBounds = [view convertRectToBacking:[view bounds]];
835 const NSUInteger masks =
window_.styleMask;
837 if (!(masks & NSWindowStyleMaskFullScreen)) {
838 [
window_ toggleFullScreen:nil];
845 const NSUInteger masks =
window_.styleMask;
847 if (masks & NSWindowStyleMaskFullScreen) {
849 [
window_ toggleFullScreen:nil];
851 else if (
window_.isMiniaturized) {
867 window_.documentEdited = is_unsaved_changes;
878 [
NSApp activateIgnoringOtherApps:YES];
879 [
window_ makeKeyAndOrderFront:nil];
882 NSArray *windowsList;
887 windowsList = [
NSApp orderedWindows];
888 if (windowsList.count) {
889 [[
windowsList objectAtIndex:0] makeKeyAndOrderFront:nil];
903#ifdef WITH_VULKAN_BACKEND
904 case GHOST_kDrawingContextTypeVulkan: {
907 if (context->initializeDrawingContext()) {
915#ifdef WITH_METAL_BACKEND
916 case GHOST_kDrawingContextTypeMetal: {
919 if (context->initializeDrawingContext()) {
943 view.needsDisplay = YES;
955 if ((progress >= 0.0) && (progress <= 1.0)) {
956 NSImage *dockIcon = [[
NSImage alloc] initWithSize:NSMakeSize(128, 128)];
960 [[
NSImage imageNamed:@"NSApplicationIcon"] drawAtPoint:NSZeroPoint
962 operation:NSCompositingOperationSourceOver
965 NSRect progressRect = {{8, 8}, {112, 14}};
966 NSBezierPath *progressPath;
969 [[[
NSColor whiteColor] colorWithAlphaComponent:0.6] setFill];
970 progressPath = [
NSBezierPath bezierPathWithRoundedRect:progressRect xRadius:7 yRadius:7];
974 [[[
NSColor blackColor] colorWithAlphaComponent:0.7] setFill];
975 progressRect = NSInsetRect(progressRect, 2, 2);
976 progressRect.size.width *= progress;
977 progressPath = [
NSBezierPath bezierPathWithRoundedRect:progressRect xRadius:5 yRadius:5];
981 [
NSApp setApplicationIconImage:dockIcon];
999 NSImage *dockIcon = [[
NSImage alloc] initWithSize:NSMakeSize(128, 128)];
1001 [[
NSImage imageNamed:@"NSApplicationIcon"] drawAtPoint:NSZeroPoint
1003 operation:NSCompositingOperationSourceOver
1006 [
NSApp setApplicationIconImage:dockIcon];
1018 static NSCursor *cursors[GHOST_kStandardCursorNumCursors] = {
nullptr};
1019 static bool loaded[GHOST_kStandardCursorNumCursors] = {
false};
1021 const int index = int(shape);
1022 if (!loaded[index]) {
1025 NSImage *image = [NSImage imageNamed:name];
1026 if (image !=
nullptr) {
1027 cursors[index] = [[NSCursor alloc] initWithImage:image hotSpot:hotspot];
1031 loaded[index] =
true;
1034 return cursors[index];
1039@interface NSCursor (Undocumented)
1055 return [
NSCursor disappearingItemCursor];
1061 return [
NSCursor resizeUpDownCursor];
1063 return [
NSCursor resizeLeftRightCursor];
1067 return [
NSCursor resizeDownCursor];
1069 return [
NSCursor resizeLeftCursor];
1071 return [
NSCursor resizeRightCursor];
1075 return [
NSCursor operationNotAllowedCursor];
1081 return [
NSCursor closedHandCursor];
1083 return [
NSCursor pointingHandCursor];
1088 return [
NSCursor busyButClickableCursor];
1098 return getImageCursor(shape,
@"eyedropper.pdf", NSMakePoint(6, 24));
1104 return getImageCursor(shape,
@"scrollnsew.pdf", NSMakePoint(16, 16));
1106 return getImageCursor(shape,
@"scrollns.pdf", NSMakePoint(16, 16));
1108 return getImageCursor(shape,
@"scrollew.pdf", NSMakePoint(16, 16));
1110 return getImageCursor(shape,
@"arrowup.pdf", NSMakePoint(16, 16));
1112 return getImageCursor(shape,
@"arrowdown.pdf", NSMakePoint(16, 16));
1114 return getImageCursor(shape,
@"arrowleft.pdf", NSMakePoint(16, 16));
1116 return getImageCursor(shape,
@"arrowright.pdf", NSMakePoint(16, 16));
1118 return getImageCursor(shape,
@"splitv.pdf", NSMakePoint(16, 16));
1120 return getImageCursor(shape,
@"splith.pdf", NSMakePoint(16, 16));
1122 return getImageCursor(shape,
@"paint_cursor_cross.pdf", NSMakePoint(16, 15));
1124 return getImageCursor(shape,
@"paint_cursor_dot.pdf", NSMakePoint(16, 15));
1126 return getImageCursor(shape,
@"crossc.pdf", NSMakePoint(16, 16));
1128 return getImageCursor(shape,
@"handle_left.pdf", NSMakePoint(12, 14));
1130 return getImageCursor(shape,
@"handle_right.pdf", NSMakePoint(10, 14));
1132 return getImageCursor(shape,
@"handle_both.pdf", NSMakePoint(11, 14));
1141 static bool systemCursorVisible =
true;
1144 if (visible != systemCursorVisible) {
1147 systemCursorVisible =
true;
1151 systemCursorVisible =
false;
1156 if (cursor ==
nullptr) {
1235 ch= ((ch >> 1) & 0x55) | ((ch << 1) & 0xAA);
1236 ch= ((ch >> 2) & 0x33) | ((ch << 2) & 0xCC);
1237 ch= ((ch >> 4) & 0x0F) | ((ch << 4) & 0xF0);
1245 shrt = ((shrt >> 1) & 0x5555) | ((shrt << 1) & 0xAAAA);
1246 shrt = ((shrt >> 2) & 0x3333) | ((shrt << 2) & 0xCCCC);
1247 shrt = ((shrt >> 4) & 0x0F0F) | ((shrt << 4) & 0xF0F0);
1248 shrt = ((shrt >> 8) & 0x00FF) | ((shrt << 8) & 0xFF00);
1253 const uint8_t *
mask,
1255 const int hot_spot[2],
1256 const bool can_invert_color)
1260 [custom_cursor_ release];
1265 initWithBitmapDataPlanes:nil
1272 colorSpaceName:NSDeviceWhiteColorSpace
1273 bytesPerRow:(size[0] / 8 + (size[0] % 8 > 0 ? 1 : 0))
1276 uint16_t *cursorBitmap = (uint16_t *)cursorImageRep.bitmapData;
1277 int nbUns16 = cursorImageRep.bytesPerPlane / 2;
1279 for (
int y = 0;
y < nbUns16;
y++) {
1280#if !defined(__LITTLE_ENDIAN__)
1290 if (can_invert_color) {
1291 cursorBitmap[y] = ~cursorBitmap[y];
1295 const NSSize imSize = {(CGFloat)
size[0], (CGFloat)
size[1]};
1296 NSImage *cursorImage = [[
NSImage alloc] initWithSize:imSize];
1299 const NSPoint hotSpotPoint = {(CGFloat)(hot_spot[0]), (CGFloat)(hot_spot[1])};
1314#ifdef WITH_INPUT_IME
1318 [opengl_view_ beginIME:x y:y w:w h:h completed:completed];
1321 [metal_view_ beginIME:x y:y w:w h:h completed:completed];
1325void GHOST_WindowCocoa::endIME()
1328 [opengl_view_ endIME];
1331 [metal_view_ endIME];
#define GHOST_ASSERT(x, info)
@ GHOST_kWindowStateMinimized
@ GHOST_kWindowStateMaximized
@ GHOST_kWindowStateNormal
@ GHOST_kWindowStateFullScreen
@ GHOST_kStandardCursorLeftHandle
@ GHOST_kStandardCursorHandClosed
@ GHOST_kStandardCursorHandOpen
@ GHOST_kStandardCursorZoomIn
@ GHOST_kStandardCursorVerticalSplit
@ GHOST_kStandardCursorCopy
@ GHOST_kStandardCursorWait
@ GHOST_kStandardCursorRightHandle
@ GHOST_kStandardCursorHorizontalSplit
@ GHOST_kStandardCursorTopSide
@ GHOST_kStandardCursorStop
@ GHOST_kStandardCursorCrosshair
@ GHOST_kStandardCursorCustom
@ GHOST_kStandardCursorNSEWScroll
@ GHOST_kStandardCursorLeftRight
@ GHOST_kStandardCursorPencil
@ GHOST_kStandardCursorNSScroll
@ GHOST_kStandardCursorCrosshairA
@ GHOST_kStandardCursorUpDown
@ GHOST_kStandardCursorUpArrow
@ GHOST_kStandardCursorHandPoint
@ GHOST_kStandardCursorBottomSide
@ GHOST_kStandardCursorBothHandles
@ GHOST_kStandardCursorEyedropper
@ GHOST_kStandardCursorKnife
@ GHOST_kStandardCursorMove
@ GHOST_kStandardCursorCrosshairB
@ GHOST_kStandardCursorDownArrow
@ GHOST_kStandardCursorEraser
@ GHOST_kStandardCursorDefault
@ GHOST_kStandardCursorEWScroll
@ GHOST_kStandardCursorRightSide
@ GHOST_kStandardCursorRightArrow
@ GHOST_kStandardCursorDestroy
@ GHOST_kStandardCursorCrosshairC
@ GHOST_kStandardCursorZoomOut
@ GHOST_kStandardCursorLeftSide
@ GHOST_kStandardCursorText
@ GHOST_kStandardCursorLeftArrow
@ GHOST_kEventWindowClose
@ GHOST_kEventDraggingDropDone
@ GHOST_kEventDraggingExited
@ GHOST_kEventNativeResolutionChange
@ GHOST_kEventDraggingUpdated
@ GHOST_kEventDraggingEntered
@ GHOST_kEventWindowActivate
@ GHOST_kEventWindowUpdate
@ GHOST_kEventWindowDeactivate
static const GHOST_TabletData GHOST_TABLET_DATA_NONE
GHOST_TDrawingContextType
@ GHOST_kDragnDropTypeUnknown
@ GHOST_kDragnDropTypeFilenames
@ GHOST_kDragnDropTypeBitmap
@ GHOST_kDragnDropTypeString
@ GHOST_kDecorationColoredTitleBar
static NSCursor * getImageCursor(GHOST_TStandardCursor shape, NSString *name, NSPoint hotspot)
static uint16_t uns16ReverseBits(uint16_t shrt)
static uint8_t uns8ReverseBits(uint8_t ch)
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
NSCursor * busyButClickableCursor()
virtual int32_t getHeight() const
virtual int32_t getWidth() const
bool isDialog() const override
GHOST_TSuccess setProgressBar(float progress) override
GHOST_TSuccess setWindowCursorShape(GHOST_TStandardCursor shape) override
GHOST_TSuccess setState(GHOST_TWindowState state) override
std::string getTitle() const override
GHOST_SystemCocoa * system_cocoa_
GHOST_TSuccess setClientHeight(uint32_t height) override
void clientToScreen(int32_t inX, int32_t inY, int32_t &outX, int32_t &outY) const override
CAMetalLayer * metal_layer_
NSScreen * getScreen() const
NSCursor * custom_cursor_
void setTitle(const char *title) override
GHOST_TSuccess invalidate() override
GHOST_TSuccess endProgressBar() override
NSCursor * getStandardCursor(GHOST_TStandardCursor cursor) const
GHOST_TWindowState getState() const override
GHOST_TSuccess setClientWidth(uint32_t width) override
GHOST_TSuccess applyWindowDecorationStyle() override
GHOST_TSuccess hasCursorShape(GHOST_TStandardCursor shape) override
void clientToScreenIntern(int32_t inX, int32_t inY, int32_t &outX, int32_t &outY) const
void * getOSWindow() const override
CocoaOpenGLView * opengl_view_
void getClientBounds(GHOST_Rect &bounds) const override
GHOST_TSuccess setModifiedState(bool is_unsaved_changes) override
void screenToClient(int32_t inX, int32_t inY, int32_t &outX, int32_t &outY) const override
void getWindowBounds(GHOST_Rect &bounds) const override
GHOST_Context * newDrawingContext(GHOST_TDrawingContextType type) override
GHOST_TSuccess setWindowCursorGrab(GHOST_TGrabCursorMode mode) override
GHOST_TSuccess setWindowCustomCursorShape(const uint8_t *bitmap, const uint8_t *mask, const int size[2], const int hot_spot[2], bool can_invert_color) override
static NSScreen * getPrimaryScreen()
GHOST_WindowCocoa(GHOST_SystemCocoa *systemCocoa, const char *title, int32_t left, int32_t bottom, uint32_t width, uint32_t height, GHOST_TWindowState state, GHOST_TDrawingContextType type, const GHOST_ContextParams &context_params, bool dialog, GHOST_WindowCocoa *parent_window, const GHOST_GPUDevice &preferred_device)
~GHOST_WindowCocoa() override
GHOST_TSuccess setOrder(GHOST_TWindowOrder order) override
CocoaMetalView * metal_view_
void screenToClientIntern(int32_t inX, int32_t inY, int32_t &outX, int32_t &outY) const
GHOST_GPUDevice preferred_device_
GHOST_TSuccess setPath(const char *filepath) override
void setNativePixelSize()
bool getValid() const override
GHOST_TSuccess setWindowCursorVisibility(bool visible) override
void loadCursor(bool visible, GHOST_TStandardCursor cursor) const
GHOST_TSuccess setClientSize(uint32_t width, uint32_t height) override
GHOST_ContextParams want_context_params_
GHOST_TSuccess setModifiedState(bool is_unsaved_changes) override
void setCursorGrabAccum(int32_t x, int32_t y)
GHOST_WindowDecorationStyleSettings window_decoration_style_settings_
GHOST_TStandardCursor getCursorShape() const override
GHOST_TSuccess setDrawingContextType(GHOST_TDrawingContextType type) override
int32_t cursor_grab_init_pos_[2]
GHOST_TSuccess releaseNativeHandles()
GHOST_TWindowDecorationStyleFlags window_decoration_style_flags_
bool getValid() const override
bool getCursorVisibility() const override
GHOST_TSuccess activateDrawingContext() override
GHOST_TSuccess updateDrawingContext()
GHOST_Window(uint32_t width, uint32_t height, GHOST_TWindowState state, const GHOST_ContextParams &context_params, const bool exclusive=false)
GHOST_Rect cursor_grab_bounds_
bool progress_bar_visible_
GHOST_WindowHDRInfo hdr_info_
GHOST_TGrabCursorMode cursor_grab_
GHOST_SystemCocoa * systemCocoa
GHOST_WindowCocoa * windowCocoa
GHOST_TDragnDropTypes draggedObjectType
GHOST_SystemCocoa * systemCocoa
GHOST_WindowCocoa * windowCocoa
ccl_device_inline float2 mask(const MaskType mask, const float2 a)