build: add the SIBO SDK
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
/* DECOMMAN.C */
|
||||
|
||||
#include <demo.g>
|
||||
#include <demo.rsg>
|
||||
#include <printer.g>
|
||||
#include <hwim.h>
|
||||
|
||||
GLREF_D PR_WSERV *w_ws;
|
||||
GLREF_D PR_DECOMMAN *DatApp2;
|
||||
|
||||
#define SAVED_FILE_NAME "LOC::M:\\WDRPRINT.CFG"
|
||||
|
||||
LOCAL_C VOID TryLoadPrintContext(VOID)
|
||||
{
|
||||
P_INFO junk;
|
||||
VOID *fcb;
|
||||
VOID *printer;
|
||||
UBYTE buf[512];
|
||||
INT blen;
|
||||
INT ind;
|
||||
UBYTE *p1,*p2,*p3,*p4;
|
||||
|
||||
if (p_finfo(SAVED_FILE_NAME,&junk))
|
||||
return; /* eg file does not exist */
|
||||
f_open(&fcb,SAVED_FILE_NAME,P_FOPEN|P_FSTREAM|P_FSHARE);
|
||||
blen=f_read(fcb,&buf[0],512);
|
||||
p_close(fcb);
|
||||
if (blen<=sizeof(PRINTER_PARAMS)+2)
|
||||
goto file_corrupt;
|
||||
p1=(&buf[0]);
|
||||
blen-=sizeof(PRINTER_PARAMS);
|
||||
p2=p1+sizeof(PRINTER_PARAMS);
|
||||
ind=p_bloc(p2+1,blen-1,0);
|
||||
if (ind<0)
|
||||
goto file_corrupt;
|
||||
p3=p2+1+ind+1;
|
||||
blen-=1+ind+1;
|
||||
if (blen<=0)
|
||||
goto file_corrupt;
|
||||
ind=p_bloc(p3,blen,0);
|
||||
if (ind<0)
|
||||
goto file_corrupt;
|
||||
p4=p3+ind+1;
|
||||
blen-=ind+1;
|
||||
if (blen<=0)
|
||||
goto file_corrupt;
|
||||
ind=p_bloc(p4,blen,0);
|
||||
if (ind!=blen-1)
|
||||
{
|
||||
file_corrupt:
|
||||
hInfoPrint(DELETING_CORRUPT_FILE);
|
||||
p_delete(SAVED_FILE_NAME);
|
||||
return;
|
||||
}
|
||||
p_send2(w_ws,O_WS_ENS_PRINT_CONTEXT);
|
||||
printer=w_ws->wserv.printer;
|
||||
p_bcpy((VOID *)p_send2(printer,O_PR_GET_PARAMS),p1,sizeof(PRINTER_PARAMS));
|
||||
p_send5(printer,O_PR_SET_MODEL,FALSE,p2+1,*p2);
|
||||
p_send4(printer,O_PR_SET_HD,PRINTER_HDR_TOP,p3);
|
||||
p_send4(printer,O_PR_SET_HD,PRINTER_HDR_BOT,p4);
|
||||
}
|
||||
|
||||
#pragma save,ENTER_CALL
|
||||
|
||||
LOCAL_C INT SavePrintContext(VOID)
|
||||
{
|
||||
VOID *fcb;
|
||||
VOID *printer;
|
||||
TEXT *p;
|
||||
struct
|
||||
{
|
||||
UBYTE model;
|
||||
TEXT name[P_FNAMESIZE+1];
|
||||
} m;
|
||||
|
||||
printer=w_ws->wserv.printer;
|
||||
if (!printer)
|
||||
return(0);
|
||||
f_open(&fcb,SAVED_FILE_NAME,P_FREPLACE|P_FSTREAM|P_FUPDATE);
|
||||
p=(TEXT *)p_send2(printer,O_PR_GET_PARAMS);
|
||||
f_write(fcb,p,sizeof(PRINTER_PARAMS));
|
||||
m.model=p_send3(printer,O_PR_SENSE_MODEL,&m.name[0]);
|
||||
f_write(fcb,&m.model,1+p_slen(&m.name[0])+1);
|
||||
p=(TEXT *)p_send3(printer,O_PR_GET_HD,PRINTER_HDR_TOP);
|
||||
f_write(fcb,p,p_slen(p)+1);
|
||||
p=(TEXT *)p_send3(printer,O_PR_GET_HD,PRINTER_HDR_BOT);
|
||||
f_write(fcb,p,p_slen(p)+1);
|
||||
p_close(fcb);
|
||||
return(0);
|
||||
}
|
||||
|
||||
#pragma restore
|
||||
|
||||
LOCAL_C INT LaunchDialog(INT class,INT resid,VOID *rbuf)
|
||||
{
|
||||
DL_DATA dld;
|
||||
|
||||
dld.id=resid;
|
||||
dld.rbuf=rbuf;
|
||||
dld.pdlg=NULL;
|
||||
return hLaunchDial(CAT_DEMO_DEMO,class,&dld);
|
||||
}
|
||||
|
||||
LOCAL_C VOID PrintOrPreview(INT commid)
|
||||
{
|
||||
commid=(commid==O_DEC_PREVIEW? O_DEC_PRINT_DIRECT: 0);
|
||||
hDestroy(f_newsend(CAT_DEMO_DEMO,C_DELP,O_LPR_INIT,commid));
|
||||
}
|
||||
|
||||
#pragma METHOD_CALL
|
||||
|
||||
METHOD VOID decomman_com_init(PR_DECOMMAN *self)
|
||||
{
|
||||
DatApp2=self;
|
||||
TryLoadPrintContext();
|
||||
}
|
||||
|
||||
METHOD VOID decomman_com_exit(PR_DECOMMAN *self)
|
||||
{
|
||||
if (p_enter1(SavePrintContext))
|
||||
p_delete(SAVED_FILE_NAME);
|
||||
p_exit(0);
|
||||
}
|
||||
|
||||
METHOD VOID decomman_dec_psetup(VOID)
|
||||
{
|
||||
p_send2(w_ws,O_WS_EDIT_PRINT_CONTEXT);
|
||||
}
|
||||
|
||||
METHOD VOID decomman_dec_preview(PR_DECOMMAN *self,INT commid)
|
||||
{
|
||||
if (LaunchDialog(C_DEDLG,DELP_DLG,&commid))
|
||||
PrintOrPreview(commid);
|
||||
}
|
||||
|
||||
METHOD VOID decomman_dec_print_direct(VOID)
|
||||
{
|
||||
PrintOrPreview(O_DEC_PRINT);
|
||||
}
|
||||
Reference in New Issue
Block a user