#include #include #include #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "wv.h" #include "crc32.h" void wvGetANLD(wvVersion ver,ANLD *item,wvStream *fd) { U8 temp8; int i; #ifdef PURIFY wvInitANLD(item); #endif item->nfc = read_8ubit(fd); item->cxchTextBefore = read_8ubit(fd); item->cxchTextAfter = read_8ubit(fd); temp8 = read_8ubit(fd); item->jc = temp8 & 0x03; item->fPrev = (temp8 & 0x04)>>2; item->fHang = (temp8 & 0x08)>>3; item->fSetBold = (temp8 & 0x10)>>4; item->fSetItalic = (temp8 & 0x20)>>5; item->fSetSmallCaps = (temp8 & 0x40)>>6; item->fSetCaps = (temp8 & 0x80)>>7; temp8 = read_8ubit(fd); item->fSetStrike = temp8 & 0x01; item->fSetKul = (temp8 & 0x02)>>1; item->fPrevSpace = (temp8 & 0x04)>>2; item->fBold = (temp8 & 0x08)>>3; item->fItalic = (temp8 & 0x10)>>4; item->fSmallCaps = (temp8 & 0x20)>>5; item->fCaps = (temp8 & 0x40)>>6; item->fStrike = (temp8 & 0x80)>>7; temp8 = read_8ubit(fd); item->kul = temp8 & 0x07; item->ico = (temp8 & 0xF1) >> 3; item->ftc = (S16)read_16ubit(fd); item->hps = read_16ubit(fd); item->iStartAt = read_16ubit(fd); item->dxaIndent = (S16)read_16ubit(fd); item->dxaSpace = read_16ubit(fd); item->fNumber1 = read_8ubit(fd); item->fNumberAcross = read_8ubit(fd); item->fRestartHdn = read_8ubit(fd); item->fSpareX = read_8ubit(fd); for (i=0;i<32;i++) { if (ver == WORD8) item->rgxch[i] = read_16ubit(fd); else item->rgxch[i] = read_8ubit(fd); } } void wvGetANLD_FromBucket(wvVersion ver,ANLD *item,U8 *pointer8) { U8 temp8; int i; #ifdef PURIFY wvInitANLD(item); #endif item->nfc = dread_8ubit(NULL,&pointer8); item->cxchTextBefore = dread_8ubit(NULL,&pointer8); item->cxchTextAfter = dread_8ubit(NULL,&pointer8); temp8 = dread_8ubit(NULL,&pointer8); item->jc = temp8 & 0x03; item->fPrev = (temp8 & 0x04)>>2; item->fHang = (temp8 & 0x08)>>3; item->fSetBold = (temp8 & 0x10)>>4; item->fSetItalic = (temp8 & 0x20)>>5; item->fSetSmallCaps = (temp8 & 0x40)>>6; item->fSetCaps = (temp8 & 0x80)>>7; temp8 = dread_8ubit(NULL,&pointer8); item->fSetStrike = temp8 & 0x01; item->fSetKul = (temp8 & 0x02)>>1; item->fPrevSpace = (temp8 & 0x04)>>2; item->fBold = (temp8 & 0x08)>>3; item->fItalic = (temp8 & 0x10)>>4; item->fSmallCaps = (temp8 & 0x20)>>5; item->fCaps = (temp8 & 0x40)>>6; item->fStrike = (temp8 & 0x80)>>7; temp8 = dread_8ubit(NULL,&pointer8); item->kul = temp8 & 0x07; item->ico = (temp8 & 0xF1) >> 3; item->ftc = (S16)dread_16ubit(NULL,&pointer8); item->hps = dread_16ubit(NULL,&pointer8); item->iStartAt = dread_16ubit(NULL,&pointer8); item->dxaIndent = (S16)dread_16ubit(NULL,&pointer8); item->dxaSpace = dread_16ubit(NULL,&pointer8); item->fNumber1 = dread_8ubit(NULL,&pointer8); #if 0 if (item->fNumber1 == 46) wvTrace(("This level has not been modified, so you can't believe its nfc\n")); #endif item->fNumberAcross = dread_8ubit(NULL,&pointer8); item->fRestartHdn = dread_8ubit(NULL,&pointer8); item->fSpareX = dread_8ubit(NULL,&pointer8); for (i=0;i<32;i++) { if (ver == WORD8) item->rgxch[i] = dread_16ubit(NULL,&pointer8); else item->rgxch[i] = dread_8ubit(NULL,&pointer8); } } void wvCopyANLD(ANLD *dest, ANLD *src) { memcpy(dest,src,sizeof(ANLD)); } void wvInitANLD(ANLD *item) { int i; item->nfc = 0; item->cxchTextBefore = 0; item->cxchTextAfter = 0; item->jc = 0; item->fPrev = 0; item->fHang = 0; item->fSetBold = 0; item->fSetItalic = 0; item->fSetSmallCaps = 0; item->fSetCaps = 0; item->fSetStrike = 0; item->fSetKul = 0; item->fPrevSpace = 0; item->fBold = 0; item->fItalic = 0; item->fSmallCaps = 0; item->fCaps = 0; item->fStrike = 0; item->kul = 0; item->ico = 0; item->ftc = 0; item->hps = 0; item->iStartAt = 0; item->dxaIndent = 0; item->dxaSpace = 0; item->fNumber1 = 0; item->fNumberAcross = 0; item->fRestartHdn = 0; item->fSpareX = 0; for (i=0;i<32;i++) item->rgxch[i] = 0; } U32 wvCheckSumANLD(ANLD *item) { return(CalcCRC32( (unsigned char *)item, cbANLD, cbANLD, 0)); }