ObjWriting: Dump FontIcon assets as csv files

According to the asset names this seems to be their original format. however since i didn't find any examples of that asset in raw form i just tried to come up with a realistic csv style for it
This commit is contained in:
Jan
2020-02-23 02:02:11 +01:00
parent ccef1dca28
commit 8ec525d3d2
7 changed files with 376 additions and 1 deletions

View File

@ -0,0 +1,76 @@
#include "CsvWriter.h"
#include <sstream>
const std::string CsvWriter::LINE_BREAK = "\n";
CsvWriter::CsvWriter(FileAPI::IFile* file)
{
m_file = file;
m_first_row = true;
m_current_column = 0;
m_column_count = 0;
}
void CsvWriter::WriteColumn(const std::string& value)
{
if (m_current_column++ > 0)
m_file->Printf(",");
bool containsSeparator = false;
bool containsQuote = false;
for (const auto& c : value)
{
if (c == '"')
{
containsQuote = true;
break;
}
if (c == SEPARATOR)
containsSeparator = true;
}
if (containsQuote)
{
std::ostringstream str;
for(const auto& c : value)
{
if (c == '"')
str << "\"\"";
else
str << c;
}
m_file->Printf("\"%s\"", str.str().c_str());
}
else if (containsSeparator)
{
m_file->Printf("\"%s\"", value.c_str());
}
else
{
m_file->Printf("%s", value.c_str());
}
}
void CsvWriter::NextRow()
{
if (m_first_row)
{
m_first_row = false;
m_column_count = m_current_column;
}
else
{
while(m_current_column < m_column_count)
{
m_file->Printf(",");
m_current_column++;
}
}
m_file->Printf("\n");
m_current_column = 0;
}

View File

@ -0,0 +1,19 @@
#pragma once
#include "Utils/FileAPI.h"
class CsvWriter
{
static constexpr char SEPARATOR = ',';
static const std::string LINE_BREAK;
FileAPI::IFile* m_file;
unsigned m_column_count;
unsigned m_current_column;
bool m_first_row;
public:
explicit CsvWriter(FileAPI::IFile* file);
void WriteColumn(const std::string& value);
void NextRow();
};