~ubuntu-branches/ubuntu/raring/hplip/raring

« back to all changes in this revision

Viewing changes to prnt/hpcups/HPCupsFilter.h

  • Committer: Bazaar Package Importer
  • Author(s): Mark Purcell
  • Date: 2009-12-14 20:08:44 UTC
  • mfrom: (2.1.118 lucid)
  • Revision ID: james.westby@ubuntu.com-20091214200844-z8qhqwgppbu3t7ze
Tags: 3.9.10-4
KBSD patch from KiBi (Closes: #560796)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************************\
 
2
  HPCupsFilter.h : Interface for HPCupsFilter class
 
3
 
 
4
  Copyright (c) 1996 - 2009, Hewlett-Packard Co.
 
5
  All rights reserved.
 
6
 
 
7
  Redistribution and use in source and binary forms, with or without
 
8
  modification, are permitted provided that the following conditions
 
9
  are met:
 
10
  1. Redistributions of source code must retain the above copyright
 
11
     notice, this list of conditions and the following disclaimer.
 
12
  2. Redistributions in binary form must reproduce the above copyright
 
13
     notice, this list of conditions and the following disclaimer in the
 
14
     documentation and/or other materials provided with the distribution.
 
15
  3. Neither the name of Hewlett-Packard nor the names of its
 
16
     contributors may be used to endorse or promote products derived
 
17
     from this software without specific prior written permission.
 
18
 
 
19
  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
 
20
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 
21
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
 
22
  NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
23
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 
24
  TO, PATENT INFRINGEMENT; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 
25
  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 
26
  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
27
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
28
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
29
\*****************************************************************************/
 
30
 
 
31
#ifndef HP_CUPSFILTER_H
 
32
#define HP_CUPSFILTER_H
 
33
 
 
34
#include "CommonDefinitions.h"
 
35
#include "SystemServices.h"
 
36
#include "Compressor.h"
 
37
#include "Job.h"
 
38
 
 
39
#define         DBITMAPFILEHEADER               14
 
40
#define         DBITMAPINFOHEADER               40
 
41
 
 
42
enum eRasterType
 
43
{
 
44
    BLACK_RASTER,
 
45
    COLOR_RASTER
 
46
};
 
47
 
 
48
typedef struct
 
49
{
 
50
    short    bfType;
 
51
    int      bfSize;
 
52
    short    bfReserved1;
 
53
    short    bfReserved2;
 
54
    int      bfOffBits;
 
55
} BITMAPFILEHEADER;
 
56
 
 
57
typedef struct
 
58
{
 
59
    int     biSize;
 
60
    int     biWidth;
 
61
    int     biHeight;
 
62
    short   biPlanes;
 
63
    short   biBitCount;
 
64
    int     biCompression;
 
65
    int     biSizeImage;
 
66
    int     biXPelsPerMeter;
 
67
    int     biYPelsPerMeter;
 
68
    int     biClrUsed;
 
69
    int     biClrImportant;
 
70
} BITMAPINFOHEADER;
 
71
 
 
72
class HPCupsFilter
 
73
{
 
74
public:
 
75
 
 
76
    HPCupsFilter();
 
77
    ~HPCupsFilter();    
 
78
    int     StartPrintJob(int  argc, char *argv[]);
 
79
    void    CancelJob();
 
80
    void    RemoveStatus();
 
81
 
 
82
    void WriteBMPHeader (FILE *fp, int width, int height, eRasterType raster_type);
 
83
    void WriteBMPRaster (FILE *fp, BYTE *raster, int width, eRasterType raster_type);
 
84
 
 
85
private:
 
86
 
 
87
    BYTE            *m_pPrinterBuffer;        
 
88
    Job            m_Job;
 
89
    SystemServices         *m_pSys;
 
90
    int             child_pid;
 
91
    char            **m_argv;
 
92
    JobAttributes   m_JA;
 
93
    ppd_file_t      *m_ppd;
 
94
 
 
95
private:
 
96
 
 
97
    void            closeFilter();
 
98
    void            cleanup();
 
99
    void            getLogLevel();
 
100
    DRIVER_ERROR    startPage (cups_page_header2_t *header);
 
101
    int             processRasterData(cups_raster_t *cups_raster);
 
102
    void            extractBlackPixels(cups_page_header2_t *cups_header,
 
103
                                       BYTE *kRaster, BYTE *rgbRaster);
 
104
    void            printCupsHeaderInfo(cups_page_header2_t *header);
 
105
    bool            isBlankRaster(BYTE *input_raster, int length_in_bytes);
 
106
        int             m_iLogLevel;
 
107
 
 
108
    void CreateBMPHeader(int width, int height, int planes, int bpp);
 
109
    void WriteCBMPHeader (FILE *fp, int width, int height);
 
110
    void WriteKBMPHeader (FILE *fp, int width, int height);
 
111
    void WriteCBMPRaster (FILE *fp, BYTE *rgb_raster, int width);
 
112
    void WriteKBMPRaster (FILE *fp, BYTE *k_raster, int width);
 
113
    int    adj_c_width;
 
114
    int    adj_k_width;
 
115
    BYTE   *black_raster;
 
116
    BYTE   *color_raster;
 
117
    BITMAPFILEHEADER    bmfh;
 
118
    BITMAPINFOHEADER    bmih;
 
119
};
 
120
 
 
121
#endif  // HP_CUPSFILTER_H
 
122