//--------------------------------------------------------------------------- void TVPAddTransHandlerProvider(iTVPTransHandlerProvider *pro) { // add transition handler provider to the system // retrieve transition name const tjs_char *cname; if(TJS_FAILED(pro->GetName(&cname))) TVPThrowExceptionMessage(TVPTransHandlerError, TJS_W("tTVPTransHandlerProvider::GetName failed")); ttstr name = cname; tTVPTransHandlerProviderHolder *p = TVPTransHandlerProviders.Find(name); if(p) TVPThrowExceptionMessage(TVPTransAlreadyRegistered, name); tTVPTransHandlerProviderHolder holder(pro); TVPTransHandlerProviders.Add(name, holder); }
//--------------------------------------------------------------------------- void TVPRemoveTransHandlerProvider(iTVPTransHandlerProvider *pro) { // remove transition handler provider from the system // retrieve transition name const tjs_char * cname; if(TJS_FAILED(pro->GetName(&cname))) TVPThrowExceptionMessage(TVPTransHandlerError, TJS_W("tTVPTransHandlerProvider::GetName failed")); ttstr name = cname; TVPTransHandlerProviders.Delete(name); }
//--------------------------------------------------------------------------- void TVPMapPrerenderedFont(const tTVPFont & font, const ttstr & storage) { // map specified font to specified prerendered font ttstr fn = TVPSearchPlacedPath(storage); // search or retrieve specified storage tTVPPrerenderedFont * object; tTVPPrerenderedFont ** found = TVPPrerenderedFonts.Find(fn); if(!found) { // not yet exist; create object = new tTVPPrerenderedFont(fn); } else { // already exist object = *found; object->AddRef(); } // search existing mapped font std::vector<tTVPPrerenderedFontMap>::iterator i; for(i = TVPPrerenderedFontMapVector.begin(); i !=TVPPrerenderedFontMapVector.end(); i++) { if(i->Font == font) { // found font // replace existing i->Object->Release(); i->Object = object; break; } } if(i == TVPPrerenderedFontMapVector.end()) { // not found tTVPPrerenderedFontMap map; map.Font = font; map.Object = object; TVPPrerenderedFontMapVector.push_back(map); // add } TVPGlobalFontStateMagic ++; // increase magic number TVPClearFontCache(); // clear font cache }
iTVPTransHandlerProvider * TVPFindTransHandlerProvider(const ttstr &name) { if(TVPTransHandlerProviderInit) { // we assume that transition that has the same name as the other does // not exist TVPRegisterDefaultTransHandlerProvider(); TVPTransHandlerProviderInit = false; } tTVPTransHandlerProviderHolder *holder = TVPTransHandlerProviders.Find(name); if(!holder) TVPThrowExceptionMessage(TVPCannotFindTransHander, name); iTVPTransHandlerProvider * pro = holder->GetObjectNoAddRef(); pro->AddRef(); return pro; }
//--------------------------------------------------------------------------- static void TVPClearTransHandlerProvider() { // called at system shutdown TVPTransHandlerProviders.Clear(); }