#!F-adobe-helvetica-medium-r-normal--18* #!N #!CDarkGreen #!N #!Rall958 UserInteractors #!N #!EC UserInteractors consist of the following routines, the contents of which must be provided by the user. You specify the location of your custom interactor object files using the DX_USER_INTERACTOR_FILE environment variable (see #!Lmorevar,dxall695 h Other Environment Variables #!EL in IBM Visualization Data Explorer User's Guide). Note: Default user interactors to implement rotation, pan, and zoom functionality are provided by Data Explorer if you do not provide your own custom interactors. Rotation (mode 0) is the same as the standard left-button rotation interaction of the Image tool. Pan (mode 1) operates differently than the Data Explorer pan mode of the Image tool; you simply drag on the object to move it in the desired direction. Zoom (mode 2) operates as follows: drag upward to zoom in; drag downward to zoom out. #!N #!N #!I0 #!N #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* void *InitMode(Object args, int width, int height, int #!EF *mask) #!EF #!I50 #!N Given an object containing #!F-adobe-times-bold-r-normal--18* args #!EF (which come in as input to SuperviseState and are up to the interactor builder to specify), and the current width and height of the window, returns a handle that is passed into all the other UserInteractor routines. This routine also sets the value of #!F-adobe-times-bold-r-normal--18* mask #!EF to reflect which events the particular interactor is interested in (for example, only left or right buttons). Once #!F-adobe-times-bold-r-normal--18* mask #!EF is set, only those events which have been specified as interesting to the interactor will cause the interactor to be called. The set of possible masks is: #!N #!I0 #!N #!F-adobe-times-medium-r-normal--18* #!N #!N #!I30 #!N DXEVENT_LEFT #!N #!I30 #!N DXEVENT_MIDDLE #!N #!I30 #!N DXEVENT_RIGHT #!N #!I30 #!N DXEVENT_KEYPRESS #!N #!I0 #!N #!EF #!N #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* void EndMode(void *handle) #!EF #!EF #!I50 #!N Frees the space allocated in InitMode. #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* void SetCamera(void *handle, float *to, float *from, float #!EF *up, int projection, float fov, float width) #!EF #!I50 #!N Passes current camera info from Data Explorer into the interactor. The interactor can extract whatever camera information it is interested in and put into its private #!F-adobe-times-bold-r-normal--18* handle #!EF . Note that if the camera is going to be modified, this handle must retain the entire camera state so that it can be passed back in GetCamera(). #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* void SetRenderable(void *handle, Object object) #!EF #!EF #!I50 #!N Passes the current object into the interactor. If the interactor is going to change the object, it must be retained in #!F-adobe-times-bold-r-normal--18* handle #!EF . #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* int GetCamera(void *handle, float *to, float *from, #!EF float *up, int *projection, float *fov, float *width) #!EF #!I50 #!N Passes updated camera information from the interactor back to Data Explorer. If the interactor has not updated the camera information, return 0; otherwise set ALL the inputs and return 1. #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* int GetRenderable(void *handle, Object *obj) #!EF #!EF #!I50 #!N Passes updated object information from the interactor back to Data Explorer. If the interactor has not updated the object, return 0, otherwise set #!F-adobe-times-bold-r-normal--18* obj #!EF to point to the updated object and return 1. #!N #!I0 #!N #!F-adobe-times-bold-r-normal--18* #!F-adobe-times-bold-r-normal--18* void EventHandler(void *handle, DXEvent *event) #!EF #!EF #!I50 #!N Event handler. Receives the event in #!F-adobe-times-bold-r-normal--18* *event #!EF where a #!F-adobe-times-bold-r-normal--18* DXEvent #!EF is of type: #!CForestGreen #!N #!N #!F-adobe-courier-bold-r-normal--18* #!N typedef union #!N ¤ #!N DXAnyEvent any; #!N DXMouseEvent mouse; #!N DXKeyPressEvent keypress; #!N ‡ #!EF #!N #!N #!EC and where DXAnyEvent, DXMouseevent, and DXKeyPressEvent are of type: #!CForestGreen #!N #!N #!F-adobe-courier-bold-r-normal--18* #!N typedef struct #!N ¤ #!N int event #!N ‡ DXAnyEvent #!N typedef struct #!N ¤ #!N int event; #!N int x; #!N int y; #!N int state; #!N ‡ DXMouseEvent #!N typedef struct #!N ¤ #!N int event; #!N int x; #!N int y; #!N int key; #!N ‡ DXKeyPressEvent #!EF #!N #!N #!EC event is one of DXEVENT_LEFT, DXEVENT_MIDDLE, DXEVENT_RIGHT, or DXEVENT_KEYPRESS; x and y are the pixel location of the event; state is one of BUTTON_DOWN, BUTTON_MOTION, or BUTTON_UP; and key is the key that was pressed. #!I0 #!N #!N #!N #!N #!N #!F-adobe-times-medium-i-normal--18* Next Topic #!EF #!N #!N #!Lpicking,dxall960 h Doing Picking #!EL #!N #!F-adobe-times-medium-i-normal--18* #!N
Generated by dwww version 1.15 on Sat Jun 22 13:01:03 CEST 2024.