Koraidon

Форк
0
/
blit.c 
29 строк · 846.0 Байт
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
9
void 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) {
10
	size_t bytes_pp = bpp >> 3;
11

12
	if(!(bytes_pp == 4 || bytes_pp == 3)) {
13
		return;
14
	}
15

16
	for(size_t sy = y; sy < y + h; sy++) {
17
		for(size_t sx = x; sx < x + w; sx++) {
18
			uint32_t outcoords = sy * (w * bytes_pp) + (bytes_pp * sx);
19
			uint32_t srccoords = (sy - y) * (bytes_pp * w) + ((sx - x) * bytes_pp);
20

21
			buffer.buffer[outcoords + 0] = input_image[srccoords + 0];
22
			buffer.buffer[outcoords + 1] = input_image[srccoords + 1];
23
			buffer.buffer[outcoords + 2] = input_image[srccoords + 2];
24

25
			if(bytes_pp == 4)
26
				buffer.buffer[outcoords + 3] = input_image[srccoords + 3];
27
		}
28
	}
29
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.