From 512e2031f0884dd4488aead2dab77d41d68270f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A8Rene=20Richarz?= <¨rene.richarz@bluewin.ch¨> Date: Mon, 15 Apr 2019 10:30:37 +0200 Subject: [PATCH] version 1.2.1, see versions.txt --- ards.c | 17 ++--------------- main.c | 36 +++++++++++++++++++++++++++--------- tek4010 | Bin 40428 -> 40504 bytes tek4010.c | 15 ++++----------- tube.c | 35 ++++++++++++++++------------------- tube.h | 3 --- versions.txt | 8 ++++++++ 7 files changed, 57 insertions(+), 57 deletions(-) diff --git a/ards.c b/ards.c index 3499aea..e5e88bb 100755 --- a/ards.c +++ b/ards.c @@ -84,21 +84,8 @@ void ards_draw(cairo_t *cr, cairo_t *cr2, int first) if (first) { first = 0; - int actualWidth; - if (argFull) { - efactor = windowHeight / 780.0; - actualWidth = (int)(efactor * 1024.0); - eoffx = (windowWidth - actualWidth) / 2; - refresh_interval = (int)(30.0 * efactor * efactor); - } - else { - efactor = 1.0; - actualWidth = windowWidth; - eoffx = 0; - refresh_interval = 30; - } - windowWidth = actualWidth; - tube_changeCharacterSize(cr, cr2, 74, 35, (int) (10.0 * efactor)); + refresh_interval = 30; + tube_changeCharacterSize(cr, cr2, 74, 35, 10); } startPaintTime = tube_mSeconds(); // start to measure time for this draw operation diff --git a/main.c b/main.c index 2cbff57..6404091 100644 --- a/main.c +++ b/main.c @@ -57,6 +57,8 @@ extern int argARDS; int windowWidth; int windowHeight; +static int windowHeightOffset = 0; +static int windowWidthOffset = 0; extern int tube_doClearPersistent; @@ -96,7 +98,7 @@ static void do_drawing(cairo_t *cr, GtkWidget *widget) if (global_firstcall) { permanent_surface = cairo_surface_create_similar(cairo_get_target(cr), - CAIRO_CONTENT_COLOR_ALPHA, windowWidth, windowHeight); + CAIRO_CONTENT_COLOR, windowWidth, windowHeight); temporary_surface = cairo_surface_create_similar(cairo_get_target(cr), CAIRO_CONTENT_COLOR_ALPHA, windowWidth, windowHeight); } @@ -113,11 +115,11 @@ static void do_drawing(cairo_t *cr, GtkWidget *widget) tek4010_draw(permanent_cr, temporary_cr, global_firstcall); global_firstcall = FALSE; - cairo_set_source_surface(cr, permanent_surface, 0, 0); + cairo_set_source_surface(cr, permanent_surface, windowWidthOffset, windowHeightOffset); cairo_paint(cr); - cairo_set_source_surface(cr, temporary_surface, 0, 0); + cairo_set_source_surface(cr, temporary_surface, windowWidthOffset, windowHeightOffset); cairo_paint(cr); - + cairo_destroy(permanent_cr); cairo_destroy(temporary_cr); } @@ -125,7 +127,7 @@ static void do_drawing(cairo_t *cr, GtkWidget *widget) static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { int ch; - printf("key pressed, state =%04X, keyval=%04X\r\n", event->state, event->keyval); + // printf("key pressed, state =%04X, keyval=%04X\r\n", event->state, event->keyval); if ((event->keyval == 0xFF50) || // "home" key (event->keyval == 0xFF55) || // "page up" key @@ -140,7 +142,6 @@ static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_da else if ((event->keyval >= 0xFF00) && (event->keyval <= 0xFF1F)) ch = event->keyval & 0x1F; else if (event->state & GDK_CONTROL_MASK) { - printf("control\n"); if ((event->keyval == 0xFF51) || // "left arrow" key (event->keyval == 0xFF52)) { // "up arrow" key tube_doClearPersistent = 1; @@ -152,7 +153,6 @@ static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_da return; } else if (event->keyval == 0x0071) { // "q" quits tek4010 - printf("calling quit\n"); on_quit_event(); return; } @@ -179,6 +179,7 @@ int main (int argc, char *argv[]) int askWindowWidth; int askWindowHeight; + double aspectRatio; tube_init(argc, argv); @@ -194,13 +195,21 @@ int main (int argc, char *argv[]) else { askWindowWidth = 1024; askWindowHeight = 780; - } + } + aspectRatio = (double)askWindowWidth/(double)askWindowHeight; gtk_init(&argc, &argv); global_firstcall = TRUE; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + + // set the background color + GdkColor color; + color.red = 0; + color.green = 0; + color.blue = 0; + gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &color); darea = gtk_drawing_area_new(); gtk_container_add(GTK_CONTAINER(window), darea); @@ -217,13 +226,22 @@ int main (int argc, char *argv[]) int screenHeight = gdk_screen_get_height(screen); printf("Screen dimensions: %d x %d\n", screenWidth, screenHeight); - if (argFull && !argARDS) { + if (argFull) { // DISPLAY UNDECORATED FULL SCREEN WINDOW gtk_window_set_decorated(GTK_WINDOW(window), FALSE); gtk_window_fullscreen(GTK_WINDOW(window)); gtk_window_set_keep_above(GTK_WINDOW(window), FALSE); windowWidth = screenWidth; windowHeight = screenHeight; + // force aspect ratio + if (windowWidth > (int)((double)windowHeight * aspectRatio)) { + windowWidthOffset = (windowWidth - (int)((double)windowHeight * aspectRatio)) / 2; + windowWidth = (int)((double)windowHeight * aspectRatio); + } + if (windowHeight > (int)((double)windowWidth / aspectRatio)) { + windowHeightOffset = (windowHeight - (int)((double)windowWidth / aspectRatio)) / 2; + windowHeight = (int)((double)windowWidth / aspectRatio); + } } else { diff --git a/tek4010 b/tek4010 index 3b2555c8f385126cd173bfb2820dc860b2963fd1..3cc78dfb2eb0c40e3a07d002203fa43c6f23ab44 100755 GIT binary patch literal 40504 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 literal 40428 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 On+Ze1Z`;$4PX1qkOt>!q diff --git a/tek4010.c b/tek4010.c index b8ea98b..ae18a64 100755 --- a/tek4010.c +++ b/tek4010.c @@ -72,6 +72,7 @@ extern int leftmargin; static long startPaintTime; static int xh,xl,yh,yl,xy4014; static long todo; +static double efactor; // table for special plot point mode // 4014 manual page F-9 @@ -158,7 +159,7 @@ void tek4010_escapeCodeHandler(cairo_t *cr, cairo_t *cr2, int ch) // modes 27 and 29 - 31 are identical in all modes case 28: // record separator - /*if (DEBUG)*/ printf("Special point plot mode, mode=%d\n",savemode); + if (DEBUG) printf("Special point plot mode, mode=%d\n",savemode); mode = 50; // for the intensity/focus character specialPlotMode = 1; double intensity = 1.0; @@ -245,23 +246,15 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) if (first) { first = 0; - int actualWidth; if (argFull) { efactor = windowHeight / 780.0; - actualWidth = (int)(efactor * 1024.0); - eoffx = (windowWidth - actualWidth) / 2; - refresh_interval = (int)(30.0 * efactor * efactor); } else { efactor = 1.0; - actualWidth = windowWidth; - eoffx = 0; - refresh_interval = 30; } - windowWidth = actualWidth; + refresh_interval = 30; tube_changeCharacterSize(cr, cr2, 74, 35, (int) (18.0 * efactor)); - // printf("Scaling: %0.2f\n", efactor); - // printf("Offset: %d\n",eoffx); + printf("Scaling: %0.3f\n", efactor / 4.0); // printf("Refresh interval: %d\n",refresh_interval); } diff --git a/tube.c b/tube.c index c81af53..7bfc1ba 100755 --- a/tube.c +++ b/tube.c @@ -84,9 +84,6 @@ int tube_x0, tube_x2,tube_y0, tube_y2; static int debugCount = 0; -double efactor; -int eoffx; - long refreshCount = 0; // variables for baud rate and refresh rate measurements static long charCount = 0; @@ -181,7 +178,7 @@ void tube_init(int argc, char* argv[]) char *argv2[20]; size_t bufsize = 127; int firstArg = 1; - printf("tek4010 version 1.2\n"); + printf("tek4010 version 1.2.1\n"); windowName = "Tektronix 4010/4014 emulator"; if ((argc<2) || (argc>19)) { printf("Error:number of arguments\n"); @@ -394,7 +391,7 @@ void tube_doCursor(cairo_t *cr2) { cairo_set_source_rgb(cr2, 0, CURSOR_INTENSITY, 0); cairo_set_line_width (cr2, 1); - cairo_rectangle(cr2, tube_x0 + eoffx, windowHeight - tube_y0 - vDotsPerChar + 8, + cairo_rectangle(cr2, tube_x0, windowHeight - tube_y0 - vDotsPerChar + 8, hDotsPerChar - 3, vDotsPerChar - 3); cairo_fill(cr2); cairo_stroke (cr2); @@ -476,19 +473,19 @@ void tube_drawCharacter(cairo_t *cr, cairo_t *cr2, char ch) if (writeThroughMode) { // draw the write-through character cairo_set_source_rgb(cr2, 0, WRITE_TROUGH_INTENSITY, 0); - cairo_move_to(cr2, tube_x0 + eoffx, windowHeight - tube_y0); + cairo_move_to(cr2, tube_x0, windowHeight - tube_y0); cairo_show_text(cr2, s); } else { // draw the character cairo_set_source_rgb(cr, 0, (NORMAL_INTENSITY * intensity) / 100, 0); - cairo_move_to(cr, tube_x0 + eoffx, windowHeight - tube_y0); + cairo_move_to(cr, tube_x0, windowHeight - tube_y0); cairo_show_text(cr, s); // draw the bright spot cairo_set_source_rgb(cr2, BRIGHT_SPOT_COLOR, BRIGHT_SPOT_COLOR, BRIGHT_SPOT_COLOR); - cairo_move_to(cr2, tube_x0 + eoffx, windowHeight - tube_y0); + cairo_move_to(cr2, tube_x0, windowHeight - tube_y0); cairo_show_text(cr2, s); } @@ -513,8 +510,8 @@ void tube_drawPoint(cairo_t *cr, cairo_t *cr2) #define PI2 6.283185307 cairo_set_line_width (cr, 1 + defocussed); cairo_set_source_rgb(cr, 0, (NORMAL_INTENSITY * intensity) / 100, 0); - cairo_move_to(cr, tube_x2 + eoffx, windowHeight - tube_y2); - cairo_line_to(cr, tube_x2 + 1 + eoffx, windowHeight - tube_y2); + cairo_move_to(cr, tube_x2, windowHeight - tube_y2); + cairo_line_to(cr, tube_x2 + 1, windowHeight - tube_y2); cairo_stroke (cr); // speed is a problem here @@ -527,7 +524,7 @@ void tube_drawPoint(cairo_t *cr, cairo_t *cr2) cairo_set_line_width (cr2, 0.1); double bsc = (BRIGHT_SPOT_COLOR * intensity) / 100; cairo_set_source_rgb(cr2, bsc, bsc, bsc); - cairo_arc(cr2, tube_x2 + eoffx, windowHeight - tube_y2, 2 + defocussed, 0, PI2); + cairo_arc(cr2, tube_x2, windowHeight - tube_y2, 2 + defocussed, 0, PI2); cairo_fill(cr2); xlast = tube_x2; @@ -551,8 +548,8 @@ void tube_drawVector(cairo_t *cr, cairo_t *cr2) if (writeThroughMode) { cairo_set_line_width (cr2, 2); cairo_set_source_rgb(cr2, 0.0, WRITE_TROUGH_INTENSITY, 0.0); - cairo_move_to(cr2, tube_x0 + eoffx, windowHeight - tube_y0); - cairo_line_to(cr2, tube_x2 + eoffx, windowHeight - tube_y2); + cairo_move_to(cr2, tube_x0, windowHeight - tube_y0); + cairo_line_to(cr2, tube_x2, windowHeight - tube_y2); cairo_stroke (cr2); } @@ -561,24 +558,24 @@ void tube_drawVector(cairo_t *cr, cairo_t *cr2) cairo_set_line_width (cr, 1 + defocussed); cairo_set_source_rgb(cr, 0, (NORMAL_INTENSITY * intensity) / 100, 0); tube_line_type(cr, cr2, ltype); - cairo_move_to(cr, tube_x0 + eoffx, windowHeight - tube_y0); - cairo_line_to(cr, tube_x2 + eoffx, windowHeight - tube_y2); + cairo_move_to(cr, tube_x0, windowHeight - tube_y0); + cairo_line_to(cr, tube_x2, windowHeight - tube_y2); cairo_stroke (cr); //draw the bright spot, half intensity cairo_set_line_width (cr2, 6 + 2 * defocussed); double bsc = (BRIGHT_SPOT_COLOR_HALF * intensity) / 100; cairo_set_source_rgb(cr2, bsc, bsc, bsc); - cairo_move_to(cr2, tube_x0 + eoffx, windowHeight - tube_y0); - cairo_line_to(cr2, tube_x2 + eoffx, windowHeight - tube_y2); + cairo_move_to(cr2, tube_x0, windowHeight - tube_y0); + cairo_line_to(cr2, tube_x2, windowHeight - tube_y2); cairo_stroke (cr2); // draw the bright spot, high intensity cairo_set_line_width (cr2, 3 + 2 * defocussed); bsc = (BRIGHT_SPOT_COLOR * intensity) / 100; cairo_set_source_rgb(cr2, bsc, bsc, bsc); - cairo_move_to(cr2, tube_x0 + eoffx, windowHeight - tube_y0); - cairo_line_to(cr2, tube_x2 + eoffx, windowHeight - tube_y2); + cairo_move_to(cr2, tube_x0, windowHeight - tube_y0); + cairo_line_to(cr2, tube_x2, windowHeight - tube_y2); cairo_stroke(cr2); } diff --git a/tube.h b/tube.h index bc0aeb4..23b695a 100644 --- a/tube.h +++ b/tube.h @@ -27,9 +27,6 @@ extern int intensity; extern int plotPointMode; extern int writeThroughMode; -extern double efactor; -extern int eoffx; - extern int tube_x0, tube_x2, tube_y0, tube_y2; extern long tube_mSeconds(); diff --git a/versions.txt b/versions.txt index 318b845..70e39c0 100644 --- a/versions.txt +++ b/versions.txt @@ -1,3 +1,11 @@ +Version 1.2.1 April 15, 2019 +============================ +New features +- full screen mode for ARDS (variable scaling not yet implemented) +Bug fixes +- substantial speed increase on high resolution screens +- removed some debug messages + Version 1.2 April 14, 2019 ========================== New features