Files
Slnkdwf/Barcode/Code39.cpp
Jos Groot Lipman 8e894a966f V2.50 barcode39
svn path=/Slnkdwf/trunk/; revision=12501
2011-04-12 09:25:20 +00:00

278 lines
5.6 KiB
C++

// Code39.cpp: implementation of the CCode39 class.
//
// Copyright 2002 Neil Van Eps
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Code39.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCode39::CCode39()
{
// code 39
m_nSymbology = CODE39;
}
CCode39::~CCode39()
{
}
////////////////////////////////////////////////////////////////////////////////////
//
// Name:
// DrawBitmap()
//
// Description:
// draws a barcode using the previously loaded data
//
// Arguments:
// none
//
// Return:
// void
//
// Called by:
// public class interface
//
////////////////////////////////////////////////////////////////////////////////////
void CCode39::DrawBitmap()
{
int i;
CString csCurrentPattern;
// draw start character, an asterisk
DrawPattern(RetrievePattern('*'));
// draw each character in the message
for (i=0;i<m_csMessage.GetLength();i++)
DrawPattern(RetrievePattern(m_csMessage.GetAt(i)));
// draw stop character, also an asterisk
DrawPattern(RetrievePattern('*'));
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 CCode39::DrawPattern( CString csPattern )
{
int i,nXPixel,nYPixel,nTempWidth;
// initialize X pixel value
nXPixel = m_nStartingXPixel;
for (i=0;i<csPattern.GetLength();i++)
{
// decide if narrow or wide bar
if (csPattern.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)
SetPixelV(m_hDC, nXPixel,nYPixel,COLORBLACK);
else
SetPixelV(m_hDC, nXPixel,nYPixel,COLORWHITE);
}
}
// advance the starting position
m_nStartingXPixel+= nTempWidth;
}
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 CCode39::RetrievePattern(char c)
{
CString csCharPattern;
switch (c)
{
case '1':
csCharPattern = "wnnwnnnnwn";
break;
case '2':
csCharPattern = "nnwwnnnnwn";
break;
case '3':
csCharPattern = "wnwwnnnnnn";
break;
case '4':
csCharPattern = "nnnwwnnnwn";
break;
case '5':
csCharPattern = "wnnwwnnnnn";
break;
case '6':
csCharPattern = "nnwwwnnnnn";
break;
case '7':
csCharPattern = "nnnwnnwnwn";
break;
case '8':
csCharPattern = "wnnwnnwnnn";
break;
case '9':
csCharPattern = "nnwwnnwnnn";
break;
case '0':
csCharPattern = "nnnwwnwnnn";
break;
case 'A':
csCharPattern = "wnnnnwnnwn";
break;
case 'B':
csCharPattern = "nnwnnwnnwn";
break;
case 'C':
csCharPattern = "wnwnnwnnnn";
break;
case 'D':
csCharPattern = "nnnnwwnnwn";
break;
case 'E':
csCharPattern = "wnnnwwnnnn";
break;
case 'F':
csCharPattern = "nnwnwwnnnn";
break;
case 'G':
csCharPattern = "nnnnnwwnwn";
break;
case 'H':
csCharPattern = "wnnnnwwnnn";
break;
case 'I':
csCharPattern = "nnwnnwwnnn";
break;
case 'J':
csCharPattern = "nnnnwwwnnn";
break;
case 'K':
csCharPattern = "wnnnnnnwwn";
break;
case 'L':
csCharPattern = "nnwnnnnwwn";
break;
case 'M':
csCharPattern = "wnwnnnnwnn";
break;
case 'N':
csCharPattern = "nnnnwnnwwn";
break;
case 'O':
csCharPattern = "wnnnwnnwnn";
break;
case 'P':
csCharPattern = "nnwnwnnwnn";
break;
case 'Q':
csCharPattern = "nnnnnnwwwn";
break;
case 'R':
csCharPattern = "wnnnnnwwnn";
break;
case 'S':
csCharPattern = "nnwnnnwwnn";
break;
case 'T':
csCharPattern = "nnnnwnwwnn";
break;
case 'U':
csCharPattern = "wwnnnnnnwn";
break;
case 'V':
csCharPattern = "nwwnnnnnwn";
break;
case 'W':
csCharPattern = "wwwnnnnnnn";
break;
case 'X':
csCharPattern = "nwnnwnnnwn";
break;
case 'Y':
csCharPattern = "wwnnwnnnnn";
break;
case 'Z':
csCharPattern = "nwwnwnnnnn";
break;
case '-':
csCharPattern = "nwnnnnwnwn";
break;
case '.':
csCharPattern = "wwnnnnwnnn";
break;
case ' ':
csCharPattern = "nwwnnnwnnn";
break;
case '*':
csCharPattern = "nwnnwnwnnn";
break;
case '$':
csCharPattern = "nwnwnwnnnn";
break;
case '/':
csCharPattern = "nwnwnnnwnn";
break;
case '+':
csCharPattern = "nwnnnwnwnn";
break;
case '%':
csCharPattern = "nnnwnwnwnn";
break;
}
return csCharPattern;
}