void readGem () { proccessGem (0); proccessGem (1); proccessGem (2); proccessGem (3); readGemPad (0); // This will read buttons from Move switch (newGemPad) { case 1: printf ("Select pressed \n"); break; case 2: printf ("T pressed value %d\n", newGemAnalogT); printf ("Frame %d center of the sphere in world coordinates %f %f %f %f \n", camread.frame, vec_array (gem_state.pos, 0), vec_array (gem_state.pos, 1), vec_array (gem_state.pos, 2), vec_array (gem_state.pos, 3)); break; case 4: printf ("Move pressed \n"); gemCalibrate (0); break; case 8: printf ("Start pressed \n"); pos_x = 0; pos_y = 0; break; case 16: printf ("Triangle pressed \n"); getImageState (); break; case 32: printf ("Circle pressed \n"); break; case 64: printf ("Cross pressed \n"); printf ("X,Y,Z position (mm) %f %f %f\n", vec_array (gem_state.pos, 0), vec_array (gem_state.pos, 1), vec_array (gem_state.pos, 2)); readGemAccPosition (0); break; case 128: printf ("Square pressed \n"); readGemInertial (0); break; default: break; } }
//! draws the element and its children void CGUIButton::draw() { if (!IsVisible) return; IGUISkin* skin = Environment->getSkin(); video::IVideoDriver* driver = Environment->getVideoDriver(); if (DrawBorder) { if (!Pressed) { skin->draw3DButtonPaneStandard(this, AbsoluteRect, &AbsoluteClippingRect); } else { skin->draw3DButtonPanePressed(this, AbsoluteRect, &AbsoluteClippingRect); } } const core::position2di buttonCenter(AbsoluteRect.getCenter()); EGUI_BUTTON_IMAGE_STATE imageState = getImageState(Pressed); if ( ButtonImages[(u32)imageState].Texture ) { core::position2d<s32> pos(buttonCenter); core::rect<s32> sourceRect(ButtonImages[(u32)imageState].SourceRect); if ( sourceRect.getWidth() == 0 && sourceRect.getHeight() == 0 ) sourceRect = core::rect<s32>(core::position2di(0,0), ButtonImages[(u32)imageState].Texture->getOriginalSize()); pos.X -= sourceRect.getWidth() / 2; pos.Y -= sourceRect.getHeight() / 2; if ( Pressed ) { // Create a pressed-down effect by moving the image when it looks identical to the unpressed state image EGUI_BUTTON_IMAGE_STATE unpressedState = getImageState(false); if ( unpressedState == imageState || ButtonImages[(u32)imageState] == ButtonImages[(u32)unpressedState] ) { pos.X += skin->getSize(EGDS_BUTTON_PRESSED_IMAGE_OFFSET_X); pos.Y += skin->getSize(EGDS_BUTTON_PRESSED_IMAGE_OFFSET_Y); } } driver->draw2DImage(ButtonImages[(u32)imageState].Texture, ScaleImage? AbsoluteRect : core::rect<s32>(pos, sourceRect.getSize()), sourceRect, &AbsoluteClippingRect, 0, UseAlphaChannel); } if (SpriteBank) { core::position2di pos(buttonCenter); if ( Pressed ) { IGUISkin* skin = Environment->getSkin(); pos.X += skin->getSize(EGDS_BUTTON_PRESSED_SPRITE_OFFSET_X); pos.Y += skin->getSize(EGDS_BUTTON_PRESSED_SPRITE_OFFSET_Y); } if (isEnabled()) { // pressed / unpressed animation EGUI_BUTTON_STATE state = Pressed ? EGBS_BUTTON_DOWN : EGBS_BUTTON_UP; drawSprite(state, ClickTime, pos); // focused / unfocused animation state = Environment->hasFocus(this) ? EGBS_BUTTON_FOCUSED : EGBS_BUTTON_NOT_FOCUSED; drawSprite(state, FocusTime, pos); // mouse over / off animation state = Environment->getHovered() == this ? EGBS_BUTTON_MOUSE_OVER : EGBS_BUTTON_MOUSE_OFF; drawSprite(state, HoverTime, pos); } else { // draw disabled drawSprite(EGBS_BUTTON_DISABLED, 0, pos); } } if (Text.size()) { IGUIFont* font = getActiveFont(); core::rect<s32> rect = AbsoluteRect; if (Pressed) { rect.UpperLeftCorner.X += skin->getSize(EGDS_BUTTON_PRESSED_TEXT_OFFSET_X); rect.UpperLeftCorner.Y += skin->getSize(EGDS_BUTTON_PRESSED_TEXT_OFFSET_Y); } if (font) font->draw(Text.c_str(), rect, skin->getColor(isEnabled() ? EGDC_BUTTON_TEXT : EGDC_GRAY_TEXT), true, true, &AbsoluteClippingRect); } IGUIElement::draw(); }
bool FloppyService::isImageReady() { return getImageState()==IMAGE_OK; }