1 /*****************************************************************************\
2   psp100.cpp : Implimentation for the PSP100 class
3 
4   Copyright (c) 2015, HP 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 HP 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 #if defined(APDK_PSP100) && defined (APDK_DJ9xxVIP)
32 
33 #include "header.h"
34 #include "dj9xxvip.h"
35 #include "psp100.h"
36 #include "printerproxy.h"
37 
38 APDK_BEGIN_NAMESPACE
39 
40 // PhotoSmart 100 - AtomAnt
PSP100(SystemServices * pSS,BOOL proto)41 PSP100::PSP100 (SystemServices* pSS, BOOL proto)
42     : DJ9xxVIP (pSS, proto)
43 {
44 
45     for (unsigned int i = 0; i < ModeCount; i++)
46     {
47         if (pMode[i])
48             delete pMode[i];
49         pMode[i] = NULL;
50     }
51 
52     ePen = COLOR_PEN;
53 
54     if (!proto && IOMode.bDevID)
55     {
56         bCheckForCancelButton = TRUE;
57         constructor_error = VerifyPenInfo ();
58         CERRCHECK;
59     }
60 
61     pMode[GRAYMODE_INDEX]    = new GrayModePSP100 ();
62     pMode[DEFAULTMODE_INDEX] = new PSP100Mode ();
63 	pMode[SPECIALMODE_INDEX] = new PSP100NormalMode ();
64 
65     ModeCount = 3;
66 
67 #ifdef APDK_AUTODUPLEX
68     bDuplexCapable = FALSE;
69 #endif
70 #ifdef APDK_EXTENDED_MEDIASIZE
71     pMode[SPECIALMODE_INDEX+1] = new PSP1002400Mode ();
72     ModeCount = 4;
73 #endif
74 
75 } //PSP100
76 
77 
GrayModePSP100()78 GrayModePSP100::GrayModePSP100 ()
79     : PrintMode(NULL)
80 {
81 #if defined(APDK_VIP_COLORFILTERING)
82     Config.bErnie=TRUE;
83 #endif
84 
85     Config.bColorImage=FALSE;
86 
87 /*
88  *  The resolutions here are set to 300 for better performance from Cameras.
89  *  REVISIT: Must provide a true 600 dpi printmode later.
90  *  12/21/01
91  *
92  *  See not in dj9xxvip.cpp - 1/9/2002 - JLM
93  */
94 
95     BaseResX       =
96     BaseResY       =
97     TextRes        =
98     ResolutionX[0] =
99     ResolutionY[0] = VIP_BASE_RES;
100     medium = mediaGlossy;
101     CompatiblePens[0] = COLOR_PEN;
102     theQuality = qualityPresentation;
103     bFontCapable = FALSE;
104     pmColor = GREY_CMY;
105 } //GrayModePSP100
106 
107 
DefaultPenSet()108 PEN_TYPE PSP100::DefaultPenSet()
109 { return COLOR_PEN; }
110 
111 
PSP100Mode()112 PSP100Mode::PSP100Mode () : PrintMode (NULL)
113 {
114 
115 /*
116  *  See comments above regarding 300/600 dpi change
117  */
118 
119     BaseResX = BaseResY = TextRes = ResolutionX[0] = ResolutionY[0] = VIP_BASE_RES;
120 
121 #if defined(APDK_VIP_COLORFILTERING)
122     Config.bErnie = TRUE;
123 #endif
124 
125     Config.bColorImage = FALSE;
126 
127     medium = mediaGlossy;
128     theQuality = qualityPresentation;
129 	pmQuality   = QUALITY_BEST;
130     pmMediaType = MEDIA_PHOTO;
131     CompatiblePens[0] = COLOR_PEN;
132     bFontCapable = FALSE;
133 } //PSP100Mode
134 
PSP100NormalMode()135 PSP100NormalMode::PSP100NormalMode () : PrintMode (NULL)
136 {
137 
138 /*
139  *  See comments above regarding 300/600 dpi change
140  */
141 
142     BaseResX = BaseResY = TextRes = ResolutionX[0] = ResolutionY[0] = VIP_BASE_RES;
143 
144 #if defined(APDK_VIP_COLORFILTERING)
145     Config.bErnie = TRUE;
146 #endif
147 
148     Config.bColorImage = FALSE;
149 
150     medium = mediaSpecial;
151     theQuality = qualityNormal;
152     CompatiblePens[0] = COLOR_PEN;
153     bFontCapable = FALSE;
154 } //PSP100Mode
155 
156 #ifdef APDK_EXTENDED_MEDIASIZE
PSP1002400Mode()157 PSP1002400Mode::PSP1002400Mode () : PrintMode (NULL)
158 {
159 
160 /*
161  *  See comments above regarding 300/600 dpi change
162  */
163 
164     BaseResX = BaseResY = TextRes = ResolutionX[0] = ResolutionY[0] = 1200;
165 
166 #if defined(APDK_VIP_COLORFILTERING)
167     Config.bErnie = TRUE;
168 #endif
169 
170     Config.bColorImage = FALSE;
171 
172     medium = mediaHighresPhoto;
173     theQuality = qualityPresentation;
174     pmMediaType = MEDIA_PHOTO;
175     pmQuality = QUALITY_HIGHRES_PHOTO;
176     CompatiblePens[0] = COLOR_PEN;
177     bFontCapable = FALSE;
178 } //PSP1002400Mode
179 #endif
180 
MandatoryPaperSize()181 PAPER_SIZE PSP100::MandatoryPaperSize ()
182 {
183     return A6;
184    // return PHOTO_5x7;
185 } //MandantoryPaperSize
186 
187 
UseGUIMode(PrintMode * pPrintMode)188 BOOL PSP100::UseGUIMode
189 (
190     PrintMode* pPrintMode
191 )
192 {
193     return TRUE;
194 } //UseGUIMode
195 
196 
VerifyPenInfo()197 DRIVER_ERROR PSP100::VerifyPenInfo ()
198 {
199     DRIVER_ERROR err = NO_ERROR;
200 
201     if(IOMode.bDevID == FALSE)
202     {
203         return err;
204     }
205     ePen = NO_PEN;
206     char    *str;
207     while (ePen == NO_PEN)
208     {
209         err = SetPenInfo (str, TRUE);
210         ERRCHECK;
211 
212         if (*(str-1) == '1' && *(str-2) == '1')
213         {
214             pSS->DisplayPrinterStatus (DISPLAY_NO_PENS);
215         }
216         else
217         {
218             ePen = COLOR_PEN;
219             break;
220         }
221         if (pSS->BusyWait(500) == JOB_CANCELED)
222         {
223             return JOB_CANCELED;
224         }
225     }
226 
227     return NO_ERROR;
228 } //VerifyPenInfo
229 
230 APDK_END_NAMESPACE
231 
232 #endif //APDK_PSP100
233