void MGuiSlide::sendVariable(void) { if(getVariablePointer()) { switch(getVariableType()) { case M_VAR_INT: { int * value = (int *)getVariablePointer(); if(m_value >= 0) *value = (int)(m_value + 0.5f); else *value = (int)(m_value - 0.5f); } break; case M_VAR_FLOAT: { float * value = (float *)getVariablePointer(); *value = m_value; } break; } } // send on change gui event if(m_pointerEvent) { MGuiEvent guiEvent; guiEvent.type = MGUI_EVENT_SEND_VARIABLE; m_pointerEvent(this, &guiEvent); } }
void MGuiSlide::updateFromVariable(void) { if(! getVariablePointer()) return; switch(getVariableType()) { case M_VAR_INT: { int * value = (int *)getVariablePointer(); setValue((float)*value); } break; case M_VAR_FLOAT: { float * value = (float *)getVariablePointer(); setValue(*value); } break; } }
void MGuiEditText::updateFromVariable(void) { if(! getVariablePointer()) return; switch(getVariableType()) { case M_VAR_BOOL: { bool * value = (bool *)getVariablePointer(); if(*value) setText("1"); else setText("0"); } break; case M_VAR_INT: { int * value = (int *)getVariablePointer(); char text[256]; sprintf(text, "%d", *value); setText(text); } break; case M_VAR_UINT: { unsigned int * value = (unsigned int *)getVariablePointer(); char text[256]; sprintf(text, "%d", *value); setText(text); } break; case M_VAR_FLOAT: { float * value = (float *)getVariablePointer(); char text[256]; sprintf(text, "%0.2f", *value); setText(text); } break; case M_VAR_STRING: { MString * value = (MString *)getVariablePointer(); setText(value->getData()); } break; } }
MVector2 MGuiSlide::getPointfromValue(float value) { float nValue; MVector2 point; // variable pointer if(getVariablePointer()) { if(getVariableType() == M_VAR_INT) { int iValue; if(value >= 0) iValue = (int)(value+0.5f); else iValue = (int)(value-0.5f); nValue = (iValue - getMinValue()) / (getMaxValue() - getMinValue()); if(nValue < 0) nValue = 0; if(nValue > 1) nValue = 1; point = getPosition() + (getDirection() * nValue); return point; } } // normal nValue = (value - getMinValue()) / (getMaxValue() - getMinValue()); if(nValue < 0) nValue = 0; if(nValue > 1) nValue = 1; point = getPosition() + (getDirection() * nValue); return point; }
void MGuiEditText::sendVariable(void) { if(getVariablePointer()) { switch(getVariableType()) { case M_VAR_BOOL: { bool * value = (bool *)getVariablePointer(); int i; sscanf(getText(), "%d", &i); if(i == 1) *value = true; else if(i == 0) *value = false; } break; case M_VAR_INT: { int * value = (int *)getVariablePointer(); int i; sscanf(getText(), "%d", &i); if(i == (*value)) return; *value = i; } break; case M_VAR_UINT: { unsigned int * value = (unsigned int *)getVariablePointer(); int i; sscanf(getText(), "%d", &i); if(i < 0) i = 0; if((unsigned int)i == (*value)) return; *value = (unsigned int)i; } break; case M_VAR_FLOAT: { float * value = (float *)getVariablePointer(); float f; sscanf(getText(), "%f", &f); if(f == (*value)) return; *value = f; } break; case M_VAR_STRING: { MString * value = (MString *)getVariablePointer(); value->set(getText()); } break; } unsigned int tSize = m_text.size(); if(getCharId() > tSize) setCharId(tSize); } // send on change gui event if(m_pointerEvent) { MGuiEvent guiEvent; guiEvent.type = MGUI_EVENT_SEND_VARIABLE; m_pointerEvent(this, &guiEvent); } }