diff -r 000000000000 -r 5d03bc08d59c graphicstools/bitmapfonttools/inc/FNTREADR.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstools/bitmapfonttools/inc/FNTREADR.H Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,196 @@ +/* +* Copyright (c) 1997-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: +* Header FNTREADR.H +* +*/ + + +#ifndef __FNTREADR_H__ +#define __FNTREADR_H__ + +#include "FNTRECRD.H" +#include "LST.H" +#include "READER.H" +/** +@internalComponent +*/ +const uint16 KMaxSizeCodeSectionBitmap = 0x7FFF; +const int KMaxBitmapWidth = 0x7f; +const int KMaxBitmapHeight = 0x7f; +const int KNumberOfBitsInByte = 8; +/** +@internalComponent +*/ +const int KLowestPermittedCharacterEncoding = 0x0000; +const int KHighestPermittedCharacterEncoding = 0xffff; +/** +@internalComponent +*/ +const int KMaxNumberRepeatedLines = 15; // maximum number of repeated lines in font compiler + +/** +KFillCharacterOffset is a significant offset that is set when a character within a code section is +not in the font. This means that for these fill characters nothing is stored within the binary +data part of the code section +@internalComponent +*/ +const uint16 KFillCharacterOffset = 0x7FFF; + +/** +Resource identifiers +@internalComponent +*/ +const String IdentFontBitmap("FontBitmap"); +const String IdentSTARTFONT("STARTFONT"); +const String IdentTypeface("Typeface"); +const String IdentFontStoreFile("FontStoreFile"); +/** +Char identifiers +@internalComponent +*/ +const String IdentAdjust("Adjust"); +const String IdentEndChar("EndChar"); + +/** +Codesection identifiers +@internalComponent +*/ +const String IdentEndCodeSection("EndCodeSection"); +const String IdentChar("Char"); + +/** +Fontbitmap identifiers +@internalComponent +*/ +const String IdentEndFontBitmap("EndFontBitmap"); +const String IdentUid("Uid"); +const String IdentBold("Bold"); +const String IdentItalic("Italic"); +const String IdentFontBitmapProportional("Proportional"); +const String IdentCellHeight("CellHeight"); +const String IdentAscent("Ascent"); +const String IdentMaxNormalCharWidth("MaxNormalCharWidth"); +const String IdentBitmapEncoding("BitmapEncoding"); +const String IdentCodeSection("CodeSection"); +const String IdentMaxConsecutiveFillChars("MaxConsecutiveFillChars"); + +/** +BDF CHAR identifiers +@internalComponent +*/ +const String IdentBDFFileHeader("STARTFONT"); +const String IdentBDFComment("COMMENT"); +const String IdentBDFContentVersion("CONTENTVERSION"); +const String IdentBDFFontBitmap("FONT"); +const String IdentBDFPointSize("SIZE"); +const String IdentBDFFontDesignBox("FONTBOUNDINGBOX"); +const String IdentBDFWritingDirection("METRICSSET"); +const String IdentBDFStartProperties("STARTPROPERTIES"); +const String IdentBDFPropertyUid("UID"); +const String IdentBDFPropertyBold("BOLD"); +const String IdentBDFPropertyItalic("ITALIC"); +const String IdentBDFPropertyFontAscent("FONTASCENT"); +const String IdentBDFPropertyFontDescent("FONTDESCENT"); +const String IdentBDFPropertyMaxNormalCharWidth("MAXNORMALCHARWIDTH"); +const String IdentBDFPropertyMaxConsecutiveFillChars("MAXCONSECUTIVEFILLCHARS"); +const String IdentBDFEndProperties("ENDPROPERTIES"); +const String IdentBDFNumChars("CHARS"); // To be used as sanity check on BDF files +const String IdentBDFCharLabel("STARTCHAR"); +const String IdentBDFChar("ENCODING"); +const String IdentBDFCursorMove("DWIDTH"); +const String IdentBDFBitmapSizeAndDisplacement("BBX"); +const String IdentBDFStartBitmap("BITMAP"); +const String IdentBDFEndChar("ENDCHAR"); +const String IdentBDFEndFontBitmap("ENDFONT"); + +/** +Typeface identifiers +@internalComponent +*/ +const String IdentEndTypeface("EndTypeface"); +const String IdentName("Name"); +const String IdentTypefaceProportional("Proportional"); +const String IdentSerif("Serif"); +const String IdentSymbol("Symbol"); +const String IdentFontBitmaps("FontBitmaps"); +const String IdentWidthFactor("WidthFactor"); +const String IdentHeightFactor("HeightFactor"); +const String IdentEndFontBitmaps("EndFontBitmaps"); + +/** +Fontstorefile identifiers +@internalComponent +*/ +const String IdentEndFontStoreFile("EndFontStoreFile"); +const String IdentFilename("Filename"); +const String IdentCollectionUid("CollectionUid"); +const String IdentKPixelAspectRatio("KPixelAspectRatio"); +const String IdentTypefaces("Typefaces"); +const String IdentEndTypefaces("EndTypefaces"); +const String IdentExtraFontBitmaps("FontBitmaps"); +const String IdentEndExtraFontBitmaps("EndFontBitmaps"); +const String IdentCopyrightInfo("CopyrightInfo"); +const String IdentEndCopyrightInfo("EndCopyrightInfo"); + +class CroppedValues; + +class FontReader : public Reader +/** +@internalComponent +*/ + { +public: + enum TReadFileFormat + { + ESymbianGDFFormat, + EBDFFormat + }; +public: + FontReader(); + boolean Read(const String& aFilename); + boolean ReadBDFCharacter(int aCode); + boolean ParseMetricsFromBDF(int aNumberCharsInFile, int aMaxConsecutiveFillChars); + boolean ReadMetricFromBDFCharacter(CharacterMetrics* aMetric, CroppedValues* aCropped); + boolean ReadBDFFontBitmap(); + boolean ReadTypeface(); + boolean ReadFontStoreFile(); + int Store(const String& aFilename); + boolean CharLine(String& aCharLine); +private: + boolean ReadBDFChars(const int aNumberOfGlyphsInFile, const int aMaxConsecutiveFillChars); + boolean DoMetricAnalysis(int& aHeight, int& aWidth, int& aLeftAdjust, int& aRightAdjust, int& aAscent); + void ErrorIdentifierExpected(const String& aIdentifier); + boolean CompareBitmapLines(int aLine1, int aLine2); + boolean BitmapLineEmpty(int aLine); + boolean BitmapColumnEmpty(int aColumn); + void WriteFillCharacters(int aNumberConsecutive); + void PrintoutCodeSection(const BitmapCodeSection* aCodeSection) const; +private: + FontStore iFontStore; + FontStoreFile* iFontStoreFile; + CharacterMetrics* iCharacterMetrics; + BitmapCodeSection* iCodeSection; + FontBitmap* iFontBitmap; + FntTypeface* iTypeface; + TReadFileFormat iReadFileFormat; + int iBitArray[KMaxBitmapWidth][KMaxBitmapHeight]; + int iBitmapWidth; + int iBitmapHeight; + int iDefaultXMoveInPixels; + int iDefaultYMoveInPixels; + String iFileName; + }; + +#endif