diff --git a/src/callback.c b/src/callback.c index ccb03acf..4fcbf661 100644 --- a/src/callback.c +++ b/src/callback.c @@ -2142,82 +2142,37 @@ int rstate; /* (reduced state, without ShiftMask) */ draw(); break; } - if( 0 && (key=='u') && rstate==ControlMask) /* testmode */ + if(0 && (key=='u') && rstate==ControlMask) /* testmode */ { static int x = 0; if(x == 0) { - XFillRectangle(display, xctx->window, xctx->gctiled, - xctx->xrect[0].x, xctx->xrect[0].y, xctx->xrect[0].width, xctx->xrect[0].height); - } else if(x == 1) { - int i; - for(i = xctx->xrect[0].y; i < xctx->xrect[0].height; i++) { - XDrawLine(display, xctx->window, xctx->gctiled, - xctx->xrect[0].x, i, xctx->xrect[0].width, i); - } - } else if(x == 2) { int i; + XFillRectangle(display, xctx->window, xctx->gc[BACKLAYER], xctx->areax1, xctx->areay1, + xctx->areaw, xctx->areah); + XFlush(display); + sleep_ms(400); for(i = xctx->xrect[0].x; i < xctx->xrect[0].width; i++) { XDrawLine(display, xctx->window, xctx->gctiled, i, xctx->xrect[0].y, i, xctx->xrect[0].height); + XFlush(display); + sleep_ms(4); } - } else if(x == 3) { - int i, j; - for(i = 0; i < xctx->xrect[0].width; i+=1) { - for(j = 0; j < xctx->xrect[0].height; j+=1) { - XDrawLine(display, xctx->window, xctx->gctiled, - i, xctx->xrect[0].y, xctx->xrect[0].width - i, j); - - XDrawLine(display, xctx->window, xctx->gctiled, - xctx->xrect[0].width - i, xctx->xrect[0].y, i, j); - - XDrawLine(display, xctx->window, xctx->gctiled, - i, xctx->xrect[0].height, xctx->xrect[0].width - i, j); - - XDrawLine(display, xctx->window, xctx->gctiled, - xctx->xrect[0].width - i, xctx->xrect[0].height, i, j); - - } - } - } else if(x == 4) { - int i, j; - XPoint p[2]; - for(i = 0; i < xctx->xrect[0].width; i+=1) { - for(j = 0; j < xctx->xrect[0].height; j+=1) { - p[0].x = (short int)i; - p[0].y = (short int)(xctx->xrect[0].y); - p[1].x = (short int)(xctx->xrect[0].width - i); - p[1].y = (short int)j; - XDrawLines(display, xctx->window, xctx->gctiled, - p, 2, CoordModeOrigin); - - p[0].x = (short int)(xctx->xrect[0].width - i); - p[0].y = (short int)xctx->xrect[0].y; - p[1].x = (short int)i; - p[1].y = (short int)j; - XDrawLines(display, xctx->window, xctx->gctiled, - p, 2, CoordModeOrigin); - - p[0].x = (short int)i; - p[0].y = (short int)xctx->xrect[0].height; - p[1].x = (short int)(xctx->xrect[0].width - i); - p[1].y = (short int)j; - XDrawLines(display, xctx->window, xctx->gctiled, - p, 2, CoordModeOrigin); - - p[0].x = (short int)(xctx->xrect[0].width - i); - p[0].y = (short int)xctx->xrect[0].height; - p[1].x = (short int)i; - p[1].y = (short int)j; - XDrawLines(display, xctx->window, xctx->gctiled, - p, 2, CoordModeOrigin); - } + } else if(x == 1) { + int i; + XFillRectangle(display, xctx->window, xctx->gc[BACKLAYER], xctx->areax1, xctx->areay1, + xctx->areaw, xctx->areah); + XFlush(display); + sleep_ms(400); + for(i = xctx->xrect[0].x; i < xctx->xrect[0].width; i++) { + XDrawLine(display, xctx->window, xctx->gctiled, + i, xctx->xrect[0].y, i+1, xctx->xrect[0].height); + XFlush(display); + sleep_ms(4); } } - - here(x); x++; - x %= 5; + x %= 2; break; } if(key=='u' && rstate==0) /* undo */ diff --git a/src/check.c b/src/check.c index 94e3607a..08bc83d9 100644 --- a/src/check.c +++ b/src/check.c @@ -21,7 +21,7 @@ */ #include "xschem.h" - +#include /* select() */ static int check_includes(double x1a, double y1a, double x2a, double y2a, double x1b, double y1b, double x2b, double y2b) { @@ -116,6 +116,18 @@ void update_conn_cues(int layer, int draw_cues, int dr_win) } } +void sleep_ms(int milliseconds) +{ + #ifdef __unix__ + struct timeval tv; + tv.tv_sec = milliseconds / 1000; + tv.tv_usec = milliseconds % 1000 * 1000; + select(0, NULL, NULL, NULL, &tv); + #else + Sleep(milliseconds); + #endif +} + /* start = 0: initialize timer * start = 1: return elapsed time since previous call * start = 2: return total time from initialize */ diff --git a/src/xschem.h b/src/xschem.h index 03ea6f8c..e9f72d1b 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -1224,6 +1224,7 @@ extern int find_closest_wave(int i, Graph_ctx *gr); extern void setup_graph_data(int i, int skip, Graph_ctx *gr); extern int graph_fullyzoom(xRect *r, Graph_ctx *gr, int graph_dataset); extern int graph_fullxzoom(int i, Graph_ctx *gr, int dataset); +extern void sleep_ms(int milliseconds); extern double timer(int start); extern void enable_layers(void); extern void set_snap(double);