#include "builtins.h" #include "blocktype.h" static int my_w = -1; static int my_h; static int x_min; static int x_out; static char priv_dummy; static BLOCKDIMS size(BLOCK_SIZE_ARGS) { int w_in; int w_min; int w_out; if (my_w < 0) { w_in = widthof("In",2); w_min = widthof("Min",3); w_out = widthof("Out",3); x_min = w_in + (2 * font_space); x_out = x_min + w_min + font_space; my_w = w_in + w_min + w_out + (4 * font_space); my_h = 3 * font_baselineskip; } return((BLOCKDIMS){.w=my_w,.h=my_h}); } static void setup(BLOCK_SETUP_ARGS) { (*cont)(&priv_dummy,contarg); } static void destroy(BLOCK_DESTROY_ARGS) { } static void render(BLOCK_RENDER_ARGS) { int y; XFillRectangle(disp,d,gc_bg,0,0,my_w,my_h); XDrawLine(disp,d,gc_fg,0,0,my_w-2,0); XDrawLine(disp,d,gc_fg,my_w-1,0,my_w-1,my_h-2); XDrawLine(disp,d,gc_fg,my_w-1,my_h-1,1,my_h-1); XDrawLine(disp,d,gc_fg,0,my_h-1,0,1); y = font_baseline + font_baselineskip; XDrawString(disp,d,gc_fg,x_min,y,"Min",3); XDrawString(disp,d,gc_fg,x_out,y,"Out",3); y = font_baseline + (font_baselineskip / 2); XDrawString(disp,d,gc_fg,font_space,y,"In",2); XDrawString(disp,d,gc_fg,font_space,y+font_baselineskip,"In",2); } static int iny(BLOCK_INPUT_Y_ARGS) { return((pin+1)*font_baselineskip); } static int outy(BLOCK_OUTPUT_Y_ARGS) { return((3*font_baselineskip)/2); } static void rinit(BLOCK_RUN_INIT_ARGS) { } static void rstep(BLOCK_RUN_STEP_ARGS) { } static double out(BLOCK_RUN_OUT_ARGS) { return((ins[0]