gfxconversion/mifconv/inc/mifconv_mbmgenerator.h
branchRCL_3
changeset 9 1f6339ced17d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gfxconversion/mifconv/inc/mifconv_mbmgenerator.h	Mon Mar 15 12:42:44 2010 +0200
@@ -0,0 +1,266 @@
+/*
+* 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's bitmap converters class.
+*
+*/
+
+
+#ifndef __MIFCONVMBMGENERATOR_H__
+#define __MIFCONVMBMGENERATOR_H__
+
+#include "mifconv.h"
+#include "mifconv_util.h"
+
+#ifdef __linux__
+    #define GNUPACK __attribute__((packed)) 
+    #define OPTCHAR '-'
+    /* on Linux the '/' optchar cannot be supported as filenames can start with '/'. */
+    #define ALTERNATE_OPTCHAR '-'
+#else
+    #define GNUPACK
+    #define OPTCHAR '-' 
+    #define ALTERNATE_OPTCHAR '/'
+#endif
+
+const long int KWriteOnceFileStoreUid=268435511;
+const long int KCBitwiseBitmapUid=268435520;
+const long int KMultiBitmapRomImageUid=268435521;
+const long int KMultiBitmapFileImageUid=268435522;
+const long int KMultiBitmapFileImageChecksum=1194943545;
+
+enum TBitmapColor
+    {
+    EMonochromeBitmap,
+    EColorBitmap,
+    EColorBitmapAlpha,  
+    EColorBitmapUndefined   
+    };
+
+struct TBitmapInfoHeader
+    {
+    unsigned long biSize;
+    long biWidth;
+    long biHeight;
+    unsigned short biPlanes;
+    unsigned short biBitCount;
+    unsigned long biCompression;
+    unsigned long biSizeImage;
+    long biXPelsPerMeter;
+    long biYPelsPerMeter;
+    unsigned long biClrUsed;
+    unsigned long biClrImportant;
+    };
+
+#ifndef __linux__ 
+#include <pshpack2.h>
+#endif 
+
+enum Errors
+    {
+    NoCompression=-1,
+    NoError=0,
+    NoMemory,
+    Files,
+    SourceFile,
+    DestFile,
+    OutOfRange,
+    TooManyArgs,
+    UnknownCompression,
+    CompressionError,
+    DecompressionError,
+    Bpp,
+    PaletteFile,
+    PaletteSupportNotImplemented,
+    AlphaFiles,
+    AlphaDimensions,
+    AlphaBpp
+    };
+
+/** 
+Defines the types of file compression. 
+*/
+enum TBitmapfileCompression
+    {
+    /** Bitmap file is not compressed. */
+    ENoBitmapCompression=0,
+    /** File is compressed using run-length encoding compression. */
+    EByteRLECompression,
+    /** File is compressed using twelve bit run-length encoding compression. */
+    ETwelveBitRLECompression,
+    /** File is compressed using sixteen bit run-length encoding compression. */
+    ESixteenBitRLECompression,
+    /** File is compressed using twenty four bit run-length encoding compression. */
+    ETwentyFourBitRLECompression,
+    /** File is compressed using unsigned thirty two bit run-length encoding compression. */
+    EThirtyTwoUBitRLECompression,
+    /** File is compressed using unsigned thirty two bit run-length encoding compression and includes an alpha channel. */
+    EThirtyTwoABitRLECompression,
+    /** Insert new compression types here */
+    ERLECompressionLast = 255
+    };
+
+struct SEpocBitmapHeader
+/** Contains information about the bitmap when streaming bitmaps to stores. */
+    {
+    /** The size of the bitmap data, in bytes. */
+    long iBitmapSize;
+    /** The size of the structure in which the bitmap data is stored. */
+    long iStructSize;
+    long iWidthInPixels;
+    long iHeightInPixels;
+    long iWidthInTwips;
+    long iHeightInTwips;
+    /** The bitmaps number of bits per pixel */
+    long iBitsPerPixel;
+    /** Whether or not the bitmap is colour. A true value means that the bitmap 
+    is colour. */
+    TBitmapColor iColor;
+    /** The number of entries in the bitmap's palette. */
+    long iPaletteEntries;   // always 0 in current implementations
+    /** The type of compression used to store the bitmap. */
+    TBitmapfileCompression iCompression;
+    };
+
+#ifndef __linux__ 
+#include <pshpack2.h>
+#endif 
+
+struct TBitmapFileHeader
+    {
+    unsigned short bfType;
+    unsigned long bfSize;
+    unsigned short bfReserved1;
+    unsigned short bfReserved2;
+    unsigned long bfOffBits;
+    } GNUPACK;
+#ifndef __linux__ 
+#include <poppack.h>
+#endif 
+    
+struct TRgbTriple
+    {
+    unsigned char rgbtBlue;
+    unsigned char rgbtGreen;
+    unsigned char rgbtRed;
+    } GNUPACK;
+#ifndef __linux__ 
+#include <poppack.h>
+#endif 
+
+class TRgb
+/** 
+24-bit RGB colour value with 8 bits each for red, green and blue.
+
+All Graphics drawing functions are specified in terms of a 32-bit TRgb colour 
+containing the three colour values plus 8 unused bits. For hardware which 
+does not support 24-bit colour, a mapping from TRgb to display colours is 
+performed. 
+
+The supported display modes are enumerated in the TDisplayMode type. In each 
+display mode a unique index can represent each physical colours supported, 
+and which can be mapped onto a full RGB value. The mappings are as follows: 
+
+16-colour displays use the EGA colour set: black, white, and then both light 
+and dark versions of grey, red, green, blue, cyan, magenta and yellow
+
+256-colour displays support 216 colours made up of 6x6x6 RGB values, each 
+containing all possible multiples of 51 for R,G,B values. Additionally, all 
+remaining 10 shades of pure red, green, blue and grey are represented, by 
+adding all remaining multiples of 17. This use of 256 colours is sometimes 
+known as the Netscape colour cube.
+
+4096-colour displays effectively support RGB values with 4 bits per primary 
+colour
+
+64k-colour displays effectively support RGB values with 5 bits allocated to 
+red, 6 to green and 5 to blue
+
+16 million-colour displays support true colour with 8 bits allocated to each 
+primary colour
+
+@see TDisplayMode
+@see DynamicPalette 
+*/
+    {
+public:
+    TRgb();
+    TRgb(long unsigned int val);
+    TRgb(int aRed,int aGreen,int aBlue);
+    TRgb &operator=(const TRgb& aColor);
+    int operator==(const TRgb& aColor);
+    int Difference(const TRgb& col) const;
+    int Gray2() const;
+    int Gray4() const;
+    int Gray16() const;
+    int Gray256() const;
+    int Color16() const;
+    int Color256() const;
+    int Color4K() const;
+    int Color64K() const;
+    long int Color16M() const;
+    static TRgb Gray2(int aGray2);
+    static TRgb Gray4(int aGray4);
+    static TRgb Gray16(int aGray16);
+    static TRgb Gray256(int aGray256);
+    static TRgb Color16(int aColor16);
+    static TRgb Color256(int aColor256);
+    static TRgb Color4K(int aColor64K);
+    static TRgb Color64K(int aColor64K);
+    static TRgb Color16M(long int aColor16M);
+public:
+    unsigned char iRed;
+    unsigned char iGreen;
+    unsigned char iBlue;
+    unsigned char iSpare;
+    };
+
+/**
+ * Converter class for converting .bmp files to .mbm file.
+ */
+class BmConv
+{
+public:
+
+    /**
+     * Default constructor
+     * @param aSourcefilenames Source file names to be compiled.
+     */ 
+    BmConv(MifConvSourceFileList aSourcefilenames);
+
+    /**
+     * Destructor
+     */
+    ~BmConv();
+   
+    /**
+     * Compile source files given in constructor to destination file using a given palette.
+     * @param aDestfilename Location of destination file.
+     * @param aPaletteFilename Location of palette file.
+     */
+    int Compile(const MifConvString& aDestfilename, const MifConvString& aPaletteFilename);
+
+protected:
+
+    MifConvString ErrorMessage(int aErrorNumber, MifConvString aDestfile, bool aDestCreated);
+    void Report(int aError);
+    
+private:
+    
+    /**
+     * List os source files.
+     */
+    MifConvSourceFileList iSourcefilenames;
+};
+
+#endif