Annotation of DewFind/word.cpp, revision 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>