Initial
This commit is contained in:
110
guitar/TabWriter.cpp
Normal file
110
guitar/TabWriter.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
#include <guitar/TabWriter.hpp>
|
||||
#include <guitar/TabLines.hpp>
|
||||
#include <guitar/globaldefs.hpp>
|
||||
#include <common/VersionInfo.hpp>
|
||||
#include <common/file.hpp>
|
||||
#include <common/array.hpp>
|
||||
|
||||
bool TabWriter::write(TabEntries &entries,const String &pathFileTablature)
|
||||
{
|
||||
VersionInfo versionInfo;
|
||||
File outFile;
|
||||
|
||||
GlobalDefs::outDebug("[TabWriter::write]ENTER",GlobalDefs::Debug);
|
||||
if(pathFileTablature.isNull()||!outFile.open(pathFileTablature,"wb"))
|
||||
{
|
||||
GlobalDefs::outDebug("[TabWriter::write]LEAVE",GlobalDefs::Debug);
|
||||
return false;
|
||||
}
|
||||
outFile.writeLine(String("%")+versionInfo.getProductNameString()+String(" ")+versionInfo.getProductVersion()+String("%"));
|
||||
initLines();
|
||||
setHeader();
|
||||
for(int index=0,entryCount=0;index<entries.size();index++,entryCount++)
|
||||
{
|
||||
if(entryCount>MaxItems)
|
||||
{
|
||||
outFile.writeLine(String(" "));
|
||||
outFile.writeLine(String(" "));
|
||||
writeLines(outFile);
|
||||
outFile.writeLine(String(" "));
|
||||
initLines();
|
||||
setHeader();
|
||||
entryCount=0;
|
||||
}
|
||||
TabEntry &entry=entries[index];
|
||||
for(int noteIndex=0;noteIndex<entry.size();noteIndex++)
|
||||
{
|
||||
FrettedNote ¬e=entry[noteIndex];
|
||||
int string=note.getString();
|
||||
int fret=note.getFret();
|
||||
operator[](5-string).putElement(Element(fret,Action(note.getAction())));
|
||||
operator[](5-string).putElement('-');
|
||||
}
|
||||
synchronize();
|
||||
}
|
||||
outFile.writeLine(String(" "));
|
||||
outFile.writeLine(String(" "));
|
||||
writeLines(outFile);
|
||||
outFile.writeLine(String(" "));
|
||||
GlobalDefs::outDebug("[TabWriter::write]LEAVE");
|
||||
return true;
|
||||
}
|
||||
|
||||
void TabWriter::synchronize(void)
|
||||
{
|
||||
int maxPos;
|
||||
int index;
|
||||
|
||||
for(index=0;index<NumLines;index++)
|
||||
{
|
||||
if(!index)maxPos=operator[](0).getPosition();
|
||||
if(operator[](index).getPosition()>maxPos)maxPos=operator[](index).getPosition();
|
||||
}
|
||||
for(index=0;index<NumLines;index++)
|
||||
{
|
||||
while(operator[](index).getPosition()!=maxPos)operator[](index).putElement('-');
|
||||
}
|
||||
}
|
||||
|
||||
void TabWriter::initLines()
|
||||
{
|
||||
size(NumLines);
|
||||
}
|
||||
|
||||
void TabWriter::setHeader(void)
|
||||
{
|
||||
operator[](0).reset();
|
||||
operator[](1).reset();
|
||||
operator[](2).reset();
|
||||
operator[](3).reset();
|
||||
operator[](4).reset();
|
||||
operator[](5).reset();
|
||||
|
||||
operator[](0).putElement('E');
|
||||
operator[](1).putElement('B');
|
||||
operator[](2).putElement('G');
|
||||
operator[](3).putElement('D');
|
||||
operator[](4).putElement('A');
|
||||
operator[](5).putElement('E');
|
||||
|
||||
operator[](0).putElement('|');
|
||||
operator[](1).putElement('|');
|
||||
operator[](2).putElement('|');
|
||||
operator[](3).putElement('|');
|
||||
operator[](4).putElement('|');
|
||||
operator[](5).putElement('|');
|
||||
|
||||
operator[](0).putElement('-');
|
||||
operator[](1).putElement('-');
|
||||
operator[](2).putElement('-');
|
||||
operator[](3).putElement('-');
|
||||
operator[](4).putElement('-');
|
||||
operator[](5).putElement('-');
|
||||
}
|
||||
|
||||
void TabWriter::writeLines(File &outFile)
|
||||
{
|
||||
for(int index=0;index<NumLines;index++)operator[](index).serialize(outFile);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user