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

Function scale3x_32_def_border

src/Engine/Scalers/scale3x.cpp:552–601  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

550}
551
552static inline void scale3x_32_def_border(scale3x_uint32* restrict dst, const scale3x_uint32* restrict src0, const scale3x_uint32* restrict src1, const scale3x_uint32* restrict src2, unsigned count)
553{
554 assert(count >= 2);
555
556 /* first pixel */
557 if (src0[0] != src2[0] && src1[0] != src1[1]) {
558 dst[0] = src1[0];
559 dst[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0];
560 dst[2] = src1[1] == src0[0] ? src1[1] : src1[0];
561 } else {
562 dst[0] = src1[0];
563 dst[1] = src1[0];
564 dst[2] = src1[0];
565 }
566 ++src0;
567 ++src1;
568 ++src2;
569 dst += 3;
570
571 /* central pixels */
572 count -= 2;
573 while (count) {
574 if (src0[0] != src2[0] && src1[-1] != src1[1]) {
575 dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
576 dst[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0];
577 dst[2] = src1[1] == src0[0] ? src1[1] : src1[0];
578 } else {
579 dst[0] = src1[0];
580 dst[1] = src1[0];
581 dst[2] = src1[0];
582 }
583
584 ++src0;
585 ++src1;
586 ++src2;
587 dst += 3;
588 --count;
589 }
590
591 /* last pixel */
592 if (src0[0] != src2[0] && src1[-1] != src1[0]) {
593 dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0];
594 dst[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0];
595 dst[2] = src1[0];
596 } else {
597 dst[0] = src1[0];
598 dst[1] = src1[0];
599 dst[2] = src1[0];
600 }
601}
602
603static inline void scale3x_32_def_center(scale3x_uint32* restrict dst, const scale3x_uint32* restrict src0, const scale3x_uint32* restrict src1, const scale3x_uint32* restrict src2, unsigned count)
604{

Callers 1

scale3x_32_defFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected