the help of Direct Input). We then had to figure out from that position where the mouse press occurred. We then coded the value in the same way we did with the keyboard.
3.3 Our Screen Abstraction To make our representation of the screen easier and to ease the adding of new characters, a screen class was made. It was setup to have the same number of characters as the screen. The class also provided functions to ease the programmer in adding characters to the screen as well as moving the cursor around. In addition to adding and removing characters and keeping track of the cursor, the class was also responsible for keeping track of certain states. For instance, it was responsible to check if the calculator was on, in insert mode, in second mode, and in alpha mode. The only ones that really mattered to the internal representation where insert (for when the programmer added new characters) and on (when the programmer wanted to do pretty much anything). There was a special case of adding characters to the abstract screen class. Whenever a return was hit, we hear back from the calculation part of the program and put the result into the next line of the screen.
3.4 Displaying to the Screen The second part of our GUI, involved updating the screen with values from both buttons pressed and results computed. This process began when the user pressed the button. The input was gotten from the previous part. On the next cycle of the main program loop, the program ran the DisplayFrame() function. This is where all of our drawing to the screen occurred. We then called a separate function DisplayOnScreen() that drew what was in our screen object that was talked about earlier. We did this by decoding each character in the screen abstraction, then, by use of a giant switch statement manually drew the single character. The program, then, went on to do this for every character in the screen. This was also done for the status bar at the bottom.
4 Future Work
There are many ways in which this calculator could be improved. The main reason we did not pursue these is because we decided that for the time allotted to us, our efforts were much better spent by getting a working framework down, rather than working about too many features and ignoring the more important stuff. There are specifically two main works that would be the next step in development for us if we had more time. First, seeing as how this is modeled off of a TI calculator, the next logical step would be to extend this calculator to allow for graphing and root-solving. Second, error checking could be implemented to create within the screen a syntax error so that if the syntax is incorrect, the compile code of the calculator won’t be called and in turn throw an exception that could be handled on the screen of the calculator. Both of these features could vastly improve its uses.
5 Discussion and Conclusion
Although we had to change the focus of the project