16 #if defined (MSWindows)
17 #pragma warning(disable: 4800)
37 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
38 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
39 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
40 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
41 {0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0},
42 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
43 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
44 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
45 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
46 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
47 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
48 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
49 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
50 {0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0},
51 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
52 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
53 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
54 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
59 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
60 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
61 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
62 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
63 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
64 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
65 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
66 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
67 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
68 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
69 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
70 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
71 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
72 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
73 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
74 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
75 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
76 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
81 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
82 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
83 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
84 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
85 {0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
86 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
87 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
88 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
89 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0},
90 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
91 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0},
92 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
93 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
94 {0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
95 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
96 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
97 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
98 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
103 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
104 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
105 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
106 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
107 {0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0},
108 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
109 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
110 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
111 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
112 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
113 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
114 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
115 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
116 {0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0},
117 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
118 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
119 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
120 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
125 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
126 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
127 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
128 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
129 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
130 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
131 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
132 {0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
133 {0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
134 {0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
135 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
136 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
137 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
138 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
139 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
140 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
141 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
142 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
147 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
148 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
149 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
150 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
151 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
152 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
153 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
154 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
155 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
156 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
157 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
158 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
159 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
160 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
161 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
162 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
163 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
164 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
169 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
170 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
171 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
172 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
173 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
174 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
175 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
176 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
177 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
178 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
179 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
180 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
181 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
182 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
183 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
184 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
185 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
186 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
191 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
192 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
193 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
194 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
195 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
196 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
197 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0},
198 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0},
199 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
200 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
201 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0},
202 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
203 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
204 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
205 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
206 {0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
207 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
208 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
213 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
214 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
215 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
216 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
217 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
218 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
219 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
220 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
221 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
222 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
223 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
224 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
225 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
226 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
227 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
228 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
229 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
230 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
235 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
236 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
237 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
238 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
239 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
240 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
241 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
242 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
243 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
244 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
245 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
246 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
247 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
248 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
249 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
250 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
251 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
252 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
257 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
258 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
259 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
260 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
261 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
262 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
263 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
264 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
265 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
266 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
267 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
268 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
269 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
270 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
271 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
272 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
273 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
274 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
279 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
280 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
281 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
282 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
283 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
284 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
285 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
286 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
287 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
288 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
289 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
290 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
291 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
292 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
293 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
294 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
295 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
296 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
301 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
302 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
303 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
304 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
305 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
306 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
307 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
308 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
309 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
310 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
311 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
312 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
313 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
314 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
315 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
316 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
317 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
318 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
323 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
324 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
325 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
326 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
327 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
328 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
329 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
330 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
331 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
332 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
333 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
334 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
335 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
336 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
337 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
338 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
339 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
340 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
345 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
346 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
347 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
348 {0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0},
349 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 3, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
350 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
351 {0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
352 {0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
353 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
354 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 3, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
355 {0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0},
356 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
357 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
358 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
359 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
360 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
361 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
362 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
366 static char bcd[] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'0',
'0',
'0',
'0',
'0',
'0'};
367 static char hexChar[] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
'E',
'F'};
376 _bInitialized =
false;
382 SetRP188 (ulFrms, ulSecs, ulMins, ulHrs, tcFormat);
388 SetRP188 (rp188, tcFormat);
394 SetRP188 (inRP188, tcFormat);
400 SetRP188(sRP188, tcFormat);
406 SetRP188 (frames, tcFormat);
412 if (_pCharRenderMap !=
NULL)
413 free(_pCharRenderMap);
419 _pCharRenderMap =
NULL;
421 _bInitialized =
false;
442 if ( (_ulVal[0] == sVal[0]) && (_ulVal[1] == sVal[1]) && (_ulVal[2] == sVal[2]) && (_ulVal[3] == sVal[3]) )
467 _tcFormat = tcFormat;
469 if (rp188.
DBB == 0xffffffff)
474 _bDropFrameFlag = (TC0_31 >> 10) & 0x01;
476 if ( FormatIs60_50fps(_tcFormat) )
479 bool bFieldID = (FormatIsPAL(_tcFormat) ? ((TC32_63 &
BIT_27) != 0) : ((TC0_31 &
BIT_27) != 0) );
480 int numFrames = (((((TC0_31>>8)&0x3) * 10) + (TC0_31&0xF)) * 2) + (int)bFieldID;
481 unitFrames =
bcd[numFrames % 10];
482 tensFrames =
bcd[numFrames / 10];
486 unitFrames =
bcd[(TC0_31 )&0xF];
487 tensFrames =
bcd[(TC0_31>>8)&0x3];
489 unitSeconds =
bcd[(TC0_31>>16)&0xF];
490 tensSeconds =
bcd[(TC0_31>>24)&0x7];
492 unitMinutes =
bcd[(TC32_63 )&0xF];
493 tensMinutes =
bcd[(TC32_63>> 8)&0x7];
494 unitHours =
bcd[(TC32_63>>16)&0xF];
495 tensHours =
bcd[(TC32_63>>24)&0x3];
497 _ulVal[0] = (unitFrames-0x30)+((tensFrames-0x30)*10);
498 _ulVal[1] = (unitSeconds-0x30)+((tensSeconds-0x30)*10);
499 _ulVal[2] = (unitMinutes-0x30)+((tensMinutes-0x30)*10);
500 _ulVal[3] = (unitHours-0x30)+((tensHours-0x30)*10);
502 char timecodeString[12];
503 timecodeString[0] = tensHours;
504 timecodeString[1] = unitHours;
505 timecodeString[2] =
':';
506 timecodeString[3] = tensMinutes;
507 timecodeString[4] = unitMinutes;
508 timecodeString[5] =
':';
509 timecodeString[6] = tensSeconds;
510 timecodeString[7] = unitSeconds;
513 timecodeString[8] =
';';
517 timecodeString[8] =
':';
519 timecodeString[9] = tensFrames;
520 timecodeString[10] = unitFrames;
521 timecodeString[11] =
'\0';
523 _sHMSF = timecodeString;
529 _bInitialized =
true;
534 _bVaricamActiveF0 = (TC0_31 >> 5) & 0x01;
535 _bVaricamActiveF1 = (TC0_31 >> 4) & 0x01;
537 _bDropFrameFlag = (TC0_31 >> 10) & 0x01;
538 _bColorFrameFlag = (TC0_31 >> 11) & 0x01;
540 _varicamRate = (_ulUserBits[3] * 10) + _ulUserBits[2];
542 if ( FormatIsPAL(_tcFormat) )
544 _fieldID = (TC32_63 >> 27) & 0x01;
548 _fieldID = (TC0_31 >> 27) & 0x01;
556 SetRP188 (tmpRP188, inFormat);
563 _tcFormat = tcFormat;
569 SetRP188(_ulVal[0], _ulVal[1], _ulVal[2], _ulVal[3], _tcFormat);
576 _tcFormat = tcFormat;
578 ULWord ulHrs, ulMins, ulSecs, ulFrms;
580 ConvertFrameCount(frames, _tcFormat, ulHrs, ulMins, ulSecs, ulFrms);
582 SetRP188(ulFrms, ulSecs, ulMins, ulHrs, _tcFormat);
587 NTV2FrameRate frameRate,
const bool bDropFrame,
const bool bSMPTE372)
623 SetRP188(ulFrms, ulSecs, ulMins, ulHrs, tcFormat);
633 _tcFormat = tcFormat;
635 bool bDropFrame = FormatIsDropFrame(_tcFormat);
637 ULWord framesPerSecond = FramesPerSecond(_tcFormat);
640 if (ulFrms >= framesPerSecond)
642 ulSecs += ulFrms / framesPerSecond;
643 ulFrms %= framesPerSecond;
648 ulMins += ulSecs / 60;
654 ulHrs += ulMins / 60;
668 if ( (ulSecs == 0) && ((ulFrms == 0) || (ulFrms == 1)) )
670 if ((ulMins % 10) != 0)
685 if ( (ulSecs == 0) && ((ulFrms == 0) || (ulFrms == 1) || (ulFrms == 2) || (ulFrms == 3)) )
687 if ((ulMins % 10) != 0)
702 char timeCodeString[80];
704 snprintf(timeCodeString,
sizeof(timeCodeString),
"%02d:%02d:%02d;%02d", ulHrs, ulMins, ulSecs, ulFrms);
706 snprintf(timeCodeString,
sizeof(timeCodeString),
"%02d:%02d:%02d:%02d", ulHrs, ulMins, ulSecs, ulFrms);
708 _sHMSF = timeCodeString;
713 _bInitialized =
true;
715 SetVaricamFrameActive(
false, 0);
716 SetVaricamFrameActive(
false, 1);
718 SetDropFrame(bDropFrame);
719 SetColorFrame(
false);
720 SetVaricamRate( DefaultFrameRateForTimecodeFormat(_tcFormat) );
722 if ( !FormatIs60_50fps(_tcFormat) )
725 SetBFGBits(
false,
false,
false);
736 _bDropFrameFlag = bDropFrameFlag;
737 if (bDropFrameFlag ==
true)
746 _bColorFrameFlag = bColorFrameFlag;
747 if (bColorFrameFlag ==
true)
757 _bVaricamActiveF0 = bVaricamActive;
761 _rp188.Low &= ~
BIT_5;
765 _bVaricamActiveF1 = bVaricamActive;
769 _rp188.Low &= ~
BIT_4;
814 _rp188.Low &= 0x0F0FFFFF;
815 _rp188.Low |= (rate & 0x0f) << 20;
816 _rp188.Low |= (rate & 0xf0) << 24;
824 if ( FormatIsPAL(_tcFormat) )
842 bool bResult = (_fieldID != 0);
844 if ( FormatIsPAL(_tcFormat) )
845 bResult = ((_rp188.High &
BIT_27) != 0);
847 bResult = ((_rp188.Low &
BIT_27) != 0);
861 if ( FormatIsPAL(_tcFormat) )
890 _rp188.DBB = (_rp188.DBB & ~0xFF000000) | (src << 24);
896 ULWord val = (_rp188.DBB & 0xFF000000) >> 24;
902 _rp188.DBB = (_rp188.DBB & ~0x000000FF) | (src);
908 ULWord val = (_rp188.DBB & 0x000000FF);
920 return _bInitialized;
925 return ( _sHMSF.c_str() );
931 return _bInitialized;
937 return _bInitialized;
943 return _bInitialized;
949 return _bInitialized;
954 ConvertTimecode (frameCount, _tcFormat, _ulVal[3], _ulVal[2], _ulVal[1], _ulVal[0]);
956 return _bInitialized;
964 if (!FormatIsDropFrame(format) )
967 int mins = (60 * hours) + minutes;
968 int secs = (60 * mins) + seconds;
969 frms = (FramesPerSecond(format) * secs) + frames;
974 ULWord framesPerSec = FramesPerSecond(format);
975 ULWord framesPerMin = framesPerSec * 60;
978 ULWord dropFramesPerSec = framesPerSec - droppedFrames;
979 ULWord dropframesPerMin = (59 * framesPerSec) + dropFramesPerSec;
980 ULWord dropframesPerTenMin = (9 * dropframesPerMin) + framesPerMin;
981 ULWord dropframesPerHr = dropframesPerTenMin * 6;
983 frms = hours * dropframesPerHr;
985 int tenMins = minutes / 10;
986 frms += tenMins * dropframesPerTenMin;
988 int mins = minutes % 10;
991 frms += framesPerMin;
994 frms += mins * dropframesPerMin;
1000 if (_ulVal[2] % 10 != 0)
1002 frms += dropFramesPerSec;
1006 frms += secs * framesPerSec;
1009 if (seconds == 0 && minutes % 10 != 0)
1011 if (frames >= droppedFrames)
1012 frms += (frames - droppedFrames);
1028 ULWord framesPerSec = FramesPerSecond(format);
1029 ULWord framesPerMin = framesPerSec * 60;
1030 ULWord framesPerHr = framesPerMin * 60;
1031 ULWord framesPerDay = framesPerHr * 24;
1033 if ( !FormatIsDropFrame(format) )
1037 frameCount = frameCount % framesPerDay;
1040 hours = frameCount / framesPerHr;
1041 frameCount = frameCount % framesPerHr;
1044 minutes = frameCount / framesPerMin;
1045 frameCount = frameCount % framesPerMin;
1048 seconds = frameCount / framesPerSec;
1051 frames = frameCount % framesPerSec;
1058 ULWord dropFramesPerSec = framesPerSec - droppedFrames;
1059 ULWord dropframesPerMin = (59 * framesPerSec) + dropFramesPerSec;
1060 ULWord dropframesPerTenMin = (9 * dropframesPerMin) + framesPerMin;
1061 ULWord dropframesPerHr = dropframesPerTenMin * 6;
1062 ULWord dropframesPerDay = dropframesPerHr * 24;
1065 frameCount = frameCount % dropframesPerDay;
1068 hours = frameCount / dropframesPerHr;
1069 frameCount = frameCount % dropframesPerHr;
1072 minutes = 10 * (frameCount / dropframesPerTenMin);
1073 frameCount = frameCount % dropframesPerTenMin;
1076 if (frameCount >= framesPerMin)
1079 frameCount = frameCount - framesPerMin;
1082 minutes += frameCount / dropframesPerMin;
1083 frameCount = frameCount % dropframesPerMin;
1088 if (minutes % 10 == 0)
1091 seconds = frameCount / framesPerSec;
1092 frameCount = frameCount % framesPerSec;
1098 if (frameCount >= dropFramesPerSec)
1101 frameCount = frameCount - dropFramesPerSec;
1104 seconds += frameCount / framesPerSec;
1105 frameCount = frameCount % framesPerSec;
1110 frames = frameCount;
1113 if ( (seconds == 0) && (minutes % 10 != 0))
1114 frames += droppedFrames;
1123 ULWord currentFrameCount, newFrameCount;
1124 GetFrameCount(currentFrameCount);
1127 newFrameCount = currentFrameCount + frameCount;
1130 newFrameCount = newFrameCount % MaxFramesPerDay();
1132 SetRP188 (newFrameCount, _tcFormat);
1134 return newFrameCount;
1142 ULWord currentFrameCount, newFrameCount;
1143 GetFrameCount(currentFrameCount);
1146 ULWord maxFrames = MaxFramesPerDay();
1147 ULWord subAmt = frameCount % maxFrames;
1149 if (subAmt <= currentFrameCount)
1150 newFrameCount = currentFrameCount - subAmt;
1152 newFrameCount = maxFrames - (subAmt - currentFrameCount);
1154 SetRP188 (newFrameCount, _tcFormat);
1156 return newFrameCount;
1168 ULWord framesPerSec = FramesPerSecond(format);
1169 ULWord framesPerMin = framesPerSec * 60;
1171 if ( !FormatIsDropFrame(format) )
1174 ULWord framesPerHr = framesPerMin * 60;
1175 result = framesPerHr * 24;
1180 ULWord dropframesPerMin = framesPerMin - droppedFrames;
1181 ULWord dropframesPerTenMin = (9 * dropframesPerMin) + framesPerMin;
1182 ULWord dropframesPerHr = dropframesPerTenMin * 6;
1183 result = dropframesPerHr * 24;
1194 bool bResult =
false;
1210 bool bResult =
false;
1229 bool bResult =
false;
1243 return _bInitialized;
1249 return _bInitialized;
1257 sRP188UB = _sUserBits;
1258 return _bInitialized;
1266 return ( _sUserBits.c_str() );
1277 if ( (smpteNum >= 1) && (smpteNum <= 8) )
1278 result = _ulUserBits[smpteNum-1];
1286 if ( (smpteNum >= 1) && (smpteNum <= 8) )
1288 _ulUserBits[smpteNum-1] = bits;
1292 ULWord newBits = _rp188.Low;
1293 ULWord shift = (smpteNum-1) * 8 + 4;
1295 newBits &= ~(0xF << shift);
1296 _rp188.Low = newBits | ((bits & 0xF) << shift);
1300 ULWord newBits = _rp188.High;
1301 ULWord shift = (smpteNum-5) * 8 + 4;
1303 newBits &= ~(0xF << shift);
1304 _rp188.High = newBits | ((bits & 0xF) << shift);
1315 _ulUserBits[7] = (bits >> 28) & 0xF;
1316 _ulUserBits[6] = (bits >> 24) & 0xF;
1317 _ulUserBits[5] = (bits >> 20) & 0xF;
1318 _ulUserBits[4] = (bits >> 16) & 0xF;
1319 _ulUserBits[3] = (bits >> 12) & 0xF;
1320 _ulUserBits[2] = (bits >> 8) & 0xF;
1321 _ulUserBits[1] = (bits >> 4) & 0xF;
1322 _ulUserBits[0] = (bits >> 0) & 0xF;
1324 ULWord newHigh = _rp188.High & 0x0F0F0F0F;
1325 ULWord newLow = _rp188.Low & 0x0F0F0F0F;
1327 newHigh |= ((bits & 0xF0000000) >> 0) |
1328 ((bits & 0x0F000000) >> 4) |
1329 ((bits & 0x00F00000) >> 8) |
1330 ((bits & 0x000F0000) >> 12);
1331 newLow |= ((bits & 0x0000F000) << 16) |
1332 ((bits & 0x00000F00) << 12) |
1333 ((bits & 0x000000F0) << 8) |
1334 ((bits & 0x0000000F) << 4);
1336 _rp188.High = newHigh;
1337 _rp188.Low = newLow;
1347 if ( (smpteUDW >= 1) && (smpteUDW <= 16) )
1349 int index = smpteUDW - 1;
1352 result = (_rp188.Low >> (4 * index)) & 0x0F;
1354 result = (_rp188.High >> (4 * (index-8))) & 0x0F;
1364 return ( (BinaryGroup(4) * 10) + BinaryGroup(3) );
1387 default: fps = 30;
break;
1427 void CRP188::ConvertTcStrToVal (
void)
1430 for (
int i = 0; i < 4; i++)
1433 string s(_sHMSF, iOff, 2);
1435 istringstream ist(s);
1437 ist >> _ulVal[3 - i];
1441 void CRP188::ConvertTcStrToReg (
void)
1443 memset ((
void *) &_rp188, 0,
sizeof(_rp188));
1447 int iOff = 0, iSingle;
1448 pcBuf[0] = _sHMSF[iOff];
1450 sscanf (pcBuf,
"%d", &iSingle);
1451 _rp188.High |= (iSingle & 0x3) << 24;
1455 pcBuf[0] = _sHMSF[iOff];
1456 sscanf (pcBuf,
"%d", &iSingle);
1457 _rp188.High |= (iSingle & 0xF) << 16;
1461 pcBuf[0] = _sHMSF[iOff];
1462 sscanf (pcBuf,
"%d", &iSingle);
1463 _rp188.High |= (iSingle & 0x7) << 8;
1467 pcBuf[0] = _sHMSF[iOff];
1468 sscanf (pcBuf,
"%d", &iSingle);
1469 _rp188.High |= (iSingle & 0xF);
1473 pcBuf[0] = _sHMSF[iOff];
1474 sscanf (pcBuf,
"%d", &iSingle);
1475 _rp188.Low |= (iSingle & 0x7) << 24;
1479 pcBuf[0] = _sHMSF[iOff];
1480 sscanf (pcBuf,
"%d", &iSingle);
1481 _rp188.Low |= (iSingle & 0xF) << 16;
1483 if ( !FormatIs60_50fps() )
1487 pcBuf[0] = _sHMSF[iOff];
1488 sscanf (pcBuf,
"%d", &iSingle);
1489 _rp188.Low |= (iSingle & 0x3) << 8;
1493 pcBuf[0] = _sHMSF[iOff];
1494 sscanf (pcBuf,
"%d", &iSingle);
1495 _rp188.Low |= (iSingle & 0xF);
1504 pcBuf[0] = _sHMSF[iOff];
1505 sscanf (pcBuf,
"%d", &iTens);
1510 pcBuf[0] = _sHMSF[iOff];
1511 sscanf (pcBuf,
"%d", &iUnits);
1513 ULWord frameCount = (10 * iTens) + iUnits;
1514 if (frameCount >= FramesPerSecond())
1515 frameCount = FramesPerSecond() - 1;
1518 SetFieldID(frameCount % 2);
1521 _rp188.Low |= ((frameCount / 10) & 0x3) << 8;
1522 _rp188.Low |= ((frameCount % 10) & 0xF) ;
1526 void CRP188::RP188ToUserBits (
void)
1528 char userBitsString[12];
1530 _ulUserBits[7] = (_rp188.High >> 28) & 0xF;
1531 userBitsString[0] =
hexChar[_ulUserBits[7]];
1533 _ulUserBits[6] = (_rp188.High >> 20) & 0xF;
1534 userBitsString[1] =
hexChar[_ulUserBits[6]];
1535 userBitsString[2] =
' ';
1537 _ulUserBits[5] = (_rp188.High >> 12) & 0xF;
1538 userBitsString[3] =
hexChar[_ulUserBits[5]];
1540 _ulUserBits[4] = (_rp188.High >> 4) & 0xF;
1541 userBitsString[4] =
hexChar[_ulUserBits[4]];
1542 userBitsString[5] =
' ';
1544 _ulUserBits[3] = (_rp188.Low >> 28) & 0xF;
1545 userBitsString[6] =
hexChar[_ulUserBits[3]];
1547 _ulUserBits[2] = (_rp188.Low >> 20) & 0xF;
1548 userBitsString[7] =
hexChar[_ulUserBits[2]];
1549 userBitsString[8] =
' ';
1551 _ulUserBits[1] = (_rp188.Low >> 12) & 0xF;
1552 userBitsString[9] =
hexChar[_ulUserBits[1]];
1554 _ulUserBits[0] = (_rp188.Low >> 4) & 0xF;
1555 userBitsString[10] =
hexChar[_ulUserBits[0]];
1556 userBitsString[11] =
'\0';
1558 _sUserBits = userBitsString;
1565 bool bResult =
true;
1568 if (_bRendered && _pCharRenderMap !=
NULL && frameBufferFormat == _charRenderFBF && frameDimensions.Height() == _charRenderHeight && frameDimensions.Width() == _charRenderWidth)
1576 bool bFormatOK (
true);
1577 int bytesPerPixel (0);
1578 switch (frameBufferFormat)
1600 default: bFormatOK =
false;
1608 if (frameDimensions.Height() > 900)
1610 else if (frameDimensions.Height() > 650)
1613 int dotWidth = 1 * dotScale;
1614 int dotHeight = 2 * dotScale;
1617 if (frameDimensions.Height() > 900 && frameDimensions.Width() <= 1440)
1630 if (_pCharRenderMap !=
NULL)
1632 free(_pCharRenderMap);
1633 _pCharRenderMap =
NULL;
1637 _pCharRenderMap = (
char*)malloc(
kMaxTCChars * charWidthBytes * charHeightLines);
1638 if (_pCharRenderMap !=
NULL)
1640 char *pRenderMap = _pCharRenderMap;
1649 for (
int ydup = 0; ydup < dotHeight; ydup++)
1661 case 0: val = char(0x040 >> 2);
break;
1662 case 1: val = char(0x164 >> 2);
break;
1663 case 2: val = char(0x288 >> 2);
break;
1664 case 3: val = char(0x3AC >> 2);
break;
1668 for (
int xdup = 0; xdup < dotWidth; xdup++)
1670 *pRenderMap++ = char(0x80);
1671 *pRenderMap++ = val;
1680 case 0: val = 0x040;
break;
1681 case 1: val = 0x164;
break;
1682 case 2: val = 0x288;
break;
1683 case 3: val = 0x3AC;
break;
1687 for (
int xdup = 0; xdup < dotWidth; xdup++)
1689 writeV210Pixel (&pRenderMap, ((x * dotWidth) + xdup), 0x200, val);
1698 case 0: val = (char)0x00;
break;
1699 case 1: val = (char)0x55;
break;
1700 case 2: val = (char)0xaa;
break;
1701 case 3: val = (char)0xff;
break;
1705 for (
int xdup = 0; xdup < dotWidth; xdup++)
1708 *pRenderMap++ = val;
1709 *pRenderMap++ = val;
1710 *pRenderMap++ = val;
1719 case 0: val = (char)0x00;
break;
1720 case 1: val = (char)0x55;
break;
1721 case 2: val = (char)0xaa;
break;
1722 case 3: val = (char)0xff;
break;
1726 for (
int xdup = 0; xdup < dotWidth; xdup++)
1729 *pRenderMap++ = val;
1730 *pRenderMap++ = val;
1731 *pRenderMap++ = val;
1740 case 0: val = 64;
break;
1741 case 1: val = 356;
break;
1742 case 2: val = 648;
break;
1743 case 3: val = 940;
break;
1747 for (
int xdup = 0; xdup < dotWidth; xdup++)
1749 *pRenderMap++ = ((val & 0x3fc) >> 2);
1750 *pRenderMap++ = ((val & 0x003) << 6) | ((val & 0x3f0) >> 4);
1751 *pRenderMap++ = ((val & 0x00f) << 4) | ((val & 0x3c0) >> 6);
1752 *pRenderMap++ = ((val & 0x03f) << 2);
1761 _charRenderFBF = frameBufferFormat;
1762 _charRenderHeight = frameDimensions.Height();
1763 _charRenderWidth = frameDimensions.Width();
1766 _charWidthBytes = charWidthBytes;
1767 _charHeightLines = charHeightLines;
1770 int byteWidth = (frameDimensions.Width() * bytesPerPixel);
1772 byteWidth = (frameDimensions.Width() * 16) / 6;
1774 _charPositionX = (byteWidth - (
kNumBurnInChars * charWidthBytes)) / 2;
1777 _charPositionY = (frameDimensions.Height() * 8) / 10;
1781 _charPositionY = (frameDimensions.Height() * percentY) / 100;
1786 _charPositionX &= ~0x0f;
1803 char *p = *pBytePtr;
1810 int cadence = x % 3;
1816 p[1] = (( y & 0x03F) << 2) + (( c & 0x300) >> 8);
1817 p[2] = (p[2] & 0x0F0) + (( y & 0x3C0) >> 6);
1821 p[2] = (( c & 0x00F) << 4) + (p[2] & 0x00F);
1822 p[3] = (( c & 0x3F0) >> 4);
1824 p[5] = (p[5] & 0x0FC) + (( y & 0x300) >> 8);
1829 p[1] = (( c & 0x03F) << 2) + (p[1] & 0x003);
1830 p[2] = (( y & 0x00F) << 4) + (( c & 0x3C0) >> 6);
1831 p[3] = (( y & 0x3F0) >> 4);
1840 int val, char1, char2, trailingChar =
kMaxTCChars;
1841 int charSizeBytes = _charWidthBytes * _charHeightLines;
1845 char *pFrameBuff = pBaseVideoAddress + (_charPositionY * rowBytes) + _charPositionX;
1849 for (
int dig = 0; dig < 4; dig++)
1853 char1 = BinaryGroup(8 - (2*dig));
1854 char2 = BinaryGroup(7 - (2*dig));
1858 val = _ulVal[3-dig];
1864 && FormatIs60_50fps(_tcFormat)
1865 && bDisplay60_50fpsAs30_25 )
1880 CopyDigit ( (_pCharRenderMap + (char1 * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1881 pFrameBuff += _charWidthBytes;
1884 CopyDigit ( (_pCharRenderMap + (char2 * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1885 pFrameBuff += _charWidthBytes;
1890 if (dig == 2 && FormatIsDropFrame() )
1891 CopyDigit ( (_pCharRenderMap + (
kDigSemicolon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1893 CopyDigit ( (_pCharRenderMap + (
kDigColon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1894 pFrameBuff += _charWidthBytes;
1899 if (trailingChar >= 0 && trailingChar <
kMaxTCChars)
1901 CopyDigit ( (_pCharRenderMap + (trailingChar * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1902 pFrameBuff += _charWidthBytes;
1908 for (
int dig = 0; dig < 4; dig++)
1911 CopyDigit ( (_pCharRenderMap + (
kDigDash * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1912 pFrameBuff += _charWidthBytes;
1914 CopyDigit ( (_pCharRenderMap + (
kDigDash * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1915 pFrameBuff += _charWidthBytes;
1919 if (dig == 2 && FormatIsDropFrame() )
1920 CopyDigit ( (_pCharRenderMap + (
kDigColon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1922 CopyDigit ( (_pCharRenderMap + (
kDigColon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1923 pFrameBuff += _charWidthBytes;
1935 int64_t count = frameCount;
1936 int64_t scale = 1000000000;
1943 GetFrameCount(tmpCount);
1951 for (i = 0; i < numSpaces; i++)
1954 if (i == numSpaces-1)
1957 CopyDigit ( (_pCharRenderMap + (
kDigSpace * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1960 CopyDigit ( (_pCharRenderMap + (
kDigDash * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1963 pFrameBuff += _charWidthBytes;
1967 CopyDigit ( (_pCharRenderMap + (
kDigSpace * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1968 pFrameBuff += _charWidthBytes;
1973 count = count % scale;
1975 for (
int dig = 0; dig < maxDigits; dig++)
1979 char1 = int(count / scale);
1980 CopyDigit ( (_pCharRenderMap + (char1 * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1981 pFrameBuff += _charWidthBytes;
1983 count -= (scale * char1);
1987 for ( i = 0; i < numSpaces; i++)
1989 CopyDigit ( (_pCharRenderMap + (
kDigSpace * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1990 pFrameBuff += _charWidthBytes;
1995 return _bInitialized & _bRendered;
1998 void CRP188::CopyDigit (
char *pDigit,
int digitWidth,
int digitHeight,
char *pFrameBuff,
int fbRowBytes)
2000 for (
int y = 0; y < digitHeight; y++)
2002 char *pSrc = (pDigit + (y * digitWidth));
2003 char *pDst = (pFrameBuff + (y * fbRowBytes));
2005 memcpy(pDst, pSrc, digitWidth);
2014 int val, char1, char2, trailingChar =
kMaxTCChars;
2016 for (
int dig = 0; dig < 4; dig++)
2020 val = _ulVal[3-dig];
2026 && FormatIs60_50fps(_tcFormat)
2027 && bDisplay60_50fpsAs30_25 )
2042 result +=
'0' + char1;
2047 result +=
'0' + char2;
2054 if (dig == 2 && FormatIsDropFrame() )
2068 if (trailingChar >= 0 && trailingChar <
kMaxTCChars)
2070 result +=
'0' + trailingChar;
2084 outputStream << result;
2085 return outputStream;
2090 #pragma warning(default: 4800)