/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ #ifndef __INTLWIN_H #define __INTLWIN_H #define DEFAULT_WINCSID 0 #define MAXLANGNUM 11 class CyaFont; typedef struct EncodingInfo { int iLangResId ; // Language Resource ID int iCSID; // Font's csid which defined by csid.h char szPropName[LF_FACESIZE]; // Proportional font name int iPropSize; // Proportional font size int iPropCharset; // Proportional font's charset-id defined MS char szFixName[LF_FACESIZE]; // Fix font name int iFixSize; // Fix font size int iFixCharset; // Fix font's charset-id defined by MS int nCodeset; int csid[5]; // Supported charset list per language } EncodingInfo; class CIntlFont { // Constructor public: CIntlFont(); // this will setup font tables private: EncodingInfo *pEncodingInfoTbl; int nEncoding; public: // Control functions for Font Table void WriteToIniFile(void); int DocCSIDtoID(int doc_csid); EncodingInfo *GetEncodingInfo (int id); EncodingInfo *GetEncodingInfo (MWContext *pContext); void ChangeFont(int id, struct EncodingInfo *ef_font); char * GetEncodingName(int id); }; #define TABLE_UNICODE_API_FLAG 1 #define MAX_FLAG_TABLE_NUM 0x100 #define MASK_FLAG_TABLE 0xFF class CIntlWin { public: #ifdef XP_WIN32 static LPWSTR m_wConvBuf; #endif static int m_iConvBufSize; static BOOL AllocConvBuffer(int iLength); public: static BOOL FontSelectIgnorePitch(int16 wincsid); static BOOL FontSelectIgnoreCharset(int16 wincsid); static BOOL TextOutWithCyaFont(CyaFont *theNSFont, int16 wincsid, HDC hDC, int nXStart, int nYStart, LPCSTR lpString,int iLength); static BOOL GetTextExtentPointWithCyaFont(CyaFont *theNSFont, int wincsid, HDC hDC, LPCSTR lpString, int cbString, LPSIZE lpSize); static int MultiByteToWideChar(int16 wincsid, LPCSTR lpMultiByte, int len); static CSize GetTextExtent(int16 wincsid, HDC pDC, LPCTSTR pString, int iLength); static BOOL TextOut(int16 wincsid, HDC pDC, int nXStart, int nYStart, LPCSTR lpString,int iLength); static BOOL GetTextExtentPoint(int wincsid, HDC hDC, LPCSTR lpString, int cbString, LPSIZE lpSize); static BOOL ExtTextOut(int16 wincsid, HDC pDC, int x, int y, UINT nOptions, LPCRECT lpRect, LPCSTR lpszString, UINT nCount, LPINT lpDxWidths); #ifdef XP_WIN32 static int DrawTextEx(int16 wincsid, HDC hdc, LPSTR lpchText, int cchText,LPRECT lprc,UINT dwDTFormat,LPDRAWTEXTPARAMS lpDTParams); #endif static int DrawText(int16 wincsid, HDC hdc, LPSTR lpchText, int cchText,LPRECT lprc,UINT dwDTFormat); private: static int16 m_system_locale_csid; //#ifdef netscape_font_module public: //private: //#endif // netscape_font_module #ifdef XP_WIN32 inline static BOOL UseUnicodeFontAPI(int16 wincsid) { return flagTable[(wincsid) & MASK_FLAG_TABLE];}; #else inline static BOOL UseUnicodeFontAPI(int16 wincsid) { return FALSE; }; #endif static BOOL UseVirtualFont(); static int16 GetSystemLocaleCsid(); static int16 CodePageToCsid(UINT cp); #ifdef XP_WIN32 static BOOL flagTable[MAX_FLAG_TABLE_NUM]; #endif }; int16 IntlCharsetToCsid(BYTE charset); BYTE IntlGetLfCharset(int csid); const char *IntlGetUIPropFaceName(int csid); const char *IntlGetUIFixFaceName(int csid); #endif