| From: Pranav Batra <batrapranav@chromium.org> |
| |
| In unpackBits() round width down instead of up and |
| separately handle the remaining bits (b/217983652). |
| |
| --- a/prnt/hpcups/Job.cpp |
| +++ b/prnt/hpcups/Job.cpp |
| @@ -148,7 +148,7 @@ void Job::unpackBits(BYTE *BlackImageData) |
| { |
| // Convert K from 1-bit raster to 8-bit raster. |
| unsigned char bitflag[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; |
| - int width = (m_job_attributes.media_attributes.printable_width + 7) / 8; |
| + int width = m_job_attributes.media_attributes.printable_width / 8; |
| for (int i = 0; i < width; i++) |
| { |
| for (int j = 0; j < 8; j++) |
| @@ -157,6 +157,12 @@ void Job::unpackBits(BYTE *BlackImageData) |
| m_pBlackRaster[i*8+j] = 1; |
| } |
| } |
| + int bits = m_job_attributes.media_attributes.printable_width % 8; |
| + for (int j = 0; j < bits; j++) |
| + { |
| + if (BlackImageData[width] & bitflag[j]) |
| + m_pBlackRaster[width*8+j] = 1; |
| + } |
| } |
| |
| DRIVER_ERROR Job::SendRasters(BYTE* BlackImageData, BYTE* ColorImageData) |