src/header.cpp

Sun, 24 Oct 2021 11:33:32 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Sun, 24 Oct 2021 11:33:32 +0300
changeset 147
37f936073cac
parent 140
2f383e88acf4
permissions
-rw-r--r--

update

/*
 *  LDForge: LDraw parts authoring CAD
 *  Copyright (C) 2013 - 2020 Teemu Piippo
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "header.h"

const QString LDHeader::caLicenseString = "0 !LICENSE Redistributable under CCAL version 2.0";
const QString LDHeader::nonCaLicenseString = "0 !LICENSE Not redistributable";

static const QMap<QString, LDHeader::FileType> typeStrings = {
	{"Part", LDHeader::Part},
	{"Subpart", LDHeader::Subpart},
	{"Shortcut", LDHeader::Shortcut},
	{"Primitive", LDHeader::Primitive},
	{"8_Primitive", LDHeader::Primitive_8},
	{"48_Primitive", LDHeader::Primitive_48},
	{"Configuration", LDHeader::Configuration},
};

QString headerTypeToString(const LDHeader::FileType fileType)
{
	QMapIterator<QString, LDHeader::FileType> it{::typeStrings};
	while (it.hasNext())
	{
		it.next();
		if (it.value() == fileType)
		{
			return it.key();
		}
	}
	return "Part";
}

LDHeader::FileType headerTypeFromString(const QString& string)
{
	return ::typeStrings.value(string, LDHeader::Part);
}

QString headerToString(const LDHeader& header)
{
	QString result;
	result += "0 " + header.description + "\r\n";
	result += "Name: " + header.name + "\r\n";
	result += "Author: " + header.author + "\r\n";
	if (header.type != LDHeader::NoHeader)
	{
		result += "0 !LDRAW Unofficial_" + headerTypeToString(header.type) + "\r\n";
	}
	switch (header.license)
	{
	case LDHeader::UnspecifiedLicense:
		break;
	case LDHeader::CaLicense:
		result += LDHeader::caLicenseString + "\r\n";
		break;
	case LDHeader::NonCaLicense:
		result += LDHeader::nonCaLicenseString + "\r\n";
		break;
	}
	if (not header.help.isEmpty())
	{
		result += "\r\n";
		for (const QString& helpLine : header.help.split("\n"))
		{
			result += "0 !HELP " + helpLine + "\r\n";
		}
	}
	result += "\r\n";
	// FIXME: continue
	return result;
}

mercurial