// Copyright 2012-2020 David Robillard <d@drobilla.net>
// Copyright 2017 Hanspeter Portner <dev@open-music-kontrollers.ch>
// SPDX-License-Identifier: ISC

#ifndef PUGL_SRC_MAC_H
#define PUGL_SRC_MAC_H

#include <pugl/pugl.h>

#import <Cocoa/Cocoa.h>

#include <mach/mach_time.h>

#include <stdint.h>

@interface PuglWrapperView : NSView<NSTextInputClient>

- (void)dispatchExpose:(NSRect)rect;
- (void)setReshaped;

@end

@interface PuglWindow : NSWindow
@end

struct PuglWorldInternalsImpl {
  NSApplication*            app;
  NSAutoreleasePool*        autoreleasePool;
  struct mach_timebase_info timebaseInfo;
};

struct PuglInternalsImpl {
  NSApplication*   app;
  PuglWrapperView* wrapperView;
  NSView*          drawView;
  NSCursor*        cursor;
  PuglWindow*      window;
  uint32_t         mods;
  bool             mouseTracked;
};

#endif // PUGL_SRC_MAC_H