From d2f5d3efd028fa998fa45bec061a2bd3340bf223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A8Rene=20Richarz?= <¨rene.richarz@bluewin.ch¨> Date: Fri, 29 Mar 2019 13:36:41 +0100 Subject: [PATCH] fixed a bug slowing down drawing of small vectors --- tek4010 | Bin 24620 -> 24540 bytes tek4010.c | 58 ++++++++++++++++++++++++++---------------------------- tek4010.h | 2 +- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/tek4010 b/tek4010 index 9cfaa6696c143274b206c3adb629bac7040ea891..fa85911053554a61668f876fa8e275194b005003 100755 GIT binary patch delta 8546 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 GtN#P%z_o7x diff --git a/tek4010.c b/tek4010.c index 3c87860..95718f6 100644 --- a/tek4010.c +++ b/tek4010.c @@ -9,7 +9,7 @@ #define DEBUG 0 // print debug info -#define TODO 8 // for speed reasons, draw multiple objects until screen updates +#define TODO 8 // for speed reasons, draw multiple objects until screen updates #include #include @@ -174,12 +174,12 @@ void tek4010_init(int argc, char* argv[]) close(putKeysPipe[0]); // not used // use termios to turn off line buffering for both pipes - struct termios term; - tcgetattr(getDataPipe[0], &term); - term.c_lflag &= ~ICANON ; - tcsetattr(getDataPipe[0], TCSANOW,&term); - tcgetattr(putKeysPipe[1], &term); - tcsetattr(putKeysPipe[0], TCSANOW,&term); + // struct termios term; + // tcgetattr(getDataPipe[0], &term); + // term.c_lflag &= ~ICANON ; + // tcsetattr(getDataPipe[0], TCSANOW,&term); + // tcgetattr(putKeysPipe[1], &term); + // tcsetattr(putKeysPipe[0], TCSANOW,&term); // open now a stream from the getDataPipe descriptor getData = fdopen(getDataPipe[0],"r"); @@ -332,24 +332,23 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first) mode,tag, ch & 31); } - if (tag == 0) { - return; // each coordinate byte must have a tag. If not, ignore - } + if (tag != 0) { - if ((mode == 5) && (tag != 1)) mode = 6; + if ((mode == 5) && (tag != 1)) mode = 6; - if ((mode == 7) && (tag == 3)) { - // this overwrites the extra data byte of the 4014 for the - // persistent mode ccordinates and stores it for further use - mode = 6; - xy4014 = yl; - if (DEBUG) - printf("4014 coordinates, overwrite last value\n"); - } + if ((mode == 7) && (tag == 3)) { + // this overwrites the extra data byte of the 4014 for the + // persistent mode ccordinates and stores it for further use + mode = 6; + xy4014 = yl; + if (DEBUG) + printf("4014 coordinates, overwrite last value\n"); + } - if ((mode == 6) && (tag != 3)) mode = 7; + if ((mode == 6) && (tag != 3)) mode = 7; - if ((mode == 7) && (tag != 1)) mode = 8; + if ((mode == 7) && (tag != 1)) mode = 8; + } } @@ -376,8 +375,7 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first) x2 = xh + xl; y2 = yh + yl; - if (DEBUG) printf("tag=%d,***** Drawing vector to (%d,%d)\n", - tag, x2, y2); + if (DEBUG) printf("tag=%d,***** Drawing vector to (%d,%d)\n",tag,x2,y2); cairo_move_to(cr, x0, WINDOW_HEIGHT - y0); cairo_line_to(cr, x2, WINDOW_HEIGHT - y2); cairo_stroke (cr); @@ -388,14 +386,14 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first) isBrightSpot = 1; // for speed reasons, do not update screen right away - // if many very small verctors are drawn + // if many very small vectors are drawn todo--; - if ((x2-x0) > TODO) todo = 0; - if ((x0-x2) > TODO) todo = 0; - if ((y2-y0) > TODO) todo = 0; - if ((y0-y2) > TODO) todo = 0; + if ((x2-x0) > 25) todo = 0; + if ((x0-x2) > 25) todo = 0; + if ((y2-y0) > 25) todo = 0; + if ((y0-y2) > 25) todo = 0; - x0 = x2; // prepare to additional vectors + x0 = x2; // prepare for additional vectors y0 = y2; mode = 5; break; @@ -460,7 +458,7 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int width, int height, int first) y0 += vDotsPerChar; break; case 13: // return - mode = 0; todo = 0; x0 = leftmargin; + mode = 0; x0 = leftmargin; break; case 27: // escape mode = 30; diff --git a/tek4010.h b/tek4010.h index 39f00e1..19f4c57 100644 --- a/tek4010.h +++ b/tek4010.h @@ -1,6 +1,6 @@ #define WINDOW_WIDTH 1024 // proposed width of main window -#define WINDOW_HEIGHT 780 // proposed height of main window +#define WINDOW_HEIGHT 780 // proposed height of main window #define WINDOW_NAME "Tektronix 4010" // name of main window #define ICON_NAME "" // path to icon for window