//Copyright 2017 Ryan Wick
//This file is part of Bandage
//Bandage is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//Bandage is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//You should have received a copy of the GNU General Public License
//along with Bandage. If not, see .
#include "globals.h"
#include
#include
#include
#include
#include
#include
#include
#include
QSharedPointer g_settings;
QSharedPointer g_memory;
MyGraphicsView * g_graphicsView;
double g_absoluteZoom;
QSharedPointer g_blastSearch;
QString m_tempDirectory;
QSharedPointer g_assemblyGraph;
QString formatIntForDisplay(int num)
{
QLocale locale;
return locale.toString(num);
}
QString formatIntForDisplay(long long num)
{
QLocale locale;
return locale.toString(num);
}
QString formatDoubleForDisplay(double num, int decimalPlacesToDisplay)
{
//Add a bit for rounding
double addValue = 0.5 / pow(10, decimalPlacesToDisplay);
num += addValue;
QLocale locale;
QString withCommas = locale.toString(num, 'f');
QString final;
bool pastDecimalPoint = false;
int numbersPastDecimalPoint = 0;
for (int i = 0; i < withCommas.length(); ++i)
{
final += withCommas[i];
if (pastDecimalPoint)
++numbersPastDecimalPoint;
if (numbersPastDecimalPoint >= decimalPlacesToDisplay)
return final;
if (withCommas[i] == locale.decimalPoint())
pastDecimalPoint = true;
}
return final;
}
QString formatDepthForDisplay(double depth)
{
if (depth == 0.0)
return "0.0x";
int decimals = 1;
double multipliedDepth = fabs(depth);
while (multipliedDepth < 10.0)
{
multipliedDepth *= 10.0;
decimals += 1;
}
return formatDoubleForDisplay(depth, decimals) + "x";
}
std::vector getPresetColours()
{
std::vector presetColours;
presetColours.push_back(QColor("#306FF8"));
presetColours.push_back(QColor("#86BB18"));
presetColours.push_back(QColor("#DF123A"));
presetColours.push_back(QColor("#181E2A"));
presetColours.push_back(QColor("#F91BBD"));
presetColours.push_back(QColor("#3CB2A4"));
presetColours.push_back(QColor("#D29AC1"));
presetColours.push_back(QColor("#E2922E"));
presetColours.push_back(QColor("#22501B"));
presetColours.push_back(QColor("#57297D"));
presetColours.push_back(QColor("#3FA0E6"));
presetColours.push_back(QColor("#770739"));
presetColours.push_back(QColor("#6A390C"));
presetColours.push_back(QColor("#25AB5D"));
presetColours.push_back(QColor("#ACAF61"));
presetColours.push_back(QColor("#F0826F"));
presetColours.push_back(QColor("#E94A80"));
presetColours.push_back(QColor("#C187F2"));
presetColours.push_back(QColor("#7E5764"));
presetColours.push_back(QColor("#037290"));
presetColours.push_back(QColor("#D65114"));
presetColours.push_back(QColor("#08396A"));
presetColours.push_back(QColor("#99ABBE"));
presetColours.push_back(QColor("#F270C0"));
presetColours.push_back(QColor("#F056F9"));
presetColours.push_back(QColor("#8E8D00"));
presetColours.push_back(QColor("#70010F"));
presetColours.push_back(QColor("#9C1E9A"));
presetColours.push_back(QColor("#471B1F"));
presetColours.push_back(QColor("#A00B6D"));
presetColours.push_back(QColor("#38C037"));
presetColours.push_back(QColor("#282C16"));
presetColours.push_back(QColor("#15604D"));
presetColours.push_back(QColor("#2E75D6"));
presetColours.push_back(QColor("#A09DEB"));
presetColours.push_back(QColor("#8454D7"));
presetColours.push_back(QColor("#301745"));
presetColours.push_back(QColor("#A45704"));
presetColours.push_back(QColor("#4D8C0E"));
presetColours.push_back(QColor("#C09860"));
presetColours.push_back(QColor("#009C73"));
presetColours.push_back(QColor("#FD6453"));
presetColours.push_back(QColor("#C11C4B"));
presetColours.push_back(QColor("#183B8B"));
presetColours.push_back(QColor("#5E6706"));
presetColours.push_back(QColor("#E42005"));
presetColours.push_back(QColor("#4873AF"));
presetColours.push_back(QColor("#6CA563"));
presetColours.push_back(QColor("#5E0F54"));
presetColours.push_back(QColor("#FE2065"));
presetColours.push_back(QColor("#5BB4D2"));
presetColours.push_back(QColor("#3F4204"));
presetColours.push_back(QColor("#521839"));
presetColours.push_back(QColor("#9A7706"));
presetColours.push_back(QColor("#77AB8C"));
presetColours.push_back(QColor("#105E04"));
presetColours.push_back(QColor("#98290F"));
presetColours.push_back(QColor("#B849D4"));
presetColours.push_back(QColor("#FC8426"));
presetColours.push_back(QColor("#341B03"));
presetColours.push_back(QColor("#E3278C"));
presetColours.push_back(QColor("#F28F93"));
presetColours.push_back(QColor("#D1A21F"));
presetColours.push_back(QColor("#277E46"));
presetColours.push_back(QColor("#285C60"));
presetColours.push_back(QColor("#76B945"));
presetColours.push_back(QColor("#E75D65"));
presetColours.push_back(QColor("#84ADDC"));
presetColours.push_back(QColor("#153C2B"));
presetColours.push_back(QColor("#FD10D9"));
presetColours.push_back(QColor("#C095D5"));
presetColours.push_back(QColor("#052B48"));
presetColours.push_back(QColor("#B365FC"));
presetColours.push_back(QColor("#97AA75"));
presetColours.push_back(QColor("#C78C9C"));
presetColours.push_back(QColor("#FD4838"));
presetColours.push_back(QColor("#F181E2"));
presetColours.push_back(QColor("#815A1A"));
presetColours.push_back(QColor("#BB2093"));
presetColours.push_back(QColor("#691822"));
presetColours.push_back(QColor("#C41A12"));
presetColours.push_back(QColor("#728A1F"));
presetColours.push_back(QColor("#375B73"));
presetColours.push_back(QColor("#97022C"));
presetColours.push_back(QColor("#95B44D"));
presetColours.push_back(QColor("#EB8DBB"));
presetColours.push_back(QColor("#83ACAB"));
presetColours.push_back(QColor("#E37D51"));
presetColours.push_back(QColor("#D78A68"));
presetColours.push_back(QColor("#4A41A2"));
presetColours.push_back(QColor("#8A0C79"));
presetColours.push_back(QColor("#133102"));
presetColours.push_back(QColor("#237A78"));
presetColours.push_back(QColor("#ADB03B"));
presetColours.push_back(QColor("#289E26"));
presetColours.push_back(QColor("#7683EC"));
presetColours.push_back(QColor("#4E1E04"));
presetColours.push_back(QColor("#BB17B2"));
presetColours.push_back(QColor("#EB6A81"));
presetColours.push_back(QColor("#47B4E8"));
presetColours.push_back(QColor("#0A6191"));
presetColours.push_back(QColor("#4EADB2"));
presetColours.push_back(QColor("#442965"));
presetColours.push_back(QColor("#FE784B"));
presetColours.push_back(QColor("#55BD8D"));
presetColours.push_back(QColor("#742B03"));
presetColours.push_back(QColor("#8C38AA"));
presetColours.push_back(QColor("#F758A6"));
presetColours.push_back(QColor("#A32526"));
presetColours.push_back(QColor("#442C2E"));
presetColours.push_back(QColor("#F06A97"));
presetColours.push_back(QColor("#3A1527"));
presetColours.push_back(QColor("#503509"));
presetColours.push_back(QColor("#2A67B4"));
presetColours.push_back(QColor("#243644"));
presetColours.push_back(QColor("#A74006"));
presetColours.push_back(QColor("#335900"));
presetColours.push_back(QColor("#A07484"));
presetColours.push_back(QColor("#490216"));
presetColours.push_back(QColor("#B19BCB"));
presetColours.push_back(QColor("#75B75A"));
presetColours.push_back(QColor("#BE71EB"));
presetColours.push_back(QColor("#024A2E"));
presetColours.push_back(QColor("#A097AB"));
presetColours.push_back(QColor("#7A287E"));
presetColours.push_back(QColor("#6A1444"));
presetColours.push_back(QColor("#212449"));
presetColours.push_back(QColor("#B07017"));
presetColours.push_back(QColor("#227D57"));
presetColours.push_back(QColor("#1B8CAF"));
presetColours.push_back(QColor("#016438"));
presetColours.push_back(QColor("#EA64CF"));
presetColours.push_back(QColor("#B5310E"));
presetColours.push_back(QColor("#B00765"));
presetColours.push_back(QColor("#5F42B3"));
presetColours.push_back(QColor("#EF9649"));
presetColours.push_back(QColor("#25717F"));
presetColours.push_back(QColor("#BCA309"));
presetColours.push_back(QColor("#FA35A6"));
presetColours.push_back(QColor("#F63D54"));
presetColours.push_back(QColor("#E83D6C"));
presetColours.push_back(QColor("#8362F2"));
presetColours.push_back(QColor("#33BC4A"));
presetColours.push_back(QColor("#194A85"));
presetColours.push_back(QColor("#E24215"));
presetColours.push_back(QColor("#6D71FE"));
presetColours.push_back(QColor("#3E52AF"));
presetColours.push_back(QColor("#1E9E89"));
presetColours.push_back(QColor("#740860"));
presetColours.push_back(QColor("#4B7BEE"));
presetColours.push_back(QColor("#8742C0"));
presetColours.push_back(QColor("#DD8EC6"));
presetColours.push_back(QColor("#CD202C"));
presetColours.push_back(QColor("#FD82C2"));
presetColours.push_back(QColor("#3C2874"));
presetColours.push_back(QColor("#F9742B"));
presetColours.push_back(QColor("#013B10"));
presetColours.push_back(QColor("#D12867"));
presetColours.push_back(QColor("#F743C3"));
presetColours.push_back(QColor("#B98EEC"));
presetColours.push_back(QColor("#D260EC"));
presetColours.push_back(QColor("#671C06"));
presetColours.push_back(QColor("#37A968"));
presetColours.push_back(QColor("#3B9529"));
presetColours.push_back(QColor("#2A0E33"));
presetColours.push_back(QColor("#51B237"));
presetColours.push_back(QColor("#95B61B"));
presetColours.push_back(QColor("#B195E2"));
presetColours.push_back(QColor("#68B49A"));
presetColours.push_back(QColor("#182339"));
presetColours.push_back(QColor("#FC4822"));
presetColours.push_back(QColor("#D79621"));
presetColours.push_back(QColor("#90761B"));
presetColours.push_back(QColor("#777315"));
presetColours.push_back(QColor("#E389E9"));
presetColours.push_back(QColor("#35BD64"));
presetColours.push_back(QColor("#C17910"));
presetColours.push_back(QColor("#3386ED"));
presetColours.push_back(QColor("#E82C2E"));
presetColours.push_back(QColor("#AC925F"));
presetColours.push_back(QColor("#F227C8"));
presetColours.push_back(QColor("#F43E67"));
presetColours.push_back(QColor("#55AEEB"));
presetColours.push_back(QColor("#F518E3"));
presetColours.push_back(QColor("#AB0643"));
presetColours.push_back(QColor("#8DA1F3"));
presetColours.push_back(QColor("#5C9C14"));
presetColours.push_back(QColor("#381F27"));
presetColours.push_back(QColor("#6BB7B5"));
presetColours.push_back(QColor("#9842BE"));
presetColours.push_back(QColor("#4897D6"));
presetColours.push_back(QColor("#8958E4"));
presetColours.push_back(QColor("#8F0065"));
presetColours.push_back(QColor("#A10A5E"));
presetColours.push_back(QColor("#076315"));
presetColours.push_back(QColor("#FA5EF9"));
presetColours.push_back(QColor("#A33402"));
presetColours.push_back(QColor("#A0ABC4"));
presetColours.push_back(QColor("#2B6EFE"));
presetColours.push_back(QColor("#9A9EE7"));
return presetColours;
}
//This function will convert a colour to its SVG name, if one exists, or the hex value otherwise.
QString getColourName(QColor colour)
{
if (colour == QColor(240, 248, 255)) return "aliceblue";
if (colour == QColor(250, 235, 215)) return "antiquewhite";
if (colour == QColor( 0, 255, 255)) return "aqua";
if (colour == QColor(127, 255, 212)) return "aquamarine";
if (colour == QColor(240, 255, 255)) return "azure";
if (colour == QColor(245, 245, 220)) return "beige";
if (colour == QColor(255, 228, 196)) return "bisque";
if (colour == QColor( 0, 0, 0)) return "black";
if (colour == QColor(255, 235, 205)) return "blanchedalmond";
if (colour == QColor( 0, 0, 255)) return "blue";
if (colour == QColor(138, 43, 226)) return "blueviolet";
if (colour == QColor(165, 42, 42)) return "brown";
if (colour == QColor(222, 184, 135)) return "burlywood";
if (colour == QColor( 95, 158, 160)) return "cadetblue";
if (colour == QColor(127, 255, 0)) return "chartreuse";
if (colour == QColor(210, 105, 30)) return "chocolate";
if (colour == QColor(255, 127, 80)) return "coral";
if (colour == QColor(100, 149, 237)) return "cornflowerblue";
if (colour == QColor(255, 248, 220)) return "cornsilk";
if (colour == QColor(220, 20, 60)) return "crimson";
if (colour == QColor( 0, 255, 255)) return "cyan";
if (colour == QColor( 0, 0, 139)) return "darkblue";
if (colour == QColor( 0, 139, 139)) return "darkcyan";
if (colour == QColor(184, 134, 11)) return "darkgoldenrod";
if (colour == QColor( 0, 100, 0)) return "darkgreen";
if (colour == QColor(169, 169, 169)) return "darkgrey";
if (colour == QColor(189, 183, 107)) return "darkkhaki";
if (colour == QColor(139, 0, 139)) return "darkmagenta";
if (colour == QColor( 85, 107, 47)) return "darkolivegreen";
if (colour == QColor(255, 140, 0)) return "darkorange";
if (colour == QColor(153, 50, 204)) return "darkorchid";
if (colour == QColor(139, 0, 0)) return "darkred";
if (colour == QColor(233, 150, 122)) return "darksalmon";
if (colour == QColor(143, 188, 143)) return "darkseagreen";
if (colour == QColor( 72, 61, 139)) return "darkslateblue";
if (colour == QColor( 47, 79, 79)) return "darkslategrey";
if (colour == QColor( 0, 206, 209)) return "darkturquoise";
if (colour == QColor(148, 0, 211)) return "darkviolet";
if (colour == QColor(255, 20, 147)) return "deeppink";
if (colour == QColor( 0, 191, 255)) return "deepskyblue";
if (colour == QColor(105, 105, 105)) return "dimgrey";
if (colour == QColor( 30, 144, 255)) return "dodgerblue";
if (colour == QColor(178, 34, 34)) return "firebrick";
if (colour == QColor(255, 250, 240)) return "floralwhite";
if (colour == QColor( 34, 139, 34)) return "forestgreen";
if (colour == QColor(255, 0, 255)) return "fuchsia";
if (colour == QColor(220, 220, 220)) return "gainsboro";
if (colour == QColor(248, 248, 255)) return "ghostwhite";
if (colour == QColor(255, 215, 0)) return "gold";
if (colour == QColor(218, 165, 32)) return "goldenrod";
if (colour == QColor(128, 128, 128)) return "grey";
if (colour == QColor( 0, 128, 0)) return "green";
if (colour == QColor(173, 255, 47)) return "greenyellow";
if (colour == QColor(240, 255, 240)) return "honeydew";
if (colour == QColor(255, 105, 180)) return "hotpink";
if (colour == QColor(205, 92, 92)) return "indianred";
if (colour == QColor( 75, 0, 130)) return "indigo";
if (colour == QColor(255, 255, 240)) return "ivory";
if (colour == QColor(240, 230, 140)) return "khaki";
if (colour == QColor(230, 230, 250)) return "lavender";
if (colour == QColor(255, 240, 245)) return "lavenderblush";
if (colour == QColor(124, 252, 0)) return "lawngreen";
if (colour == QColor(255, 250, 205)) return "lemonchiffon";
if (colour == QColor(173, 216, 230)) return "lightblue";
if (colour == QColor(240, 128, 128)) return "lightcoral";
if (colour == QColor(224, 255, 255)) return "lightcyan";
if (colour == QColor(250, 250, 210)) return "lightgoldenrodyellow";
if (colour == QColor(144, 238, 144)) return "lightgreen";
if (colour == QColor(211, 211, 211)) return "lightgrey";
if (colour == QColor(255, 182, 193)) return "lightpink";
if (colour == QColor(255, 160, 122)) return "lightsalmon";
if (colour == QColor( 32, 178, 170)) return "lightseagreen";
if (colour == QColor(135, 206, 250)) return "lightskyblue";
if (colour == QColor(119, 136, 153)) return "lightslategrey";
if (colour == QColor(176, 196, 222)) return "lightsteelblue";
if (colour == QColor(255, 255, 224)) return "lightyellow";
if (colour == QColor( 0, 255, 0)) return "lime";
if (colour == QColor( 50, 205, 50)) return "limegreen";
if (colour == QColor(250, 240, 230)) return "linen";
if (colour == QColor(255, 0, 255)) return "magenta";
if (colour == QColor(128, 0, 0)) return "maroon";
if (colour == QColor(102, 205, 170)) return "mediumaquamarine";
if (colour == QColor( 0, 0, 205)) return "mediumblue";
if (colour == QColor(186, 85, 211)) return "mediumorchid";
if (colour == QColor(147, 112, 219)) return "mediumpurple";
if (colour == QColor( 60, 179, 113)) return "mediumseagreen";
if (colour == QColor(123, 104, 238)) return "mediumslateblue";
if (colour == QColor( 0, 250, 154)) return "mediumspringgreen";
if (colour == QColor( 72, 209, 204)) return "mediumturquoise";
if (colour == QColor(199, 21, 133)) return "mediumvioletred";
if (colour == QColor( 25, 25, 112)) return "midnightblue";
if (colour == QColor(245, 255, 250)) return "mintcream";
if (colour == QColor(255, 228, 225)) return "mistyrose";
if (colour == QColor(255, 228, 181)) return "moccasin";
if (colour == QColor(255, 222, 173)) return "navajowhite";
if (colour == QColor( 0, 0, 128)) return "navy";
if (colour == QColor(253, 245, 230)) return "oldlace";
if (colour == QColor(128, 128, 0)) return "olive";
if (colour == QColor(107, 142, 35)) return "olivedrab";
if (colour == QColor(255, 165, 0)) return "orange";
if (colour == QColor(255, 69, 0)) return "orangered";
if (colour == QColor(218, 112, 214)) return "orchid";
if (colour == QColor(238, 232, 170)) return "palegoldenrod";
if (colour == QColor(152, 251, 152)) return "palegreen";
if (colour == QColor(175, 238, 238)) return "paleturquoise";
if (colour == QColor(219, 112, 147)) return "palevioletred";
if (colour == QColor(255, 239, 213)) return "papayawhip";
if (colour == QColor(255, 218, 185)) return "peachpuff";
if (colour == QColor(205, 133, 63)) return "peru";
if (colour == QColor(255, 192, 203)) return "pink";
if (colour == QColor(221, 160, 221)) return "plum";
if (colour == QColor(176, 224, 230)) return "powderblue";
if (colour == QColor(128, 0, 128)) return "purple";
if (colour == QColor(255, 0, 0)) return "red";
if (colour == QColor(188, 143, 143)) return "rosybrown";
if (colour == QColor( 65, 105, 225)) return "royalblue";
if (colour == QColor(139, 69, 19)) return "saddlebrown";
if (colour == QColor(250, 128, 114)) return "salmon";
if (colour == QColor(244, 164, 96)) return "sandybrown";
if (colour == QColor( 46, 139, 87)) return "seagreen";
if (colour == QColor(255, 245, 238)) return "seashell";
if (colour == QColor(160, 82, 45)) return "sienna";
if (colour == QColor(192, 192, 192)) return "silver";
if (colour == QColor(135, 206, 235)) return "skyblue";
if (colour == QColor(106, 90, 205)) return "slateblue";
if (colour == QColor(112, 128, 144)) return "slategrey";
if (colour == QColor(255, 250, 250)) return "snow";
if (colour == QColor( 0, 255, 127)) return "springgreen";
if (colour == QColor( 70, 130, 180)) return "steelblue";
if (colour == QColor(210, 180, 140)) return "tan";
if (colour == QColor( 0, 128, 128)) return "teal";
if (colour == QColor(216, 191, 216)) return "thistle";
if (colour == QColor(255, 99, 71)) return "tomato";
if (colour == QColor( 64, 224, 208)) return "turquoise";
if (colour == QColor(238, 130, 238)) return "violet";
if (colour == QColor(245, 222, 179)) return "wheat";
if (colour == QColor(255, 255, 255)) return "white";
if (colour == QColor(245, 245, 245)) return "whitesmoke";
if (colour == QColor(255, 255, 0)) return "yellow";
if (colour == QColor(154, 205, 50)) return "yellowgreen";
return colour.name();
}