sl@0: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #if !defined(__FONTCOMP_H__) sl@0: #define __FONTCOMP_H__ sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #ifdef __MSVCDOTNET__ sl@0: #include sl@0: #include sl@0: using namespace std; sl@0: #else //!__MSVCDOTNET__ sl@0: #include sl@0: #endif //__MSVCDOTNET__ sl@0: sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: #define MAX_CHARS 256 sl@0: #define FONT_NAME_LEN 16 sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: #define MAX_CHAR_WID 256 sl@0: #define MAX_HEIGHT 256 sl@0: #define MAX_LABEL_LENGTH 16 /* Max font label name */ sl@0: #define MAX_LEN_IN 255 /* Max input line length */ sl@0: #define MAXLINE 600 /* Max line length for writing to screen */ sl@0: #define FONT_MAX_HEADER_LEN 128 sl@0: #define P_FNAMESIZE 128 /* Maximum file name size */ sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: enum Errors sl@0: { sl@0: NoError=0, sl@0: NoMemory=-1, sl@0: NoFile=-2, sl@0: FileRead=-3, sl@0: FileWrite=-4, sl@0: FileFormat=-5, sl@0: Parameter=-6 sl@0: }; sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: struct FcmCharHead sl@0: { sl@0: int xOffset; sl@0: int yOffset; sl@0: int width; sl@0: int height; sl@0: int move; sl@0: int ByteWid; sl@0: int offset; sl@0: }; sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: struct LetterTableData sl@0: { sl@0: short int offset; sl@0: short int width; /* x16 in version 1*/ sl@0: }; sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: struct LetterData sl@0: { sl@0: char blx; sl@0: char bly; sl@0: unsigned char rWid; /* Enclosing rectangle width */ sl@0: unsigned char rHgt; /* Enclosing rectangle height */ sl@0: }; sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: struct EffVariousData sl@0: { sl@0: short int version; sl@0: short int blx; sl@0: short int bly; sl@0: short int Wid; sl@0: short int Hgt; sl@0: short int xSize; /* 16 x Point size */ sl@0: short int xRes; /* DPI */ sl@0: short int ySize; sl@0: short int yRes; sl@0: unsigned char XHeight; sl@0: unsigned char CapHeight; sl@0: unsigned char Ascender; sl@0: char Descender; sl@0: unsigned char LineSpacing; sl@0: char UnderLinePos; sl@0: unsigned char UnderLineThickness; sl@0: unsigned char filler[7]; sl@0: }; sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: const int EMaxFontNameLength=256; sl@0: sl@0: class Fxf sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: { sl@0: public: sl@0: FcmCharHead *chr[MAX_CHARS]; sl@0: char name[EMaxFontNameLength]; /* Font name */ sl@0: char typeface[EMaxFontNameLength]; /* Font typeface */ sl@0: int MaxChrWidth; sl@0: int cell_height; /* Height of character set */ sl@0: int nominal_ascent; /* Max ascent of normal (ASCII) characters */ sl@0: int descent; /* Descent of characters below base line */ sl@0: int chr_seg; sl@0: int FirstChr; sl@0: int n_chars; /* counts total number of characters defined */ sl@0: unsigned int max_info_width; /* Max char width to put in info file */ sl@0: unsigned short int flags; sl@0: unsigned short int special; sl@0: unsigned int ByteWid; sl@0: int UseWords; sl@0: int UlinePos; sl@0: int UlineThickness; sl@0: int iBold; sl@0: int iItalic; sl@0: int iProportional; sl@0: int iSerif; sl@0: int iSymbol; sl@0: unsigned int iUid; sl@0: }; sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: enum FontType sl@0: { sl@0: EFontTypeFsc, sl@0: EFontTypeEff sl@0: }; sl@0: sl@0: class FontCompiler sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: { sl@0: public: sl@0: FontCompiler(); sl@0: int Read(FontType aInputType); sl@0: int Init(char*,char*,char*); sl@0: void RemoveBlankSpace(); sl@0: char* FontStore() const; sl@0: virtual int WriteFont()=0; sl@0: protected: // general information sl@0: fstream iInputFile; sl@0: fstream iOutputFile; sl@0: Fxf* iFxf; sl@0: protected: // font information sl@0: char* iFontSpace; sl@0: char* iWorkSpace; // misc. stuff sl@0: short int* iMapSpace; sl@0: int iWorkSpaceSize; sl@0: unsigned int iHeaderDataLen; sl@0: unsigned char iHeaderData[FONT_MAX_HEADER_LEN]; sl@0: }; sl@0: sl@0: class FontRead sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: { sl@0: public: sl@0: FontRead(fstream& aFile,FontCompiler& aFontCompiler,Fxf* aFxf); sl@0: virtual int ReadFont()=0; sl@0: private: sl@0: FontRead& operator=(const FontRead&); sl@0: protected: sl@0: fstream& iInputFile; sl@0: FontCompiler* iFontCompiler; sl@0: Fxf* iFxf; sl@0: }; sl@0: sl@0: class EffRead : public FontRead sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: { sl@0: public: sl@0: EffRead(fstream& aFile,FontCompiler &aFontCompiler,Fxf* aFxf,short int* aMapSpace); sl@0: virtual int ReadFont(); sl@0: private: sl@0: EffRead& operator=(const EffRead&); sl@0: private: sl@0: short int* iMapSpace; sl@0: }; sl@0: sl@0: class FscRead : public FontRead sl@0: /** sl@0: @internalComponent sl@0: */ sl@0: { sl@0: public: sl@0: FscRead(fstream& aFile,FontCompiler &aFontCompiler,Fxf* aFxf); sl@0: virtual int ReadFont(); sl@0: private: sl@0: FscRead& operator=(const FscRead&); sl@0: private: sl@0: int ReadLine(); sl@0: int Pass1(); sl@0: int Pass2(); sl@0: char* ScanLine(int& aLen); sl@0: int DoCom(int aSecondPass); sl@0: private: sl@0: FcmCharHead *iChar; sl@0: char iInputBuf[256]; sl@0: int iInputBufLen; sl@0: char* iFileBuf; sl@0: int iFileBufLen; sl@0: int iFileBufPos; sl@0: int iUnderHang; sl@0: int iOverHang; sl@0: }; sl@0: sl@0: #endif