Annotation of DewFind/word.cpp, revision 1.1.1.1
1.1 nick 1: #include "StdAfx.h"
2: #include "resource.h"
3: #include "word.h"
4:
5: //#32
6: //*************************************
7: //Programmed by: Brendan Lynch
8: //Email: dewgames@gmail.com
9: //Website: www.dewgames.com
10: //*************************************
11:
12:
13: //**************************************************************************************************
14: //
15: //-------------------------------------PUBLIC-------------------------------------------------------
16: //
17: //**************************************************************************************************
18:
19: Word::Word()
20: {
21: Reset();
22: };
23:
24: void Word::Reset()
25: {
26: limit_ = MAXLETTERS;
27: color_ = 0; //Black
28: };
29: void Word::SetLimit(int lim)
30: {
31: //Used so that it will only print upto the limit.
32: //Makes sure it doesnt go over the max
33: if (lim <= MAXLETTERS)
34: limit_ = lim;
35: }
36:
37: void Word::Write(CString writeme,int x,int y,CDC *xDC)
38: {
39: Display(true,writeme,x,y,xDC);
40: };
41:
42: void Word::Write(char writeme,int x,int y,CDC *xDC)
43: {
44: ShowChar(xDC,x,y,writeme);
45: };
46:
47: void Word::SetColor(int color)
48: {
49: color_ = color;
50: }
51: void Word::WriteBackwards(bool IsVert, CString writeme, int x, int y, CDC *xDC)
52: {
53: CString backwards;
54:
55: int len,tmpy;
56: char tChar;
57:
58: len = writeme.GetLength();
59: tmpy = len-1;
60:
61: backwards = "";
62: for(tmpy;tmpy>=0;tmpy--)
63: {
64: tChar = writeme.GetAt(tmpy);
65: backwards = backwards + tChar;
66: };
67:
68: if (IsVert == true)
69: {
70: WriteVert(backwards,x,y,xDC);
71: }
72: else
73: {
74: Write(backwards,x,y,xDC);
75: };
76: };
77:
78:
79: void Word::Write(int number,int x,int y,int zeros, CDC *xDC)
80: {
81: //Converts the number to a string
82: //Adds 0's base on what number zeros is equal to
83: //Then uses the write string function
84: CString str;
85: bool done=false;
86: CString strx("");
87:
88: if ((number > 9999999)&&(zeros == 8))
89: {
90: str.Format("%i",number);
91: done = true;
92: }
93: if ((number > 999999)&&(zeros == 7))
94: {
95: str.Format("%i",number);
96: done = true;
97: }
98: if ((number > 99999)&&(zeros == 6))
99: {
100: str.Format("%i",number);
101: done = true;
102: }
103: if ((number > 9999)&&(zeros == 5))
104: {
105: str.Format("%i",number);
106: done = true;
107: }
108: if ((number > 999)&&(zeros == 4))
109: {
110: str.Format("%i",number);
111: done = true;
112: }
113: if (done==false)
114: {
115: if ((number < 10000000)&&(zeros > 7))
116: strx = strx + "0";
117: if ((number < 1000000)&&(zeros > 6))
118: strx = strx + "0";
119: if ((number < 100000)&&(zeros > 5))
120: strx = strx + "0";
121: if ((number < 10000)&&(zeros > 4))
122: strx = strx + "0";
123: if ((number < 1000)&&(zeros > 3))
124: strx = strx + "0";
125: if ((number < 100)&&(zeros > 2))
126: strx = strx + "0";
127: if (number < 10)
128: strx = strx + "0";
129:
130: str.Format("%i",number);
131: str = strx + str;
132: }
133:
134:
135:
136: Write(str,x,y,xDC);
137: }
138:
139:
140: void Word::WriteVert(CString writeme,int x,int y,CDC *xDC)
141: {
142: Display(false,writeme,x,y,xDC);
143: }
144:
145: //******************************************************************************************************
146: //
147: //-------------------------------------PRIVATE-------------------------------------------------------
148: //
149: //******************************************************************************************************
150:
151: void Word::Display(bool horz,CString writeme,int x,int y,CDC *xDC)
152: {
153: //This function writes the string to the screen.
154: //Will not write the string if its bigger than the max
155: //If horz = true then it writes it horiztal otherwise it
156: //writes it vertically
157: int len,i;
158: char tmp[MAXLETTERS];
159: writeme.MakeUpper();
160: len = writeme.GetLength();
161: if (len > limit_)
162: { len = limit_; };
163: if (len <= MAXLETTERS)
164: {
165: strcpy(tmp,writeme);
166: for (i=0;i<len;i++)
167: {
168: ShowChar(xDC,x,y,tmp[i]);
169: if (horz == true)
170: x = x + 19;
171: else
172: y = y + 30;
173:
174: };
175: };
176: }
177:
178: void Word::ShowChar(CDC *dc, int picX, int picY, char Let)
179: {
180: //Prints the Letter to the screen
181: CBitmap bitmap;
182:
183: switch(color_)
184: {
185: case 0 : bitmap.LoadBitmap(LETBLACK); break;
186: case 1 : bitmap.LoadBitmap(LETRED); break;
187: case 2 : bitmap.LoadBitmap(LETGREEN); break;
188: default: bitmap.LoadBitmap(LETBLACK); break;
189: };
190:
191:
192: CDC dcComp;
193: dcComp.CreateCompatibleDC(dc);
194: dcComp.SelectObject(&bitmap);
195: BITMAP bmInfo;
196: bitmap.GetObject(sizeof(bmInfo),&bmInfo);
197: int width,height,srcx,srcy;
198: width = 19;//with of the letter
199: height = 30;//height of the letter
200: srcx = 1; //Starting Value
201: if ((Let == ' ')||((Let < 'N')&&(Let >= 'A')))
202: {
203: srcy = 1;
204: if ((Let > 'A')||(Let == ' '))
205: srcx = srcx + (20 * GetNum(Let));
206: }
207: else if ((Let == '-')||((Let <= 'Z')&&(Let >= 'N')))
208: {
209: srcy = 37;
210: if ((Let > 'N')||(Let == '-'))
211: srcx = srcx + (20 * GetNum(Let));
212: }
213: else if ((Let == '=')||(Let == '.')||(Let == '?')||(Let == '!')||(Let <= '9')&&(Let >= '0'))
214: {
215: srcy = 73;
216: if (Let != '0')
217: srcx = srcx + (20 * GetNum(Let));
218: }
219: else if ((Let == '[')||(Let == '+')||(Let == '/'))
220: {
221: srcy = 109;
222: if (Let != '[')
223: srcx = srcx + (20 * GetNum(Let));
224: }
225: else
226: {
227: srcy = 1;
228: Let = ' ';
229: srcx = srcx + (20 * GetNum(Let));
230: }
231: dc->BitBlt(picX,picY,width,height,&dcComp,srcx,srcy,SRCCOPY);
232: }
233:
234: int Word::GetNum(char Let)
235: {
236: //Used with ShowChar gets a number of the character it is to print
237: int ans;
238: switch(Let)
239: {
240: case 'O' :
241: case '1' :
242: case 'B' : ans = 1; break;
243: case '2' :
244: case 'P' :
245: case 'C' : ans = 2; break;
246: case '3' :
247: case 'Q' :
248: case 'D' : ans = 3; break;
249: case '4' :
250: case 'R' :
251: case 'E' : ans = 4; break;
252: case '5' :
253: case 'S' :
254: case 'F' : ans = 5; break;
255: case '6' :
256: case 'T' :
257: case 'G' :
258: case '/' : ans = 6; break;
259: case '7' :
260: case 'U' :
261: case 'H' : ans = 7; break;
262: case '8' :
263: case 'V' :
264: case 'I' : ans = 8; break;
265: case '9' :
266: case 'W' :
267: case 'J' : ans = 9; break;
268: case '!' :
269: case 'X' :
270: case 'K' : ans = 10; break;
271: case '?' :
272: case 'Y' :
273: case 'L' : ans = 11; break;
274: case '.' :
275: case 'Z' :
276: case 'M' : ans = 12; break;
277: default : ans = 13; break;
278: }
279: return(ans);
280: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>