[1468] | 1 | #include <stdlib.h>
|
---|
| 2 | #include <stdio.h>
|
---|
| 3 | #include "wv.h"
|
---|
| 4 |
|
---|
| 5 |
|
---|
| 6 | float wvRelativeWidth(S16 width,SEP *asep)
|
---|
| 7 | {
|
---|
| 8 | float fwidth;
|
---|
| 9 | if (asep == NULL)
|
---|
| 10 | return(100.00);
|
---|
| 11 | fwidth = (float)(asep->xaPage - asep->dxaLeft - asep->dxaRight);
|
---|
| 12 | fwidth = width/fwidth*100;
|
---|
| 13 | if (fwidth > 100.00)
|
---|
| 14 | fwidth = 100.00;
|
---|
| 15 | return(fwidth);
|
---|
| 16 | }
|
---|
| 17 |
|
---|
| 18 | float wvRelativeHeight(S16 height,SEP *asep)
|
---|
| 19 | {
|
---|
| 20 | float fheight;
|
---|
| 21 | if (asep == NULL)
|
---|
| 22 | return(100.00);
|
---|
| 23 | fheight = (float)(asep->yaPage - asep->dyaTop - asep->dyaBottom);
|
---|
| 24 | fheight = height/fheight*100;
|
---|
| 25 | if (fheight > 100.00)
|
---|
| 26 | fheight = 100.00;
|
---|
| 27 | return(fheight);
|
---|
| 28 | }
|
---|
| 29 |
|
---|
| 30 | /*
|
---|
| 31 | The standard SEP is all zeros except as follows:
|
---|
| 32 | bkc 2 (new page)
|
---|
| 33 | dyaPgn 720 twips (equivalent to .5 in)
|
---|
| 34 | dxaPgn 720 twips
|
---|
| 35 | fEndnote 1 (True)
|
---|
| 36 | fEvenlySpaced 1 (True)
|
---|
| 37 | xaPage 12240 twips
|
---|
| 38 | yaPage 15840 twips
|
---|
| 39 | xaPageNUp 12240 twips
|
---|
| 40 | yaPageNUp 15840 twips
|
---|
| 41 | dyaHdrTop 720 twips
|
---|
| 42 | dyaHdrBottom 720 twips
|
---|
| 43 | dmOrientPage 1 (portrait orientation)
|
---|
| 44 | dxaColumns 720 twips
|
---|
| 45 | dyaTop 1440 twips
|
---|
| 46 | dxaLeft 1800 twips
|
---|
| 47 | dyaBottom 1440 twips
|
---|
| 48 | dxaRight 1800 twips
|
---|
| 49 | pgnStart 1
|
---|
| 50 | cbSEP (count of bytes of SEP) is 704(decimal), 2C0(hex).
|
---|
| 51 | */
|
---|
| 52 |
|
---|
| 53 | void wvInitSEP(SEP *item)
|
---|
| 54 | {
|
---|
| 55 | U8 i;
|
---|
| 56 | item->bkc=2;
|
---|
| 57 | item->fTitlePage=0;
|
---|
| 58 | item->fAutoPgn=0;
|
---|
| 59 | item->nfcPgn=0;
|
---|
| 60 | item->fUnlocked=0;
|
---|
| 61 | item->cnsPgn=0;
|
---|
| 62 | item->fPgnRestart=0;
|
---|
| 63 | item->fEndNote=1;
|
---|
| 64 | item->lnc=0;
|
---|
| 65 | item->grpfIhdt=0;
|
---|
| 66 | item->nLnnMod=0;
|
---|
| 67 | item->dxaLnn=0;
|
---|
| 68 | item->dxaPgn=720;
|
---|
| 69 | item->dyaPgn=720;
|
---|
| 70 | item->fLBetween=0;
|
---|
| 71 | item->vjc=0;
|
---|
| 72 | item->dmBinFirst=0;
|
---|
| 73 | item->dmBinOther=0;
|
---|
| 74 | item->dmPaperReq=0;
|
---|
| 75 |
|
---|
| 76 | wvInitBRC(&item->brcTop);
|
---|
| 77 | wvInitBRC(&item->brcLeft);
|
---|
| 78 | wvInitBRC(&item->brcBottom);
|
---|
| 79 | wvInitBRC(&item->brcRight);
|
---|
| 80 |
|
---|
| 81 | item->fPropRMark=0;
|
---|
| 82 | item->ibstPropRMark=0;
|
---|
| 83 |
|
---|
| 84 | wvInitDTTM(&item->dttmPropRMark);
|
---|
| 85 |
|
---|
| 86 | item->dxtCharSpace=0;
|
---|
| 87 | item->dyaLinePitch=0;
|
---|
| 88 | item->clm=0;
|
---|
| 89 | item->reserved1=0;
|
---|
| 90 | item->dmOrientPage=0;
|
---|
| 91 | item->iHeadingPgn=0;
|
---|
| 92 | item->pgnStart=1;
|
---|
| 93 | item->lnnMin=0;
|
---|
| 94 | item->wTextFlow=0;
|
---|
| 95 | item->reserved2=0;
|
---|
| 96 | item->pgbProp=0;
|
---|
| 97 | item->pgbApplyTo=0;
|
---|
| 98 | item->pgbPageDepth=0;
|
---|
| 99 | item->pgbOffsetFrom=0;
|
---|
| 100 | item->reserved=0;
|
---|
| 101 | item->xaPage=12240;
|
---|
| 102 | item->yaPage=15840;
|
---|
| 103 | item->xaPageNUp=12240;
|
---|
| 104 | item->yaPageNUp=15840;
|
---|
| 105 | item->dxaLeft=1800;
|
---|
| 106 | item->dxaRight=1800;
|
---|
| 107 | item->dyaTop=1440;
|
---|
| 108 | item->dyaBottom=1440;
|
---|
| 109 | item->dzaGutter=0;
|
---|
| 110 | item->dyaHdrTop=720;
|
---|
| 111 | item->dyaHdrBottom=720;
|
---|
| 112 | item->ccolM1=0;
|
---|
| 113 | item->fEvenlySpaced=1;
|
---|
| 114 | item->reserved3=0;
|
---|
| 115 | item->dxaColumns=720;
|
---|
| 116 | for (i=0;i<89;i++)
|
---|
| 117 | item->rgdxaColumnWidthSpacing[i]=0;
|
---|
| 118 | item->dxaColumnWidth=0;
|
---|
| 119 | item->dmOrientFirst=0;
|
---|
| 120 | item->fLayout=0;
|
---|
| 121 | item->reserved4=0;
|
---|
| 122 | wvInitOLST(&item->olstAnm);
|
---|
| 123 | }
|
---|
| 124 |
|
---|
| 125 | void wvGetSEPX(version ver,SEPX *item,FILE *fd)
|
---|
| 126 | {
|
---|
| 127 | U16 i;
|
---|
| 128 | item->cb = read_16ubit(fd);
|
---|
| 129 |
|
---|
| 130 | if (item->cb)
|
---|
| 131 | item->grpprl = (U8 *)malloc(item->cb);
|
---|
| 132 | else
|
---|
| 133 | item->grpprl = NULL;
|
---|
| 134 |
|
---|
| 135 | for (i=0;i<item->cb;i++)
|
---|
| 136 | {
|
---|
| 137 | item->grpprl[i] = getc(fd);
|
---|
| 138 | wvTrace(("sep is %x\n",item->grpprl[i]));
|
---|
| 139 | }
|
---|
| 140 | }
|
---|
| 141 |
|
---|
| 142 | void wvReleaseSEPX(SEPX *item)
|
---|
| 143 | {
|
---|
| 144 | wvFree(item->grpprl);
|
---|
| 145 | }
|
---|
| 146 |
|
---|
| 147 |
|
---|
| 148 | int wvAddSEPXFromBucket(SEP *asep,SEPX *item,STSH *stsh)
|
---|
| 149 | {
|
---|
| 150 | U8 *pointer;
|
---|
| 151 | U16 i=0;
|
---|
| 152 | U16 sprm;
|
---|
| 153 | int ret=0;
|
---|
| 154 | Sprm RetSprm;
|
---|
| 155 | #ifdef SPRMTEST
|
---|
| 156 | fprintf(stderr,"\n");
|
---|
| 157 | while (i < item->cb)
|
---|
| 158 | {
|
---|
| 159 | fprintf(stderr,"%x (%d) ",*(item->grpprl+i),*(item->grpprl+i));
|
---|
| 160 | i++;
|
---|
| 161 | }
|
---|
| 162 | fprintf(stderr,"\n");
|
---|
| 163 | i=0;
|
---|
| 164 | #endif
|
---|
| 165 | while (i < item->cb-2)
|
---|
| 166 | {
|
---|
| 167 | sprm = bread_16ubit(item->grpprl+i,&i);
|
---|
| 168 | pointer = item->grpprl+i;
|
---|
| 169 | RetSprm = wvApplySprmFromBucket(WORD8,sprm,NULL,NULL,asep,stsh,pointer,&i,NULL);
|
---|
| 170 | if (RetSprm.sgc == sgcSep) ret = 1;
|
---|
| 171 | }
|
---|
| 172 | return(ret);
|
---|
| 173 | }
|
---|
| 174 |
|
---|
| 175 | int wvAddSEPXFromBucket6(SEP *asep,SEPX *item,STSH *stsh)
|
---|
| 176 | {
|
---|
| 177 | U8 *pointer;
|
---|
| 178 | U16 i=0;
|
---|
| 179 | int ret=0;
|
---|
| 180 | U8 sprm8;
|
---|
| 181 | U16 sprm;
|
---|
| 182 | Sprm RetSprm;
|
---|
| 183 | #ifdef SPRMTEST
|
---|
| 184 | fprintf(stderr,"\n");
|
---|
| 185 | while (i < item->cb)
|
---|
| 186 | {
|
---|
| 187 | fprintf(stderr,"%x (%d) ",*(item->grpprl+i),*(item->grpprl+i));
|
---|
| 188 | i++;
|
---|
| 189 | }
|
---|
| 190 | fprintf(stderr,"\n");
|
---|
| 191 | i=0;
|
---|
| 192 | #endif
|
---|
| 193 | while (i < item->cb)
|
---|
| 194 | {
|
---|
| 195 | sprm8 = bgetc(item->grpprl+i,&i);
|
---|
| 196 | #ifdef SPRMTEST
|
---|
| 197 | wvError(("sep word 6 sprm is %x (%d)\n",sprm8,sprm8));
|
---|
| 198 | #endif
|
---|
| 199 | sprm = (U16)wvGetrgsprmWord6(sprm8);
|
---|
| 200 | #ifdef SPRMTEST
|
---|
| 201 | wvTrace(("sep word 6 sprm is converted to %x\n",sprm));
|
---|
| 202 | #endif
|
---|
| 203 | pointer = item->grpprl+i;
|
---|
| 204 | RetSprm = wvApplySprmFromBucket(WORD6,sprm,NULL,NULL,asep,stsh,pointer,&i,NULL);
|
---|
| 205 | if (RetSprm.sgc == sgcSep) ret = 1;
|
---|
| 206 | }
|
---|
| 207 | return(ret);
|
---|
| 208 | }
|
---|