137
static void setgetfilenamecallback(struct pqinfo *pq,char *(*func)(void *userdata),void *userdata)
139
fprintf(stderr,"Setting filename callback.\n");
140
pq->priv->getfilecallback=func;
141
pq->priv->userdata=userdata;
124
145
static int getprintercount(struct pqinfo *pq)
150
171
static void setprinterqueue(struct pqinfo *pq,const char *queue)
173
if(pq->priv->currentqueue)
174
free(pq->priv->currentqueue);
154
if(pq->priv->currentqueue)
155
free(pq->priv->currentqueue);
156
176
pq->priv->currentqueue=strdup(queue);
178
pq->priv->currentqueue=NULL;
182
static const char *getprinterqueue(struct pqinfo *pq)
184
return(pq->priv->currentqueue);
174
201
static int initialisejob(struct pqinfo *pq)
176
static DOC_INFO_1 mydi={"Gutenprint output",NULL,NULL};
177
BOOL result=OpenPrinter(pq->priv->currentqueue,&pq->priv->printer,NULL);
179
StartDocPrinter(pq->priv->printer,1,(LPBYTE)&mydi);
203
fprintf(stderr,"In initialisejob() - checking mode\n");
204
if(strcmp(pq->priv->currentqueue,PRINTERQUEUE_SAVETOFILE)==0)
208
pq->priv->mode=PQMODE_FILE;
210
fprintf(stderr,"Getting filename...\n");
212
if(pq->priv->getfilecallback)
213
fn=pq->priv->getfilecallback(pq->priv->userdata);
215
pq->priv->outfile=NULL;
217
pq->priv->outfile=fopen(fn,"wb");
220
if(!pq->priv->outfile)
226
static DOC_INFO_1 mydi={"Gutenprint output",NULL,NULL};
229
fprintf(stderr,"Getting printer...\n");
231
result=OpenPrinter(pq->priv->currentqueue,&pq->priv->printer,NULL);
233
StartDocPrinter(pq->priv->printer,1,(LPBYTE)&mydi);
234
pq->priv->mode=PQMODE_PRINT;
185
240
static void initialisepage(struct pqinfo *pq)
187
if(pq->priv->printer)
188
StartPagePrinter(pq->priv->printer);
242
if(pq->priv->mode==PQMODE_PRINT)
244
if(pq->priv->printer)
245
StartPagePrinter(pq->priv->printer);
192
250
static void endpage(struct pqinfo *pq)
194
if(pq->priv->printer)
195
EndPagePrinter(pq->priv->printer);
252
if(pq->priv->mode==PQMODE_PRINT)
254
if(pq->priv->printer)
255
EndPagePrinter(pq->priv->printer);
199
260
static void endjob(struct pqinfo *pq)
201
if(pq->priv->printer)
203
EndDocPrinter(pq->priv->printer);
204
ClosePrinter(pq->priv->printer);
206
pq->priv->printer=NULL;
262
if(pq->priv->mode==PQMODE_PRINT)
264
if(pq->priv->printer)
266
EndDocPrinter(pq->priv->printer);
267
ClosePrinter(pq->priv->printer);
269
pq->priv->printer=NULL;
273
if(pq->priv->outfile)
274
fclose(pq->priv->outfile);
275
pq->priv->outfile=NULL;
210
280
static int writedata(struct pqinfo *pq,const char *data,int bytecount)
213
WritePrinter(pq->priv->printer,(char *)data,bytecount,&written);
214
return((written!=0));
282
if(pq->priv->mode==PQMODE_PRINT)
285
WritePrinter(pq->priv->printer,(char *)data,bytecount,&written);
286
return((written!=0));
290
long written=fwrite((char *)data,1,bytecount,pq->priv->outfile);
291
return((written!=0));