--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gfxconversion/mifconv/src/mifconv_bitmapheaderconverter.cpp Tue Feb 02 01:11:11 2010 +0200
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2009 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: Mifconv bitmap header converter class.
+*
+*/
+
+
+#include "mifconv.h"
+#include "mifconv_bitmapheaderconverter.h"
+#include "mifconv_argumentmanager.h"
+#include "mifconv_util.h"
+#include "mifconv_exception.h"
+
+const int MIF_ID_FIRST = 16384;
+
+/**
+ *
+ */
+MifConvBitmapHeaderConverter::MifConvBitmapHeaderConverter()
+:
+iCurrentSourceId(MIF_ID_FIRST)
+{
+ MifConvArgumentManager* argMgr = MifConvArgumentManager::Instance();
+ iHeaderFilename = argMgr->StringValue(MifConvHeaderArg);
+}
+
+/**
+ *
+ */
+MifConvBitmapHeaderConverter::~MifConvBitmapHeaderConverter()
+{
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::Init()
+{
+ CleanupTargetFiles();
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::CleanupTargetFiles()
+{
+ if( MifConvUtil::FileExists(iHeaderFilename) )
+ {
+ // Try to remove file MIFCONV_MAX_REMOVE_TRIES times, no exception in case of failure:
+ MifConvUtil::RemoveFile(iHeaderFilename, MIFCONV_MAX_REMOVE_TRIES, true);
+ }
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::AppendFile( const MifConvSourceFile& sourcefile )
+{
+ iSourceFiles.push_back( sourcefile );
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::Convert()
+{
+ // Check if the headerfile name is given. Return if not:
+ if( iHeaderFilename.length() > 0 )
+ {
+ cout << "Writing mbg: " << iHeaderFilename << endl;
+ MifConvUtil::EnsurePathExists(iHeaderFilename, true);
+ }
+ else
+ {
+ return;
+ }
+
+ // Create / open the header file:
+ fstream headerFile(iHeaderFilename.c_str(), ios::out|ios::trunc);
+
+ // If file creation/opening was not successful, give warning and return:
+ if( !headerFile.is_open() )
+ {
+ MifConvString debugStr("WARNING: Headerfile " + iHeaderFilename + " cannot be opened for writing.");
+ cout << debugStr << endl;
+ MifConvUtil::DebugLog(debugStr);
+ return;
+ }
+ iDestFile = &headerFile; // Save the pointer to the file stream
+ (*iDestFile) << endl;
+ // Write the beginning of the header file:
+ WriteStart();
+
+ // Add source file items to enumerator:
+ for( MifConvSourceFileList::iterator i = iSourceFiles.begin(); i != iSourceFiles.end(); ++i )
+ {
+ WriteItemToHeader(*i);
+ }
+
+ // Write the end of the file...
+ WriteEnd();
+
+ // ...and close the file:
+ iDestFile->close();
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::WriteStart()
+{
+ (*iDestFile) << "/* This file has been generated, DO NOT MODIFY. */" << endl;
+ (*iDestFile) << "enum TMif" << MifConvUtil::UnadornedFilename(iHeaderFilename) << "\n\t{" << endl;
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::WriteItemToHeader( const MifConvSourceFile& source )
+{
+ MifConvString unadornedHeaderFile(MifConvUtil::UnadornedFilename(iHeaderFilename));
+
+ (*iDestFile) << "\tEMbm" << unadornedHeaderFile << MifConvUtil::UnadornedFilename(source.Filename()) << " = " << iCurrentSourceId++ << "," << endl;
+
+ // Write mask also, if any:
+ if( source.MaskDepth() != IconMaskDepth_Undefined )
+ {
+ (*iDestFile) << "\tEMbm" << unadornedHeaderFile << MifConvUtil::UnadornedFilename(source.Filename()) << "_mask = " << iCurrentSourceId++ << "," << endl;
+ }
+ else
+ {
+ // Skip mask ID if mask not present so that adding a mask later does not change IDs.
+ iCurrentSourceId++;
+ }
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::WriteEnd()
+{
+ (*iDestFile) << "\tEMbm" << MifConvUtil::UnadornedFilename(iHeaderFilename) << "LastElement" << endl;
+ (*iDestFile) << "\t};" << endl;
+}
+
+/**
+ *
+ */
+void MifConvBitmapHeaderConverter::Cleanup(bool err)
+{
+ if( err )
+ {
+ CleanupTargetFiles();
+ }
+}