mirror of
https://github.com/kiedtl/fire.git
synced 2024-11-15 20:46:38 +00:00
options: truecolor, refresh rate
This commit is contained in:
parent
31692a9f13
commit
f1b427d6cb
5
args.h
5
args.h
@ -15,11 +15,14 @@
|
||||
#ifndef ARGS_INCLUDED
|
||||
#define ARGS_INCLUDED
|
||||
#include "bool.h"
|
||||
#include "args.h"
|
||||
#include "types.h"
|
||||
|
||||
extern char *argv0;
|
||||
|
||||
typedef struct Options {
|
||||
bool stub; // no real options... yet
|
||||
usize refresh_rate;
|
||||
bool truecolor;
|
||||
} Options;
|
||||
|
||||
/* use main(int argc, char *argv[]) */
|
||||
|
52
colors.h
52
colors.h
@ -1,27 +1,61 @@
|
||||
// colors.h: defines the colors for the fire.
|
||||
// feel free to modify to customize the look of the animation. :)
|
||||
// structure: <unicode hex value>, <foreground>, <background>
|
||||
|
||||
#ifndef COLORS_INCLUDED
|
||||
#define COLORS_INCLUDED
|
||||
|
||||
#include "types.h"
|
||||
#include "termbox.h"
|
||||
#define CLRS_LEN 13
|
||||
|
||||
struct tb_cell colors[13] =
|
||||
#define RED 0xdd1111
|
||||
#define BLACK 0x000000
|
||||
#define YELLOW 0xffdd00
|
||||
#define WHITE 0xffffff
|
||||
|
||||
struct tb_cell normcolors[CLRS_LEN] =
|
||||
{
|
||||
// default
|
||||
{ ' ', 9, 0 },
|
||||
|
||||
// red/black
|
||||
{ 0x2591, 2, 0 },
|
||||
{ 0x2592, 2, 0 },
|
||||
{ 0x2593, 2, 0 },
|
||||
{ 0x2588, 2, 0 },
|
||||
|
||||
// yellow/red
|
||||
{ 0x2591, 4, 2 },
|
||||
{ 0x2592, 4, 2 },
|
||||
{ 0x2593, 4, 2 },
|
||||
{ 0x2588, 4, 2 },
|
||||
{ 0x2591, 8, 4 },
|
||||
{ 0x2592, 8, 4 },
|
||||
{ 0x2593, 8, 4 },
|
||||
{ 0x2588, 8, 4 },
|
||||
|
||||
// white/red
|
||||
{ 0x2591, 8, 2 },
|
||||
{ 0x2592, 8, 2 },
|
||||
{ 0x2593, 8, 2 },
|
||||
{ 0x2588, 8, 2 },
|
||||
};
|
||||
|
||||
struct tb_cell truecolors[CLRS_LEN] =
|
||||
{
|
||||
// default
|
||||
{ ' ', 9, 0 },
|
||||
|
||||
// red/black
|
||||
{ 0x2591, RED, BLACK },
|
||||
{ 0x2592, RED, BLACK },
|
||||
{ 0x2593, RED, BLACK },
|
||||
{ 0x2588, RED, BLACK },
|
||||
|
||||
// yellow/red
|
||||
{ 0x2591, YELLOW, RED },
|
||||
{ 0x2592, YELLOW, RED },
|
||||
{ 0x2593, YELLOW, RED },
|
||||
{ 0x2588, YELLOW, RED },
|
||||
|
||||
// white/red
|
||||
{ 0x2591, WHITE, RED },
|
||||
{ 0x2592, WHITE, RED },
|
||||
{ 0x2593, WHITE, RED },
|
||||
{ 0x2588, WHITE, RED },
|
||||
};
|
||||
|
||||
#endif
|
||||
|
17
draw.c
17
draw.c
@ -2,11 +2,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "args.h"
|
||||
#include "termbox.h"
|
||||
#include "types.h"
|
||||
#include "draw.h"
|
||||
#include "output.h"
|
||||
#include "colors.h"
|
||||
#include "output.h"
|
||||
|
||||
// arguments
|
||||
extern struct Options *opts;
|
||||
|
||||
// initialize the framebuffer
|
||||
void
|
||||
@ -62,8 +66,15 @@ dofire ( struct buffer *buf )
|
||||
if (buf->buf[dest] > 12)
|
||||
buf->buf[dest] = 0;
|
||||
|
||||
realbuf[dest] = colors[buf->buf[dest]];
|
||||
realbuf[src] = colors[buf->buf[src]];
|
||||
if (opts->truecolor) {
|
||||
realbuf[dest] = truecolors[buf->buf[dest]];
|
||||
realbuf[src] = truecolors[buf->buf[src]];
|
||||
}
|
||||
else
|
||||
{
|
||||
realbuf[dest] = normcolors[buf->buf[dest]];
|
||||
realbuf[src] = normcolors[buf->buf[src]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1
draw.h
1
draw.h
@ -1,5 +1,6 @@
|
||||
#ifndef DRAW_INCLUDED
|
||||
#define DRAW_INCLUDED
|
||||
|
||||
#include "types.h"
|
||||
|
||||
typedef struct buffer
|
||||
|
22
main.c
22
main.c
@ -16,10 +16,27 @@ struct Options *opts;
|
||||
int
|
||||
main ( int argc, char *argv[] )
|
||||
{
|
||||
opts = (struct Options*) calloc(1, sizeof(struct Options*));
|
||||
if (opts == NULL) {
|
||||
PRINT("fire: error: cannot ");
|
||||
perror("calloc()");
|
||||
}
|
||||
|
||||
// default args
|
||||
opts->refresh_rate = 5;
|
||||
opts->truecolor = FALSE;
|
||||
|
||||
// argument parsing
|
||||
argv0 = argv[0];
|
||||
|
||||
ARGBEGIN {
|
||||
case 't':
|
||||
tb_select_output_mode(TB_OUTPUT_TRUECOLOR);
|
||||
opts->truecolor = TRUE;
|
||||
break;
|
||||
case 'r':
|
||||
opts->refresh_rate = atoi(ARGF());
|
||||
break;
|
||||
case 'V':
|
||||
PRINT("%s %s\n", argv0, VERSION);
|
||||
exit(0);
|
||||
@ -28,7 +45,8 @@ main ( int argc, char *argv[] )
|
||||
PRINT("fire %s\n(c) Kied Llaentenn and contributors\n", VERSION);
|
||||
PRINT("https://github.com/lptstr/fire\n");
|
||||
PRINT("\nUSAGE:\n\t$ fire\n\n");
|
||||
PRINT("OPTIONS:\n\t-V\tshow version and exit.\n");
|
||||
PRINT("OPTIONS:\n\t-t\tenable true colors.\n");
|
||||
PRINT("\t-V\tshow version and exit.\n");
|
||||
PRINT("\t-h\tshow this help message and exit.\n\n");
|
||||
exit(1);
|
||||
} ARGEND
|
||||
@ -56,7 +74,7 @@ main ( int argc, char *argv[] )
|
||||
tb_present();
|
||||
|
||||
// event handling
|
||||
int err = (usize) tb_peek_event(&e, 5);
|
||||
int err = (usize) tb_peek_event(&e, opts->refresh_rate);
|
||||
|
||||
if (err < 0)
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user