static class cGrScreen * grGetcurrentScreen(void) { tMouseInfo *mouse; int i; int x, y; mouse = GfuiMouseInfo(); x = (int)(mouse->X * grMouseRatioX); y = (int)(mouse->Y * grMouseRatioY); for (i = 0; i < GR_NB_MAX_SCREEN; i++) { if (grScreens[i]->isInScreen(x, y)) { return grScreens[i]; } } return grScreens[0]; }
/** Get the mouse current values @ingroup ctrl @param mouseInfo mouse structure @return <tt>0 ... </tt>Ok <br><tt>-1 .. </tt>Error @note The tCtrlMouseInfo structure is updated with the new values */ int GfctrlMouseGetCurrent(tCtrlMouseInfo *mouseInfo) { float mouseMove; tMouseInfo *mouse; int i; mouse = GfuiMouseInfo(); mouseMove = (float)(refMouse.X - mouse->X); if (mouseMove < 0) { mouseInfo->ax[1] = -mouseMove; mouseInfo->ax[0] = 0; } else { mouseInfo->ax[0] = mouseMove; mouseInfo->ax[1] = 0; } mouseMove = (float)(refMouse.Y - mouse->Y); if (mouseMove < 0) { mouseInfo->ax[2] = -mouseMove; mouseInfo->ax[3] = 0; } else { mouseInfo->ax[3] = mouseMove; mouseInfo->ax[2] = 0; } for (i = 0; i < 3; i++) { if (mouseInfo->button[i] != mouse->button[i]) { if (mouse->button[i]) { mouseInfo->edgedn[i] = 1; mouseInfo->edgeup[i] = 0; } else { mouseInfo->edgeup[i] = 1; mouseInfo->edgedn[i] = 0; } mouseInfo->button[i] = mouse->button[i]; } else { mouseInfo->edgeup[i] = 0; mouseInfo->edgedn[i] = 0; } } return 0; }
/** Get the reference position. @ingroup ctrl @return none */ void GfctrlMouseInitCenter(void) { memcpy(&refMouse, GfuiMouseInfo(), sizeof(refMouse)); }