#include #include #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "wv.h" #include "wvinternal.h" int wvGetTC_internal (wvVersion ver, TC * tc, wvStream * infd, U8 * pointer) { U16 temp16; BRC10 brc10; wvTrace (("TC ver %d\n", ver)); #ifdef PURIFY wvInitTC (tc); #endif temp16 = dread_16ubit (infd, &pointer); wvTrace (("temp16 is %x\n", temp16)); if (ver == WORD8) { tc->fFirstMerged = temp16 & 0x0001; tc->fMerged = (temp16 & 0x0002) >> 1; tc->fVertical = (temp16 & 0x0004) >> 2; tc->fBackward = (temp16 & 0x0008) >> 3; tc->fRotateFont = (temp16 & 0x0010) >> 4; tc->fVertMerge = (temp16 & 0x0020) >> 5; tc->fVertRestart = (temp16 & 0x0040) >> 6; tc->vertAlign = (temp16 & 0x0180) >> 7; tc->fUnused = (temp16 & 0xFE00) >> 9; tc->wUnused = dread_16ubit (infd, &pointer); wvGetBRC_internal (&tc->brcTop, infd, pointer); pointer += cbBRC; wvGetBRC_internal (&tc->brcLeft, infd, pointer); pointer += cbBRC; wvGetBRC_internal (&tc->brcBottom, infd, pointer); pointer += cbBRC; wvGetBRC_internal (&tc->brcRight, infd, pointer); pointer += cbBRC; } else { wvInitTC (tc); tc->fFirstMerged = temp16 & 0x0001; tc->fMerged = (temp16 & 0x0002) >> 1; /* This + word 6 205 in sprm.c I thought would make sense together, until I get another example I have disabled the two of them */ tc->fVertical = (temp16 & 0x0004) >> 2; tc->fBackward = (temp16 & 0x0008) >> 3; tc->fRotateFont = (temp16 & 0x0010) >> 4; tc->fVertMerge = (temp16 & 0x0020) >> 5; tc->fVertRestart = (temp16 & 0x0040) >> 6; tc->vertAlign = (temp16 & 0x0180) >> 7; tc->fUnused = (temp16 & 0xFE00) >> 9; wvGetBRC10_internal (&brc10, infd, pointer); wvConvertBRC10ToBRC (&tc->brcTop, &brc10); pointer += cb6BRC; wvGetBRC10_internal (&brc10, infd, pointer); wvConvertBRC10ToBRC (&tc->brcLeft, &brc10); pointer += cb6BRC; wvGetBRC10_internal (&brc10, infd, pointer); wvConvertBRC10ToBRC (&tc->brcBottom, &brc10); pointer += cb6BRC; wvGetBRC10_internal (&brc10, infd, pointer); wvConvertBRC10ToBRC (&tc->brcRight, &brc10); pointer += cb6BRC; return (cb6TC); } return (cbTC); } int wvGetTCFromBucket (wvVersion ver, TC * abrc, U8 * pointer) { return (wvGetTC_internal (ver, abrc, NULL, pointer)); } void wvCopyTC (TC * dest, TC * src) { dest->fFirstMerged = src->fFirstMerged; dest->fMerged = src->fMerged; dest->fVertical = src->fVertical; dest->fBackward = src->fBackward; dest->fRotateFont = src->fRotateFont; dest->fVertMerge = src->fVertMerge; dest->fVertRestart = src->fVertRestart; dest->vertAlign = src->vertAlign; dest->fUnused = src->fUnused; dest->wUnused = src->wUnused; wvCopyBRC (&src->brcTop, &dest->brcTop); wvCopyBRC (&src->brcLeft, &dest->brcLeft); wvCopyBRC (&src->brcBottom, &dest->brcBottom); wvCopyBRC (&src->brcRight, &dest->brcRight); } void wvInitTC (TC * item) { item->fFirstMerged = 0; item->fMerged = 0; item->fVertical = 0; item->fBackward = 0; item->fRotateFont = 0; item->fVertMerge = 0; item->fVertRestart = 0; item->vertAlign = 0; item->fUnused = 0; item->wUnused = 0; wvInitBRC (&item->brcTop); wvInitBRC (&item->brcLeft); wvInitBRC (&item->brcBottom); wvInitBRC (&item->brcRight); }