Add draw_rect

This commit is contained in:
Alexander Batalov 2023-09-02 20:07:02 +03:00
parent 7f920fe13b
commit 84aecfa823
2 changed files with 27 additions and 0 deletions

View File

@ -1,6 +1,8 @@
#include "mapper/map_func.h"
#include "memory.h"
#include "proto.h"
#include "svga.h"
#include "window_manager.h"
namespace fallout {
@ -20,6 +22,30 @@ void copy_proto_lists()
// TODO: Incomplete.
}
// 0x4842D4
void draw_rect(Rect* rect, unsigned char color)
{
int width = rect->right - rect->left;
int height = rect->bottom - rect->top;
int max_dimension;
if (height < width) {
max_dimension = width;
} else {
max_dimension = height;
}
unsigned char* buffer = (unsigned char*)internal_malloc(max_dimension);
if (buffer != NULL) {
memset(buffer, color, max_dimension);
_scr_blit(buffer, width, 1, 0, 0, width, 1, rect->left, rect->top);
_scr_blit(buffer, 1, height, 0, 0, 1, height, rect->left, rect->top);
_scr_blit(buffer, width, 1, 0, 0, width, 1, rect->left, rect->bottom);
_scr_blit(buffer, 1, height, 0, 0, 1, height, rect->right, rect->top);
internal_free(buffer);
}
}
// 0x4843A0
void erase_rect(Rect* rect)
{

View File

@ -7,6 +7,7 @@ namespace fallout {
void setup_map_dirs();
void copy_proto_lists();
void draw_rect(Rect* rect);
void erase_rect(Rect* rect);
int toolbar_proto(int type, int id);
bool map_toggle_block_obj_viewing_on();