Diff for /np2/macosx/np2.cpp between versions 1.10 and 1.11

version 1.10, 2003/10/22 16:40:45 version 1.11, 2003/10/22 19:57:39
Line 30 Line 30
 #if defined(NP2GCC)  #if defined(NP2GCC)
 #include        "mousemng.h"  #include        "mousemng.h"
 #endif  #endif
   #include        "configure.h"
   
 #define USE_RESUME  #define USE_RESUME
   
Line 69  static const char np2resume[] = "sav"; Line 70  static const char np2resume[] = "sav";
 #define AEProc(fn)      NewAEEventHandlerProc(fn)  #define AEProc(fn)      NewAEEventHandlerProc(fn)
 #endif  #endif
   
   static void setUpCarbonEvent(void);
   
 #ifdef TARGET_API_MAC_CARBON  #ifdef TARGET_API_MAC_CARBON
 static pascal OSErr handleQuitApp(const AppleEvent *event, AppleEvent *reply,  static pascal OSErr handleQuitApp(const AppleEvent *event, AppleEvent *reply,
                                                                                                                         long refcon) {                                                                                                                          long refcon) {
Line 101  static void InitToolBox(void) { Line 104  static void InitToolBox(void) {
 }  }
   
 static void MenuBarInit(void) {  static void MenuBarInit(void) {
   #if 0
         Handle          hMenu;          Handle          hMenu;
         MenuHandle      happlemenu;          MenuHandle      happlemenu;
   
Line 120  static void MenuBarInit(void) { Line 123  static void MenuBarInit(void) {
         InsertMenu(GetMenu(IDM_SOUND), -1);          InsertMenu(GetMenu(IDM_SOUND), -1);
         InsertMenu(GetMenu(IDM_MEMORY), -1);          InsertMenu(GetMenu(IDM_MEMORY), -1);
         DrawMenuBar();          DrawMenuBar();
   #endif
       OSStatus    err;
       IBNibRef    nibRef;    
       err = CreateNibReference(CFSTR("np2"), &nibRef);
       if (err!=noErr) return;
       err = SetMenuBarFromNib(nibRef, CFSTR("MainMenu"));
       DisposeNibReference(nibRef);
 }  }
   
 static void changescreen(BYTE mode) {  static void changescreen(BYTE mode) {
Line 142  static void HandleMenuChoice(long wParam Line 152  static void HandleMenuChoice(long wParam
                         pccore_cfgupdate();                          pccore_cfgupdate();
                         pccore_reset();                          pccore_reset();
                         break;                          break;
               
                   case IDM_CONFIGURE:
                           initConfig();
                           break;
   
 #if 0  #if 0
                 case IDM_NEWFDD:                  case IDM_NEWFDD:
Line 493  static void HandleMouseDown(EventRecord  Line 507  static void HandleMouseDown(EventRecord 
         }          }
 }  }
   
   #if 0
 static void eventproc(EventRecord *event) {  static void eventproc(EventRecord *event) {
   
         switch(event->what) {          switch(event->what) {
Line 528  static void eventproc(EventRecord *event Line 543  static void eventproc(EventRecord *event
 #endif  #endif
         }          }
 }  }
   #endif
   
 // ----  // ----
   
Line 576  static void flagload(const char *ext) { Line 591  static void flagload(const char *ext) {
 int main(int argc, char *argv[]) {  int main(int argc, char *argv[]) {
   
         Rect            wRect;          Rect            wRect;
   #if 0
         EventRecord     event;          EventRecord     event;
   #endif
       EventRef            theEvent;
       EventTargetRef      theTarget;
   
         dosio_init();          dosio_init();
         file_setcd(target);          file_setcd(target);
Line 600  int main(int argc, char *argv[]) { Line 619  int main(int argc, char *argv[]) {
         }          }
         scrnmng_initialize();          scrnmng_initialize();
         SizeWindow(hWndMain, 640, 400, TRUE);          SizeWindow(hWndMain, 640, 400, TRUE);
       setUpCarbonEvent();
         ShowWindow(hWndMain);          ShowWindow(hWndMain);
   
         menu_setrotate(0);          menu_setrotate(0);
Line 643  int main(int argc, char *argv[]) { Line 663  int main(int argc, char *argv[]) {
         flagload(np2resume);          flagload(np2resume);
 #endif  #endif
   
   #if 0
         SetEventMask(everyEvent);          SetEventMask(everyEvent);
   #endif
       theTarget = GetEventDispatcherTarget();
       
         np2running = TRUE;          np2running = TRUE;
         while(np2running) {          while(np2running) {
           if (ReceiveNextEvent(0, NULL,kEventDurationNoWait,true, &theEvent)== noErr)
           {
               SendEventToEventTarget (theEvent, theTarget);
               ReleaseEvent(theEvent);
           }
   #if 0
                 if (WaitNextEvent(everyEvent, &event, 0, 0)) {                  if (WaitNextEvent(everyEvent, &event, 0, 0)) {
                         eventproc(&event);                          eventproc(&event);
                 }                  }
   #endif
                 else {                  else {
                         if (np2oscfg.NOWAIT) {                          if (np2oscfg.NOWAIT) {
 #if defined(NP2GCC)  #if defined(NP2GCC) && 0
                                 mouse_callback();                                  mouse_callback();
 #endif  #endif
   #if 1
                                 mackbd_callback();                                  mackbd_callback();
   #endif
                                 pccore_exec(framecnt == 0);                                  pccore_exec(framecnt == 0);
                                 if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip                                  if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip
                                         framecnt++;                                          framecnt++;
Line 672  int main(int argc, char *argv[]) { Line 704  int main(int argc, char *argv[]) {
                         }                          }
                         else if (np2oscfg.DRAW_SKIP) {                  // frame skip                          else if (np2oscfg.DRAW_SKIP) {                  // frame skip
                                 if (framecnt < np2oscfg.DRAW_SKIP) {                                  if (framecnt < np2oscfg.DRAW_SKIP) {
 #if defined(NP2GCC)  #if defined(NP2GCC) && 0
                     mouse_callback();                      mouse_callback();
 #endif  #endif
                                         mackbd_callback();  #if 1
                       mackbd_callback();
   #endif
                                         pccore_exec(framecnt == 0);                                          pccore_exec(framecnt == 0);
                                         framecnt++;                                          framecnt++;
                                 }                                  }
Line 686  int main(int argc, char *argv[]) { Line 720  int main(int argc, char *argv[]) {
                         else {                                                          // auto skip                          else {                                                          // auto skip
                                 if (!waitcnt) {                                  if (!waitcnt) {
                                         UINT cnt;                                          UINT cnt;
 #if defined(NP2GCC)  #if defined(NP2GCC) && 0
                     mouse_callback();                      mouse_callback();
 #endif  #endif
                                         mackbd_callback();  #if 1
                       mackbd_callback();
   #endif
                                         pccore_exec(framecnt == 0);                                          pccore_exec(framecnt == 0);
                                         framecnt++;                                          framecnt++;
                                         // テスト                                          // テスト
Line 751  int main(int argc, char *argv[]) { Line 787  int main(int argc, char *argv[]) {
         return(0);          return(0);
 }  }
   
   //以下、ごっそりIIxからマージ
   static pascal OSStatus MyAppEventHandler (EventHandlerCallRef myHandlerChain, EventRef event, void* userData)
   {
       UInt32          whatHappened;
       OSStatus        result = eventNotHandledErr;
       
       long                eventClass;
       
       eventClass = GetEventClass(event);
       whatHappened = GetEventKind(event);
   
       EventRecord         eve;
       ConvertEventRefToEventRecord( event,&eve );
   
       if (IsDialogEvent(&eve)) return result;
   
       UInt32 modif;
       EventMouseButton    buttonKind;
       GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modif);
       GetEventParameter (event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(EventMouseButton), NULL, &buttonKind);
       BYTE ret;
           
       switch (eventClass)
           {
                   case kEventClassAppleEvent:  
                       if (whatHappened == kEventAppleEvent) {
                           AEProcessAppleEvent(&eve);
                       }
                       break;
                   case kEventClassMouse: 
                       switch (whatHappened)
                           {
                           case kEventMouseMoved:
   #if 0
                               if (isFullScreen)
                               {
                                   HIPoint delta;
                                   Point pt;
                                   GetEventParameter (event, kEventParamMouseDelta, typeHIPoint, NULL, sizeof(HIPoint), NULL, &delta);
                                   pt.h=(short)delta.x;
                                   pt.v=(short)delta.y;
                                   mouse_callback(pt);
                               }
                               else {
                                   mouse_callback(eve.where);
                               }
   #endif
                                   mouse_callback();
                                   result = noErr;
                                   break;
                          case kEventMouseDown:
                               if (buttonKind == kEventMouseButtonSecondary | modif & controlKey) {
                                   ret=mouse_btn(MOUSE_RIGHTDOWN);
                               }
                               else {
                                   HandleMouseDown(&eve);
                               }
                               result=noErr;
                               break;
                           case kEventMouseUp:
                                   {
                                       if (buttonKind == kEventMouseButtonSecondary | modif & cmdKey) {
                                           ret=mouse_btn(MOUSE_RIGHTUP);
                                       }
                                       else {
                                           ret=mouse_btn(MOUSE_LEFTUP);
                                       }
                                       result=noErr;
                                       break;    
                                   }                    
                           }
                           break;
               default:
                       break; 
           }
       return result; 
   }
   
   static pascal OSStatus MyWindowEventHandler(EventHandlerCallRef myHandler,  EventRef event, void* userData)
   {
       WindowRef   window;
       UInt32              whatHappened;
       OSStatus    result = eventNotHandledErr;    
       long                eventClass;
       
       GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL,
                            sizeof(window), NULL, &window);
       eventClass = GetEventClass(event);
       whatHappened = GetEventKind(event);
           
       switch (eventClass)
           {        
               case kEventClassWindow:            
                   if (whatHappened == kEventWindowClose) {
                       np2running = FALSE;
                       result = noErr;
                   }
                   break;
               case kEventClassKeyboard:
                   UInt32 key;
                   GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key);
                   UInt32 modif;
                   GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modif);
                   switch (whatHappened)
                   {
                       case kEventRawKeyUp:
                           //mackeyup((int)key);
                           mackbd_f12up(key);
                           result = noErr;
                           break;
                       case kEventRawKeyRepeat:
                           //mackeydown(0, (int)key);
                           mackbd_f12down(key);
                           result = noErr;
                           break;
                       case kEventRawKeyDown:
                           mackbd_f12down(key);
                           if (modif & cmdKey) {
                               //if (!mackeydown(1, (int)key)) {
                                   char    para;
                                   GetEventParameter (event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &para);
                                   HandleMenuChoice(MenuKey(para));
                               //}
                           }
                           else {
                               //mackeydown(0, (int)key);
                           }
                           result = noErr;
                           break;
                       case kEventRawKeyModifiersChanged:
                           if (modif & shiftKey) keystat_senddata(0x70);
                           else keystat_senddata(0x70 | 0x80);
                           if (modif & optionKey) keystat_senddata(0x73);
                           else keystat_senddata(0x73 | 0x80);
                           if (modif & controlKey) keystat_senddata(0x74);
                           else keystat_senddata(0x74 | 0x80);
                           if (modif & alphaLock) keystat_senddata(0x79);
                           else keystat_senddata(0x79 | 0x80);
                           result = noErr;
                           break;
                       default: 
                           break;             
                   }
               default: 
                   break;                
           }
   
       return result;
   }
   
   static void setUpCarbonEvent(void)
   {
       InstallStandardEventHandler(GetWindowEventTarget(hWndMain));
           EventTypeSpec   appEventList[] ={       { kEventClassAppleEvent, kEventAppleEvent },
                                           { kEventClassMouse, kEventMouseDown},
                                           { kEventClassMouse, kEventMouseMoved},
                                           { kEventClassMouse, kEventMouseUp}
                                       };
       EventTypeSpec   windEventList[] ={  { kEventClassWindow, kEventWindowClose},
                                                           { kEventClassKeyboard, kEventRawKeyDown},
                                           { kEventClassKeyboard, kEventRawKeyUp},
                                           { kEventClassKeyboard, kEventRawKeyRepeat},
                                                           { kEventClassKeyboard, kEventRawKeyModifiersChanged}
                                        };
           InstallApplicationEventHandler(NewEventHandlerUPP(MyAppEventHandler), 4, appEventList, 0, NULL); 
           InstallWindowEventHandler(hWndMain, NewEventHandlerUPP(MyWindowEventHandler), 5, windEventList, 0, NULL);
   
   }

Removed from v.1.10  
changed lines
  Added in v.1.11


RetroPC.NET-CVS <cvs@retropc.net>