From bda22ae3a8dbf96e72c5665b9c95c5e264592b3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A8Rene=20Richarz?= <¨rene.richarz@bluewin.ch¨> Date: Fri, 12 Apr 2019 15:57:54 +0200 Subject: [PATCH] variable character size added --- ards.c | 5 ++--- tek4010 | Bin 35236 -> 35344 bytes tek4010.c | 23 +++++++++++------------ tube.c | 25 +++++++++++++++++-------- tube.h | 9 +++++---- versions.txt | 6 ++++++ 6 files changed, 41 insertions(+), 27 deletions(-) diff --git a/ards.c b/ards.c index 8730499..c1ba131 100755 --- a/ards.c +++ b/ards.c @@ -64,9 +64,8 @@ void ards_draw(cairo_t *cr, cairo_t *cr2, int first) eoffx = 0; refresh_interval = 30; } - hDotsPerChar = actualWidth / 74; - vDotsPerChar = windowHeight / 35; windowWidth = actualWidth; + tube_changeCharacterSize(cr, cr2, 74, 35, (int) (18.0 * efactor)); // printf("Scaling: %0.2f\n", efactor); // printf("Offset: %d\n",eoffx); // printf("Refresh interval: %d\n",refresh_interval); @@ -85,7 +84,7 @@ void ards_draw(cairo_t *cr, cairo_t *cr2, int first) tube_clearPersistent(cr,cr2); } - tube_setupPainting(cr, cr2, "Monospace", (int)(efactor * 18)); + tube_setupPainting(cr, cr2, "Monospace"); do { ch = tube_getInputChar(); diff --git a/tek4010 b/tek4010 index adea5973beda6cfe468afc8d5cf244b8667f18e6..3bbaf2e3c70ee3cac07cff7e53a55a0e3ee31d5c 100755 GIT binary patch delta 10317 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 diff --git a/tek4010.c b/tek4010.c index e02625d..0bd20c7 100755 --- a/tek4010.c +++ b/tek4010.c @@ -103,6 +103,7 @@ void tek4010_escapeCodeHandler(cairo_t *cr, cairo_t *cr2, int ch) break; case 12: if (DEBUG) printf("Form feed, clear screen\n"); + tube_changeCharacterSize(cr, cr2, 74, 35, (int) (18.0 * efactor)); tube_clearPersistent(cr,cr2); mode = 0; break; @@ -127,7 +128,6 @@ void tek4010_escapeCodeHandler(cairo_t *cr, cairo_t *cr2, int ch) plotPointMode = 0; break; - // start of ignoring ANSI escape sequencies, could be improved (but the Tek4010 couldn't do this either!) case '0': case '1': case '2': @@ -135,15 +135,14 @@ void tek4010_escapeCodeHandler(cairo_t *cr, cairo_t *cr2, int ch) case '4': case '5': case '6': - case '7': - case '8': - case '9': break; - case ';': mode = 31; break; - case ']': break; - case 'm': mode = 0; break; + case '7': printf("esc %c\n", ch); mode = 31; break; + case '8': tube_changeCharacterSize(cr, cr2, 74, 35, (int)(efactor * 18)); break; + case '9': tube_changeCharacterSize(cr, cr2, 81, 38, (int)(efactor * 16)); break; + case ':': tube_changeCharacterSize(cr, cr2, 121, 58, (int)(efactor * 11)); break; + case ';': tube_changeCharacterSize(cr, cr2, 133, 64, (int)(efactor * 10)); break; + case ']': printf("esc %c\n", ch); break; + case 'm': mode = 0; break; - // end of ignoring ANSI escape sequencies - case '`': ltype = SOLID; writeThroughMode = 0; mode = 0; break; case 'a': ltype = DOTTED; writeThroughMode = 0; mode = 0; break; case 'b': ltype = DOTDASH; writeThroughMode = 0; mode = 0; break; @@ -208,9 +207,8 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) eoffx = 0; refresh_interval = 30; } - hDotsPerChar = actualWidth / 74; - vDotsPerChar = windowHeight / 35; windowWidth = actualWidth; + tube_changeCharacterSize(cr, cr2, 74, 35, (int) (18.0 * efactor)); // printf("Scaling: %0.2f\n", efactor); // printf("Offset: %d\n",eoffx); // printf("Refresh interval: %d\n",refresh_interval); @@ -227,9 +225,10 @@ void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) // clear persistent surface, if necessary if (globaltube_clearPersistent) { tube_clearPersistent(cr,cr2); + tube_changeCharacterSize(cr, cr2, 74, 35, (int) (18.0 * efactor)); } - tube_setupPainting(cr, cr2, "Monospace", (int)(efactor * 18)); + tube_setupPainting(cr, cr2, "Monospace"); if (plotPointMode) todo = 16 * TODO; diff --git a/tube.c b/tube.c index ac006e5..44b8dc0 100755 --- a/tube.c +++ b/tube.c @@ -88,6 +88,7 @@ long refreshCount = 0; // variables for baud rate and refresh rate mea static long charCount = 0; static long charResetCount = 0; static long characterInterval = 0; +static int currentFontSize = 18; long startPaintTime; @@ -462,7 +463,10 @@ void tube_drawCharacter(cairo_t *cr, cairo_t *cr2, char ch) { char s[2]; s[0] = ch; - s[1] = 0; + s[1] = 0; + + cairo_set_font_size(cr, currentFontSize); + cairo_set_font_size(cr2,currentFontSize); if (writeThroughMode) { // draw the write-through character cairo_set_source_rgb(cr2, 0, WRITE_TROUGH_INTENSITY, 0); @@ -568,15 +572,20 @@ void tube_drawVector(cairo_t *cr, cairo_t *cr2) isBrightSpot = 1; // also to be set if writeThroughMode } -void tube_setupPainting(cairo_t *cr, cairo_t *cr2, char *fontName, int fontSize) +void tube_setupPainting(cairo_t *cr, cairo_t *cr2, char *fontName) { cairo_set_antialias(cr, CAIRO_ANTIALIAS_BEST); cairo_set_line_width (cr, 1); - cairo_set_source_rgb(cr, 0, NORMAL_INTENSITY, 0); - + cairo_set_source_rgb(cr, 0, NORMAL_INTENSITY, 0); cairo_select_font_face(cr, fontName, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - cairo_select_font_face(cr2, fontName, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); - - cairo_set_font_size(cr, fontSize); - cairo_set_font_size(cr2,fontSize); + cairo_select_font_face(cr2, fontName, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); +} + +void tube_changeCharacterSize(cairo_t *cr, cairo_t *cr2,int charsPerLine, int charsPerPage, int fontSize) +{ + int fontsize; + hDotsPerChar = windowWidth / charsPerLine; + vDotsPerChar = windowHeight / charsPerPage; + leftmargin = 0; + currentFontSize = fontSize; } diff --git a/tube.h b/tube.h index b02afda..acc69b1 100644 --- a/tube.h +++ b/tube.h @@ -37,7 +37,8 @@ extern void tube_clearPersistent(cairo_t *cr, cairo_t *cr2); extern int tube_isInput(); extern int tube_getInputChar(); extern void tube_emulateDeflectionTime(); -void tube_drawVector(cairo_t *cr, cairo_t *cr2); -void tube_drawCharacter(cairo_t *cr, cairo_t *cr2, char ch); -void tube_drawPoint(cairo_t *cr, cairo_t *cr2); -void tube_setupPainting(cairo_t *cr, cairo_t *cr2, char *fontName, int fontSize); +extern void tube_drawVector(cairo_t *cr, cairo_t *cr2); +extern void tube_drawCharacter(cairo_t *cr, cairo_t *cr2, char ch); +extern void tube_drawPoint(cairo_t *cr, cairo_t *cr2); +extern void tube_setupPainting(cairo_t *cr, cairo_t *cr2, char *fontName); +extern void tube_changeCharacterSize(cairo_t *cr, cairo_t *cr2, int charsPerLine, int charsPerPage, int fontSize); diff --git a/versions.txt b/versions.txt index 06bc22d..9d64b04 100644 --- a/versions.txt +++ b/versions.txt @@ -1,3 +1,9 @@ +Next version t.b.b +================== +New features +- variable character size, set with ESC sequencies, reset if screen is cleared + + Version 1.1 April 12, 2019 ========================== Phase: Fist offical release