📄 dj3320.cpp
字号:
/*****************************************************************************\ dj3320.cpp : Implimentation for the DJ3320 class Copyright (c) 2001 - 2002, Hewlett-Packard Co. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Hewlett-Packard nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PATENT INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\***************************************************************************/#ifdef APDK_DJ3320#include "header.h"#include "io_defs.h"#include "dj3320.h"#include "resources.h"#include "printerproxy.h"APDK_BEGIN_NAMESPACEextern BYTE* GetHT3x3_4();extern BYTE* GetHT6x6_4_970();APDK_END_NAMESPACEAPDK_BEGIN_NAMESPACEextern uint32_t ulMapCROSSBOW_K_3x3x1[9 * 9 * 9];extern uint32_t ulMapCROSSBOW_K_6x6x1[9 * 9 * 9];extern uint32_t ulMapCROSSBOW_CMY_3x3x1[9 * 9 * 9];extern uint32_t ulMapCROSSBOW_CMY_6x6x1[9 * 9 * 9];extern uint32_t ulMapCROSSBOW_KCMY_3x3x1[9 * 9 * 9];extern uint32_t ulMapCROSSBOW_KCMY_6x6x1[9 * 9 * 9];extern uint32_t ulMapBROADWAY_Gossimer_Normal_KCMY[ 9 * 9 * 9 ];extern uint32_t ulMapSpear_KCMY_6x6x1[9 * 9 * 9];extern uint32_t ulMapSpear_ClMlxx_6x6x1[9 * 9 * 9];extern uint32_t ulMapSpear_KCMY_6x6x2[9 * 9 * 9];extern uint32_t ulMapSpear_ClMlxx_6x6x2[9 * 9 * 9];extern uint32_t ulMapSpear_KCMY_3x3x1[9 * 9 * 9];extern uint32_t ulMapSpear_ClMlxx_3x3x1[9 * 9 * 9];extern void AsciiHexToBinary(BYTE* dest, char* src, int count);#define NULL 0//#define DBG1(str)//#define DBG2(str, i) {}//#define DBG3(str, i, j) {}DJ3320::DJ3320 (SystemServices* pSS, BOOL proto): Printer(pSS,NUM_DJ6XX_FONTS,proto), m_dsCurrentStatus(DISPLAY_PRINTING){ pLDLEncap = NULL; if (IOMode.bDevID) { bCheckForCancelButton = TRUE; constructor_error = VerifyPenInfo (); CERRCHECK; pSS->GetVertAlignFromDevice(); } else ePen = BOTH_PENS; // matches default mode CMYMap = ulMapCROSSBOW_CMY_3x3x1; InitPrintModes (); if (pSendBuffer) { pSS->FreeMem (pSendBuffer); } pSendBuffer = pSS->AllocMem (iBuffSize); CNEWCHECK (pSendBuffer);}void DJ3320::InitPrintModes (){ if (ePen == BLACK_PEN || ePen == MDL_PEN) { pMode[GRAYMODE_INDEX] = new CrossBowKDraftMode (); pMode[DEFAULTMODE_INDEX] = new CrossBowGrayMode (ePen); ModeCount = 2; } else if (ePen == BOTH_PENS) { pMode[GRAYMODE_INDEX] = new CrossBowGrayMode (ePen); pMode[DEFAULTMODE_INDEX] = new CrossBowNormalMode (ePen); pMode[SPECIALMODE_INDEX] = new CrossBowPhotoMode (); pMode[SPECIALMODE_INDEX+1] = new CrossBowKDraftMode (); pMode[SPECIALMODE_INDEX+2] = new CrossBowDraftMode (ePen); ModeCount = 5; } else if (ePen == MDL_BOTH) { pMode[GRAYMODE_INDEX] = new CrossBowGrayMode (ePen); pMode[DEFAULTMODE_INDEX] = new SpearMDLNormalMode (); pMode[SPECIALMODE_INDEX] = new CrossBowKDraftMode (); pMode[SPECIALMODE_INDEX+1] = new SpearMDLDraftMode (); pMode[SPECIALMODE_INDEX+2] = new SpearMDLPhotoMode (); ModeCount = 5; } else { pMode[DEFAULTMODE_INDEX] = new CrossBowNormalMode (ePen); pMode[SPECIALMODE_INDEX] = new CrossBowPhotoMode (); pMode[GRAYMODE_INDEX] = new CrossBowDraftMode (ePen); ModeCount = 3; }}DRIVER_ERROR DJ3320::SetPens (PEN_TYPE eNewPen){ if (eNewPen == ePen) { return NO_ERROR; } ASSERT (eNewPen <= MAX_PEN_TYPE); if (eNewPen > MAX_PEN_TYPE) { return UNSUPPORTED_PEN; } for (int i = 0; i < (int) ModeCount; i++) { if (pMode[i]) { delete pMode[i]; pMode[i] = NULL; } } ePen = eNewPen; InitPrintModes (); return NO_ERROR;} //SetPensDJ3320::~DJ3320 (){ if (ePen == COLOR_PEN && pMode[GRAYMODE_INDEX]) { delete pMode[GRAYMODE_INDEX]; pMode[GRAYMODE_INDEX] = NULL; } if (pLDLEncap) delete pLDLEncap; if (pSendBuffer) pSS->FreeMem ((BYTE *) pSendBuffer); pSendBuffer = NULL;}CrossBowGrayMode::CrossBowGrayMode (PEN_TYPE ePen) : PrintMode (ulMapCROSSBOW_K_6x6x1){ if (ePen == MDL_BOTH) { cmap.ulMap2 = ulMapSpear_ClMlxx_6x6x1; } ColorDepth[K] = 1; dyeCount = 1; pmColor = GREY_K; CompatiblePens[1] = BLACK_PEN; CompatiblePens[2] = MDL_BOTH; CompatiblePens[3] = MDL_PEN; ResolutionX[0] = 600; ResolutionY[0] = 600; BaseResX = 600; BaseResY = 600; MixedRes = FALSE; bFontCapable = FALSE; Config.bCompress = FALSE;}CrossBowKDraftMode::CrossBowKDraftMode () : GrayMode (ulMapCROSSBOW_K_3x3x1){ bFontCapable = FALSE; Config.bCompress = FALSE; theQuality = qualityDraft; pmQuality = QUALITY_DRAFT; CompatiblePens[2] = MDL_BOTH; CompatiblePens[3] = MDL_PEN;}CrossBowDraftMode::CrossBowDraftMode (PEN_TYPE ePen): PrintMode (ulMapCROSSBOW_KCMY_3x3x1){ if (ePen == COLOR_PEN) { CompatiblePens[1] = ePen; cmap.ulMap1 = ulMapCROSSBOW_CMY_3x3x1; dyeCount = 3; } for (int i = 0; i < 4; i++) { ColorDepth[i] = 1; ResolutionX[i] = 300; ResolutionY[i] = 300; } MixedRes = FALSE; BaseResX = 300; BaseResY = 300; bFontCapable = FALSE; pmQuality = QUALITY_DRAFT; Config.bCompress = FALSE;// strcpy(ModeName, "Draft");}CrossBowNormalMode::CrossBowNormalMode (PEN_TYPE ePen): PrintMode (ulMapCROSSBOW_KCMY_6x6x1){ if (ePen == COLOR_PEN) { CompatiblePens[1] = ePen; cmap.ulMap1 = ulMapCROSSBOW_CMY_6x6x1; dyeCount = 3; } for (int i = 0; i < 4; i++) { ColorDepth[i] = 1; ResolutionX[i] = 600; ResolutionY[i] = 600; } BaseResX = 600; BaseResY = 600; MixedRes = FALSE; bFontCapable = FALSE; Config.bCompress = FALSE;// strcpy(ModeName, "Normal");}CrossBowPhotoMode::CrossBowPhotoMode (): PrintMode (ulMapBROADWAY_Gossimer_Normal_KCMY){ for (int i = 0; i < 4; i++) { ColorDepth[i] = 2; ResolutionX[i] = 600; ResolutionY[i] = 600; } ColorDepth[0] = 1; CompatiblePens[1] = COLOR_PEN; BaseResX = 600; BaseResY = 600; MixedRes = FALSE; ColorFEDTable = GetHT6x6_4_970 (); bFontCapable = FALSE; pmQuality = QUALITY_BEST; pmMediaType = MEDIA_PHOTO; medium = mediaGlossy; theQuality = qualityPresentation; Config.bCompress = FALSE;}//// Plain Normal Print Mode for Photo and Color Pen//SpearMDLNormalMode::SpearMDLNormalMode(): PrintMode( ulMapSpear_KCMY_6x6x1, ulMapSpear_ClMlxx_6x6x1 ){ dyeCount=6; CompatiblePens[0] = MDL_BOTH; for (int i = 0; i < 6; i++) { ColorDepth[i] = 1; ResolutionX[i] = 600; ResolutionY[i] = 600; } BaseResX = 600; BaseResY = 600; MixedRes = FALSE; bFontCapable = FALSE; Config.bCompress = FALSE;}//// Photo Best Print Mode for Photo and Color Pen//SpearMDLPhotoMode::SpearMDLPhotoMode(): PrintMode( ulMapSpear_KCMY_6x6x2, ulMapSpear_ClMlxx_6x6x2 ){ dyeCount=6; CompatiblePens[0] = MDL_BOTH; for (int i = 0; i < 6; i++) { ColorDepth[i] = 2; ResolutionX[i] = 600; ResolutionY[i] = 600; } BaseResX = 600; BaseResY = 600; MixedRes = FALSE; ColorFEDTable = (BYTE*) HT600x6004level3600_open; bFontCapable = FALSE; pmQuality = QUALITY_BEST; pmMediaType = MEDIA_PHOTO; medium = mediaGlossy; theQuality = qualityPresentation; Config.bCompress = FALSE;}//// Draft Mode for Photo and Color Pen//SpearMDLDraftMode::SpearMDLDraftMode(): PrintMode( ulMapSpear_KCMY_3x3x1, ulMapSpear_ClMlxx_3x3x1 ){ dyeCount=6; CompatiblePens[0] = MDL_BOTH; for (int i = 0; i < 6; i++) { ColorDepth[i] = 1; ResolutionX[i] = 300; ResolutionY[i] = 300; } BaseResX = 300; BaseResY = 300; MixedRes = FALSE; bFontCapable = FALSE; pmQuality = QUALITY_DRAFT; Config.bCompress = FALSE;}DRIVER_ERROR DJ3320::Encapsulate (const RASTERDATA *pRasterData, BOOL bLastPlane){ return pLDLEncap->Encapsulate (pRasterData->rasterdata[COLORTYPE_COLOR], pRasterData->rastersize[COLORTYPE_COLOR], bLastPlane);}Header* DJ3320::SelectHeader(PrintContext* pc){ pLDLEncap = new LDLEncap (this, pSS, pc); if (pLDLEncap) pLDLEncap->AllocateSwathBuffer ((pc->OutputPixelsPerRow ()) / 8 + 2); if (pLDLEncap->constructor_error != NO_ERROR) return NULL; return new Header3320 (this,pc);}/* * Author: Don Castrapel */DISPLAY_STATUS DJ3320::ParseError (BYTE byStatusReg){ DRIVER_ERROR err = NO_ERROR; BYTE byDevIDBuffer[DevIDBuffSize]; char *pcStr = NULL; BYTE byStatus1, byStatus2; memset(byDevIDBuffer, 0, sizeof(byDevIDBuffer)); byStatus1 = byStatus2 = 0; if (IOMode.bDevID) { // If a bi-di cable was plugged in and everything was OK, let's see if it's still // plugged in and everything is OK err = pSS->GetDeviceID (byDevIDBuffer, DevIDBuffSize, TRUE); if (err) { // job was bi-di but now something's messed up, probably cable unplugged m_dsCurrentStatus = DISPLAY_COMM_PROBLEM; return DISPLAY_COMM_PROBLEM; } } if (IOMode.bStatus) { if(pLDLEncap->bNewStatus) { pLDLEncap->bNewStatus = FALSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -