MCPcopy Create free account
hub / github.com/diasurgical/devilution / RenderLine

Function RenderLine

Source/render.cpp:92–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90};
91
92inline static void RenderLine(BYTE **dst, BYTE **src, int n, BYTE *tbl, DWORD mask)
93{
94 int i;
95
96#ifdef NO_OVERDRAW
97 if (*dst < gpBufStart || *dst > gpBufEnd) {
98 *src += n;
99 *dst += n;
100 return;
101 }
102#endif
103
104 if (mask == 0xFFFFFFFF) {
105 if (light_table_index == lightmax) {
106 memset(*dst, 0, n);
107 (*src) += n;
108 (*dst) += n;
109 } else if (light_table_index == 0) {
110 memcpy(*dst, *src, n);
111 (*src) += n;
112 (*dst) += n;
113 } else {
114 for (i = 0; i < n; i++, (*src)++, (*dst)++) {
115 (*dst)[0] = tbl[(*src)[0]];
116 }
117 }
118 } else {
119 if (light_table_index == lightmax) {
120 (*src) += n;
121 for (i = 0; i < n; i++, (*dst)++, mask <<= 1) {
122 if (mask & 0x80000000) {
123 (*dst)[0] = 0;
124 }
125 }
126 } else if (light_table_index == 0) {
127 for (i = 0; i < n; i++, (*src)++, (*dst)++, mask <<= 1) {
128 if (mask & 0x80000000) {
129 (*dst)[0] = (*src)[0];
130 }
131 }
132 } else {
133 for (i = 0; i < n; i++, (*src)++, (*dst)++, mask <<= 1) {
134 if (mask & 0x80000000) {
135 (*dst)[0] = tbl[(*src)[0]];
136 }
137 }
138 }
139 }
140}
141
142#if defined(__clang__) || defined(__GNUC__)
143__attribute__((no_sanitize("shift-base")))

Callers 1

RenderTileFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected