1
0
mirror of https://github.com/OpenTTD/OpenTTD synced 2026-02-02 17:11:20 +01:00

Codechange: unify moving of pixels in the blitters

This commit is contained in:
Rubidium
2025-05-10 21:26:08 +02:00
committed by rubidium42
parent b38527ca05
commit 3cd040ffe9
6 changed files with 30 additions and 48 deletions

View File

@@ -458,11 +458,7 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
uint tw = width + (scroll_x >= 0 ? -scroll_x : scroll_x);
uint th = height - scroll_y;
for (; th > 0; th--) {
std::copy_n(src, tw, dst);
src -= this->anim_buf_pitch;
dst -= this->anim_buf_pitch;
}
Blitter::MovePixels(src, dst, tw, th, -this->anim_buf_pitch);
} else {
/* Calculate pointers */
dst = this->anim_buf + left + top * this->anim_buf_pitch;
@@ -475,15 +471,9 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
src -= scroll_x;
}
/* the y-displacement may be 0 therefore we have to use memmove,
* because source and destination may overlap */
uint tw = width + (scroll_x >= 0 ? -scroll_x : scroll_x);
uint th = height + scroll_y;
for (; th > 0; th--) {
memmove(dst, src, tw * sizeof(uint16_t));
src += this->anim_buf_pitch;
dst += this->anim_buf_pitch;
}
Blitter::MovePixels(src, dst, tw, th, this->anim_buf_pitch);
}
Blitter_32bppBase::ScrollBuffer(video, left, top, width, height, scroll_x, scroll_y);