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

Function scale3x_16_def_border

src/Engine/Scalers/scale3x.cpp:355–404  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

353}
354
355static inline void scale3x_16_def_border(scale3x_uint16* restrict dst, const scale3x_uint16* restrict src0, const scale3x_uint16* restrict src1, const scale3x_uint16* restrict src2, unsigned count)
356{
357 assert(count >= 2);
358
359 /* first pixel */
360 if (src0[0] != src2[0] && src1[0] != src1[1]) {
361 dst[0] = src1[0];
362 dst[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0];
363 dst[2] = src1[1] == src0[0] ? src1[1] : src1[0];
364 } else {
365 dst[0] = src1[0];
366 dst[1] = src1[0];
367 dst[2] = src1[0];
368 }
369 ++src0;
370 ++src1;
371 ++src2;
372 dst += 3;
373
374 /* central pixels */
375 count -= 2;
376 while (count) {
377 if (src0[0] != src2[0] && src1[-1] != src1[1]) {
378 dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
379 dst[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0];
380 dst[2] = src1[1] == src0[0] ? src1[1] : src1[0];
381 } else {
382 dst[0] = src1[0];
383 dst[1] = src1[0];
384 dst[2] = src1[0];
385 }
386
387 ++src0;
388 ++src1;
389 ++src2;
390 dst += 3;
391 --count;
392 }
393
394 /* last pixel */
395 if (src0[0] != src2[0] && src1[-1] != src1[0]) {
396 dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
397 dst[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0];
398 dst[2] = src1[0];
399 } else {
400 dst[0] = src1[0];
401 dst[1] = src1[0];
402 dst[2] = src1[0];
403 }
404}
405
406static inline void scale3x_16_def_center(scale3x_uint16* restrict dst, const scale3x_uint16* restrict src0, const scale3x_uint16* restrict src1, const scale3x_uint16* restrict src2, unsigned count)
407{

Callers 1

scale3x_16_defFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected