Seperated chart from box; fixed kkr segfault.
This commit is contained in:
35
box.c
35
box.c
@@ -73,7 +73,6 @@ draw_rectangle(double fx, double fy, double fwidth, double fheight)
|
||||
static void
|
||||
draw_chart(struct box *chart, double x, double y, double width, double height)
|
||||
{
|
||||
char c = '@';
|
||||
long int actual_diff;
|
||||
double diff, price;
|
||||
enum ui_color color;
|
||||
@@ -89,23 +88,11 @@ draw_chart(struct box *chart, double x, double y, double width, double height)
|
||||
actual_diff = 0;
|
||||
|
||||
for (size_t i = 0; i < width; i++) {
|
||||
diff = (double)rand() / RAND_MAX - 0.6;
|
||||
actual_diff = (size_t)(height + y - price)
|
||||
- (size_t)(height + y - (price + diff));
|
||||
price = chart->chart->prices[i];
|
||||
|
||||
if (actual_diff > 0) {
|
||||
color = UI_GREEN;
|
||||
} else if (actual_diff == 0) {
|
||||
color = UI_NONE;
|
||||
} else if (actual_diff < 0) {
|
||||
color = UI_RED;
|
||||
}
|
||||
|
||||
ui_color_on(color);
|
||||
ui_char(x + i, height + y - price, c);
|
||||
ui_color_off(color);
|
||||
|
||||
price += diff;
|
||||
ui_color_on(UI_BLUE);
|
||||
ui_char(x + i, height + y - price, '@');
|
||||
ui_color_off(UI_BLUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,16 +150,16 @@ draw_container(struct box *b, double x, double y, double width, double height)
|
||||
|
||||
|
||||
struct box *
|
||||
new_chart_box(void)
|
||||
new_chart_box(struct chart *chart)
|
||||
{
|
||||
struct box *chart = malloc(sizeof(struct box));
|
||||
struct box *box = malloc(sizeof(struct box));
|
||||
|
||||
chart->type = BOX_CHART;
|
||||
chart->prices = emalloc(sizeof(double) * 100);
|
||||
chart->fills = 1;
|
||||
chart->color = UI_NONE;
|
||||
box->type = BOX_CHART;
|
||||
box->chart = chart;
|
||||
box->fills = 1;
|
||||
box->color = UI_NONE;
|
||||
|
||||
return chart;
|
||||
return box;
|
||||
}
|
||||
|
||||
|
||||
|
||||
18
box.h
18
box.h
@@ -8,6 +8,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "chart.h"
|
||||
#include "ui.h"
|
||||
|
||||
|
||||
@@ -27,18 +28,13 @@ struct box {
|
||||
/* button */
|
||||
char *name;
|
||||
|
||||
/* chart and vertical/horizontal box */
|
||||
/* chart */
|
||||
struct chart *chart;
|
||||
|
||||
/* vertical/horizontal */
|
||||
struct {
|
||||
/* chart and vertical/horizontal box */
|
||||
size_t length;
|
||||
|
||||
union {
|
||||
/* vertical/horizontal box */
|
||||
struct box **children;
|
||||
|
||||
/* chart */
|
||||
double *prices;
|
||||
};
|
||||
struct box **children;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -47,7 +43,7 @@ struct box {
|
||||
struct box *new_button_box(char *name);
|
||||
struct box *new_vertical_box(void);
|
||||
struct box *new_horizontal_box(void);
|
||||
struct box *new_chart_box(void);
|
||||
struct box *new_chart_box(struct chart *);
|
||||
|
||||
void append_box(struct box *parent, struct box *child);
|
||||
|
||||
|
||||
32
chart.c
Normal file
32
chart.c
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) Artsiom D.
|
||||
* Copyright (C) shit-co.de
|
||||
*/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "chart.h"
|
||||
#include "util.h"
|
||||
|
||||
|
||||
struct chart new_chart(unsigned int length)
|
||||
{
|
||||
unsigned int i;
|
||||
double price;
|
||||
struct chart chart;
|
||||
|
||||
chart.prices = emalloc(sizeof(double) * length);
|
||||
chart.length = length;
|
||||
|
||||
/* populate with random prices */
|
||||
|
||||
price = 10;
|
||||
|
||||
for (i = 0; i < length; i++) {
|
||||
chart.prices[i] = price;
|
||||
price += (double)rand() / RAND_MAX - 0.4;
|
||||
}
|
||||
|
||||
return chart;
|
||||
}
|
||||
17
chart.h
Normal file
17
chart.h
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) Artsiom D.
|
||||
* Copyright (C) shit-co.de
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
struct chart {
|
||||
double *prices;
|
||||
unsigned int length;
|
||||
};
|
||||
|
||||
|
||||
struct chart new_chart(unsigned int length);
|
||||
9
main.c
9
main.c
@@ -16,7 +16,9 @@
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
struct box *ui, *top, *bottom, *left, *right, *buy, *sell, *scam, *title, *desc;
|
||||
struct box *ui, *top, *bottom, *left, *right, *buy, *sell, *scam,
|
||||
*title, *desc;
|
||||
struct chart chart;
|
||||
|
||||
ui_init();
|
||||
|
||||
@@ -27,7 +29,8 @@ main(void)
|
||||
append_box(top, title);
|
||||
append_box(top, desc);
|
||||
|
||||
left = new_chart_box();
|
||||
chart = new_chart(400);
|
||||
left = new_chart_box(&chart);
|
||||
left->fills = 5;
|
||||
|
||||
buy = new_button_box("buy");
|
||||
@@ -51,7 +54,7 @@ main(void)
|
||||
append_box(ui, top);
|
||||
append_box(ui, bottom);
|
||||
|
||||
draw_box(ui, 0, 0, ui_width()-1, ui_height()-1);
|
||||
draw_box(ui, 0, 0, ui_width(), ui_height());
|
||||
|
||||
ui_refresh();
|
||||
|
||||
|
||||
7
makefile
7
makefile
@@ -1,11 +1,12 @@
|
||||
CFLAGS = -std=c23 -Wextra -pedantic -Wall -pedantic
|
||||
LDFLAGS = -lncurses
|
||||
CFLAGS = -std=c23 -Wextra -pedantic -Wall -O0 -g3 -fsanitize=address
|
||||
LDFLAGS = -lncurses -fsanitize=address
|
||||
|
||||
main: box.o main.o ui.o util.o
|
||||
main: box.o main.o ui.o util.o chart.o
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
box.o: box.c
|
||||
chart.o: chart.c
|
||||
main.o: main.c
|
||||
ui.o: ui.c
|
||||
util.o: util.c
|
||||
|
||||
2
util.c
2
util.c
@@ -23,7 +23,7 @@ emalloc(size_t n)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
noreturn void
|
||||
die(char *fmt, ...)
|
||||
{
|
||||
va_list va;
|
||||
|
||||
Reference in New Issue
Block a user