+++ /dev/null
-#include "muscle.h"\r
-#include <stdio.h>\r
-#include <ctype.h>\r
-#include "msa.h"\r
-#include "textfile.h"\r
-\r
-const unsigned uCharsPerLine = 60;\r
-const int MIN_NAME = 10;\r
-const int MAX_NAME = 32;\r
-\r
-extern void AssignColors(const MSA &a, int **Colors);\r
-\r
-static int **MakeColors(const MSA &a)\r
- {\r
- const unsigned uSeqCount = a.GetSeqCount();\r
- const unsigned uColCount = a.GetColCount();\r
-\r
- int **Colors = new int *[uSeqCount];\r
- for (unsigned i = 0; i < uSeqCount; ++i)\r
- {\r
- Colors[i] = new int[uColCount];\r
- memset(Colors[i], 0, uColCount*sizeof(int));\r
- }\r
- AssignColors(a, Colors);\r
- return Colors;\r
- }\r
-\r
-static void ChangeColor(TextFile &File, int From, int To)\r
- {\r
- if (From == To)\r
- return;\r
-\r
-#define COLOR_WHITE "FFFFFF"\r
-#define COLOR_GRAY "C0C0C0"\r
-#define COLOR_BLACK "000000"\r
-#define COLOR_RED "FF0000"\r
-#define COLOR_GREEN "00FF00"\r
-#define COLOR_BLUE "5590FF"\r
-#define COLOR_LIGHTBLUE "77FFFF"\r
-\r
-#define X(c) File.PutString("</SPAN><SPAN STYLE=\"background-color:#" c "\">");\r
- switch (To)\r
- {\r
- case 0:\r
- X(COLOR_WHITE)\r
- break;\r
- case 1:\r
- X(COLOR_GRAY)\r
- break;\r
- case 2:\r
- X(COLOR_BLUE)\r
- break;\r
- case 3:\r
- X(COLOR_LIGHTBLUE)\r
- break;\r
- }\r
- }\r
-\r
-#define COLOR_WINDOW "FFEEE0"\r
-\r
-void MSA::ToHTMLFile(TextFile &File) const\r
- {\r
- File.PutString("<HTML>\n");\r
- File.PutString("<BODY BGCOLOR=\"#" COLOR_WINDOW "\">\n");\r
- File.PutString("<PRE>");\r
-\r
- int **Colors = MakeColors(*this);\r
-\r
- int iLongestNameLength = 0;\r
- for (unsigned uSeqIndex = 0; uSeqIndex < GetSeqCount(); ++uSeqIndex)\r
- {\r
- const char *ptrName = GetSeqName(uSeqIndex);\r
- const char *ptrBlank = strchr(ptrName, ' ');\r
- int iLength;\r
- if (0 != ptrBlank)\r
- iLength = (int) (ptrBlank - ptrName);\r
- else\r
- iLength = (int) strlen(ptrName);\r
- if (iLength > iLongestNameLength)\r
- iLongestNameLength = iLength;\r
- }\r
- if (iLongestNameLength > MAX_NAME)\r
- iLongestNameLength = MAX_NAME;\r
- if (iLongestNameLength < MIN_NAME)\r
- iLongestNameLength = MIN_NAME;\r
-\r
- unsigned uLineCount = (GetColCount() - 1)/uCharsPerLine + 1;\r
- int CurrentColor = -1;\r
- for (unsigned uLineIndex = 0; uLineIndex < uLineCount; ++uLineIndex)\r
- {\r
- File.PutString("\n");\r
- unsigned uStartColIndex = uLineIndex*uCharsPerLine;\r
- unsigned uEndColIndex = uStartColIndex + uCharsPerLine - 1;\r
- if (uEndColIndex >= GetColCount())\r
- uEndColIndex = GetColCount() - 1;\r
- char Name[MAX_NAME+1];\r
- for (unsigned uSeqIndex = 0; uSeqIndex < GetSeqCount(); ++uSeqIndex)\r
- {\r
- const char *ptrName = GetSeqName(uSeqIndex);\r
- const char *ptrBlank = strchr(ptrName, ' ');\r
- int iLength;\r
- if (0 != ptrBlank)\r
- iLength = (int) (ptrBlank - ptrName);\r
- else\r
- iLength = (int) strlen(ptrName);\r
- if (iLength > MAX_NAME)\r
- iLength = MAX_NAME;\r
- memset(Name, ' ', MAX_NAME);\r
- memcpy(Name, ptrName, iLength);\r
- Name[iLongestNameLength] = 0;\r
-\r
-// File.PutString("<FONT COLOR=\"#000000\">");\r
- CurrentColor = -1;\r
- File.PutString("<SPAN STYLE=\"background-color:#" COLOR_WINDOW "\">");\r
- File.PutFormat("%s ", Name);\r
- File.PutString("<SPAN STYLE=\"background-color:#FFFFFF\">");\r
- for (unsigned uColIndex = uStartColIndex; uColIndex <= uEndColIndex;\r
- ++uColIndex)\r
- {\r
- const int Color = Colors[uSeqIndex][uColIndex];\r
- ChangeColor(File, CurrentColor, Color);\r
- CurrentColor = Color;\r
- const char c = GetChar(uSeqIndex, uColIndex);\r
- if (Color == 0)\r
- File.PutFormat("%c", tolower(c));\r
- else\r
- File.PutFormat("%c", toupper(c));\r
- }\r
- File.PutString("\n");\r
- }\r
- }\r
- File.PutString("</SPAN>\n");\r
- File.PutString("</PRE>\n");\r
- File.PutString("</BODY>\n");\r
- File.PutString("</HTML>\n");\r
- }\r