From 3b6d5dcf1af4c22ea6f77f3563cf9abfb7be4fcd Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sat, 24 Jul 1999 15:51:12 +0000 Subject: [PATCH] Fixes so it runs (with bugs) without Color QuickDraw. [originally from svn r186] --- mac.h | 5 ++++ maccfg.c | 11 +++++--- macterm.c | 75 +++++++++++++++++++++++++++++++++---------------------- 3 files changed, 57 insertions(+), 34 deletions(-) diff --git a/mac.h b/mac.h index f6a3c9f6..ea14783a 100644 --- a/mac.h +++ b/mac.h @@ -7,6 +7,7 @@ #include #include +#include #include struct mac_gestalts { @@ -18,6 +19,8 @@ struct mac_gestalts { extern struct mac_gestalts mac_gestalts; +#define HAVE_COLOR_QD() (mac_gestalts.qdvers > gestaltOriginalQD) + /* from macterm.c */ extern void mac_newsession(void); extern void mac_activateterm(WindowPtr, Boolean); @@ -32,6 +35,8 @@ extern void mac_menuterm(WindowPtr, short, short); extern void mac_loadconfig(Config *); /* from macnet.c */ extern void macnet_eventcheck(void); +/* from opentpt.c */ +extern void opentpt_shutdown(void); #endif diff --git a/maccfg.c b/maccfg.c index b9f9b79d..ad01ac78 100644 --- a/maccfg.c +++ b/maccfg.c @@ -1,9 +1,10 @@ -/* $Id: maccfg.c,v 1.1.2.5 1999/03/28 02:06:10 ben Exp $ */ +/* $Id: maccfg.c,v 1.1.2.6 1999/07/24 15:51:12 ben Exp $ */ /* * maccfg.c -- Mac port configuration */ #include +#include #include #include @@ -129,9 +130,11 @@ void mac_loadconfig(Config *cfg) { /* Colour */ cfg->try_palette = FALSE; /* XXX */ cfg->bold_colour = (s->colour_flags & BOLD_COLOUR) != 0; - cfg->colours = GetNewPalette(s->colours_id); - if (cfg->colours == NULL) - fatalbox("Failed to get default palette"); + if (HAVE_COLOR_QD()) { + cfg->colours = GetNewPalette(s->colours_id); + if (cfg->colours == NULL) + fatalbox("Failed to get default palette"); + } /* Selection */ cfg->implicit_copy = (s->selection_flags & IMPLICIT_COPY) != 0; get_wordness(s->wordness_id, cfg->wordness); diff --git a/macterm.c b/macterm.c index 39a0d9b7..d310ad57 100644 --- a/macterm.c +++ b/macterm.c @@ -1,4 +1,4 @@ -/* $Id: macterm.c,v 1.1.2.34 1999/04/04 18:23:34 ben Exp $ */ +/* $Id: macterm.c,v 1.1.2.35 1999/07/24 15:51:12 ben Exp $ */ /* * Copyright (c) 1999 Simon Tatham * Copyright (c) 1999 Ben Harris @@ -96,11 +96,6 @@ static RoutineDescriptor mac_set_attr_mask_upp = #define mac_set_attr_mask_upp mac_set_attr_mask #endif /* not TARGET_RT_MAC_CFM */ -/* - * Temporary hack till I get the terminal emulator supporting multiple - * sessions - */ - static void inbuf_putc(Session *s, int c) { s->inbuf[s->inbuf_head] = c; s->inbuf_head = (s->inbuf_head+1) & INBUF_MASK; @@ -140,13 +135,13 @@ void mac_newsession(void) { s = smalloc(sizeof(*s)); memset(s, 0, sizeof(*s)); mac_loadconfig(&s->cfg); - s->back = &telnet_backend; + s->back = &null_backend; /* XXX: Own storage management? */ - if (mac_gestalts.qdvers == gestaltOriginalQD) - s->window = GetNewWindow(wTerminal, NULL, (WindowPtr)-1); - else + if (HAVE_COLOR_QD()) s->window = GetNewCWindow(wTerminal, NULL, (WindowPtr)-1); + else + s->window = GetNewWindow(wTerminal, NULL, (WindowPtr)-1); SetWRefCon(s->window, (long)s); s->scrollbar = GetNewControl(cVScroll, s->window); term_init(s); @@ -154,16 +149,18 @@ void mac_newsession(void) { mac_initfont(s); mac_initpalette(s); s->attr_mask = ATTR_MASK; - /* Set to FALSE to not get palette updates in the background. */ - SetPalette(s->window, s->palette, TRUE); - ActivatePalette(s->window); + if (HAVE_COLOR_QD()) { + /* Set to FALSE to not get palette updates in the background. */ + SetPalette(s->window, s->palette, TRUE); + ActivatePalette(s->window); + } ShowWindow(s->window); s->back->init(s); -/* starttime = TickCount(); */ -/* display_resource(s, 'pTST', 128); */ -/* sprintf(msg, "Elapsed ticks: %d\015\012", TickCount() - starttime); */ -/* inbuf_putstr(s, msg); */ -/* term_out(s); */ + starttime = TickCount(); + display_resource(s, 'pTST', 128); + sprintf(msg, "Elapsed ticks: %d\015\012", TickCount() - starttime); + inbuf_putstr(s, msg); + term_out(s); } static void mac_initfont(Session *s) { @@ -209,7 +206,7 @@ static void mac_adjustsize(Session *s, int newrows, int newcols) { static void mac_initpalette(Session *s) { - if (mac_gestalts.qdvers == gestaltOriginalQD) + if (!HAVE_COLOR_QD()) return; s->palette = NewPalette((*s->cfg.colours)->pmEntries, NULL, pmCourteous, 0); @@ -226,6 +223,8 @@ static void mac_initpalette(Session *s) { */ static void mac_adjustwinbg(Session *s) { + if (!HAVE_COLOR_QD()) + return; #if TARGET_RT_CFM /* XXX doesn't link (at least for 68k) */ if (mac_gestalts.windattr & gestaltWindowMgrPresent) SetWindowContentColor(s->window, @@ -680,7 +679,10 @@ void mac_activateterm(WindowPtr window, Boolean active) { if (active) ShowControl(s->scrollbar); else { - PmBackColor(DEFAULT_BG); /* HideControl clears behind the control */ + if (HAVE_COLOR_QD()) + PmBackColor(DEFAULT_BG);/* HideControl clears behind the control */ + else + BackColor(blackColor); HideControl(s->scrollbar); } mac_drawgrowicon(s); @@ -699,8 +701,13 @@ void mac_updateterm(WindowPtr window) { (*window->visRgn)->rgnBBox.right, (*window->visRgn)->rgnBBox.bottom); /* Restore default colours in case the Window Manager uses them */ - PmForeColor(DEFAULT_FG); - PmBackColor(DEFAULT_BG); + if (HAVE_COLOR_QD()) { + PmForeColor(DEFAULT_FG); + PmBackColor(DEFAULT_BG); + } else { + ForeColor(whiteColor); + BackColor(blackColor); + } if (FrontWindow() != window) EraseRect(&(*s->scrollbar)->contrlRect); UpdateControls(window, window->visRgn); @@ -771,7 +778,7 @@ void do_text(Session *s, int x, int y, char *text, int len, TextFace(style); TextSize(s->cfg.fontheight); SetFractEnable(FALSE); /* We want characters on pixel boundaries */ - if (mac_gestalts.qdvers > gestaltOriginalQD) + if (HAVE_COLOR_QD()) if (style & bold) { SpaceExtra(s->font_boldadjust << 16); CharExtra(s->font_boldadjust << 16); @@ -781,10 +788,10 @@ void do_text(Session *s, int x, int y, char *text, int len, } textrgn = NewRgn(); RectRgn(textrgn, &a.textrect); - if (mac_gestalts.qdvers == gestaltOriginalQD) - do_text_for_device(1, 0, NULL, (long)&a); - else + if (HAVE_COLOR_QD()) DeviceLoop(textrgn, &do_text_for_device_upp, (long)&a, 0); + else + do_text_for_device(1, 0, NULL, (long)&a); DisposeRgn(textrgn); /* Tell the window manager about it in case this isn't an update */ ValidRect(&a.textrect); @@ -843,6 +850,7 @@ static pascal void do_text_for_device(short depth, short devflags, else EraseRect(&a->leadrect); MoveTo(a->textrect.left, a->textrect.top + a->s->font_ascent); + /* FIXME: Sort out bold width adjustments on Original QuickDraw. */ DrawText(a->text, 0, a->len); if (a->attr & ATTR_PASCURS) { @@ -866,7 +874,10 @@ static pascal void do_text_for_device(short depth, short devflags, void pre_paint(Session *s) { s->attr_mask = ATTR_INVALID; - DeviceLoop(s->window->visRgn, &mac_set_attr_mask_upp, (long)s, 0); + if (HAVE_COLOR_QD()) + DeviceLoop(s->window->visRgn, &mac_set_attr_mask_upp, (long)s, 0); + else + mac_set_attr_mask(1, 0, NULL, (long)s); } static pascal void mac_set_attr_mask(short depth, short devflags, @@ -966,7 +977,7 @@ void palette_set(Session *s, int n, int r, int g, int b) { 16, 17, 18, 20, 22 }; - if (mac_gestalts.qdvers == gestaltOriginalQD) + if (!HAVE_COLOR_QD()) return; col.red = r * 0x0101; col.green = g * 0x0101; @@ -984,7 +995,7 @@ void palette_set(Session *s, int n, int r, int g, int b) { */ void palette_reset(Session *s) { - if (mac_gestalts.qdvers == gestaltOriginalQD) + if (!HAVE_COLOR_QD()) return; CopyPalette(s->cfg.colours, s->palette, 0, 0, (*s->cfg.colours)->pmEntries); @@ -1001,8 +1012,12 @@ void do_scroll(Session *s, int topline, int botline, int lines) { Rect r; RgnHandle update; + /* FIXME: This is seriously broken on Original QuickDraw. No idea why. */ SetPort(s->window); - PmBackColor(DEFAULT_BG); + if (HAVE_COLOR_QD()) + PmBackColor(DEFAULT_BG); + else + BackColor(blackColor); update = NewRgn(); SetRect(&r, 0, topline * s->font_height, s->cols * s->font_width, (botline + 1) * s->font_height); -- 2.45.2