~ubuntu-branches/debian/experimental/hplip/experimental

« back to all changes in this revision

Viewing changes to prnt/hpijs/ljzjs.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Mark Purcell
  • Date: 2010-12-23 11:04:31 UTC
  • mfrom: (2.1.158 natty)
  • Revision ID: james.westby@ubuntu.com-20101223110431-ev5wz1it6b7jce51
Tags: 3.10.9-1
New Upstream Release 

Show diffs side-by-side

added added

removed removed

Lines of Context:
313
313
        return err;
314
314
    }
315
315
 
 
316
        if(m_bSIDModel)
 
317
        {
 
318
                dwNumItems = 13;
 
319
        }
316
320
    if (m_cmColorMode == COLOR && m_bIamColor)
317
321
    {
318
322
        iPlanes = 4;
337
341
    i += SendItem (szStr+i, ZJIT_UINT32, ZJI_VIDEO_BPP, m_iBPP);
338
342
    i += SendItem (szStr+i, ZJIT_UINT32, ZJI_VIDEO_X, dwWidth/m_iBPP);
339
343
    i += SendItem (szStr+i, ZJIT_UINT32, ZJI_VIDEO_Y, m_dwLastRaster);
340
 
    i += SendItem (szStr+i, ZJIT_UINT32, ZJI_RET, RET_ON);
341
 
    i += SendItem (szStr+i, ZJIT_UINT32, ZJI_TONER_SAVE, (cqm == QUALITY_DRAFT) ? 1 : 0);
 
344
        if(!m_bSIDModel)
 
345
        {
 
346
                i += SendItem (szStr+i, ZJIT_UINT32, ZJI_RET, RET_ON);
 
347
                i += SendItem (szStr+i, ZJIT_UINT32, ZJI_TONER_SAVE, (cqm == QUALITY_DRAFT) ? 1 : 0);
 
348
        }
342
349
 
343
350
    err = Send ((const BYTE *) szStr, i);
344
351
    return err;
494
501
    return err;
495
502
}
496
503
 
 
504
 
 
505
/*JBig Compress for SID
 
506
Separate function written for SID since for SID, compression is done for whole plane data at a time
 
507
whereas Yoda does compression for 100 lines of each plane*/
 
508
DRIVER_ERROR LJZjs::JbigCompress_SID ()
 
509
{
 
510
    DRIVER_ERROR        err = NO_ERROR;
 
511
    HPLJZjcBuff         myBuffer;
 
512
    
 
513
        int                 iPlanes = (m_cmColorMode == COLOR) ? 4 : 1;
 
514
        int                                     arrPlanesOrder[] = {3,2,1,4};
 
515
        int                                     nByteCount = 0;
 
516
        int                                     iHeight = 0;
 
517
        
 
518
    HPLJZjsJbgEncSt   se;
 
519
    BYTE    *pbUnCompressedData = NULL;
 
520
    
 
521
        BYTE    *bitmaps[4] =
 
522
        {
 
523
                m_pszInputRasterData,
 
524
                        m_pszInputRasterData + (m_dwWidth * m_iBPP * m_dwLastRaster),
 
525
                        m_pszInputRasterData + (m_dwWidth * m_iBPP * m_dwLastRaster * 2),
 
526
                        m_pszInputRasterData + (m_dwWidth * m_iBPP * m_dwLastRaster * 3)
 
527
        };
 
528
 
 
529
    myBuffer.pszCompressedData = new BYTE[m_dwWidth * m_dwLastRaster * m_iBPP];
 
530
        if(NULL == myBuffer.pszCompressedData)
 
531
        {
 
532
                return ALLOCMEM_ERROR;
 
533
        }
 
534
    myBuffer.dwTotalSize = 0;           
 
535
        
 
536
        for (int nPlaneCount = 0; nPlaneCount < iPlanes; nPlaneCount++)    
 
537
    {
 
538
                
 
539
                memset (myBuffer.pszCompressedData, 0, m_dwWidth * m_dwLastRaster * m_iBPP);
 
540
                myBuffer.dwTotalSize = 0;
 
541
                
 
542
                if(4 == iPlanes)/*If there are 4 planes follow SID order of 3 2 1 4*/
 
543
                {
 
544
                        pbUnCompressedData = bitmaps[arrPlanesOrder[nPlaneCount]-1] ;
 
545
                }
 
546
                else /* Should not happen */
 
547
                {
 
548
                        return SYSTEM_ERROR;
 
549
                }
 
550
 
 
551
                
 
552
                iHeight = m_dwLastRaster; /*Send all scan lines at one go*/
 
553
                
 
554
                HPLJJBGCompress (m_dwWidth * 8 * m_iBPP, iHeight, &pbUnCompressedData, &myBuffer, &se);
 
555
                
 
556
                if(0 == nPlaneCount)
 
557
                {
 
558
                        StartPage (se.xd, se.yd);
 
559
                }
 
560
                
 
561
                err = this->SendPlaneData (arrPlanesOrder[nPlaneCount], &se, &myBuffer, FALSE);
 
562
        
 
563
    }
 
564
        
 
565
    delete [] myBuffer.pszCompressedData;
 
566
    m_dwCurrentRaster = 0;
 
567
    m_pszCurPtr = m_pszInputRasterData;
 
568
    memset (m_pszCurPtr, 0, (m_dwWidth * m_dwLastRaster * iPlanes * m_iBPP));
 
569
        
 
570
    err = EndPage ();
 
571
        
 
572
    return err;
 
573
}
 
574
 
497
575
DRIVER_ERROR HeaderLJZjs::EndJob ()
498
576
{
499
577
    DRIVER_ERROR    err = NO_ERROR;