Exemplo n.º 1
0
/***********************************************************************
 *
 * FUNCTION: ZDicFontInit
 *
 * DESCRIPTION: Initial all font resource
 *
 * PARAMETERS:	nothing
 *
 * RETURN:		errNone if success else fail.
 *
 * REVISION HISTORY:
 *		Name			Date		Description
 *		----			----		-----------
 *		ZhongYuanHuan	14/Aug/04	Initial Revision 
 *				
 ***********************************************************************/
Err ZDicFontInit ( UInt16 refNum, ZDicFontType* fontP, Boolean bUseSysFont )
{
	#pragma unused(refNum)
	
	UInt32  version;	
	Err     err;
	
	MemSet ( fontP, sizeof ( ZDicFontType ), 0 );
	fontP->smallFontID = stdFont;
	fontP->largeFontID = largeFont;
	
	if ( bUseSysFont ) return errNone;
	
	fontP->fontLibP = DmOpenDatabaseByTypeCreator ( ZDicFontTypeID, ZDicFontCreatorID, dmModeReadOnly );
	
	if ( fontP->fontLibP == 0 )
	{
	    err = DmGetLastErr ();
	    return err;
	}
	
	// Load the phonic font resource and assign it a font ID.
	err = FtrGet(sysFtrCreator, sysFtrNumWinVersion, &version);
	if (!err && version >= 4 )
	{
		// the screen is double density so use double density of phonetic font.
		fontP->phonicSmallFontH = DmGetResource('nfnt', PhonicSmallFontHight);
		fontP->phonicLargeFontH = DmGetResource('nfnt', PhonicLargeFontHight);		
	}
		
	if (fontP->phonicSmallFontH == NULL || fontP->phonicLargeFontH == NULL)
	{
		if (fontP->phonicSmallFontH != NULL) DmReleaseResource(fontP->phonicSmallFontH);
		if (fontP->phonicLargeFontH != NULL) DmReleaseResource(fontP->phonicLargeFontH);
		
		// the screen is low desity so use low density of phonetic font.
		fontP->phonicSmallFontH = DmGetResource(fontRscType, PhonicSmallFontLow);
		fontP->phonicLargeFontH = DmGetResource(fontRscType, PhonicLargeFontLow);		
	}
		
	fontP->phonicSmallFontP = (FontType *)MemHandleLock(fontP->phonicSmallFontH);
	fontP->phonicLargeFontP = (FontType *)MemHandleLock(fontP->phonicLargeFontH);
	err = FntDefineFont(kPHONIC_SMALL_FONT_ID, fontP->phonicSmallFontP);
	err = FntDefineFont(kPHONIC_LARGE_FONT_ID, fontP->phonicLargeFontP);
	fontP->smallFontID = kPHONIC_SMALL_FONT_ID;
	fontP->largeFontID = kPHONIC_LARGE_FONT_ID;		

	return errNone;
}
Exemplo n.º 2
0
/* Load custom fonts into memory */
void LoadCustomFonts
    (
    DeviceFontType  deviceFont
    )
{
    CustomFontType* fontList;
    FontType*       font;

    currentDeviceFont = deviceFont;

    GrayFntClearSubstitutionList();

    ReleaseCustomFonts();

    switch ( deviceFont ) {
        case STANDARD_FONTS:
            fontList = ListOfCustomStandardFonts;
            break;
#ifdef HAVE_HIRES
        case PALM_FONTS:
            fontList = ListOfCustomPalmHiResFonts;
            break;
#ifdef HAVE_SONY_SDK
        case SONY_FONTS:
            fontList = ListOfCustomSonyHiResFonts;
            break;
#endif
#endif
        default:
            return;
    }

    for ( ; fontList->resourceType != EOL; fontList++ ) {
        MemHandle        fontHandle;
        FontResourceKind kind;
        fontHandle = GetFontResource( fontList->resourceType,
                                      fontList->resourceID,
                                      &kind );
        if ( fontHandle != NULL ) {
            font   = MemHandleLock( fontHandle );
            FntDefineFont( fontList->fontID, font );
            MemHandleUnlock( fontHandle );
            if ( FONT_IS_ITALIC( fontList->fontID ) ) {
                haveItalic[ fontList->fontID - START_ITALIC_USER_FONTS ] = true;
            }
        }
        else {
            if ( FONT_IS_ITALIC( fontList->fontID ) ) {
                haveItalic[ fontList->fontID - START_ITALIC_USER_FONTS ] =
                                                                          false;
            }
            else {
                GrayFntSubstitute( fontList->fontID, fontList->substituteID );
            }
        }
        ReleaseFontResource( fontHandle, kind );
    }
}