diff options
Diffstat (limited to 'prnt/hpcups/HPCupsFilter.cpp')
-rw-r--r-- | prnt/hpcups/HPCupsFilter.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/prnt/hpcups/HPCupsFilter.cpp b/prnt/hpcups/HPCupsFilter.cpp index 6ade2e9a9..d155aca4a 100644 --- a/prnt/hpcups/HPCupsFilter.cpp +++ b/prnt/hpcups/HPCupsFilter.cpp @@ -295,8 +295,6 @@ DRIVER_ERROR HPCupsFilter::startPage (cups_page_header2_t *cups_header) m_JA.color_mode = cups_header->cupsRowStep; m_JA.media_source = cups_header->MediaPosition; - m_JA.color_mode = cups_header->cupsRowStep; - m_JA.media_source = cups_header->MediaPosition; m_JA.print_borderless = (cups_header->ImagingBoundingBox[0] == 0) ? true : false; if (cups_header->Duplex) { m_JA.e_duplex_mode = (cups_header->Tumble == 0) ? DUPLEXMODE_BOOK : DUPLEXMODE_TABLET; @@ -428,6 +426,7 @@ DRIVER_ERROR HPCupsFilter::startPage (cups_page_header2_t *cups_header) } m_pPrinterBuffer = new BYTE[cups_header->cupsWidth * 4 + 32]; + return NO_ERROR; } @@ -561,6 +560,7 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) DRIVER_ERROR err; int ret_status = 0; + while (cupsRasterReadHeader2(cups_raster, &cups_header)) { current_page_number++; @@ -589,6 +589,7 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) rgbRaster = NULL; } else if (cups_header.cupsColorSpace != CUPS_CSPACE_RGBW) { + dbglog("5......\n"); rgbRaster = m_pPrinterBuffer; kRaster = NULL; } @@ -604,7 +605,7 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) ret_status = JOB_CANCELED; break; } - + if (m_iLogLevel & SAVE_INPUT_RASTERS) { char szFileName[32]; @@ -623,8 +624,10 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) kfp = fopen (szFileName, "w"); chmod (szFileName, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); } + dbglog("9......\n"); WriteBMPHeader (cfp, cups_header.cupsWidth, cups_header.cupsHeight, COLOR_RASTER); WriteBMPHeader (kfp, cups_header.cupsWidth, cups_header.cupsHeight, BLACK_RASTER); + dbglog("10......\n"); } fprintf(stderr, "PAGE: %d %s", current_page_number, m_argv[4]); @@ -635,6 +638,7 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster) black_raster = kRaster; if (this->isBlankRaster((BYTE *) m_pPrinterBuffer, (int) cups_header.cupsBytesPerLine)) { + color_raster = NULL; black_raster = NULL; } @@ -695,10 +699,18 @@ static BYTE pixel_value[8] = { if (b != 0 && b != 0xFF) { #ifdef __linux - rgb[0] -= (255 - b); - rgb[1] -= (255 - b); - rgb[2] -= (255 - b); - + // rgb[0] -= (255 - b); + // rgb[1] -= (255 - b); + // rgb[2] -= (255 - b); + int cr,cg,cb; + cr = rgb[0] - (int)(255 - b); + rgb[0] = cr >= 0 ? cr : 0; + + cg = rgb[1] - (int)(255 - b); + rgb[1] = cg >= 0 ? cg : 0; + + cb = rgb[2] - (int)(255 - b); + rgb[2] = cb >= 0 ? cb : 0; #else // This alternate path is for Mac.... rgb[0] &= b; @@ -708,6 +720,8 @@ static BYTE pixel_value[8] = { } else kVal |= (b == 0) ? pixel_value[k] : 0; + // else if (rgb[0] == rgb[1] && rgb[1] ==rgb[2]) + // kVal |= (rgb[0] == 0) ? pixel_value[k] : 0; rgb += 3; if (k == 7) { *black++ = kVal; |