#include "SDL_internal.h"
#ifdef SDL_VIDEO_DRIVER_COCOA
#include "SDL_cocoavideo.h"
#include "SDL_cocoashape.h"
bool Cocoa_UpdateWindowShape(SDL_VideoDevice *_this, SDL_Window *window, SDL_Surface *shape)
{
SDL_CocoaWindowData *data = (__bridge SDL_CocoaWindowData *)window->internal;
BOOL ignoresMouseEvents = NO;
if (shape) {
SDL_FPoint point;
SDL_GetGlobalMouseState(&point.x, &point.y);
point.x -= window->x;
point.y -= window->y;
if (point.x >= 0.0f && point.x < window->w &&
point.y >= 0.0f && point.y < window->h) {
int x = (int)SDL_roundf((point.x / (window->w - 1)) * (shape->w - 1));
int y = (int)SDL_roundf((point.y / (window->h - 1)) * (shape->h - 1));
Uint8 a;
if (!SDL_ReadSurfacePixel(shape, x, y, NULL, NULL, NULL, &a) || a == SDL_ALPHA_TRANSPARENT) {
ignoresMouseEvents = YES;
}
}
}
data.nswindow.ignoresMouseEvents = ignoresMouseEvents;
return true;
}
#endif