Koraidon
1//
2// Created by ndraey on 10.09.23.
3//
4
5#include "../../include/video/blit.h"6
7// ARGB or RGB supported
8// TODO: Test with 24-bit surfaces
9void buffer_blit(koraidon_backfb_t buffer, const char* input_image, size_t bpp, size_t x, size_t y, size_t w, size_t h) {10size_t bytes_pp = bpp >> 3;11
12if(!(bytes_pp == 4 || bytes_pp == 3)) {13return;14}15
16for(size_t sy = y; sy < y + h; sy++) {17for(size_t sx = x; sx < x + w; sx++) {18uint32_t outcoords = sy * (w * bytes_pp) + (bytes_pp * sx);19uint32_t srccoords = (sy - y) * (bytes_pp * w) + ((sx - x) * bytes_pp);20
21buffer.buffer[outcoords + 0] = input_image[srccoords + 0];22buffer.buffer[outcoords + 1] = input_image[srccoords + 1];23buffer.buffer[outcoords + 2] = input_image[srccoords + 2];24
25if(bytes_pp == 4)26buffer.buffer[outcoords + 3] = input_image[srccoords + 3];27}28}29}