From 038106dd3fa2dffb83a297200be4a96b5e073587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A8Rene=20Richarz?= <¨rene.richarz@bluewin.ch¨> Date: Tue, 16 Apr 2019 10:10:29 +0200 Subject: [PATCH] version 1.2.2, see versions.txt --- main.c | 53 +++++++++++++++++++++++++++++++-------------------- tek4010 | Bin 40504 -> 40600 bytes tek4010.c | 18 ++++++----------- tube.c | 2 +- versions.txt | 5 +++++ 5 files changed, 44 insertions(+), 34 deletions(-) diff --git a/main.c b/main.c index 6404091..7ccc363 100644 --- a/main.c +++ b/main.c @@ -55,10 +55,10 @@ static int global_firstcall; extern int argFull; extern int argARDS; +static GtkWidget *window; int windowWidth; int windowHeight; -static int windowHeightOffset = 0; -static int windowWidthOffset = 0; +static double aspectRatio; extern int tube_doClearPersistent; @@ -95,8 +95,25 @@ static void on_quit_event() static void do_drawing(cairo_t *cr, GtkWidget *widget) { static cairo_surface_t *permanent_surface, *temporary_surface; + static int windowHeightOffset = 0; + static int windowWidthOffset = 0; if (global_firstcall) { + // force aspect ratio by making black stripes at left and right, or top and bottom + gtk_window_get_size(GTK_WINDOW(window), &windowWidth, &windowHeight); + // gtk_window_set_resizable(GTK_WINDOW(window), 0); // do not allow further resizing + + if (windowWidth > (int)((double)windowHeight * aspectRatio + 0.5)) { + windowWidthOffset = (windowWidth - (int)((double)windowHeight * aspectRatio)) / 2; + windowWidth = (int)((double)windowHeight * aspectRatio + 0.5); + } + if (windowHeight > (int)((double)windowWidth / aspectRatio + 0.5) ) { + windowHeightOffset = (windowHeight - (int)((double)windowWidth / aspectRatio)) / 2; + windowHeight = (int)((double)windowWidth / aspectRatio + 0.5); + } + + printf("Window dimensions: %d x %d\n", windowWidth, windowHeight); + permanent_surface = cairo_surface_create_similar(cairo_get_target(cr), CAIRO_CONTENT_COLOR, windowWidth, windowHeight); temporary_surface = cairo_surface_create_similar(cairo_get_target(cr), @@ -175,11 +192,9 @@ static void on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_da int main (int argc, char *argv[]) { GtkWidget *darea; - GtkWidget *window; int askWindowWidth; int askWindowHeight; - double aspectRatio; tube_init(argc, argv); @@ -190,13 +205,14 @@ int main (int argc, char *argv[]) else if (argFull) { askWindowWidth = 4096; - askWindowHeight = 3072; + askWindowHeight = 3120; } else { askWindowWidth = 1024; askWindowHeight = 780; } - aspectRatio = (double)askWindowWidth/(double)askWindowHeight; + + aspectRatio = (double)askWindowWidth / (double)askWindowHeight; gtk_init(&argc, &argv); @@ -233,32 +249,27 @@ int main (int argc, char *argv[]) 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 { // DISPLAY DECORATED WINDOW - if (argARDS && (askWindowHeight > (screenHeight - 32))) { - askWindowWidth = 540; - askWindowHeight = 707; +#define BORDER 64 // we need to make an educated guess here what the window manager will accept + // otherwise we will have a decorated window with wrong aspect ratio + // if BORDER is too small, we end up with small black stripes at the left and right + // if BORDER is too large, the decorated window will be smaller than possible + // with a reasonable size BORDER, both are acceptable + // ideally, one could force the window manager to use a certain aspect ratio + if (askWindowHeight > (screenHeight - BORDER)) { + askWindowWidth = (int)((double)(screenHeight - BORDER) * aspectRatio); + askWindowHeight = screenHeight - BORDER; } gtk_window_set_decorated(GTK_WINDOW(window), TRUE); gtk_window_set_default_size(GTK_WINDOW(window), askWindowWidth, askWindowHeight); windowWidth = askWindowWidth; windowHeight = askWindowHeight; } + // printf("Requested window dimensions: %d x %d\n", windowWidth, windowHeight); - printf("Window dimensions: %d x %d\n", windowWidth, windowHeight); - - if (TIME_INTERVAL > 0) { // Add timer event // Register the timer and set time in mS. diff --git a/tek4010 b/tek4010 index 168a39eac1148300695d9cdfe98aba39b6bd88f3..96843d754bd6f4d311ed5ffdfec7c376b98301cb 100755 GIT binary patch delta 15073 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 JOnE8pzW~Ypy;T4J delta 14874 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 A{Qv*} diff --git a/tek4010.c b/tek4010.c index ae18a64..25c43ab 100755 --- a/tek4010.c +++ b/tek4010.c @@ -245,17 +245,11 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) refreshCount++; if (first) { - first = 0; - if (argFull) { - efactor = windowHeight / 780.0; - } - else { - efactor = 1.0; - } + first = 0; + efactor = windowWidth / 1024.0; refresh_interval = 30; tube_changeCharacterSize(cr, cr2, 74, 35, (int) (18.0 * efactor)); - printf("Scaling: %0.3f\n", efactor / 4.0); - // printf("Refresh interval: %d\n",refresh_interval); + if (windowWidth != 1024) printf("Scaling: %0.3f\n", efactor / 4.0); } startPaintTime = tube_mSeconds(); // start to measure time for this draw operation @@ -422,7 +416,7 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) if (DEBUG) printf("setting yh to %d\n", yh); break; case 2: yl = (ch & 31); - if (argFull) { + if (windowWidth != 1024) { int yb = (xy4014 >> 2) & 3; tube_y0 = (int)(efactor * (double)(((yh+yl) << 2) + yb) / 4.0); } @@ -434,7 +428,7 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) if (DEBUG) printf("setting xh to %d\n", xh); break; case 4: xl = (ch & 31); - if (argFull) { + if (windowWidth != 1024) { int xb = xy4014 & 3; tube_x0 = (int)(efactor * (double)(((xh+xl) << 2) + xb) / 4.0); } @@ -461,7 +455,7 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) break; if (DEBUG) printf(">>>>>xh=%d\n",xh); case 8: xl = (ch & 31); - if (argFull) { + if (windowWidth != 1024) { int xb = xy4014 & 3; tube_x2 = (int)(efactor * (double)(((xh+xl) << 2) + xb) / 4.0); int yb = (xy4014 >> 2) & 3; diff --git a/tube.c b/tube.c index 7bfc1ba..141b4e6 100755 --- a/tube.c +++ b/tube.c @@ -178,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.1\n"); + printf("tek4010 version 1.2.2\n"); windowName = "Tektronix 4010/4014 emulator"; if ((argc<2) || (argc>19)) { printf("Error:number of arguments\n"); diff --git a/versions.txt b/versions.txt index 70e39c0..e8d9faf 100644 --- a/versions.txt +++ b/versions.txt @@ -1,3 +1,8 @@ +Version 1.2.2 April 16, 2019 +============================ +Bug fixes +- fixed window size and scaling on lower resolution displays + Version 1.2.1 April 15, 2019 ============================ New features