Add blit function

This commit is contained in:
Fierelier 2024-07-20 19:33:22 +02:00
parent 250f7f0c2f
commit d6fc64cce1

View File

@ -73,23 +73,48 @@ unigi_type_error unigi_graphics_init() {
return 0;
}
static inline void unigi_graphics_draw(unigi_type_resolution_1d_coord pixel, unigi_type_color color) {
static inline void unigi_graphics_draw(unigi_type_resolution_1d_coord index, unigi_type_color color) {
color = color & 0x0FFF;
if (unigi_platform_info_depth_bytes < 3) {
if (unigi_platform_info_depth_bytes == 1) {
unigi_platform_pixels1[pixel] = unigi_platform_palette1[color];
unigi_platform_colors1[index] = unigi_platform_palette1[color];
} else {
unigi_platform_pixels2[pixel] = unigi_platform_palette2[color];
unigi_platform_colors2[index] = unigi_platform_palette2[color];
}
} else {
if (unigi_platform_info_depth_bytes == 3) {
memcpy(
unigi_platform_pixels1 + (pixel * 3),
unigi_platform_colors1 + (index * 3),
unigi_platform_palette1 + (color * 3),
3
);
} else {
unigi_platform_pixels4[pixel] = unigi_platform_palette4[color];
unigi_platform_colors4[index] = unigi_platform_palette4[color];
}
}
}
static inline void unigi_graphics_blit(unigi_type_resolution_1d_coord index, unigi_type_color * pixels, unigi_type_resolution_1d_coord length) {
unigi_type_resolution_1d_coord i;
if (unigi_platform_info_depth_bytes == 1) {
for (i = 0; i < length; i++) {
unigi_platform_colors1[index + i] = unigi_platform_palette1[pixels[i] & 0x0FFF];
}
} else if (unigi_platform_info_depth_bytes == 2) {
for (i = 0; i < length; i++) {
unigi_platform_colors2[index + i] = unigi_platform_palette2[pixels[i] & 0x0FFF];
}
} else if (unigi_platform_info_depth_bytes == 3) {
for (i = 0; i < length; i++) {
memcpy(
unigi_platform_colors1 + ((index + i) * 3),
unigi_platform_palette1 + ((pixels[i] & 0x0FFF) * 3),
3
);
}
} else if (unigi_platform_info_depth_bytes == 4) {
for (i = 0; i < length; i++) {
unigi_platform_colors4[index + i] = unigi_platform_palette4[pixels[i] & 0x0FFF];
}
}
}