| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /******************************************************************************/
- #include "stdafx.h"
- /******************************************************************************/
- CalculatorClass Calculator;
- /******************************************************************************/
- /******************************************************************************/
- CalculatorClass& CalculatorClass::create(C Rect &rect)
- {
- ::EE::Window::create("Calculator").clientRect(rect);
- T+=expression.create(Rect(0.01f, -clientHeight()+0.01f, clientWidth()-0.01f, -clientHeight()+0.01f+0.05f)); button[2].func(HideEditAct, SCAST(GuiObj, T)).show();
- return T;
- }
- void CalculatorClass::update(C GuiPC &gpc)
- {
- ::EE::ClosableWindow::update(gpc);
- if(Gui.kb()==&expression)
- {
- CalcValue value; if(Kb.kf(KB_ENTER) && Calculate(value, expression())){expression.set(value.asText(-9)); expression.cursor(expression().length());}
- }
- }
- void CalculatorClass::draw(C GuiPC &gpc)
- {
- if(visible() && gpc.visible)
- {
- ::EE::Window::draw(gpc);
- D.clip(gpc.clip);
- CalcValue value; bool ok=Calculate(value, expression());
- TextStyleParams ts(true); ts.align.y=1;
- TextStyleParams tsb=ts;
- ts .size=0.040f;
- tsb.size=0.055f;
- Rect rect=clientRect(); rect.min.y+=expression.rect().max.y+clientHeight(); rect.extendX(-0.01f); rect+=gpc.offset;
- if(!ok){tsb.align.y=0; D.text(tsb, rect.center(), S+"Error : "+CalcError);}else
- {
- D.text(tsb, rect.down(), value.asText(-9));
- if(value.type==CVAL_INT || value.type==CVAL_REAL)
- {
- int i;
- flt f;
- dbl d;
- if(value.type==CVAL_INT ){d=value.i; f=value.i; i= value.i ;}else
- if(value.type==CVAL_REAL){d=value.r; f=value.r; i=Round(value.r);}
- ts.align.x=-1;
- D.text(ts, rect.max.x, rect.min.y+0.13f, TextInt (i ));
- D.text(ts, rect.max.x, rect.min.y+0.09f, TextReal(f, -9));
- D.text(ts, rect.max.x, rect.min.y+0.05f, TextReal(d, -9));
- ts.align.x=1;
- D.text(ts, rect.min.x, rect.min.y+0.13f, "Int");
- D.text(ts, rect.min.x, rect.min.y+0.09f, "Flt");
- D.text(ts, rect.min.x, rect.min.y+0.05f, "Dbl");
- D.text(ts, rect.min.x+0.07f, rect.min.y+0.13f, TextHex((uint&)i, 8, 0, true));
- D.text(ts, rect.min.x+0.07f, rect.min.y+0.09f, TextHex((uint&)f, 8, 0, true));
- uint *x=(uint*)&d; D.text(ts, rect.min.x+0.07f, rect.min.y+0.05f, TextHex( x[1], 8, 0, true)+TextHex(x[0], 8));
- }
- }
- }
- }
- /******************************************************************************/
|