diff -r 000000000000 -r f58d6ec98e88 aknlayoutcompiler/src/LayoutWriter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/aknlayoutcompiler/src/LayoutWriter.cpp Thu Dec 17 09:14:18 2009 +0200 @@ -0,0 +1,171 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +* +*/ + + +#include "LayoutWriter.h" +#include +#include +#include +#include +using namespace std; + + +TLayoutTableWriter::TLayoutTableWriter(TLayoutTable& aTable) : iTable(aTable) + { + } + +TLayoutTableWriter::~TLayoutTableWriter() + { + } + +void TLayoutTableWriter::Write(ostream& out) + { + if (IsWindowTable()) + { + WriteWindowTable(out); + } + else if (IsTextTable()) + { + WriteTextTable(out); + } + else + { + cout << "Unknown " << "Table " << iTable.Name() << endl; + } + } + +bool TLayoutTableWriter::IsWindowTable() + { + return iTable.iType == TLayoutTable::EWindowTable; + } + + +void TLayoutTableWriter::WriteWindowTable(ostream& out) + { + out << "WindowTable " << iTable.Name(); + if (iTable.iParentName.size()) + out << " : " << iTable.iParentName; + out << endl; + out << "\t{" << endl; + + if (iTable.iAppend) + out << "\t+" << endl; + + for (int i=0; i0) + out << "," << endl; + WriteWindowLine(out, *iTable[i]); + } + + out << endl << "\t}" << endl; + out << endl; + } + +void TLayoutTableWriter::WriteWindowLine(ostream& out, TLayoutLine& line) + { + out << "\t\t{" << line.Name() << ", "; + + for (int i=0; i<7; i++) + { + WriteCell(out, line[KWindowOutputOrder[i]]); + out << ", "; + } + + out << line["Remarks"][0] << "}"; + } + +void TLayoutTableWriter::WriteCell(ostream& out, TValues& values) + { + if (values.size() > 1) + out << "{"; + + for (TValues::iterator pVal = values.begin(); pVal != values.end(); ++pVal) + { + if (pVal != values.begin()) + out << ", "; + out << *pVal; + } + + if (values.size() > 1) + out << "}"; + + if (values.iParam.length()) + out << "[" << values.iParam << "]"; + } + + +bool TLayoutTableWriter::IsTextTable() + { + return iTable.iType == TLayoutTable::ETextTable; + } + +void TLayoutTableWriter::WriteTextTable(ostream& out) + { + out << "TextTable " << iTable.Name(); + if (iTable.iParentName.size()) + out << " : " << iTable.iParentName; + out << endl; + out << "\t{" << endl; + + if (iTable.iAppend) + out << "\t+" << endl; + + for (int i=0; i0) + out << "," << endl; + WriteTextLine(out, *iTable[i]); + } + + out << endl << "\t}" << endl; + out << endl; + } + +void TLayoutTableWriter::WriteTextLine(ostream& out, TLayoutLine& line) + { + out << "\t\t{" << line["Font"][0] << ", "; + + for (int i=0; i<6; i++) + { + WriteCell(out, line[KTextOutputOrder[i]]); + out << ", "; + } + + out << line["Remarks"][0] << "}"; + } + + +TLayoutWriter::TLayoutWriter(TLayout& aLayout, const std::string& aName) +: TLayWriterBase(aLayout, aName) + { + } + +void TLayoutWriter::Write(const std::string&) + { + cout << "writing layout " << iName << endl; + ofstream out(iName.c_str()); + for (TLayout::iterator pTab = iLayout.begin(); pTab != iLayout.end(); ++pTab) + { + TLayoutTableWriter writer(**pTab); + writer.Write(out); + } + out.close(); + } + +// End of File