1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
#include <string.h>
#include <stdio.h>
#include "wv.h"
DOP dop;
void wvGetCOPTS(COPTS *item,FILE *fd)
{
U16 temp16;
temp16 = read_16ubit(fd);
item->fNoTabForInd1 = temp16 & 0x0001;
item->fNoSpaceRaiseLower = (temp16 & 0x0002) >> 1;
item->fSuppressSpbfAfterPageBreak = (temp16 & 0x0004) >> 2;
item->fWrapTrailSpaces = (temp16 & 0x0008) >> 3;
item->fMapPrintTextColor = (temp16 & 0x0010) >> 4;
item->fNoColumnBalance = (temp16 & 0x0020) >> 5;
item->fConvMailMergeEsc = (temp16 & 0x0040) >> 6;
item->fSupressTopSpacing = (temp16 & 0x0080) >> 7;
item->fOrigWordTableRules = (temp16 & 0x0100) >> 8;
item->fTransparentMetafiles = (temp16 & 0x0200) >> 9;
item->fShowBreaksInFrames = (temp16 & 0x0400) >> 10;
item->fSwapBordersFacingPgs = (temp16 & 0x800) >> 11;
item->reserved = (temp16 & 0xf000) >> 12;
}
void wvGetDOP(DOP *dop,U32 fcDop,U32 lcbDop,FILE *fd)
{
U16 temp16;
U32 temp32;
int i;
if (lcbDop <= 0)
return;
fseek(fd,fcDop,SEEK_SET);
temp16 = read_16ubit(fd);
dop->fFacingPages = temp16&0x0001;
dop->fWidowControl = (temp16&0x0002)>>1;
dop->fPMHMainDoc = (temp16&0x0004)>>2;
dop->grfSuppression = (temp16&0x18)>>3;
dop->fpc = (temp16&0x0060)>>5;
error(stderr,"fpc is %d\n",dop->fpc);
dop->reserved1 = (temp16&0x0080)>>7;
dop->grpfIhdt = (temp16&0xFF00)>>8;
temp16 = read_16ubit(fd);
dop->rncFtn = temp16&0x0003;
dop->nFtn = (temp16&0xFFFC)>>2;
temp16 = read_16ubit(fd);
dop->fOutlineDirtySave = temp16&0x0001;
dop->reserved2 = (temp16&0x00FE)>>1;
dop->fOnlyMacPics = (temp16&0x0100)>>8;
dop->fOnlyWinPics = (temp16&0x0200)>>9;
dop->fLabelDoc = (temp16&0x0400)>>10;
dop->fHyphCapitals = (temp16&0x0800)>>11;
dop->fAutoHyphen = (temp16&0x1000)>>12;
dop->fFormNoFields = (temp16&0x2000)>>13;
dop->fLinkStyles = (temp16&0x4000)>>14;
dop->fRevMarking = (temp16&0x8000)>>15;
temp16 = read_16ubit(fd);
dop->fBackup = temp16&0x0001;
dop->fExactCWords = (temp16&0x0002)>>1;
dop->fPagHidden = (temp16&0x0004)>>2;
dop->fPagResults = (temp16&0x0008)>>3;
dop->fLockAtn = (temp16&0x0010)>>4;
dop->fMirrorMargins = (temp16&0x0020)>>5;
dop->reserved3 = (temp16&0x0040)>>6;
dop->fDfltTrueType = (temp16&0x0080)>>7;
dop->fPagSuppressTopSpacing = (temp16&0x0100)>>8;
dop->fProtEnabled = (temp16&0x0200)>>9;
dop->fDispFormFldSel = (temp16&0x0400)>>10;
dop->fRMView = (temp16&0x0800)>>11;
dop->fRMPrint = (temp16&0x1000)>>12;
dop->reserved4 = (temp16&0x2000)>>13;
dop->fLockRev = (temp16&0x4000)>>14;
dop->fEmbedFonts = (temp16&0x8000)>>15;
/*
not used in word 8 as far as i know, but are in previous word's
*/
wvGetCOPTS(&dop->copts,fd);
dop->dxaTab = read_16ubit(fd);
dop->wSpare = read_16ubit(fd);
dop->dxaHotZ = read_16ubit(fd);
dop->cConsecHypLim = read_16ubit(fd);
dop->wSpare2 = read_16ubit(fd);
wvGetDTTM(&dop->dttmCreated,fd);
wvGetDTTM(&dop->dttmRevised,fd);
wvGetDTTM(&dop->dttmLastPrint,fd);
dop->nRevision = read_16ubit(fd);
dop->tmEdited = read_32ubit(fd);
dop->cWords = read_32ubit(fd);
dop->cCh = read_32ubit(fd);
dop->cPg = read_16ubit(fd);
dop->cParas = read_32ubit(fd);
temp16 = read_16ubit(fd);
dop->rncEdn = temp16&0x0003;
dop->nEdn = (temp16&0xFFFC)>>2;
temp16 = read_16ubit(fd);
dop->epc = temp16&0x0003;
dop->nfcFtnRef = (temp16&0x003C)>>2;
dop->nfcEdnRef = (temp16&0x03C0)>>6;
dop->fPrintFormData = (temp16&0x0400)>>10;
dop->fSaveFormData = (temp16&0x0800)>>11;
dop->fShadeFormData = (temp16&0x1000)>>12;
dop->reserved6 = (temp16&0x6000)>>13;
dop->fWCFtnEdn = (temp16&0x8000)>>15;
dop->cLines = read_32ubit(fd);
dop->cWordsFtnEnd = read_32ubit(fd);
dop->cChFtnEdn = read_32ubit(fd);
dop->cPgFtnEdn = read_16ubit(fd);
dop->cParasFtnEdn = read_32ubit(fd);
dop->cLinesFtnEdn = read_32ubit(fd);
dop->lKeyProtDoc = read_32ubit(fd);
temp16 = read_16ubit(fd);
dop->wvkSaved = temp16&0x0007;
dop->wScaleSaved = (temp16&0x0FF8)>>3;
dop->zkSaved = (temp16&0x3000)>>12;
dop->fRotateFontW6 = (temp16&0x4000)>>14;
dop->iGutterPos = (temp16&0x8000)>>15;
temp32 = read_32ubit(fd);
dop->fNoTabForInd = temp32&0x00000001;
dop->fNoSpaceRaiseLower = (temp32&0x00000002)>>1;
dop->fSupressSpbfAfterPageBreak = (temp32&0x00000004)>>2;
dop->fWrapTrailSpaces = (temp32&0x00000008)>>3;
dop->fMapPrintTextColor = (temp32&0x00000010)>>4;
dop->fNoColumnBalance = (temp32&0x00000020)>>5;
dop->fConvMailMergeEsc = (temp32&0x00000040)>>6;
dop->fSupressTopSpacing = (temp32&0x00000080)>>7;
dop->fOrigWordTableRules = (temp32&0x00000100)>>8;
dop->fTransparentMetafiles = (temp32&0x00000200)>>9;
dop->fShowBreaksInFrames = (temp32&0x00000400)>>10;
dop->fSwapBordersFacingPgs = (temp32&0x00000800)>>11;
dop->reserved7 = (temp32&0x0000F000)>>12;
dop->fSuppressTopSpacingMac5 = (temp32&0x00010000)>>16;
dop->fTruncDxaExpand = (temp32&0x00020000)>>17;
dop->fPrintBodyBeforeHdr = (temp32&0x00040000)>>18;
dop->fNoLeading = (temp32&0x00080000)>>19;
dop->reserved8 = (temp32&0x00100000)>>20;
dop->fMWSmallCaps = (temp32&0x00200000)>>21;
dop->reserved9 = (temp32&0xFFC00000)>>22;
dop->adt = read_16ubit(fd);
wvGetDOPTYPOGRAPHY(&dop->doptypography,fd);
wvGetDOGRID(&dop->dogrid,fd);
temp16 = read_16ubit(fd);
dop->reserved10 = temp16&0x0001;
dop->lvl = (temp16&0x001E)>>1;
dop->fGramAllDone = (temp16&0x0020)>>5;
dop->fGramAllClean = (temp16&0x0040)>>6;
dop->fSubsetFonts = (temp16&0x0080)>>7;
dop->fHideLastVersion = (temp16&0x0100)>>8;
dop->fHtmlDoc = (temp16&0x0200)>>9;
dop->reserved11 = (temp16&0x0400)>>10;
dop->fSnapBorder = (temp16&0x0800)>>11;
dop->fIncludeHeader = (temp16&0x1000)>>12;
dop->fIncludeFooter = (temp16&0x2000)>>13;
dop->fForcePageSizePag = (temp16&0x4000)>>14;
dop->fMinFontSizePag = (temp16&0x8000)>>15;
temp16 = read_16ubit(fd);
dop->fHaveVersions = temp16&0x0001;
dop->fAutoVersion = (temp16&0x0002)>>1;
dop->reserved11 = (temp16&0xFFFC)>>2;
wvGetASUMYI(&dop->asumyi,fd);
dop->cChWS = read_32ubit(fd);
dop->cChWSFtnEdn = read_32ubit(fd);
dop->grfDocEvents = read_32ubit(fd);
temp32 = read_32ubit(fd);
dop->fVirusPrompted = temp32&0x00000001;
dop->fVirusLoadSafe = (temp32&0x00000002)>>1;
dop->KeyVirusSession30 = (temp32&0xFFFFFFFC)>>2;
for(i=0;i<30;i++)
dop->Spare[i] = getc(fd);
dop->reserved12 = read_32ubit(fd);
dop->reserved13 = read_32ubit(fd);
dop->cDBC = read_32ubit(fd);
dop->cDBCFtnEdn = read_32ubit(fd);
dop->reserved14 = read_32ubit(fd);
dop->new_nfcFtnRef = read_16ubit(fd);
dop->new_nfcEdnRef = read_16ubit(fd);
dop->hpsZoonFontPag = read_16ubit(fd);
dop->dywDispPag = read_16ubit(fd);
/*
if ((dop->fLockAtn) || (dop->fLockRev))
fprintf(stderr,"doc protection key is %x\n",dop->lKeyProtDoc);
*/
}
|