| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513 |
- // I2of5.cpp: implementation of the CI2of5 class.
- //
- // Copyright 2002 Neil Van Eps
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "I2of5.h"
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- CI2of5::CI2of5()
- {
- // I2of5
- m_nSymbology = I2OF5;
- }
- CI2of5::~CI2of5()
- {
- }
- ////////////////////////////////////////////////////////////////////////////////////
- //
- // Name:
- // DrawBitmap()
- //
- // Description:
- // draws a barcode using the previously loaded data
- //
- // Arguments:
- // none
- //
- // Return:
- // void
- //
- // Called by:
- // public class interface
- //
- ////////////////////////////////////////////////////////////////////////////////////
- void CI2of5::DrawBitmap()
- {
- int i,nNumber;
- // draw the start character
- DrawPattern("nnnn");
- // for each character in the message
- for (i=0;i<m_csMessage.GetLength();i+=2)
- {
- // retrieve the next two digit number
- nNumber = m_csMessage.GetAt(i) - '0';
- nNumber = nNumber * 10;
- nNumber += m_csMessage.GetAt(i+1) - '0';
- // draw the two digit number
- DrawPattern(RetrievePattern(nNumber));
- }
- // draw the stop character
- DrawPattern("wnn");
- return;
- }
- ////////////////////////////////////////////////////////////////////////////////////
- //
- // Name:
- // DrawPattern()
- //
- // Description:
- // draws the passed character pattern at the end of the barcode
- //
- // Arguments:
- // CString csPattern - the bar pattern to draw
- //
- // Return:
- // void
- //
- // Called by:
- // CRationalCodabar::DrawBitmap()
- //
- ////////////////////////////////////////////////////////////////////////////////////
- void CI2of5::DrawPattern(CString csCharPattern)
- {
- int i,nXPixel,nYPixel,nTempWidth;
- CDC oDC;
- // attach to the device context
- oDC.Attach(m_hDC);
- // initialize X pixel value
- nXPixel = m_nStartingXPixel;
-
- for (i=0;i<csCharPattern.GetLength();i++)
- {
- // decide if narrow or wide bar
- if (csCharPattern.GetAt(i)=='n')
- nTempWidth = m_nNarrowBarPixelWidth;
- else
- nTempWidth = m_nWideBarPixelWidth;
-
- // X value for loop
- for (nXPixel=m_nStartingXPixel;nXPixel<m_nStartingXPixel+nTempWidth;nXPixel++)
- {
- // Y value for loop
- for (nYPixel=m_nStartingYPixel;nYPixel<m_nStartingYPixel+m_nPixelHeight;nYPixel++)
- {
- // if this is a bar
- if (i%2==0)
- oDC.SetPixelV(nXPixel,nYPixel,COLORBLACK);
- else
- oDC.SetPixelV(nXPixel,nYPixel,COLORWHITE);
- }
- }
- // advance the starting position
- m_nStartingXPixel+= nTempWidth;
- }
- // detach from the device context
- oDC.Detach();
-
- return;
- }
- ////////////////////////////////////////////////////////////////////////////////////
- //
- // Name:
- // RetrievePattern()
- //
- // Description:
- // retrieves the bar pattern for a given character
- //
- // Arguments:
- // char cInputCharacter - the input character to get the bar pattern for
- //
- // Return:
- // CString - the bar pattern for the input character
- //
- // Called by:
- // CRationalCodabar::DrawBitmap()
- //
- ////////////////////////////////////////////////////////////////////////////////////
- CString CI2of5::RetrievePattern(int nTwoDigitNumber)
- {
- CString csCharPattern;
- switch (nTwoDigitNumber)
- {
- case 0:
- csCharPattern = "nnnnwwwwnn";
- break;
- case 1:
- csCharPattern = "nwnnwnwnnw";
- break;
- case 2:
- csCharPattern = "nnnwwnwnnw";
- break;
- case 3:
- csCharPattern = "nwnwwnwnnn";
- break;
- case 4:
- csCharPattern = "nnnnwwwnnw";
- break;
- case 5:
- csCharPattern = "nwnnwwwnnn";
- break;
- case 6:
- csCharPattern = "nnnwwwwnnn";
- break;
- case 7:
- csCharPattern = "nnnnwnwwnw";
- break;
- case 8:
- csCharPattern = "nwnnwnwwnn";
- break;
- case 9:
- csCharPattern = "nnnwwnwwnn";
- break;
- case 10:
- csCharPattern = "wnnnnwnwwn";
- break;
- case 11:
- csCharPattern = "wwnnnnnnww";
- break;
- case 12:
- csCharPattern = "wnnwnnnnww";
- break;
- case 13:
- csCharPattern = "wwnwnnnnwn";
- break;
- case 14:
- csCharPattern = "wnnnnwnnww";
- break;
- case 15:
- csCharPattern = "wwnnnwnnwn";
- break;
- case 16:
- csCharPattern = "wnnwnwnnwn";
- break;
- case 17:
- csCharPattern = "wnnnnnnwww";
- break;
- case 18:
- csCharPattern = "wwnnnnnwwn";
- break;
- case 19:
- csCharPattern = "wnnwnnnwwn";
- break;
- case 20:
- csCharPattern = "nnwnnwnwwn";
- break;
- case 21:
- csCharPattern = "nwwnnnnnww";
- break;
- case 22:
- csCharPattern = "nnwwnnnnww";
- break;
- case 23:
- csCharPattern = "nwwwnnnnwn";
- break;
- case 24:
- csCharPattern = "nnwnnwnnww";
- break;
- case 25:
- csCharPattern = "nwwnnwnnwn";
- break;
- case 26:
- csCharPattern = "nnwwnwnnwn";
- break;
- case 27:
- csCharPattern = "nnwnnnnwww";
- break;
- case 28:
- csCharPattern = "nwwnnnnwwn";
- break;
- case 29:
- csCharPattern = "nnwwnnnwwn";
- break;
- case 30:
- csCharPattern = "wnwnnwnwnn";
- break;
- case 31:
- csCharPattern = "wwwnnnnnnw";
- break;
- case 32:
- csCharPattern = "wnwwnnnnnw";
- break;
- case 33:
- csCharPattern = "wwwwnnnnnn";
- break;
- case 34:
- csCharPattern = "wnwnnwnnnw";
- break;
- case 35:
- csCharPattern = "wwwnnwnnnn";
- break;
- case 36:
- csCharPattern = "wnwwnwnnnn";
- break;
- case 37:
- csCharPattern = "wnwnnnnwnw";
- break;
- case 38:
- csCharPattern = "wwwnnnnwnn";
- break;
- case 39:
- csCharPattern = "wnwwnnnwnn";
- break;
- case 40:
- csCharPattern = "nnnnwwnwwn";
- break;
- case 41:
- csCharPattern = "nwnnwnnnww";
- break;
- case 42:
- csCharPattern = "nnnwwnnnww";
- break;
- case 43:
- csCharPattern = "nwnwwnnnwn";
- break;
- case 44:
- csCharPattern = "nnnnwwnnww";
- break;
- case 45:
- csCharPattern = "nwnnwwnnwn";
- break;
- case 46:
- csCharPattern = "nnnwwwnnwn";
- break;
- case 47:
- csCharPattern = "nnnnwnnwww";
- break;
- case 48:
- csCharPattern = "nwnnwnnwwn";
- break;
- case 49:
- csCharPattern = "nnnwwnnwwn";
- break;
- case 50:
- csCharPattern = "wnnnwwnwnn";
- break;
- case 51:
- csCharPattern = "wwnnwnnnnw";
- break;
- case 52:
- csCharPattern = "wnnwwnnnnw";
- break;
- case 53:
- csCharPattern = "wwnwwnnnnn";
- break;
- case 54:
- csCharPattern = "wnnnwwnnnw";
- break;
- case 55:
- csCharPattern = "wwnnwwnnnn";
- break;
- case 56:
- csCharPattern = "wnnwwwnnnn";
- break;
- case 57:
- csCharPattern = "wnnnwnnwnw";
- break;
- case 58:
- csCharPattern = "wwnnwnnwnn";
- break;
- case 59:
- csCharPattern = "wnnwwnnwnn";
- break;
- case 60:
- csCharPattern = "nnwnwwnwnn";
- break;
- case 61:
- csCharPattern = "nwwnwnnnnw";
- break;
- case 62:
- csCharPattern = "nnwwwnnnnw";
- break;
- case 63:
- csCharPattern = "nwwwwnnnnn";
- break;
- case 64:
- csCharPattern = "nnwnwwnnnw";
- break;
- case 65:
- csCharPattern = "nwwnwwnnnn";
- break;
- case 66:
- csCharPattern = "nnwwwwnnnn";
- break;
- case 67:
- csCharPattern = "nnwnwnnwnw";
- break;
- case 68:
- csCharPattern = "nwwnwnnwnn";
- break;
- case 69:
- csCharPattern = "nnwwwnnwnn";
- break;
- case 70:
- csCharPattern = "nnnnnwwwwn";
- break;
- case 71:
- csCharPattern = "nwnnnnwnww";
- break;
- case 72:
- csCharPattern = "nnnwnnwnww";
- break;
- case 73:
- csCharPattern = "nwnwnnwnwn";
- break;
- case 74:
- csCharPattern = "nnnnnwwnww";
- break;
- case 75:
- csCharPattern = "nwnnnwwnwn";
- break;
- case 76:
- csCharPattern = "nnnwnwwnwn";
- break;
- case 77:
- csCharPattern = "nnnnnnwwww";
- break;
- case 78:
- csCharPattern = "nwnnnnwwwn";
- break;
- case 79:
- csCharPattern = "nnnwnnwwwn";
- break;
- case 80:
- csCharPattern = "wnnnnwwwnn";
- break;
- case 81:
- csCharPattern = "wwnnnnwnnw";
- break;
- case 82:
- csCharPattern = "wnnwnnwnnw";
- break;
- case 83:
- csCharPattern = "wwnwnnwnnn";
- break;
- case 84:
- csCharPattern = "wnnnnwwnnw";
- break;
- case 85:
- csCharPattern = "wwnnnwwnnn";
- break;
- case 86:
- csCharPattern = "wnnwnwwnnn";
- break;
- case 87:
- csCharPattern = "wnnnnnwwnw";
- break;
- case 88:
- csCharPattern = "wwnnnnwwnn";
- break;
- case 89:
- csCharPattern = "wnnwnnwwnn";
- break;
- case 90:
- csCharPattern = "nnwnnwwwnn";
- break;
- case 91:
- csCharPattern = "nwwnnnwnnw";
- break;
- case 92:
- csCharPattern = "nnwwnnwnnw";
- break;
- case 93:
- csCharPattern = "nwwwnnwnnn";
- break;
- case 94:
- csCharPattern = "nnwnnwwnnw";
- break;
- case 95:
- csCharPattern = "nwwnnwwnnn";
- break;
- case 96:
- csCharPattern = "nnwwnwwnnn";
- break;
- case 97:
- csCharPattern = "nnwnnnwwnw";
- break;
- case 98:
- csCharPattern = "nwwnnnwwnn";
- break;
- case 99:
- csCharPattern = "nnwwnnwwnn";
- break;
- }
- return csCharPattern;
- }
- ////////////////////////////////////////////////////////////////////////////////////
- //
- // Name:
- // BitmapToClipboard()
- //
- // Description:
- // puts the specified bitmap on the clipboard
- //
- // Arguments:
- // none
- //
- // Return:
- // void
- //
- // Called by:
- // public class interface - called by users of the class
- //
- ////////////////////////////////////////////////////////////////////////////////////
- void CI2of5::BitmapToClipboard()
- {
- CDC memDC;
- CBitmap oBitmap;
- memDC.CreateCompatibleDC(NULL);
- m_hDC = memDC.GetSafeHdc();
- // create compatible, correctly sized bitmap
- oBitmap.CreateCompatibleBitmap(&memDC,m_nFinalBarcodePixelWidth,m_nPixelHeight);
- // select our bitmap into the device context
- CBitmap * oldbm = memDC.SelectObject(&oBitmap);
- // turn area white - stock black bitmap is selected
- memDC.BitBlt(0,0,m_nFinalBarcodePixelWidth,m_nPixelHeight,NULL,0,0,WHITENESS);
- // draw bitmap into memory device context
- DrawBitmap();
-
- // put bitmap on clipboard
- ::OpenClipboard(NULL);
- ::EmptyClipboard();
- ::SetClipboardData(CF_BITMAP, oBitmap.m_hObject);
- ::CloseClipboard();
-
- // deselect object out of device context
- memDC.SelectObject(oldbm);
- // make sure bitmap not deleted with CBitmap object
- oBitmap.Detach();
- return;
- }
|