#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)); }