Exemple #1
0
// TD-2013-07-02: [[ DynamicFonts ]]
// MERG-2013-08-14: [[ DynamicFonts ]] Refactored to use MCLoadedFont
bool MCFontLoad(MCStringRef p_path, bool p_globally)
{
    bool t_success;
    t_success = true;
    
    if (t_success)
    {
        // check if already loaded and unload if globally is not the same as loaded version
        for(MCLoadedFont *t_font = s_loaded_fonts; t_font != nil; t_font = t_font -> next)
            if (MCStringIsEqualTo(t_font -> path, p_path, kMCStringOptionCompareCaseless))
			{
				if (t_font -> is_global != p_globally)
				{
					t_success = MCFontUnload(p_path);
					break;
				}
				else
					return true;
			}
    }
    
    if (t_success)
    {
        void * t_loaded_font_handle;
        
        if (!MCscreen -> loadfont(p_path, p_globally, t_loaded_font_handle))
            return false;
    
        MCLoadedFontRef self;
        if (!MCMemoryNew(self))
            return false;
        
        self -> is_global = p_globally;
        self -> handle = t_loaded_font_handle;
        MCValueAssign(self -> path, p_path);
		self -> next = s_loaded_fonts;
		s_loaded_fonts = self;
		
		// MW-2013-09-11: [[ DynamicFonts ]] Make sure the engine reloads all fonts.
		MCFontRemap();
		MCstacks -> purgefonts();
    }

    return t_success;
}
Exemple #2
0
// TD-2013-07-02: [[ DynamicFonts ]]
// MERG-2013-08-14: [[ DynamicFonts ]] Refactored to use MCLoadedFont
Exec_stat MCFontLoad(MCExecPoint& ep, const char *p_path, bool p_globally)
{
    Exec_stat t_stat;
    t_stat = ES_NORMAL;
    
    if (t_stat == ES_NORMAL)
    {
        // check if already loaded and unload if globally is not the same as loaded version
        for(MCLoadedFont *t_font = s_loaded_fonts; t_font != nil; t_font = t_font -> next)
            if (MCU_strcasecmp(t_font -> path, p_path) == 0)
			{
				if (t_font -> is_global != p_globally)
				{
					t_stat = MCFontUnload(ep,p_path);
					break;
				}
				else
					return ES_NORMAL;
			}
    }
    
    if (t_stat == ES_NORMAL)
    {
        void * t_loaded_font_handle;
        
        if (!MCscreen -> loadfont(p_path, p_globally, t_loaded_font_handle))
            return ES_ERROR;
    
        MCLoadedFontRef self;
        if (!MCMemoryNew(self))
            return ES_ERROR;
        
        self -> is_global = p_globally;
        self -> handle = t_loaded_font_handle;
        self -> path = strdup(p_path);
		self -> next = s_loaded_fonts;
		s_loaded_fonts = self;
		
		// MW-2013-09-11: [[ DynamicFonts ]] Make sure the engine reloads all fonts.
		MCFontRemap();
		MCstacks -> purgefonts();
    }

    return t_stat;
}