From 7a4464725f6ae7dfe9b302d8f1e10ab9605c7783 Mon Sep 17 00:00:00 2001 From: sam-astro <77079540+sam-astro@users.noreply.github.com> Date: Mon, 9 May 2022 16:16:28 -0400 Subject: [PATCH] Color printing text for windows --- ZSharp-Installer/ZSharp-Installer.vdproj | 84 +++++++++++++- ZSharp/Main.cpp | 4 + ZSharp/builtin.h | 139 +++++++++++++---------- 3 files changed, 163 insertions(+), 64 deletions(-) diff --git a/ZSharp-Installer/ZSharp-Installer.vdproj b/ZSharp-Installer/ZSharp-Installer.vdproj index a785fac..caecd16 100644 --- a/ZSharp-Installer/ZSharp-Installer.vdproj +++ b/ZSharp-Installer/ZSharp-Installer.vdproj @@ -39,6 +39,12 @@ } "Entry" { + "MsmKey" = "8:_46D1C7842E24CD892F141F606320254D" + "OwnerKey" = "8:_2441313DD4DA406BBC1915DDEE0AC74C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_4B23F888FF8342319507C8AAA3334953" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -75,12 +81,24 @@ } "Entry" { + "MsmKey" = "8:_B45D1C0CAD47E39747A5D61CA224DD63" + "OwnerKey" = "8:_2441313DD4DA406BBC1915DDEE0AC74C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_EF059CAB8D2A4444B8233E61C53F3349" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { + "MsmKey" = "8:_FE3DC1C6AB05AF8BE37B122F3511FF54" + "OwnerKey" = "8:_2441313DD4DA406BBC1915DDEE0AC74C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_FEA298B841784CB2933DCEB504513792" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -232,6 +250,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_46D1C7842E24CD892F141F606320254D" + { + "SourcePath" = "8:VCRUNTIME140.dll" + "TargetName" = "8:VCRUNTIME140.dll" + "Tag" = "8:" + "Folder" = "8:_BCDF457FF4564F7BBFD6AEF054FE16C2" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4B23F888FF8342319507C8AAA3334953" { "SourcePath" = "8:..\\Releases\\ZSharp-Win-x64\\libpng16-16.dll" @@ -352,6 +390,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B45D1C0CAD47E39747A5D61CA224DD63" + { + "SourcePath" = "8:MSVCP140.dll" + "TargetName" = "8:MSVCP140.dll" + "Tag" = "8:" + "Folder" = "8:_BCDF457FF4564F7BBFD6AEF054FE16C2" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EF059CAB8D2A4444B8233E61C53F3349" { "SourcePath" = "8:..\\Releases\\ZSharp-Win-x64\\Pong-Example-Project\\script.zs" @@ -372,6 +430,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_FE3DC1C6AB05AF8BE37B122F3511FF54" + { + "SourcePath" = "8:VCRUNTIME140_1.dll" + "TargetName" = "8:VCRUNTIME140_1.dll" + "Tag" = "8:" + "Folder" = "8:_BCDF457FF4564F7BBFD6AEF054FE16C2" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_FEA298B841784CB2933DCEB504513792" { "SourcePath" = "8:..\\Releases\\ZSharp-Win-x64\\libfreetype-6.dll" @@ -459,15 +537,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:ZSharp" - "ProductCode" = "8:{B75754F2-622A-4EEE-9B96-1D044E1D851A}" - "PackageCode" = "8:{43E9A0EA-2D92-4C19-B840-BADB645A9016}" + "ProductCode" = "8:{627A4201-79CB-478F-8428-14290415EB37}" + "PackageCode" = "8:{CC2CE192-0CB8-470F-A41F-324CE6C0C71E}" "UpgradeCode" = "8:{8ABDE53F-7FF9-455B-A777-B4C1C624FA13}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:2.0.0" + "ProductVersion" = "8:2.0.1" "Manufacturer" = "8:Sam-Astro" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" diff --git a/ZSharp/Main.cpp b/ZSharp/Main.cpp index e678048..1dc70b7 100644 --- a/ZSharp/Main.cpp +++ b/ZSharp/Main.cpp @@ -4,6 +4,7 @@ #include #define DEVELOPER_MESSAGES false #define EXAMPLE_PROJECT false +#define NAMEVERSION "ZSharp v2.0.1" #if defined(__unix__) #define UNIX true @@ -667,6 +668,9 @@ int parseZSharp(string script) int main(int argc, char* argv[]) { + PrintColored(NAMEVERSION, blackFGColor, whiteBGColor, false); + cout << endl << endl; + // Gathers builtin functions and variables GetBuiltins(ZSContents); functionValues = builtinFunctionValues; diff --git a/ZSharp/builtin.h b/ZSharp/builtin.h index 5cf1f30..5a181fb 100644 --- a/ZSharp/builtin.h +++ b/ZSharp/builtin.h @@ -16,7 +16,9 @@ #include "strops.h" #include "graphics.h" #include "anyops.h" +#if WINDOWS #include "color.hpp" +#endif //#define DEVELOPER_MESSAGES false @@ -28,41 +30,42 @@ vector types = { "int", "float", "string", "bool", "void", "null", "Spri unordered_map>> builtinFunctionValues; unordered_map builtinVarVals; - // Foreground colors - const std::string blackFGColor = "\x1B[30m"; - const std::string redFGColor = "\x1B[31m"; - const std::string greenFGColor = "\x1B[32m"; - const std::string yellowFGColor = "\x1B[33m"; - const std::string blueFGColor = "\x1B[34m"; - const std::string magentaFGColor = "\x1B[35m"; - const std::string cyanFGColor = "\x1B[36m"; - const std::string whiteFGColor = "\x1B[37m"; - const std::string brightBlackFGColor = "\x1B[90m"; - const std::string brightRedFGColor = "\x1B[91m"; - const std::string brightGreenFGColor = "\x1B[92m"; - const std::string brightYellowFGColor = "\x1B[93m"; - const std::string brightBlueFGColor = "\x1B[94m"; - const std::string brightMagentaFGColor = "\x1B[95m"; - const std::string brightCyanFGColor = "\x1B[96m"; - const std::string brightWhiteFGColor = "\x1B[97m"; - - //Background colors - const std::string blackBGColor = "\x1B[40m"; - const std::string redBGColor = "\x1B[41m"; - const std::string greenBGColor = "\x1B[42m"; - const std::string yellowBGColor = "\x1B[43m"; - const std::string blueBGColor = "\x1B[44m"; - const std::string magentaBGColor = "\x1B[45m"; - const std::string cyanBGColor = "\x1B[46m"; - const std::string whiteBGColor = "\x1B[47m"; - const std::string brightBlackBGColor = "\x1B[100m"; - const std::string brightRedBGColor = "\x1B[101m"; - const std::string brightGreenBGColor = "\x1B[102m"; - const std::string brightYellowBGColor = "\x1B[103m"; - const std::string brightBlueBGColor = "\x1B[104m"; - const std::string brightMagentaBGColor = "\x1B[105m"; - const std::string brightCyanBGColor = "\x1B[106m"; - const std::string brightWhiteBGColor = "\x1B[107m"; +// Foreground colors +const std::string blackFGColor = "\x1B[30m"; +const std::string redFGColor = "\x1B[31m"; +const std::string greenFGColor = "\x1B[32m"; +const std::string yellowFGColor = "\x1B[33m"; +const std::string blueFGColor = "\x1B[34m"; +const std::string magentaFGColor = "\x1B[35m"; +const std::string cyanFGColor = "\x1B[36m"; +const std::string whiteFGColor = "\x1B[37m"; +const std::string brightBlackFGColor = "\x1B[90m"; +const std::string brightRedFGColor = "\x1B[91m"; +const std::string brightGreenFGColor = "\x1B[92m"; +const std::string brightYellowFGColor = "\x1B[93m"; +const std::string brightBlueFGColor = "\x1B[94m"; +const std::string brightMagentaFGColor = "\x1B[95m"; +const std::string brightCyanFGColor = "\x1B[96m"; +const std::string brightWhiteFGColor = "\x1B[97m"; +//Background colors +const std::string blackBGColor = "\x1B[40m"; +const std::string redBGColor = "\x1B[41m"; +const std::string greenBGColor = "\x1B[42m"; +const std::string yellowBGColor = "\x1B[43m"; +const std::string blueBGColor = "\x1B[44m"; +const std::string magentaBGColor = "\x1B[45m"; +const std::string cyanBGColor = "\x1B[46m"; +const std::string whiteBGColor = "\x1B[47m"; +const std::string brightBlackBGColor = "\x1B[100m"; +const std::string brightRedBGColor = "\x1B[101m"; +const std::string brightGreenBGColor = "\x1B[102m"; +const std::string brightYellowBGColor = "\x1B[103m"; +const std::string brightBlueBGColor = "\x1B[104m"; +const std::string brightMagentaBGColor = "\x1B[105m"; +const std::string brightCyanBGColor = "\x1B[106m"; +const std::string brightWhiteBGColor = "\x1B[107m"; +// Reset color +const std::string resetColor = "\033[0m"; class NullType { public: @@ -87,32 +90,46 @@ float lerp(float a, float b, float f) void PrintColored(std::string text, std::string fgColor, std::string bgColor, bool isError) { #if WINDOWS - auto fg = dye::white(text); if (fgColor == blackFGColor) - fg = dye::black(text); + cerr << hue::black; else if (fgColor == redFGColor) - fg = dye::red(text); + cerr << hue::red; else if (fgColor == greenFGColor) - fg = dye::green(text); + cerr << hue::green; else if (fgColor == yellowFGColor) - fg = dye::yellow(text); + cerr << hue::yellow; else if (fgColor == blueFGColor) - fg = dye::blue(text); + cerr << hue::blue; else if (fgColor == magentaFGColor) - fg = dye::purple(text); + cerr << hue::purple; else if (fgColor == cyanFGColor) - fg = dye::aqua(text); + cerr << hue::aqua; else if (fgColor == whiteFGColor) - fg = dye::white(text); - if(!isError) - std::cout << fg; - else - std::cerr << fg; + cerr << hue::white; + + if (bgColor == blackBGColor) + cerr << hue::on_black; + else if (bgColor == redBGColor) + cerr << hue::on_red; + else if (bgColor == greenBGColor) + cerr << hue::on_green; + else if (bgColor == yellowBGColor) + cerr << hue::on_yellow; + else if (bgColor == blueBGColor) + cerr << hue::on_blue; + else if (bgColor == magentaBGColor) + cerr << hue::on_purple; + else if (bgColor == cyanBGColor) + cerr << hue::on_aqua; + else if (bgColor == whiteBGColor) + cerr << hue::on_white; + + std::cerr << text << hue::reset; #else - if(!isError) - cout << fgColor + bgColor + name + resetColor; + if (!isError) + cout << fgColor + bgColor + text + resetColor; else - cerr << fgColor + bgColor + name + resetColor; + cerr << fgColor + bgColor + text + resetColor; #endif } @@ -134,9 +151,9 @@ int InterpreterLog(const string& logText) time_t timer = time(0); tm bt{}; -#if defined(__unix__) +#if UNIX //localtime_r(&timer, &bt); -#elif defined(_MSC_VER) +#elif WINDOWS localtime_s(&bt, &timer); Hour = bt.tm_hour; Min = bt.tm_min; @@ -147,9 +164,9 @@ int InterpreterLog(const string& logText) bt = *localtime(&timer); #endif - PrintColored("[" + to_string(Hour) + ":" + to_string(Min) + ":" + to_string(Sec) + "] ", blueFGColor, ""); - PrintColored("ZSharp: ", yellowFGColor, ""); - PrintColored(logText, greenFGColor, ""); + PrintColored("[" + to_string(Hour) + ":" + to_string(Min) + ":" + to_string(Sec) + "] ", blueFGColor, "", true); + PrintColored("ZSharp: ", yellowFGColor, "", true); + PrintColored(logText, greenFGColor, "", true); cout << std::endl; //cout << "\x1B[34m[" + to_string(Hour) + ":" + to_string(Min) + ":" + to_string(Sec) + "] \x1B[33mZSharp: \x1B[32m" << logText << "\033[0m\t\t" << endl; return 1; @@ -176,9 +193,9 @@ int LogCriticalError(const string& errorText) bt = *localtime(&timer); #endif - PrintColoredErr("[" + to_string(Hour) + ":" + to_string(Min) + ":" + to_string(Sec) + "] ", blueFGColor, "", true); - PrintColoredErr("ZSharp: ", yellowFGColor, "", true); - PrintColoredErr(errorText, redFGColor, "", true); + PrintColored("[" + to_string(Hour) + ":" + to_string(Min) + ":" + to_string(Sec) + "] ", blueFGColor, "", true); + PrintColored("ZSharp: ", yellowFGColor, "", true); + PrintColored(errorText, redFGColor, "", true); cerr << std::endl; //cerr << "\x1B[34m[" + to_string(Hour) + ":" + to_string(Min) + ":" + to_string(Sec) + "] \x1B[33mZSharp: \x1B[31mERROR: " << errorText << "\033[0m\t\t" << endl; exit(EXIT_FAILURE); @@ -297,7 +314,7 @@ int GetBuiltins(std::string s) } builtinFunctionValues[functName] = functionContents; //cout << functName << " is \n" << Vec2Str(functionContents) << endl << endl; - } + } else { if (words.at(lineNum).at(0) == "string") @@ -334,7 +351,7 @@ int GetBuiltins(std::string s) } return 0; -} + } // Executes boost::any ZSFunction(const string& name, const vector& args)