-
Notifications
You must be signed in to change notification settings - Fork 0
/
application.c
133 lines (123 loc) · 4.93 KB
/
application.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*---------------------------------------------------------------------------------------------------------------------
-- SOURCE FILE: application.c - Handles visual presentation functionality.
--
-- PROGRAM: dte
--
-- Functions:
-- void printOut(HWND, PCURSOR, POUTPUT, HDC);
-- void printChar(HWND, PCURSOR, POUTPUT, HDC);
-- void setMenu(HMENU, UINT);
--
-- DATE: September 29th 2010
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Tom Nightingale
--
-- PROGRAMMER: Tom Nightingale
--
-- NOTES: Handles rendering of program visual interface to display. Functions create menus and print data stored
-- in the output buffer to display area.
-- Formatting, position and other visual aspects are handled in this layer.
----------------------------------------------------------------------------------------------------------------------*/
#include "application.h"
#include "session.h"
/*---------------------------------------------------------------------------------------------------------------------
-- FUNCTION: printOut
--
-- DATE: September 29th, 2010
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Tom Nightingale
--
-- PROGRAMMER: Tom Nightingale
--
-- INTERFACE: void printOut(HWND, PCURSOR, POUTPUT, HDC)
-- HWND hwnd: The program's window handle.
-- PCURSOR pCursor: Pointer to the program's cursor object.
-- POUTPUT pOutput: Point to the programs output file.
-- HDC hdc: Hardware device controller.
--
-- RETURNS: void.
--
-- NOTES: Prints data stored in the data string (pWData->output.out) to display area. Handles formatting,
-- newlines, etc. Math could do with a bit of work.
--
----------------------------------------------------------------------------------------------------------------------*/
void printOut(HWND hwnd, PCURSOR pCursor, POUTPUT pOutput, HDC hdc) {
UINT x, y; // Cursor column & line.
int pBufferSize;
TCHAR* pBuffer; // Char rendering buffer.
pBufferSize = pCursor->cxBuffer * pCursor->cyBuffer * sizeof(TCHAR);
pBuffer = (TCHAR*) malloc(pBufferSize);
for (x = 0; x < pBufferSize / sizeof(TCHAR); x++) {
if (x < pOutput->pos) {
pBuffer[x] = (pOutput->out)[x];
} else {
pBuffer[x] = ' ';
}
}
for (y = 0; y < pCursor->cyBuffer ; y++) {
TextOut (hdc, 0, y * pCursor->cyChar, &BUFFER(0, y), pCursor->cxBuffer);
}
}
/*---------------------------------------------------------------------------------------------------------------------
-- FUNCTION: printChar
--
-- DATE: October 3rd, 2010
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Tom Nightingale
--
-- PROGRAMMER: Tom Nightingale
--
-- INTERFACE: void printChar(HWND hwnd, PCURSOR pCursor, POUTPUT pOutput, HDC hdc)
-- HWND hwnd: The program's window handle.
-- PCURSOR pCursor: Pointer to the program's cursor object.
-- POUTPUT pOutput: Point to the programs output file.
-- HDC hdc: Hardware device controller.
--
-- RETURNS: void.
--
-- NOTES: Prints a single char to the window's display area, handling window width & newline etc...
--
----------------------------------------------------------------------------------------------------------------------*/
void printChar(HWND hwnd, PCURSOR pCursor, POUTPUT pOutput, HDC hdc) {
int x, y;
TCHAR index;
x = pCursor->xCaret * pCursor->cxChar;
y = pCursor->yCaret * pCursor->cyChar;
index = *(pOutput->out + (pOutput->pos - 1));
TextOut(hdc, x, y, &index, 1);
}
/*---------------------------------------------------------------------------------------------------------------------
-- FUNCTION: setMenu
--
-- DATE: September 29th, 2010
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Tom Nightingale
--
-- PROGRAMMER: Tom Nightingale
--
-- INTERFACE: setMenu(HMENU menu, UINT uEnable
-- HMENU menu: A win32 menu struct returned by GetMenu().
-- UINIT uEnable: Option to be passed to EnableMenuItem. The setting to apply to the menu.
--
-- RETURNS: void.
--
-- NOTES: Sets all of the menu items to the value of uEnable.
--
----------------------------------------------------------------------------------------------------------------------*/
void setMenu(HMENU menu, UINT uEnable) {
EnableMenuItem(menu, IDM_CONNECT, uEnable);
EnableMenuItem(menu, IDM_COM1, uEnable);
EnableMenuItem(menu, IDM_COM2, uEnable);
EnableMenuItem(menu, IDM_COM3, uEnable);
EnableMenuItem(menu, IDM_COM4, uEnable);
EnableMenuItem(menu, IDM_COM5, uEnable);
EnableMenuItem(menu, IDM_COM6, uEnable);
}