mirror of
https://github.com/darlinghq/darling-glut.git
synced 2024-11-23 12:19:42 +00:00
c75b6bb633
This file is renamed to perserve the original file This file requires modifications, but the licenses of these file doesn't clearly state if we are allowed to make modifications. So I guess we will have recreate this class from scratch...
198 lines
7.3 KiB
Objective-C
198 lines
7.3 KiB
Objective-C
|
|
/* Copyright (c) Dietmar Planitzer, 1998, 2002 - 2003 */
|
|
|
|
/* This program is freely distributable without licensing fees
|
|
and is provided without guarantee or warrantee expressed or
|
|
implied. This program is -not- in the public domain. */
|
|
|
|
#import "macx_glut.h"
|
|
#import "glutf90.h"
|
|
|
|
@class GLUTMenu, GLUTWindow;
|
|
|
|
|
|
@interface GLUTView : NSView
|
|
{
|
|
@private
|
|
NSOpenGLContext *_openGLContext;
|
|
GLUTList _allChildrens;
|
|
GLUTNode _siblings;
|
|
GLUTView * _visibilityNext; /* weak ref */
|
|
GLUTView * _savedSuperview; /* weak ref */
|
|
NSCursor * _nativeCursor;
|
|
GLUquadricObj * _quadObj;
|
|
#define GLUT_MAX_MENUS 3
|
|
GLUTMenu * _menu[GLUT_MAX_MENUS];
|
|
NSMutableSet * _viewStorage;
|
|
|
|
GLUTkeyboardCB _keyDownFunc;
|
|
GLUTkeyboardCB _keyUpFunc;
|
|
GLUTmouseCB _mouseFunc;
|
|
GLUTmotionCB _motionFunc;
|
|
GLUTpassiveCB _passiveMotionFunc;
|
|
GLUTentryCB _entryFunc;
|
|
GLUTspecialCB _specialFunc;
|
|
GLUTspecialCB _specialUpFunc;
|
|
GLUTdisplayCB _displayFunc;
|
|
GLUTreshapeCB _reshapeFunc;
|
|
GLUTwindowStatusCB _windowStatusFunc;
|
|
GLUTvisibilityCB _visibilityFunc;
|
|
GLUTwmcloseCB _wmCloseFunc;
|
|
|
|
GLUTspaceMotionCB _spaceballMotionFunc;
|
|
GLUTspaceRotateCB _spaceballRotateFunc;
|
|
GLUTspaceButtonCB _spaceballButtonFunc;
|
|
GLUTbuttonBoxCB _buttonBoxFunc;
|
|
GLUTdialsCB _dialFunc;
|
|
GLUTtabletMotionCB _tabletMotionFunc;
|
|
GLUTtabletButtonCB _tabletButtonFunc;
|
|
GLUTjoystickCB _joystickFunc;
|
|
|
|
GLUTdisplayFCB _fdisplayFunc; /* Fortran display */
|
|
GLUTwmcloseFCB _fwmcloseFunc; /* Fortran wmclose */
|
|
GLUTkeyboardFCB _fkeyDownFunc; /* Fortran keyboard */
|
|
GLUTkeyboardFCB _fkeyUpFunc; /* Fortran keyboard up */
|
|
GLUTmouseFCB _fmouseFunc; /* Fortran mouse */
|
|
GLUTmotionFCB _fmotionFunc; /* Fortran motion */
|
|
GLUTpassiveFCB _fpassiveMotionFunc; /* Fortran passive */
|
|
GLUTentryFCB _fentryFunc; /* Fortran entry */
|
|
GLUTspecialFCB _fspecialFunc; /* special key */
|
|
GLUTspecialFCB _fspecialUpFunc; /* special key up */
|
|
GLUTreshapeFCB _freshapeFunc; /* Fortran reshape */
|
|
GLUTwindowStatusFCB _fwindowStatusFunc; /* Fortran visibility */
|
|
GLUTvisibilityFCB _fvisibilityFunc; /* Fortran visibility */
|
|
|
|
GLUTspaceMotionFCB _fspaceballMotionFunc; /* Fortran Spaceball motion */
|
|
GLUTspaceRotateFCB _fspaceballRotateFunc; /* Fortran Spaceball rotate */
|
|
GLUTspaceButtonFCB _fspaceballButtonFunc; /* Fortran Spaceball button */
|
|
GLUTbuttonBoxFCB _fbuttonBoxFunc; /* Fortran button box */
|
|
GLUTdialsFCB _fdialFunc; /* Fortran dials */
|
|
GLUTtabletMotionFCB _ftabletMotionFunc; /* Fortran tablet motion */
|
|
GLUTtabletButtonFCB _ftabletButtonFunc; /* Fortran tablet button */
|
|
GLUTjoystickFCB _fjoystickFunc;
|
|
|
|
struct __vFlags {
|
|
unsigned short forceReshape:1;
|
|
unsigned short ignoreKeyRepeats:1;
|
|
unsigned short isVisibilityUpdateAllowed:1;
|
|
unsigned short isDamaged:1;
|
|
unsigned short isShown:1;
|
|
unsigned short isSubwindow:1;
|
|
unsigned short treatAsSingle:1;
|
|
unsigned short wasMouseInside:1;
|
|
unsigned short hadMouseDown:3; // ccn: bit for each button
|
|
unsigned short wasMouseEmulated:2; // ccn: bit for each emulated button
|
|
unsigned short duplicateEmulatedMouseDown:1;
|
|
unsigned short reserved:2;
|
|
} _flags;
|
|
char _visState;
|
|
char _newVisState;
|
|
int _cursorID;
|
|
int _winid;
|
|
NSTrackingRectTag _trackingRectTag;
|
|
NSTimeInterval _pollInterval;
|
|
NSTimer * _joyTimer;
|
|
NSTimer * _spaceballTimer;
|
|
int _iMouseLocX;
|
|
int _iMouseLocY;
|
|
int _eventMask;
|
|
int _curEventMask;
|
|
BOOL _isFullscreenStereo; // ggs: is the view stereo (always displayed fullscreen)
|
|
BOOL _inFullScreen; // Whether we have entered fullscreen mode yet or not.
|
|
|
|
#ifdef MAC_OS_X_VERSION_10_5
|
|
int _isVBLSync; // ggs: is the view stereo (always displayed fullscreen)
|
|
#else
|
|
long _isVBLSync; // ggs: is the view stereo (always displayed fullscreen)
|
|
#endif
|
|
}
|
|
|
|
- (id)initWithFrame: (NSRect)frameRect pixelFormat:(NSOpenGLPixelFormat *)pixelFormat
|
|
windowID: (int)winid treatAsSingle: (BOOL)treatAsSingle isSubwindow: (BOOL)isSub
|
|
fullscreenStereo: (BOOL)pfStereo isVBLSynced: (BOOL)isVBLSync;
|
|
|
|
/* Accessors */
|
|
- (NSOpenGLContext *)openGLContext;
|
|
- (NSPoint)windowPosition;
|
|
- (NSSize)windowSize;
|
|
- (int)visibilityState;
|
|
- (BOOL)isDamaged;
|
|
- (BOOL)isShown;
|
|
- (void)setShown: (BOOL)flag;
|
|
- (BOOL)isSubwindow;
|
|
- (BOOL)isTreatAsSingle;
|
|
- (BOOL)ignoreKeyRepeats;
|
|
- (void)setIgnoreKeyRepeats: (BOOL)yesno;
|
|
- (NSTimeInterval)joystickPollInterval;
|
|
- (int)windowID;
|
|
- (int)parentWindowID;
|
|
- (unsigned)numberOfChildrens;
|
|
- (int)eventMask;
|
|
- (void)setEventMask: (int)mask;
|
|
- (BOOL)isFullscreenStereo;
|
|
- (BOOL)isVBLSync;
|
|
|
|
/* Callbacks */
|
|
- (void)setKeyDownCallback: (GLUTkeyboardCB)func;
|
|
- (void)setKeyUpCallback: (GLUTkeyboardCB)func;
|
|
- (void)setMouseCallback: (GLUTmouseCB)func;
|
|
- (void)setMotionCallback: (GLUTmotionCB)func;
|
|
- (void)setPassiveMotionCallback: (GLUTpassiveCB)func;
|
|
- (void)setEntryCallback: (GLUTentryCB)func;
|
|
- (void)setSpecialDownCallback: (GLUTspecialCB)func;
|
|
- (void)setSpecialUpCallback: (GLUTspecialCB)func;
|
|
- (void)setDisplayCallback: (GLUTdisplayCB)func;
|
|
- (void)setReshapeCallback: (GLUTreshapeCB)func;
|
|
- (void)setWindowStatusCallback: (GLUTwindowStatusCB)func;
|
|
- (void)setSpaceballMotionCallback: (GLUTspaceMotionCB)func;
|
|
- (void)setSpaceballRotateCallback: (GLUTspaceRotateCB)func;
|
|
- (void)setSpaceballButtonCallback: (GLUTspaceButtonCB)func;
|
|
- (void)setButtonBoxCallback: (GLUTbuttonBoxCB)func;
|
|
- (void)setDialCallback: (GLUTdialsCB)func;
|
|
- (void)setTabletMotionCallback: (GLUTtabletMotionCB)func;
|
|
- (void)setTabletButtonCallback: (GLUTtabletButtonCB)func;
|
|
- (void)setJoystickCallback: (GLUTjoystickCB)func pollInterval: (NSTimeInterval)delay;
|
|
- (void)setVisibilityCallback: (GLUTvisibilityCB)func;
|
|
- (GLUTvisibilityCB)visibilityCallback;
|
|
- (void)setWMCloseCallback: (GLUTwmcloseCB)func;
|
|
- (GLUTwmcloseCB)wmCloseCallback;
|
|
|
|
/* Fortran callbacks */
|
|
- (void)setFortranCallback: (int)which callback: (void *)func ;
|
|
- (void *)getFortranCallback: (int)which;
|
|
|
|
/* Cursor */
|
|
- (void)setCursor: (int)crsrnum;
|
|
- (int)cursor;
|
|
|
|
/* Work events */
|
|
- (void)handleWorkEvent: (GLUTWorkEvent *)event;
|
|
|
|
/* Visibility */
|
|
- (BOOL)isVisible;
|
|
- (NSSet *)coveredViews;
|
|
- (void)enableVisibilityUpdates;
|
|
+ (void)evaluateVisibilityOfViews: (NSSet *)views;
|
|
- (void)recursiveCollectViewsIntoSet: (NSMutableSet *)views;
|
|
|
|
/* Misc */
|
|
- (NSImage *)imageWithTIFFInsideRect: (NSRect)rect;
|
|
- (void)prepareForMiniaturization;
|
|
- (void)recursiveWillBeginMorph: (int)op;
|
|
- (void)recursiveDidEndMorph: (int)op;
|
|
- (void)willBeginMorph: (int)op;
|
|
- (void)didEndMorph: (int)op;
|
|
|
|
- (void)attachSubview: (GLUTView *)aView;
|
|
- (void)detachFromSuperview;
|
|
- (void)attachMenu: (GLUTMenu *)menu toButton: (int)button;
|
|
- (void)detachMenuFromButton: (int)button;
|
|
|
|
- (void)processJoystick: (id)sender;
|
|
- (void)processSpaceball: (id)sender;
|
|
|
|
- (void)resignCurrentGLUTView;
|
|
- (void)makeCurrentGLUTView;
|
|
|
|
@end
|