Files
Work/guitar/backup/20030731/TabWriter.cpp
2024-08-07 09:16:27 -04:00

111 lines
2.8 KiB
C++

#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 &note=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);
}