fontservices/fontstore/src/OPENFONT.CPP
branchRCL_3
changeset 11 6971d1c87c9a
parent 5 e96e8a131979
child 15 9a2be90ac9a2
equal deleted inserted replaced
5:e96e8a131979 11:6971d1c87c9a
   518 */
   518 */
   519 EXPORT_C COpenFont::~COpenFont()
   519 EXPORT_C COpenFont::~COpenFont()
   520 	{
   520 	{
   521 	//Delete the shaper
   521 	//Delete the shaper
   522 	delete iShaper;
   522 	delete iShaper;
   523 
       
   524 	File()->GetFontStore()->CleanupCacheOnOpenFontRemoval(this);
       
   525 	
   523 	
   526 	COpenFontGlyphCache* glyphCache = GetGlyphCache();
   524 	COpenFontGlyphCache* glyphCache = GetGlyphCache();
   527 	if (glyphCache != NULL)
   525 	if (glyphCache != NULL)
   528 		{
   526 		{
   529 		COpenFontGlyphTreeEntry* next = NULL;
   527 		COpenFontGlyphTreeEntry* next = NULL;
   819 
   817 
   820 void COpenFont::DeleteShaper() const
   818 void COpenFont::DeleteShaper() const
   821 	{
   819 	{
   822 	delete iShaper;
   820 	delete iShaper;
   823 	}
   821 	}
   824 
       
   825 TInt COpenFont::GetFontTable(TUint32 aTag, TAny*& aTableContent, TInt& aLength) 
       
   826     {
       
   827     // get the extension API for GetTrueTypeTable() if available
       
   828     TAny* ext = NULL;
       
   829     ExtendedInterface(KUidOpenFontTrueTypeExtension, ext);
       
   830     MOpenFontTrueTypeExtension* extensionInterface = 
       
   831         reinterpret_cast<MOpenFontTrueTypeExtension*>(ext);
       
   832 
       
   833     TInt ret = KErrNone;
       
   834     if (extensionInterface == NULL)
       
   835         {
       
   836         ret = KErrNotSupported;
       
   837         }
       
   838     else 
       
   839         {
       
   840         TUint32 tag = aTag;
       
   841         TInt len = 0;
       
   842         aTableContent = extensionInterface->GetTrueTypeTable(ret, tag, &len);
       
   843         if (KErrNone == ret) 
       
   844             {
       
   845             aLength = len;
       
   846             }
       
   847         }
       
   848     return ret;
       
   849     }
       
   850 
       
   851 TInt COpenFont::GetGlyphOutline(TUint aCode, 
       
   852         TBool aHinted, TAny*& aOutline, TInt &aLength) 
       
   853     {
       
   854     // get the extension API for GetTrueTypeTable() if available
       
   855     TAny* ext = NULL;
       
   856     ExtendedInterface(KUidOpenFontGlyphOutlineExtension, ext);
       
   857     MOpenFontGlyphOutlineExtension *extensionInterface = 
       
   858         reinterpret_cast<MOpenFontGlyphOutlineExtension*>(ext);
       
   859 
       
   860     TInt ret = KErrNone;
       
   861     if (extensionInterface == NULL)
       
   862         {
       
   863         ret = KErrNotSupported;
       
   864         }
       
   865     else 
       
   866         {
       
   867         ret = extensionInterface->GetGlyphOutline(aCode, ETrue, 
       
   868                 aHinted, aOutline, aLength);
       
   869         }
       
   870     return ret;
       
   871     }
       
   872 
   822 
   873 /** Given the passed pointer aAny, return an offset from it to the "this" pointer
   823 /** Given the passed pointer aAny, return an offset from it to the "this" pointer
   874 of this COpenFont object.
   824 of this COpenFont object.
   875 @param aAny A pointer to an object that exists on the shared heap, i.e. the same heap
   825 @param aAny A pointer to an object that exists on the shared heap, i.e. the same heap
   876 that this CCOpenFont object was created on.
   826 that this CCOpenFont object was created on.
  1696 It is not allowed that file is deleted before its fonts
  1646 It is not allowed that file is deleted before its fonts
  1697 and the logic is handled in CFontStore::RemoveFile().
  1647 and the logic is handled in CFontStore::RemoveFile().
  1698 */
  1648 */
  1699 EXPORT_C COpenFontFile::~COpenFontFile()
  1649 EXPORT_C COpenFontFile::~COpenFontFile()
  1700 	{
  1650 	{
  1701     CFontStore *fs = GetFontStore();
       
  1702     if (fs != NULL)
       
  1703         {
       
  1704         fs->CleanupCacheOnOpenFontFileRemoval(this);
       
  1705         }
       
  1706 	delete iData;
  1651 	delete iData;
  1707 	}
  1652 	}
  1708 
  1653 
  1709 /**
  1654 /**
  1710 Gets the nearest font in pixels.
  1655 Gets the nearest font in pixels.