// Barcode.cpp: implementation of the CBarcode class. // // Copyright 2002 Neil Van Eps // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Barcode.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CBarcode::CBarcode() { } CBarcode::~CBarcode() { } //////////////////////////////////////////////////////////////////////////////////// // // Name: // LoadData() // // Description: // // // Arguments: // // // Return: // // // Called by: // // //////////////////////////////////////////////////////////////////////////////////// void CBarcode::LoadData(CString csMessage, double dNarrowBar, double dFinalHeight, HDC pDC, int nStartingXPixel, int nStartingYPixel, double dRatio ) { int i,nXAxisDpi,nYAxisDpi,nTemp; char c; // values that can be saved without translation m_csMessage = csMessage; m_nStartingXPixel = nStartingXPixel; m_nStartingYPixel = nStartingYPixel; m_hDC = pDC; // calculate X and Y Axis dots per inch if (m_hDC==NULL) { CDC memDC; // create the memory device context - will be compatible with the screen memDC.CreateCompatibleDC(NULL); // get dpi for the two axes nXAxisDpi = memDC.GetDeviceCaps(LOGPIXELSX); nYAxisDpi = memDC.GetDeviceCaps(LOGPIXELSY); } else { CDC tempDC; tempDC.Attach(m_hDC); nXAxisDpi = tempDC.GetDeviceCaps(LOGPIXELSX); nYAxisDpi = tempDC.GetDeviceCaps(LOGPIXELSY); tempDC.Detach(); } // load the final attributes that depend on the device context m_nPixelHeight = (int)((nYAxisDpi*dFinalHeight)+0.5); m_nNarrowBarPixelWidth = (int)((nXAxisDpi*dNarrowBar)+0.5); m_nWideBarPixelWidth = (int)(dRatio*m_nNarrowBarPixelWidth); switch (m_nSymbology) { case RATIONALCODABAR: // initialize to zero m_nFinalBarcodePixelWidth = 0; // add the width of each character for (i=0;i