From ba9e5e94e3c0622a0dc5a91dcb0fe671cb35c07c Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Wed, 3 Jan 2024 00:35:20 -0500 Subject: initial commit --- draw.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 draw.c (limited to 'draw.c') diff --git a/draw.c b/draw.c new file mode 100644 index 0000000..6f009af --- /dev/null +++ b/draw.c @@ -0,0 +1,150 @@ +/* Copyright 1998 DJ Delorie + Distributed under the terms of the GNU GPL + http://www.delorie.com/store/hcalc/ + Revisions copyright 2007, + Theodore Kilgore + More revisions copyright 2023, B. Watson +*/ +#include "hcalc.h" +#include + +static unsigned int shown_offsets[15]; +static int shown_bitmask; +static int show_bits; +int scale_factor; + +#define BASE_CHARS_LEFT 6 +#define BASE_CHARS_TOP 6 +#define BASE_CHAR_WIDTH 5 +#define BASE_CHAR_HEIGHT 7 +#define BASE_BITS_LEFT_X 92 +#define BASE_BITS_TOP_1 6 +#define BASE_BITS_BOT_1 10 +#define BASE_BITS_TOP_0 10 +#define BASE_BITS_BOT_0 12 + +#define CHARS_LEFT (BASE_CHARS_LEFT * scale_factor) +#define CHARS_TOP (BASE_CHARS_TOP * scale_factor) +#define CHAR_WIDTH (BASE_CHAR_WIDTH * scale_factor) +#define CHAR_HEIGHT (BASE_CHAR_HEIGHT * scale_factor) +#define BITS_LEFT_X (BASE_BITS_LEFT_X * scale_factor) +#define BITS_TOP_1 (BASE_BITS_TOP_1 * scale_factor) +#define BITS_BOT_1 (BASE_BITS_BOT_1 * scale_factor) +#define BITS_TOP_0 (BASE_BITS_TOP_0 * scale_factor) +#define BITS_BOT_0 (BASE_BITS_BOT_0 * scale_factor) + +void +redraw_chars() +{ + int i; + for (i=0; i<15; i++) + { + XCopyArea(display, chars, window, gc, + shown_offsets[i], 0, CHAR_WIDTH, CHAR_HEIGHT, + CHARS_LEFT+BITS_TOP_1*i, CHARS_TOP); + } +} + +void +redraw() +{ + XCopyArea(display, face, window, gc, 0, 0, widths[winsize], heights[winsize], 0, 0); + + if (show_bits) + { + int i, x; + XSetForeground(display, gc, bit_off); + for (i=0; i<32; i++) + { + x = BITS_LEFT_X - (BITS_TOP_1/3)*i - (BITS_TOP_1)/2*(i/4); + if (!(shown_bitmask & (1<0; i--) + if (shown_bitmask & (1<=0; i--) + { + if (shown_bitmask & (1<