MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / scale3x_8_def_border

Function scale3x_8_def_border

src/Engine/Scalers/scale3x.cpp:157–206  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155}
156
157static inline void scale3x_8_def_border(scale3x_uint8* restrict dst, const scale3x_uint8* restrict src0, const scale3x_uint8* restrict src1, const scale3x_uint8* restrict src2, unsigned count)
158{
159 assert(count >= 2);
160
161 /* first pixel */
162 if (src0[0] != src2[0] && src1[0] != src1[1]) {
163 dst[0] = src1[0];
164 dst[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0];
165 dst[2] = src1[1] == src0[0] ? src1[1] : src1[0];
166 } else {
167 dst[0] = src1[0];
168 dst[1] = src1[0];
169 dst[2] = src1[0];
170 }
171 ++src0;
172 ++src1;
173 ++src2;
174 dst += 3;
175
176 /* central pixels */
177 count -= 2;
178 while (count) {
179 if (src0[0] != src2[0] && src1[-1] != src1[1]) {
180 dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
181 dst[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0];
182 dst[2] = src1[1] == src0[0] ? src1[1] : src1[0];
183 } else {
184 dst[0] = src1[0];
185 dst[1] = src1[0];
186 dst[2] = src1[0];
187 }
188
189 ++src0;
190 ++src1;
191 ++src2;
192 dst += 3;
193 --count;
194 }
195
196 /* last pixel */
197 if (src0[0] != src2[0] && src1[-1] != src1[0]) {
198 dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
199 dst[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0];
200 dst[2] = src1[0];
201 } else {
202 dst[0] = src1[0];
203 dst[1] = src1[0];
204 dst[2] = src1[0];
205 }
206}
207
208static inline void scale3x_8_def_center(scale3x_uint8* restrict dst, const scale3x_uint8* restrict src0, const scale3x_uint8* restrict src1, const scale3x_uint8* restrict src2, unsigned count)
209{

Callers 1

scale3x_8_defFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected