From f8422085ff988d6c9cbf4cf93c497994d176ee89 Mon Sep 17 00:00:00 2001 From: Etienne Brateau <etienne.brateau@gmail.com> Date: Sun, 27 Oct 2019 22:57:39 +0100 Subject: [PATCH] Move colors into a separate files --- Makefile | 3 +- include/graphics/color.h | 9 ++ src/graphics/color.c | 211 +++++++++++++++++++++++++++++++++++++++ src/log.c | 208 +------------------------------------- 4 files changed, 223 insertions(+), 208 deletions(-) create mode 100644 include/graphics/color.h create mode 100644 src/graphics/color.c diff --git a/Makefile b/Makefile index 3421040..a619138 100644 --- a/Makefile +++ b/Makefile @@ -71,7 +71,8 @@ FONTS = GRAPHICSOBJ = $(TARGET_DIR)/graphics/newci.o \ $(TARGET_DIR)/graphics/newkbd.o \ $(TARGET_DIR)/graphics/newcrt.o \ - $(TARGET_DIR)/graphics/mylib.o + $(TARGET_DIR)/graphics/mylib.o \ + $(TARGET_DIR)/graphics/color.o \ UTILSOBJ = $(TARGET_DIR)/utils/sysdevs.o \ $(TARGET_DIR)/utils/misc.o \ diff --git a/include/graphics/color.h b/include/graphics/color.h new file mode 100644 index 0000000..866a17f --- /dev/null +++ b/include/graphics/color.h @@ -0,0 +1,9 @@ +#ifndef COLOR_H +#define COLOR_H + +void getcolor(char *name, short *value, short default_color); +void initcolors(); +short reducecolor8(short color); +long getcolorname(char *w); + +#endif diff --git a/src/graphics/color.c b/src/graphics/color.c new file mode 100644 index 0000000..4aeee1b --- /dev/null +++ b/src/graphics/color.c @@ -0,0 +1,211 @@ +#include "graphics/color.h" +#include <utils/p2c.h> +#include <utils/strings.h> +#include <utils/strlist.h> +#include "logstuff.h" +#include "utils.h" +#include "logglobals.h" + +void getcolor(char *name_, short *val, short default_color) +{ + char name[256]; + strlist_t *cp; + char STR2[256]; + char STR3[256]; + + strcpy(name, name_); + strupper(name, strcpy(STR2, strltrim(strrtrim(strcpy(STR3, name))))); + cp = strlist_find(colorbase, name); + if (cp != NULL) + *val = (long)cp->value; + else + *val = reducecolor8(default_color); +} + +void initcolors() +{ + getcolor("BACKGR", &gg.color.backgr, log_gray); /* Color of background */ + getcolor("CURSOR", &gg.color.cursor, log_white); /* Color of cursors */ + recolor_log_cursors(gg.color.cursor, false); + getcolor("GATE", &gg.color.gate, log_cyan); /* Color of gate in circuit */ + getcolor("DIMGATE", &gg.color.dimgate, log_dcyan); + /* Color of dimmed gate */ + getcolor("KINDGATE", &gg.color.kindgate, log_green); + /* Color of gate in menu area */ + getcolor("CATGATE", &gg.color.catgate, log_cyan); + /* Color of gate in catalog */ + getcolor("GATEPIN", &gg.color.gatepin, log_red); + /* Color of pins on gates */ + getcolor("PINNUM", &gg.color.pinnum, log_yellow); + /* Color of pin numbers on gates */ + getcolor("WIRE", gg.color.wire, log_green); + getcolor("VLSIGREEN", &gg.color.wire[log_wcol_green - log_wcol_normal], + log_green); + getcolor("VLSIYELLOW", &gg.color.wire[log_wcol_yellow - log_wcol_normal], + log_yellow); + getcolor("VLSIRED", &gg.color.wire[log_wcol_red - log_wcol_normal], log_red); + getcolor("VLSIBLUE", &gg.color.wire[log_wcol_blue - log_wcol_normal], + log_cyan); + getcolor("XWIRE", &gg.color.xwire, log_xgreen); + /* Color of wires while moving */ + getcolor("SOLDER", &gg.color.solder, log_green); + /* Color of solder point in circuit */ + getcolor("CONFLICT", &gg.color.conflict, log_cred); + /* Color of wire during node conflict */ + getcolor("MENUWORD", &gg.color.menuword, log_green); + /* Color of words in menu area */ + getcolor("SELWORD", &gg.color.selword, log_yellow); + /* Color of highlighted words */ + getcolor("MESSAGE", &gg.color.message, log_yellow); + /* Color of messages */ + getcolor("BASELINE", &gg.color.baseline, log_cyan); + /* Color of baseline (default) */ + getcolor("PAGE1", &gg.color.page1, log_green); /* Color of word "PAGE" */ + getcolor("PAGE2", &gg.color.page2, log_yellow); /* Color of page number */ + getcolor("PAGE3", &gg.color.page3, log_green); /* Color of word "OF" */ + getcolor("PAGE4", &gg.color.page4, log_yellow); + /* Color of number of pages */ + getcolor("SELECT", &gg.color.select, log_white); + /* Color of selected areas */ + getcolor("SCROLL", &gg.color.scroll, log_white); + /* Color of scroll feedback */ + getcolor("SIGNAL", &gg.color.signal, log_pink); + /* Color of TO/FROM node name */ + getcolor("LABELTEXT", &gg.color.labeltext, log_dyellow); + /* Color of text labels */ + getcolor("DASHBOX", &gg.color.dashbox, log_dyellow); + /* Color of dashed boxes */ + getcolor("MARKER", &gg.color.marker, log_pink); + /* Color of printing markers */ + getcolor("CHART", &gg.color.chart, log_yellow); + /* Color of node history trace */ + getcolor("DIVISION", &gg.color.division, log_white); + /* Color of scope divisions */ + getcolor("POPUPBOX", &gg.color.popupbox, log_white); + /* Color of pop-up menu outline */ + getcolor("POPUPWORD", &gg.color.popupword, log_green); + /* Color of text in pop-up menus */ + getcolor("POPUPSEL", &gg.color.popupsel, log_pink); + /* Color of selection in pop-up menus */ + getcolor("REDWORD", &gg.color.redword, log_pink); + /* Color of special menu items */ + getcolor("BLUEWORD", &gg.color.blueword, log_cyan); + /* Color of experimental menu items */ + getcolor("VLSICUT", &gg.color.vlsicut, log_white); + /* Color of VLSI contact cuts */ + getcolor("GATEGREEN", &gategreen, log_green); + getcolor("GATEYELLOW", &gateyellow, log_yellow); + getcolor("GATERED", &gatered, log_red); + getcolor("GATEWHITE", &gatewhite, log_white); + getcolor("GATEBLACK", &gateblack, log_black); + getcolor("GATEORANGE", &gateorange, log_orange); + getcolor("DEFINEBOX", &defineboxcolor, log_cyan); + /* Color of DEFINE command's box */ + getcolor("DEFINEBACK", &definebackcolor, log_black); + /* Color of background of DEFINE box */ + getcolor("DEFINETEXT", &definetextcolor, log_green); + /* Color of text in DEFINE box */ + getcolor("CATALOGBOX", &catboxcolor, log_dyellow); + /* Color of Catalog grouping box */ + calltools(act_color); + stamp(&gg.colorstamp); +} + + +short reducecolor8(short c) +{ + short Result; + + if (!eightcolors) + return c; + + switch (c) + { + + case log_mred: + Result = log_red; + break; + + case log_orange: + Result = log_red; + break; + + case log_black: + Result = log_black8; + break; + + case log_pink: + Result = log_red; + break; + + case log_dyellow: + Result = log_yellow; + break; + + case log_xgreen: + Result = log_green; + break; + + case log_dcyan: + Result = log_black8; + break; + + case log_dred: + Result = log_black8; + break; + + case log_lgray: + Result = log_white; + break; + + case log_cred: + Result = log_cred8; + break; + + default: + Result = c; + break; + } + return Result; +} + +typedef char cnamearray[16][8]; + +const cnamearray cnames = +{ + "GRAY", "RED", "GREEN", "YELLOW", "MRED", "ORANGE", "CYAN", "WHITE", + "BLACK", "PINK", "DYELLOW", "XGREEN", "DCYAN", "DRED", "LGRAY", "CRED" +}; + + +long getcolorname(char *w_) +{ + long Result; + char w[256]; + short i; + char STR1[256]; + char STR2[256]; + + strcpy(w, w_); + strcpy(STR1, strltrim(strrtrim(strupper(STR2, w)))); + strcpy(w, STR1); + i = 15; + while (i >= 0 && strcmp(cnames[i], w)) + i--; + if (i >= 0) + return i; + TRY(try29); + i = getint(w, -1L); + if ((unsigned)i > 15) + Result = -1; + else + Result = i; + RECOVER(try29); + if (P_escapecode == -20) + _Escape(P_escapecode); + else + return -1; + ENDTRY(try29); + return Result; +} + diff --git a/src/log.c b/src/log.c index a68110b..012fd2b 100644 --- a/src/log.c +++ b/src/log.c @@ -59,6 +59,7 @@ #include <utils/strings.h> #include <utils/newasm.h> #include <graphics/newcrt.h> +#include <graphics/color.h> #include <utils/logger.h> #include "settings.h" @@ -7373,8 +7374,6 @@ static void findboxmarker(log_krec *k, short num, short *x1, short *y1, short *x } -static void initcolors (); - /* Local variables for doshellescape: */ struct LOC_doshellescape { long oldc; @@ -10105,65 +10104,6 @@ static void popupmenu(short num) #undef cols -static short reducecolor8(short c) -{ - short Result; - - if (!eightcolors) - return c; - - switch (c) - { - - case log_mred: - Result = log_red; - break; - - case log_orange: - Result = log_red; - break; - - case log_black: - Result = log_black8; - break; - - case log_pink: - Result = log_red; - break; - - case log_dyellow: - Result = log_yellow; - break; - - case log_xgreen: - Result = log_green; - break; - - case log_dcyan: - Result = log_black8; - break; - - case log_dred: - Result = log_black8; - break; - - case log_lgray: - Result = log_white; - break; - - case log_cred: - Result = log_cred8; - break; - - default: - Result = c; - break; - } - return Result; -} - - - static void setcmap(short n, short r, short g, short b) { n = reducecolor8(n); @@ -10174,112 +10114,6 @@ static void setcmap(short n, short r, short g, short b) } -static void getcolor(char *name_, short *val, short default_color) -{ - char name[256]; - strlist_t *cp; - char STR2[256]; - char STR3[256]; - - strcpy(name, name_); - strupper(name, strcpy(STR2, strltrim(strrtrim(strcpy(STR3, name))))); - cp = strlist_find(colorbase, name); - if (cp != NULL) - *val = (long)cp->value; - else - *val = reducecolor8(default_color); -} - -static void initcolors() -{ - getcolor("BACKGR", &gg.color.backgr, log_gray); /* Color of background */ - getcolor("CURSOR", &gg.color.cursor, log_white); /* Color of cursors */ - recolor_log_cursors(gg.color.cursor, false); - getcolor("GATE", &gg.color.gate, log_cyan); /* Color of gate in circuit */ - getcolor("DIMGATE", &gg.color.dimgate, log_dcyan); - /* Color of dimmed gate */ - getcolor("KINDGATE", &gg.color.kindgate, log_green); - /* Color of gate in menu area */ - getcolor("CATGATE", &gg.color.catgate, log_cyan); - /* Color of gate in catalog */ - getcolor("GATEPIN", &gg.color.gatepin, log_red); - /* Color of pins on gates */ - getcolor("PINNUM", &gg.color.pinnum, log_yellow); - /* Color of pin numbers on gates */ - getcolor("WIRE", gg.color.wire, log_green); - getcolor("VLSIGREEN", &gg.color.wire[log_wcol_green - log_wcol_normal], - log_green); - getcolor("VLSIYELLOW", &gg.color.wire[log_wcol_yellow - log_wcol_normal], - log_yellow); - getcolor("VLSIRED", &gg.color.wire[log_wcol_red - log_wcol_normal], log_red); - getcolor("VLSIBLUE", &gg.color.wire[log_wcol_blue - log_wcol_normal], - log_cyan); - getcolor("XWIRE", &gg.color.xwire, log_xgreen); - /* Color of wires while moving */ - getcolor("SOLDER", &gg.color.solder, log_green); - /* Color of solder point in circuit */ - getcolor("CONFLICT", &gg.color.conflict, log_cred); - /* Color of wire during node conflict */ - getcolor("MENUWORD", &gg.color.menuword, log_green); - /* Color of words in menu area */ - getcolor("SELWORD", &gg.color.selword, log_yellow); - /* Color of highlighted words */ - getcolor("MESSAGE", &gg.color.message, log_yellow); - /* Color of messages */ - getcolor("BASELINE", &gg.color.baseline, log_cyan); - /* Color of baseline (default) */ - getcolor("PAGE1", &gg.color.page1, log_green); /* Color of word "PAGE" */ - getcolor("PAGE2", &gg.color.page2, log_yellow); /* Color of page number */ - getcolor("PAGE3", &gg.color.page3, log_green); /* Color of word "OF" */ - getcolor("PAGE4", &gg.color.page4, log_yellow); - /* Color of number of pages */ - getcolor("SELECT", &gg.color.select, log_white); - /* Color of selected areas */ - getcolor("SCROLL", &gg.color.scroll, log_white); - /* Color of scroll feedback */ - getcolor("SIGNAL", &gg.color.signal, log_pink); - /* Color of TO/FROM node name */ - getcolor("LABELTEXT", &gg.color.labeltext, log_dyellow); - /* Color of text labels */ - getcolor("DASHBOX", &gg.color.dashbox, log_dyellow); - /* Color of dashed boxes */ - getcolor("MARKER", &gg.color.marker, log_pink); - /* Color of printing markers */ - getcolor("CHART", &gg.color.chart, log_yellow); - /* Color of node history trace */ - getcolor("DIVISION", &gg.color.division, log_white); - /* Color of scope divisions */ - getcolor("POPUPBOX", &gg.color.popupbox, log_white); - /* Color of pop-up menu outline */ - getcolor("POPUPWORD", &gg.color.popupword, log_green); - /* Color of text in pop-up menus */ - getcolor("POPUPSEL", &gg.color.popupsel, log_pink); - /* Color of selection in pop-up menus */ - getcolor("REDWORD", &gg.color.redword, log_pink); - /* Color of special menu items */ - getcolor("BLUEWORD", &gg.color.blueword, log_cyan); - /* Color of experimental menu items */ - getcolor("VLSICUT", &gg.color.vlsicut, log_white); - /* Color of VLSI contact cuts */ - getcolor("GATEGREEN", &gategreen, log_green); - getcolor("GATEYELLOW", &gateyellow, log_yellow); - getcolor("GATERED", &gatered, log_red); - getcolor("GATEWHITE", &gatewhite, log_white); - getcolor("GATEBLACK", &gateblack, log_black); - getcolor("GATEORANGE", &gateorange, log_orange); - getcolor("DEFINEBOX", &defineboxcolor, log_cyan); - /* Color of DEFINE command's box */ - getcolor("DEFINEBACK", &definebackcolor, log_black); - /* Color of background of DEFINE box */ - getcolor("DEFINETEXT", &definetextcolor, log_green); - /* Color of text in DEFINE box */ - getcolor("CATALOGBOX", &catboxcolor, log_dyellow); - /* Color of Catalog grouping box */ - calltools(act_color); - stamp(&gg.colorstamp); -} - - static void echomacro(char key) { macrorec *mp; @@ -10401,46 +10235,6 @@ static void definemenu(short num, short part, char *name, char *cmd, short bool_ } } -typedef char cnamearray[16][8]; - -const cnamearray cnames = -{ - "GRAY", "RED", "GREEN", "YELLOW", "MRED", "ORANGE", "CYAN", "WHITE", - "BLACK", "PINK", "DYELLOW", "XGREEN", "DCYAN", "DRED", "LGRAY", "CRED" -}; - - -static long getcolorname(char *w_) -{ - long Result; - char w[256]; - short i; - char STR1[256]; - char STR2[256]; - - strcpy(w, w_); - strcpy(STR1, strltrim(strrtrim(strupper(STR2, w)))); - strcpy(w, STR1); - i = 15; - while (i >= 0 && strcmp(cnames[i], w)) - i--; - if (i >= 0) - return i; - TRY(try29); - i = getint(w, -1L); - if ((unsigned)i > 15) - Result = -1; - else - Result = i; - RECOVER(try29); - if (P_escapecode == -20) - _Escape(P_escapecode); - else - return -1; - ENDTRY(try29); - return Result; -} - void docnffunction() { char arg[256]; -- GitLab