00001 /********************************************************************** 00002 *< 00003 FILE: arcdlg.h 00004 00005 DESCRIPTION: 00006 00007 CREATED BY: Dan Silva 00008 00009 HISTORY: 00010 00011 *> Copyright (c) 1994, All Rights Reserved. 00012 **********************************************************************/ 00013 00014 #pragma once 00015 #include "maxheap.h" 00016 #include "quat.h" 00017 00025 class ArcballDialog: public MaxHeapOperators { 00026 public: 00028 virtual ~ArcballDialog() {} 00030 virtual void DeleteThis()=0; 00031 }; 00032 00043 class ArcballCallback: public MaxHeapOperators { 00044 public: 00046 virtual ~ArcballCallback() {;} 00049 virtual void StartDrag()=0; // called when drag begins (may want to save state at this point) 00051 virtual void EndDrag()=0; // called when drag ends 00059 virtual void Drag(Quat q, BOOL buttonUp)=0; // called during drag, with q=relative rotation from start 00062 virtual void CancelDrag()=0; // called when right button clicked during drag 00066 virtual void BeingDestroyed()=0; // called if the window was closed 00067 }; 00068 00083 CoreExport ArcballDialog* CreateArcballDialog(ArcballCallback* cb, HWND hwndOwner, MCHAR* title = NULL); 00084 00085