3
#include "video/tga_image.h"
4
#include "video/pixel.h"
5
#include "video/scaler.h"
7
#include "video/pixfmt_conv.h"
9
int tga_draw(koraidon_backfb_t framebuffer, size_t x, size_t y, const char* filename) {
10
tga_header_t* tga_header = calloc(1, sizeof(tga_header_t));
16
bool ok = tga_extract_info(filename, tga_header);
19
size_t buffer_size = tga_header->w * tga_header->h;
20
uint32_t* image_data = calloc(buffer_size, 4);
22
int errcode = tga_extract_pixels(filename, image_data);
30
for(size_t sy = 0; sy < tga_header->h; sy++) {
31
for(size_t sx = 0; sx < tga_header->w; sx++) {
32
set_pixel(framebuffer, x + sx, y + sy, image_data[(sy * tga_header->w + sx)]);
46
int tga_scale_draw(koraidon_backfb_t framebuffer, size_t x, size_t y, size_t width, size_t height, const char* filename) {
47
tga_header_t* tga_header = calloc(1, sizeof(tga_header_t));
53
bool ok = tga_extract_info(filename, tga_header);
56
size_t buffer_size = tga_header->w * tga_header->h;
57
uint32_t* image_data = calloc(buffer_size, 4);
59
int errcode = tga_extract_pixels(filename, image_data);
67
uint32_t* out_data = 0;
72
tga_header->w, tga_header->h,
77
pixfmt_conv((char*)out_data, 32, width, height, SCREEN_RGB, framebuffer.screen.pixfmt);
79
buffer_blit(framebuffer, (char*)out_data, 32, x, y, width, height);