17 #if defined (MSWindows)
18 #pragma warning(disable: 4800)
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
40 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
41 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
42 {0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0},
43 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 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, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
50 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
51 {0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0},
52 {0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
53 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 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},
55 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
62 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
63 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
64 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 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, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 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, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
77 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
84 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
85 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
86 {0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
87 {0, 0, 1, 2, 3, 2, 1, 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, 0, 1, 2, 3, 2, 1, 0, 0},
89 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0},
90 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0},
91 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
92 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0},
93 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
94 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
95 {0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
99 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
106 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
107 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
108 {0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0},
109 {0, 0, 1, 2, 3, 2, 1, 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, 0, 0, 1, 2, 3, 2, 1, 0, 0},
111 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 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, 1, 2, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
114 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
115 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
116 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
117 {0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0},
118 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
119 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
121 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
128 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
129 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
130 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
131 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
132 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
133 {0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
134 {0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
135 {0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
136 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0},
137 {0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 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, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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, 1, 2, 3, 2, 1, 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},
143 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
155 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
156 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
157 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
161 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
162 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
163 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
165 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
172 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
173 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
174 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 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, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
178 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
179 {0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
180 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 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, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
183 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
184 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
185 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
187 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
196 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
197 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0},
198 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0},
199 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0},
200 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
201 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
202 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0},
203 {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
204 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
205 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
206 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
207 {0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 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},
209 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
216 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
217 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
218 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 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, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
221 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 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, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
224 {0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 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, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
227 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
228 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
229 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
231 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
238 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
239 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
240 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 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, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
243 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
244 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0},
245 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0},
249 {0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0},
250 {0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0},
251 {0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
253 {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, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 2, 1, 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, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 2, 1, 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},
275 {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, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 2, 1, 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, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
294 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
295 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 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},
297 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 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},
319 {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},
341 {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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
348 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
349 {0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0},
350 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 3, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
351 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 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, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0},
354 {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0},
355 {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 3, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0},
356 {0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0},
357 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 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},
363 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
367 static char bcd[] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'0',
'0',
'0',
'0',
'0',
'0'};
368 static char hexChar[] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
'E',
'F'};
377 _bInitialized =
false;
383 SetRP188 (ulFrms, ulSecs, ulMins, ulHrs, tcFormat);
389 SetRP188 (rp188, tcFormat);
395 SetRP188 (inRP188, tcFormat);
401 SetRP188(sRP188, tcFormat);
407 SetRP188 (frames, tcFormat);
413 if (_pCharRenderMap !=
NULL)
414 free(_pCharRenderMap);
420 _pCharRenderMap =
NULL;
422 _bInitialized =
false;
443 if ( (_ulVal[0] == sVal[0]) && (_ulVal[1] == sVal[1]) && (_ulVal[2] == sVal[2]) && (_ulVal[3] == sVal[3]) )
468 _tcFormat = tcFormat;
470 if (rp188.
DBB == 0xffffffff)
475 _bDropFrameFlag = (TC0_31 >> 10) & 0x01;
477 if ( FormatIs60_50fps(_tcFormat) )
480 bool bFieldID = (FormatIsPAL(_tcFormat) ? ((TC32_63 &
BIT_27) != 0) : ((TC0_31 &
BIT_27) != 0) );
481 int numFrames = (((((TC0_31>>8)&0x3) * 10) + (TC0_31&0xF)) * 2) + (int)bFieldID;
482 unitFrames =
bcd[numFrames % 10];
483 tensFrames =
bcd[numFrames / 10];
487 unitFrames =
bcd[(TC0_31 )&0xF];
488 tensFrames =
bcd[(TC0_31>>8)&0x3];
490 unitSeconds =
bcd[(TC0_31>>16)&0xF];
491 tensSeconds =
bcd[(TC0_31>>24)&0x7];
493 unitMinutes =
bcd[(TC32_63 )&0xF];
494 tensMinutes =
bcd[(TC32_63>> 8)&0x7];
495 unitHours =
bcd[(TC32_63>>16)&0xF];
496 tensHours =
bcd[(TC32_63>>24)&0x3];
498 _ulVal[0] = (unitFrames-0x30)+((tensFrames-0x30)*10);
499 _ulVal[1] = (unitSeconds-0x30)+((tensSeconds-0x30)*10);
500 _ulVal[2] = (unitMinutes-0x30)+((tensMinutes-0x30)*10);
501 _ulVal[3] = (unitHours-0x30)+((tensHours-0x30)*10);
503 char timecodeString[12];
504 timecodeString[0] = tensHours;
505 timecodeString[1] = unitHours;
506 timecodeString[2] =
':';
507 timecodeString[3] = tensMinutes;
508 timecodeString[4] = unitMinutes;
509 timecodeString[5] =
':';
510 timecodeString[6] = tensSeconds;
511 timecodeString[7] = unitSeconds;
514 timecodeString[8] =
';';
518 timecodeString[8] =
':';
520 timecodeString[9] = tensFrames;
521 timecodeString[10] = unitFrames;
522 timecodeString[11] =
'\0';
524 _sHMSF = timecodeString;
530 _bInitialized =
true;
535 _bVaricamActiveF0 = (TC0_31 >> 5) & 0x01;
536 _bVaricamActiveF1 = (TC0_31 >> 4) & 0x01;
538 _bDropFrameFlag = (TC0_31 >> 10) & 0x01;
539 _bColorFrameFlag = (TC0_31 >> 11) & 0x01;
541 _varicamRate = (_ulUserBits[3] * 10) + _ulUserBits[2];
543 if ( FormatIsPAL(_tcFormat) )
545 _fieldID = (TC32_63 >> 27) & 0x01;
549 _fieldID = (TC0_31 >> 27) & 0x01;
557 SetRP188 (tmpRP188, inFormat);
564 _tcFormat = tcFormat;
570 SetRP188(_ulVal[0], _ulVal[1], _ulVal[2], _ulVal[3], _tcFormat);
577 _tcFormat = tcFormat;
579 ULWord ulHrs, ulMins, ulSecs, ulFrms;
581 ConvertFrameCount(frames, _tcFormat, ulHrs, ulMins, ulSecs, ulFrms);
583 SetRP188(ulFrms, ulSecs, ulMins, ulHrs, _tcFormat);
588 NTV2FrameRate frameRate,
const bool bDropFrame,
const bool bSMPTE372)
624 SetRP188(ulFrms, ulSecs, ulMins, ulHrs, tcFormat);
634 _tcFormat = tcFormat;
636 bool bDropFrame = FormatIsDropFrame(_tcFormat);
638 ULWord framesPerSecond = FramesPerSecond(_tcFormat);
641 if (ulFrms >= framesPerSecond)
643 ulSecs += ulFrms / framesPerSecond;
644 ulFrms %= framesPerSecond;
649 ulMins += ulSecs / 60;
655 ulHrs += ulMins / 60;
669 if ( (ulSecs == 0) && ((ulFrms == 0) || (ulFrms == 1)) )
671 if ((ulMins % 10) != 0)
686 if ( (ulSecs == 0) && ((ulFrms == 0) || (ulFrms == 1) || (ulFrms == 2) || (ulFrms == 3)) )
688 if ((ulMins % 10) != 0)
703 char timeCodeString[80];
705 sprintf(timeCodeString,
"%02d:%02d:%02d;%02d", ulHrs, ulMins, ulSecs, ulFrms);
707 sprintf(timeCodeString,
"%02d:%02d:%02d:%02d", ulHrs, ulMins, ulSecs, ulFrms);
709 _sHMSF = timeCodeString;
714 _bInitialized =
true;
716 SetVaricamFrameActive(
false, 0);
717 SetVaricamFrameActive(
false, 1);
719 SetDropFrame(bDropFrame);
720 SetColorFrame(
false);
721 SetVaricamRate( DefaultFrameRateForTimecodeFormat(_tcFormat) );
723 if ( !FormatIs60_50fps(_tcFormat) )
726 SetBFGBits(
false,
false,
false);
737 _bDropFrameFlag = bDropFrameFlag;
738 if (bDropFrameFlag ==
true)
747 _bColorFrameFlag = bColorFrameFlag;
748 if (bColorFrameFlag ==
true)
758 _bVaricamActiveF0 = bVaricamActive;
762 _rp188.Low &= ~
BIT_5;
766 _bVaricamActiveF1 = bVaricamActive;
770 _rp188.Low &= ~
BIT_4;
815 _rp188.Low &= 0x0F0FFFFF;
816 _rp188.Low |= (rate & 0x0f) << 20;
817 _rp188.Low |= (rate & 0xf0) << 24;
825 if ( FormatIsPAL(_tcFormat) )
843 bool bResult = (_fieldID != 0);
845 if ( FormatIsPAL(_tcFormat) )
846 bResult = ((_rp188.High &
BIT_27) != 0);
848 bResult = ((_rp188.Low &
BIT_27) != 0);
862 if ( FormatIsPAL(_tcFormat) )
891 _rp188.DBB = (_rp188.DBB & ~0xFF000000) | (src << 24);
897 ULWord val = (_rp188.DBB & 0xFF000000) >> 24;
903 _rp188.DBB = (_rp188.DBB & ~0x000000FF) | (src);
909 ULWord val = (_rp188.DBB & 0x000000FF);
921 return _bInitialized;
926 return ( _sHMSF.c_str() );
932 return _bInitialized;
938 return _bInitialized;
944 return _bInitialized;
950 return _bInitialized;
955 ConvertTimecode (frameCount, _tcFormat, _ulVal[3], _ulVal[2], _ulVal[1], _ulVal[0]);
957 return _bInitialized;
965 if (!FormatIsDropFrame(format) )
968 int mins = (60 * hours) + minutes;
969 int secs = (60 * mins) + seconds;
970 frms = (FramesPerSecond(format) * secs) + frames;
975 ULWord framesPerSec = FramesPerSecond(format);
976 ULWord framesPerMin = framesPerSec * 60;
979 ULWord dropFramesPerSec = framesPerSec - droppedFrames;
980 ULWord dropframesPerMin = (59 * framesPerSec) + dropFramesPerSec;
981 ULWord dropframesPerTenMin = (9 * dropframesPerMin) + framesPerMin;
982 ULWord dropframesPerHr = dropframesPerTenMin * 6;
984 frms = hours * dropframesPerHr;
986 int tenMins = minutes / 10;
987 frms += tenMins * dropframesPerTenMin;
989 int mins = minutes % 10;
992 frms += framesPerMin;
995 frms += mins * dropframesPerMin;
1001 if (_ulVal[2] % 10 != 0)
1003 frms += dropFramesPerSec;
1007 frms += secs * framesPerSec;
1010 if (seconds == 0 && minutes % 10 != 0)
1012 if (frames >= droppedFrames)
1013 frms += (frames - droppedFrames);
1029 ULWord framesPerSec = FramesPerSecond(format);
1030 ULWord framesPerMin = framesPerSec * 60;
1031 ULWord framesPerHr = framesPerMin * 60;
1032 ULWord framesPerDay = framesPerHr * 24;
1034 if ( !FormatIsDropFrame(format) )
1038 frameCount = frameCount % framesPerDay;
1041 hours = frameCount / framesPerHr;
1042 frameCount = frameCount % framesPerHr;
1045 minutes = frameCount / framesPerMin;
1046 frameCount = frameCount % framesPerMin;
1049 seconds = frameCount / framesPerSec;
1052 frames = frameCount % framesPerSec;
1059 ULWord dropFramesPerSec = framesPerSec - droppedFrames;
1060 ULWord dropframesPerMin = (59 * framesPerSec) + dropFramesPerSec;
1061 ULWord dropframesPerTenMin = (9 * dropframesPerMin) + framesPerMin;
1062 ULWord dropframesPerHr = dropframesPerTenMin * 6;
1063 ULWord dropframesPerDay = dropframesPerHr * 24;
1066 frameCount = frameCount % dropframesPerDay;
1069 hours = frameCount / dropframesPerHr;
1070 frameCount = frameCount % dropframesPerHr;
1073 minutes = 10 * (frameCount / dropframesPerTenMin);
1074 frameCount = frameCount % dropframesPerTenMin;
1077 if (frameCount >= framesPerMin)
1080 frameCount = frameCount - framesPerMin;
1083 minutes += frameCount / dropframesPerMin;
1084 frameCount = frameCount % dropframesPerMin;
1089 if (minutes % 10 == 0)
1092 seconds = frameCount / framesPerSec;
1093 frameCount = frameCount % framesPerSec;
1099 if (frameCount >= dropFramesPerSec)
1102 frameCount = frameCount - dropFramesPerSec;
1105 seconds += frameCount / framesPerSec;
1106 frameCount = frameCount % framesPerSec;
1111 frames = frameCount;
1114 if ( (seconds == 0) && (minutes % 10 != 0))
1115 frames += droppedFrames;
1124 ULWord currentFrameCount, newFrameCount;
1125 GetFrameCount(currentFrameCount);
1128 newFrameCount = currentFrameCount + frameCount;
1131 newFrameCount = newFrameCount % MaxFramesPerDay();
1133 SetRP188 (newFrameCount, _tcFormat);
1135 return newFrameCount;
1143 ULWord currentFrameCount, newFrameCount;
1144 GetFrameCount(currentFrameCount);
1147 ULWord maxFrames = MaxFramesPerDay();
1148 ULWord subAmt = frameCount % maxFrames;
1150 if (subAmt <= currentFrameCount)
1151 newFrameCount = currentFrameCount - subAmt;
1153 newFrameCount = maxFrames - (subAmt - currentFrameCount);
1155 SetRP188 (newFrameCount, _tcFormat);
1157 return newFrameCount;
1169 ULWord framesPerSec = FramesPerSecond(format);
1170 ULWord framesPerMin = framesPerSec * 60;
1172 if ( !FormatIsDropFrame(format) )
1175 ULWord framesPerHr = framesPerMin * 60;
1176 result = framesPerHr * 24;
1181 ULWord dropframesPerMin = framesPerMin - droppedFrames;
1182 ULWord dropframesPerTenMin = (9 * dropframesPerMin) + framesPerMin;
1183 ULWord dropframesPerHr = dropframesPerTenMin * 6;
1184 result = dropframesPerHr * 24;
1195 bool bResult =
false;
1211 bool bResult =
false;
1230 bool bResult =
false;
1244 return _bInitialized;
1250 return _bInitialized;
1258 sRP188UB = _sUserBits;
1259 return _bInitialized;
1267 return ( _sUserBits.c_str() );
1278 if ( (smpteNum >= 1) && (smpteNum <= 8) )
1279 result = _ulUserBits[smpteNum-1];
1287 if ( (smpteNum >= 1) && (smpteNum <= 8) )
1289 _ulUserBits[smpteNum-1] = bits;
1293 ULWord newBits = _rp188.Low;
1294 ULWord shift = (smpteNum-1) * 8 + 4;
1296 newBits &= ~(0xF << shift);
1297 _rp188.Low = newBits | ((bits & 0xF) << shift);
1301 ULWord newBits = _rp188.High;
1302 ULWord shift = (smpteNum-5) * 8 + 4;
1304 newBits &= ~(0xF << shift);
1305 _rp188.High = newBits | ((bits & 0xF) << shift);
1316 _ulUserBits[7] = (bits >> 28) & 0xF;
1317 _ulUserBits[6] = (bits >> 24) & 0xF;
1318 _ulUserBits[5] = (bits >> 20) & 0xF;
1319 _ulUserBits[4] = (bits >> 16) & 0xF;
1320 _ulUserBits[3] = (bits >> 12) & 0xF;
1321 _ulUserBits[2] = (bits >> 8) & 0xF;
1322 _ulUserBits[1] = (bits >> 4) & 0xF;
1323 _ulUserBits[0] = (bits >> 0) & 0xF;
1325 ULWord newHigh = _rp188.High & 0x0F0F0F0F;
1326 ULWord newLow = _rp188.Low & 0x0F0F0F0F;
1328 newHigh |= ((bits & 0xF0000000) >> 0) |
1329 ((bits & 0x0F000000) >> 4) |
1330 ((bits & 0x00F00000) >> 8) |
1331 ((bits & 0x000F0000) >> 12);
1332 newLow |= ((bits & 0x0000F000) << 16) |
1333 ((bits & 0x00000F00) << 12) |
1334 ((bits & 0x000000F0) << 8) |
1335 ((bits & 0x0000000F) << 4);
1337 _rp188.High = newHigh;
1338 _rp188.Low = newLow;
1348 if ( (smpteUDW >= 1) && (smpteUDW <= 16) )
1350 int index = smpteUDW - 1;
1353 result = (_rp188.Low >> (4 * index)) & 0x0F;
1355 result = (_rp188.High >> (4 * (index-8))) & 0x0F;
1365 return ( (BinaryGroup(4) * 10) + BinaryGroup(3) );
1388 default: fps = 30;
break;
1428 void CRP188::ConvertTcStrToVal (
void)
1431 for (
int i = 0; i < 4; i++)
1434 string s(_sHMSF, iOff, 2);
1436 istringstream ist(s);
1438 ist >> _ulVal[3 - i];
1442 void CRP188::ConvertTcStrToReg (
void)
1444 memset ((
void *) &_rp188, 0,
sizeof(_rp188));
1448 int iOff = 0, iSingle;
1449 pcBuf[0] = _sHMSF[iOff];
1451 sscanf (pcBuf,
"%d", &iSingle);
1452 _rp188.High |= (iSingle & 0x3) << 24;
1456 pcBuf[0] = _sHMSF[iOff];
1457 sscanf (pcBuf,
"%d", &iSingle);
1458 _rp188.High |= (iSingle & 0xF) << 16;
1462 pcBuf[0] = _sHMSF[iOff];
1463 sscanf (pcBuf,
"%d", &iSingle);
1464 _rp188.High |= (iSingle & 0x7) << 8;
1468 pcBuf[0] = _sHMSF[iOff];
1469 sscanf (pcBuf,
"%d", &iSingle);
1470 _rp188.High |= (iSingle & 0xF);
1474 pcBuf[0] = _sHMSF[iOff];
1475 sscanf (pcBuf,
"%d", &iSingle);
1476 _rp188.Low |= (iSingle & 0x7) << 24;
1480 pcBuf[0] = _sHMSF[iOff];
1481 sscanf (pcBuf,
"%d", &iSingle);
1482 _rp188.Low |= (iSingle & 0xF) << 16;
1484 if ( !FormatIs60_50fps() )
1488 pcBuf[0] = _sHMSF[iOff];
1489 sscanf (pcBuf,
"%d", &iSingle);
1490 _rp188.Low |= (iSingle & 0x3) << 8;
1494 pcBuf[0] = _sHMSF[iOff];
1495 sscanf (pcBuf,
"%d", &iSingle);
1496 _rp188.Low |= (iSingle & 0xF);
1505 pcBuf[0] = _sHMSF[iOff];
1506 sscanf (pcBuf,
"%d", &iTens);
1511 pcBuf[0] = _sHMSF[iOff];
1512 sscanf (pcBuf,
"%d", &iUnits);
1514 ULWord frameCount = (10 * iTens) + iUnits;
1515 if (frameCount >= FramesPerSecond())
1516 frameCount = FramesPerSecond() - 1;
1519 SetFieldID(frameCount % 2);
1522 _rp188.Low |= ((frameCount / 10) & 0x3) << 8;
1523 _rp188.Low |= ((frameCount % 10) & 0xF) ;
1527 void CRP188::RP188ToUserBits (
void)
1529 char userBitsString[12];
1531 _ulUserBits[7] = (_rp188.High >> 28) & 0xF;
1532 userBitsString[0] =
hexChar[_ulUserBits[7]];
1534 _ulUserBits[6] = (_rp188.High >> 20) & 0xF;
1535 userBitsString[1] =
hexChar[_ulUserBits[6]];
1536 userBitsString[2] =
' ';
1538 _ulUserBits[5] = (_rp188.High >> 12) & 0xF;
1539 userBitsString[3] =
hexChar[_ulUserBits[5]];
1541 _ulUserBits[4] = (_rp188.High >> 4) & 0xF;
1542 userBitsString[4] =
hexChar[_ulUserBits[4]];
1543 userBitsString[5] =
' ';
1545 _ulUserBits[3] = (_rp188.Low >> 28) & 0xF;
1546 userBitsString[6] =
hexChar[_ulUserBits[3]];
1548 _ulUserBits[2] = (_rp188.Low >> 20) & 0xF;
1549 userBitsString[7] =
hexChar[_ulUserBits[2]];
1550 userBitsString[8] =
' ';
1552 _ulUserBits[1] = (_rp188.Low >> 12) & 0xF;
1553 userBitsString[9] =
hexChar[_ulUserBits[1]];
1555 _ulUserBits[0] = (_rp188.Low >> 4) & 0xF;
1556 userBitsString[10] =
hexChar[_ulUserBits[0]];
1557 userBitsString[11] =
'\0';
1559 _sUserBits = userBitsString;
1566 bool bResult =
true;
1569 if (_bRendered && _pCharRenderMap !=
NULL && frameBufferFormat == _charRenderFBF && frameDimensions.Height() == _charRenderHeight && frameDimensions.Width() == _charRenderWidth)
1577 bool bFormatOK (
true);
1578 int bytesPerPixel (0);
1579 switch (frameBufferFormat)
1601 default: bFormatOK =
false;
1609 if (frameDimensions.Height() > 900)
1611 else if (frameDimensions.Height() > 650)
1614 int dotWidth = 1 * dotScale;
1615 int dotHeight = 2 * dotScale;
1618 if (frameDimensions.Height() > 900 && frameDimensions.Width() <= 1440)
1631 if (_pCharRenderMap !=
NULL)
1633 free(_pCharRenderMap);
1634 _pCharRenderMap =
NULL;
1638 _pCharRenderMap = (
char*)malloc(
kMaxTCChars * charWidthBytes * charHeightLines);
1639 if (_pCharRenderMap !=
NULL)
1641 char *pRenderMap = _pCharRenderMap;
1650 for (
int ydup = 0; ydup < dotHeight; ydup++)
1662 case 0: val = char(0x040 >> 2);
break;
1663 case 1: val = char(0x164 >> 2);
break;
1664 case 2: val = char(0x288 >> 2);
break;
1665 case 3: val = char(0x3AC >> 2);
break;
1669 for (
int xdup = 0; xdup < dotWidth; xdup++)
1671 *pRenderMap++ = char(0x80);
1672 *pRenderMap++ = val;
1681 case 0: val = 0x040;
break;
1682 case 1: val = 0x164;
break;
1683 case 2: val = 0x288;
break;
1684 case 3: val = 0x3AC;
break;
1688 for (
int xdup = 0; xdup < dotWidth; xdup++)
1690 writeV210Pixel (&pRenderMap, ((x * dotWidth) + xdup), 0x200, val);
1699 case 0: val = (char)0x00;
break;
1700 case 1: val = (char)0x55;
break;
1701 case 2: val = (char)0xaa;
break;
1702 case 3: val = (char)0xff;
break;
1706 for (
int xdup = 0; xdup < dotWidth; xdup++)
1709 *pRenderMap++ = val;
1710 *pRenderMap++ = val;
1711 *pRenderMap++ = val;
1720 case 0: val = (char)0x00;
break;
1721 case 1: val = (char)0x55;
break;
1722 case 2: val = (char)0xaa;
break;
1723 case 3: val = (char)0xff;
break;
1727 for (
int xdup = 0; xdup < dotWidth; xdup++)
1730 *pRenderMap++ = val;
1731 *pRenderMap++ = val;
1732 *pRenderMap++ = val;
1741 case 0: val = 64;
break;
1742 case 1: val = 356;
break;
1743 case 2: val = 648;
break;
1744 case 3: val = 940;
break;
1748 for (
int xdup = 0; xdup < dotWidth; xdup++)
1750 *pRenderMap++ = ((val & 0x3fc) >> 2);
1751 *pRenderMap++ = ((val & 0x003) << 6) | ((val & 0x3f0) >> 4);
1752 *pRenderMap++ = ((val & 0x00f) << 4) | ((val & 0x3c0) >> 6);
1753 *pRenderMap++ = ((val & 0x03f) << 2);
1762 _charRenderFBF = frameBufferFormat;
1763 _charRenderHeight = frameDimensions.Height();
1764 _charRenderWidth = frameDimensions.Width();
1767 _charWidthBytes = charWidthBytes;
1768 _charHeightLines = charHeightLines;
1771 int byteWidth = (frameDimensions.Width() * bytesPerPixel);
1773 byteWidth = (frameDimensions.Width() * 16) / 6;
1775 _charPositionX = (byteWidth - (
kNumBurnInChars * charWidthBytes)) / 2;
1778 _charPositionY = (frameDimensions.Height() * 8) / 10;
1782 _charPositionY = (frameDimensions.Height() * percentY) / 100;
1787 _charPositionX &= ~0x0f;
1804 char *p = *pBytePtr;
1811 int cadence = x % 3;
1817 p[1] = (( y & 0x03F) << 2) + (( c & 0x300) >> 8);
1818 p[2] = (p[2] & 0x0F0) + (( y & 0x3C0) >> 6);
1822 p[2] = (( c & 0x00F) << 4) + (p[2] & 0x00F);
1823 p[3] = (( c & 0x3F0) >> 4);
1825 p[5] = (p[5] & 0x0FC) + (( y & 0x300) >> 8);
1830 p[1] = (( c & 0x03F) << 2) + (p[1] & 0x003);
1831 p[2] = (( y & 0x00F) << 4) + (( c & 0x3C0) >> 6);
1832 p[3] = (( y & 0x3F0) >> 4);
1841 int val, char1, char2, trailingChar =
kMaxTCChars;
1842 int charSizeBytes = _charWidthBytes * _charHeightLines;
1846 char *pFrameBuff = pBaseVideoAddress + (_charPositionY * rowBytes) + _charPositionX;
1850 for (
int dig = 0; dig < 4; dig++)
1854 char1 = BinaryGroup(8 - (2*dig));
1855 char2 = BinaryGroup(7 - (2*dig));
1859 val = _ulVal[3-dig];
1865 && FormatIs60_50fps(_tcFormat)
1866 && bDisplay60_50fpsAs30_25 )
1881 CopyDigit ( (_pCharRenderMap + (char1 * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1882 pFrameBuff += _charWidthBytes;
1885 CopyDigit ( (_pCharRenderMap + (char2 * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1886 pFrameBuff += _charWidthBytes;
1891 if (dig == 2 && FormatIsDropFrame() )
1892 CopyDigit ( (_pCharRenderMap + (
kDigSemicolon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1894 CopyDigit ( (_pCharRenderMap + (
kDigColon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1895 pFrameBuff += _charWidthBytes;
1900 if (trailingChar >= 0 && trailingChar <
kMaxTCChars)
1902 CopyDigit ( (_pCharRenderMap + (trailingChar * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1903 pFrameBuff += _charWidthBytes;
1909 for (
int dig = 0; dig < 4; dig++)
1912 CopyDigit ( (_pCharRenderMap + (
kDigDash * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1913 pFrameBuff += _charWidthBytes;
1915 CopyDigit ( (_pCharRenderMap + (
kDigDash * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1916 pFrameBuff += _charWidthBytes;
1920 if (dig == 2 && FormatIsDropFrame() )
1921 CopyDigit ( (_pCharRenderMap + (
kDigColon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1923 CopyDigit ( (_pCharRenderMap + (
kDigColon * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1924 pFrameBuff += _charWidthBytes;
1936 int64_t count = frameCount;
1937 int64_t scale = 1000000000;
1944 GetFrameCount(tmpCount);
1952 for (i = 0; i < numSpaces; i++)
1955 if (i == numSpaces-1)
1958 CopyDigit ( (_pCharRenderMap + (
kDigSpace * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1961 CopyDigit ( (_pCharRenderMap + (
kDigDash * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1964 pFrameBuff += _charWidthBytes;
1968 CopyDigit ( (_pCharRenderMap + (
kDigSpace * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1969 pFrameBuff += _charWidthBytes;
1974 count = count % scale;
1976 for (
int dig = 0; dig < maxDigits; dig++)
1980 char1 = int(count / scale);
1981 CopyDigit ( (_pCharRenderMap + (char1 * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1982 pFrameBuff += _charWidthBytes;
1984 count -= (scale * char1);
1988 for ( i = 0; i < numSpaces; i++)
1990 CopyDigit ( (_pCharRenderMap + (
kDigSpace * charSizeBytes)), _charWidthBytes, _charHeightLines, pFrameBuff, rowBytes);
1991 pFrameBuff += _charWidthBytes;
1996 return _bInitialized & _bRendered;
1999 void CRP188::CopyDigit (
char *pDigit,
int digitWidth,
int digitHeight,
char *pFrameBuff,
int fbRowBytes)
2001 for (
int y = 0; y < digitHeight; y++)
2003 char *pSrc = (pDigit + (y * digitWidth));
2004 char *pDst = (pFrameBuff + (y * fbRowBytes));
2006 memcpy(pDst, pSrc, digitWidth);
2015 int val, char1, char2, trailingChar =
kMaxTCChars;
2017 for (
int dig = 0; dig < 4; dig++)
2021 val = _ulVal[3-dig];
2027 && FormatIs60_50fps(_tcFormat)
2028 && bDisplay60_50fpsAs30_25 )
2043 result +=
'0' + char1;
2048 result +=
'0' + char2;
2055 if (dig == 2 && FormatIsDropFrame() )
2069 if (trailingChar >= 0 && trailingChar <
kMaxTCChars)
2071 result +=
'0' + trailingChar;
2085 outputStream << result;
2086 return outputStream;
2091 #pragma warning(default: 4800)