File: tc.c

package info (click to toggle)
wv 1.0.2-0.1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,428 kB
  • ctags: 6,733
  • sloc: ansic: 59,221; sh: 9,998; xml: 1,677; makefile: 36
file content (125 lines) | stat: -rw-r--r-- 3,434 bytes parent folder | download | duplicates (5)
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
#include <stdlib.h>
#include <stdio.h>
#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);
}