#include #include #include "IupCameraSetupDlg.h" int IupCameraSetupDlg::_okCB(Ihandle* self) { IupCameraSetupDlg* dlg; dlg = (IupCameraSetupDlg*)IupGetAttribute(self, "this"); if(!dlg) return IUP_DEFAULT; dlg->readAttrs(); return IUP_CLOSE; } int IupCameraSetupDlg::_cancelCB(Ihandle* self) { return IUP_CLOSE; } Ihandle* createTextBox() { Ihandle* textBox = IupText(0); IupSetAttribute(textBox, IUP_SIZE, "40x"); return textBox; } IupCameraSetupDlg::IupCameraSetupDlg() { Ihandle *okbtn, *cancelbtn, *eyeBox, *atBox, *distBox, *imgBox; ex_ = -45.0f; ey_ = -45.0f; ez_ = 10.0f; ax_ = 0.0f; ay_ = 0.0f; az_ = 0.0f; distEyes_ = 2.0f; width_ = 480; height_ = 240; exText_ = createTextBox(); eyText_ = createTextBox(); ezText_ = createTextBox(); axText_ = createTextBox(); ayText_ = createTextBox(); azText_ = createTextBox(); distEyesText_ = createTextBox(); widthText_ = createTextBox(); heightText_ = createTextBox(); eyeBox = IupFrame( IupHbox( IupFill(), IupVbox( IupHbox( IupLabel("X: "), exText_, 0), IupHbox( IupLabel("Y: "), eyText_, 0), IupHbox( IupLabel("Z: "), ezText_, 0), 0), IupFill(), 0) ); IupSetAttribute(eyeBox, IUP_TITLE, "Eye"); atBox = IupFrame( IupHbox( IupFill(), IupVbox( IupHbox( IupLabel("X: "), axText_, 0), IupHbox( IupLabel("Y: "), ayText_, 0), IupHbox( IupLabel("Z: "), azText_, 0), 0), IupFill(), 0) ); IupSetAttribute(atBox, IUP_TITLE, "At"); distBox = IupFrame( IupHbox( IupFill(), IupLabel("Dist: "), distEyesText_, IupFill(), 0) ); IupSetAttribute(distBox, IUP_TITLE, "Dist Eyes"); imgBox = IupFrame( IupHbox( IupFill(), IupVbox( IupHbox( IupLabel("Width: "), widthText_, 0), IupHbox( IupLabel("Height: "), heightText_, 0), 0), IupFill(), 0) ); IupSetAttribute(imgBox, IUP_TITLE, "Img Dimensions"); okbtn = IupButton("Ok", "cameraSetup_okCB"); IupSetFunction("cameraSetup_okCB", (Icallback)_okCB); IupSetAttribute(okbtn, "this", (char*)this); cancelbtn = IupButton("Cancel", "cameraSetup_cancelCB"); IupSetFunction("cameraSetup_cancelCB", (Icallback)_cancelCB); IupSetAttribute(cancelbtn, "this", (char*)this); dlg = IupDialog( IupVbox( IupHbox( eyeBox, atBox, 0), IupHbox( distBox, imgBox, 0), IupFill(), IupHbox( IupFill(), okbtn, cancelbtn, 0), 0) ); IupStoreAttribute(dlg, "this", (char*)this); IupStoreAttribute(dlg, IUP_MAXBOX, IUP_NO); IupStoreAttribute(dlg, IUP_RESIZE, IUP_NO); IupSetAttribute(dlg, IUP_SIZE, "200x120"); IupSetAttribute(dlg, IUP_TITLE, "Camera Setup"); IupStoreAttribute(dlg, IUP_CLOSE_CB, "cameraSetup_close"); IupSetFunction("cameraSetup_close", (Icallback)_cancelCB); IupMap(dlg); } IupCameraSetupDlg::~IupCameraSetupDlg() { IupDestroy(dlg); } float getAttr(Ihandle* ih) { float val = (float)atof(IupGetAttribute(ih, IUP_VALUE)); return val; } void IupCameraSetupDlg::readAttrs() { ex_ = getAttr(exText_); ey_ = getAttr(eyText_); ez_ = getAttr(ezText_); ax_ = getAttr(axText_); ay_ = getAttr(ayText_); az_ = getAttr(azText_); distEyes_ = getAttr(distEyesText_); width_ = (int)getAttr(widthText_); height_ = (int)getAttr(heightText_); } void setAttr(Ihandle* ih, float val) { char str[10]; sprintf(str, "%6.2f", val); IupSetAttribute(ih, IUP_VALUE, str); } void IupCameraSetupDlg::writeAttrs() { setAttr(exText_, ex_); setAttr(eyText_, ey_); setAttr(ezText_, ez_); setAttr(axText_, ax_); setAttr(ayText_, ay_); setAttr(azText_, az_); setAttr(distEyesText_, distEyes_); setAttr(widthText_, width_); setAttr(heightText_, height_); } void IupCameraSetupDlg::getEye(float& x, float& y, float& z) { x = ex_; y = ey_; z = ez_; } void IupCameraSetupDlg::getAt(float& x, float& y, float& z) { x = ax_; y = ay_; z = az_; } void IupCameraSetupDlg::getDistEyes(float& distEyes) { distEyes = distEyes_; } void IupCameraSetupDlg::getImgDim(int& w, int& h) { w = width_; h = height_; } void IupCameraSetupDlg::show() { writeAttrs(); IupPopup(dlg, IUP_CENTER, IUP_CENTER); // IupShowXY(dlg, IUP_CENTER, IUP_CENTER); }