--- /dev/null
+/**
+ * Author: Mark Larkin
+ *
+ * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.
+ */
+/*
+ * The class AlignmentOutput is used to output the Alignment in all the different
+ * formats that have been selected. It will output all the different file types if
+ * these have been selected from the menu or the commandline.
+ * To use this class we must call openAlignmentOutput first. Then we call the function
+ * createAlignmentOutput with an Alignment to be output and the first and last sequence
+ * to be output as well.
+ */
+#ifndef ALIGNMENTOUTPUT_H
+#define ALIGNMENTOUTPUT_H
+
+#include <string>
+#include <vector>
+#include <fstream>
+#include <memory>
+#include <sstream>
+#include <exception>
+#include <cassert>
+#include "Alignment.h"
+
+
+namespace clustalw
+{
+
+typedef struct rangeNum
+{
+ int start;
+ int end;
+} rangeNum;
+
+typedef struct outputRegion
+{
+ int _firstSeq;
+ int _lastSeq;
+ int _firstRes;
+ int _lastRes;
+} outputRegion;
+
+class AlignmentOutput
+{
+ public:
+ /* Functions */
+ AlignmentOutput();
+ bool openAlignmentOutput(string path);
+ bool QTOpenFilesForOutput(AlignmentFileNames fileNames);
+ void createAlignmentOutput(Alignment* alignPtr, int firstSeq, int lastSeq);
+ void printSecStructMask(int prfLength, vector<char>* mask, vector<char>* structMask);
+ /* Attributes */
+
+ private:
+ /* Functions */
+ void fastaOut(Alignment* alignPtr, outputRegion partToOutput);
+ void clustalOut(Alignment* alignPtr, outputRegion partToOutput);
+ void gcgOut(Alignment* alignPtr, outputRegion partToOutput);
+ void nexusOut(Alignment* alignPtr, outputRegion partToOutput);
+ void phylipOut(Alignment* alignPtr, outputRegion partToOutput);
+ void nbrfOut(Alignment* alignPtr, outputRegion partToOutput);
+ void gdeOut(Alignment* alignPtr, outputRegion partToOutput);
+ string nameonly(string s);
+
+ void findRangeValues(Alignment* alignPtr, rangeNum *rnum, int firstRes, int lastRes,
+ int firstSeq);
+ bool openExplicitFile(auto_ptr<ofstream>& outFile, string fileName);
+ string openOutputFile(auto_ptr<ofstream>& outFile, string prompt, string path,
+ string fileExtension);
+ int SeqGCGCheckSum(vector<char>* sequence, int length);
+ void showAlign();
+ /* Attributes */
+
+ auto_ptr<ofstream> clustalOutFile;
+ auto_ptr<ofstream> gcgOutFile;
+ auto_ptr<ofstream> nbrfOutFile;
+ auto_ptr<ofstream> phylipOutFile;
+ auto_ptr<ofstream> gdeOutFile;
+ auto_ptr<ofstream> nexusOutFile;
+ auto_ptr<ofstream> fastaOutFile;
+
+ string clustalOutName;
+ string gcgOutName;
+ string phylipOutName;
+ string nbrfOutName;
+ string gdeOutName;
+ string nexusOutName;
+ string fastaOutName;
+ vector<string> strongGroup;
+ vector<string> weakGroup;
+ int clusSecStructOffset;
+ int clusSequenceOffset;
+};
+
+}
+#endif
+