rpms/openoffice.org/F-12 openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch, 1.4, 1.5 openoffice.org.spec, 1.2065, 1.2066

Caolan McNamara caolanm at fedoraproject.org
Tue Feb 9 12:44:37 UTC 2010


Author: caolanm

Update of /cvs/pkgs/rpms/openoffice.org/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv14724/F-12

Modified Files:
	openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch 
	openoffice.org.spec 
Log Message:
Resolves: rhbz#445588 improve same name substitution

openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch:
 psprint/inc/psprint/fontmanager.hxx       |    4 
 psprint/source/fontmanager/fontconfig.cxx |  125 +++++++++++++++++++-----------
 vcl/inc/vcl/outfont.hxx                   |   10 +-
 vcl/source/gdi/outdev3.cxx                |   29 ++++--
 vcl/unx/source/gdi/salgdi3.cxx            |   93 ++++++++++++++++++----
 5 files changed, 188 insertions(+), 73 deletions(-)

Index: openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/F-12/openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch	12 Feb 2009 14:25:02 -0000	1.4
+++ openoffice.org-3.0.0.ooo87970.vcl.samenamesubs.patch	9 Feb 2010 12:44:36 -0000	1.5
@@ -177,10 +177,122 @@ diff -ru psprint/source/fontmanager/font
              }
  
  			// update rMissingCodes by removing resolved unicodes
-diff -ru vcl/unx/source/gdi/salgdi3.cxx vcl/unx/source/gdi/salgdi3.cxx
---- openoffice.org.orig/vcl/unx/source/gdi/salgdi3.cxx	2008-05-26 16:46:52.000000000 +0100
-+++ openoffice.org/vcl/unx/source/gdi/salgdi3.cxx	2008-05-26 16:46:28.000000000 +0100
-@@ -2069,8 +2069,10 @@
+diff -ru vcl.orig/inc/vcl/outfont.hxx vcl/inc/vcl/outfont.hxx
+--- vcl.orig/inc/vcl/outfont.hxx	2010-02-09 12:34:09.000000000 +0000
++++ vcl/inc/vcl/outfont.hxx	2010-02-09 12:35:39.000000000 +0000
+@@ -344,15 +344,17 @@
+     short               mnOrientation;      // text angle in 3600 system
+     bool                mbInit;             // true if maMetric member is valid
+ 
+-    void                AddFallbackForUnicode( sal_UCS4, const String& rFontName );
+-    bool                GetFallbackForUnicode( sal_UCS4, String* pFontName ) const;
+-    void                IgnoreFallbackForUnicode( sal_UCS4, const String& rFontName );
++    void                AddFallbackForUnicode( sal_UCS4, FontWeight eWeight, const String& rFontName );
++    bool                GetFallbackForUnicode( sal_UCS4, FontWeight eWeight, String* pFontName ) const;
++    void                IgnoreFallbackForUnicode( sal_UCS4, FontWeight eWeight, const String& rFontName );
+ 
+ private:
+     // cache of Unicode characters and replacement font names
+     // TODO: a fallback map can be shared with many other ImplFontEntries
+     // TODO: at least the ones which just differ in orientation, stretching or height
+-    typedef ::std::hash_map<sal_UCS4,String> UnicodeFallbackList;
++    typedef ::std::pair<sal_UCS4,FontWeight> CharDescr;
++    struct CharDescr_Hash{ size_t operator()( const CharDescr& ) const; };
++    typedef ::std::hash_map<CharDescr,String,CharDescr_Hash> UnicodeFallbackList;
+     UnicodeFallbackList* mpUnicodeFallbackList;
+ };
+ 
+diff -ru vcl.orig/source/gdi/outdev3.cxx vcl/source/gdi/outdev3.cxx
+--- vcl.orig/source/gdi/outdev3.cxx	2010-02-09 12:34:09.000000000 +0000
++++ vcl/source/gdi/outdev3.cxx	2010-02-09 12:37:50.000000000 +0000
+@@ -1528,21 +1528,28 @@
+ 
+ // -----------------------------------------------------------------------
+ 
+-inline void ImplFontEntry::AddFallbackForUnicode( sal_UCS4 cChar, const String& rFontName )
++size_t ImplFontEntry::CharDescr_Hash::operator()( const CharDescr& rData ) const
++{
++    std::hash<sal_UCS4> a;
++    std::hash<int > b;
++    return a(rData.first) | b(rData.second);
++}
++
++inline void ImplFontEntry::AddFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, const String& rFontName )
+ {
+     if( !mpUnicodeFallbackList )
+         mpUnicodeFallbackList = new UnicodeFallbackList;
+-    (*mpUnicodeFallbackList)[cChar] = rFontName;
++    (*mpUnicodeFallbackList)[CharDescr(cChar, eWeight)] = rFontName;
+ }
+ 
+ // -----------------------------------------------------------------------
+ 
+-inline bool ImplFontEntry::GetFallbackForUnicode( sal_UCS4 cChar, String* pFontName ) const
++inline bool ImplFontEntry::GetFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, String* pFontName ) const
+ {
+     if( !mpUnicodeFallbackList )
+         return false;
+ 
+-    UnicodeFallbackList::const_iterator it = mpUnicodeFallbackList->find( cChar );
++    UnicodeFallbackList::const_iterator it = mpUnicodeFallbackList->find( CharDescr(cChar, eWeight) );
+     if( it == mpUnicodeFallbackList->end() )
+         return false;
+ 
+@@ -1552,10 +1559,10 @@
+ 
+ // -----------------------------------------------------------------------
+ 
+-inline void ImplFontEntry::IgnoreFallbackForUnicode( sal_UCS4 cChar, const String& rFontName )
++inline void ImplFontEntry::IgnoreFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, const String& rFontName )
+ {
+ //  DBG_ASSERT( mpUnicodeFallbackList, "ImplFontEntry::IgnoreFallbackForUnicode no list" );
+-    UnicodeFallbackList::iterator it = mpUnicodeFallbackList->find( cChar );
++    UnicodeFallbackList::iterator it = mpUnicodeFallbackList->find( CharDescr(cChar, eWeight) );
+ //  DBG_ASSERT( it != mpUnicodeFallbackList->end(), "ImplFontEntry::IgnoreFallbackForUnicode no match" );
+     if( it == mpUnicodeFallbackList->end() )
+         return;
+@@ -1973,7 +1980,7 @@
+         while( nStrIndex < rMissingCodes.getLength() )
+         {
+             cChar = rMissingCodes.iterateCodePoints( &nStrIndex );
+-            bCached = rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, &rFontSelData.maSearchName );
++            bCached = rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &rFontSelData.maSearchName );
+             // ignore entries which don't have a fallback
+             if( !bCached || (rFontSelData.maSearchName.Len() != 0) )
+                 break;
+@@ -1989,7 +1996,7 @@
+             while( nStrIndex < rMissingCodes.getLength() )
+             {
+                 cChar = rMissingCodes.iterateCodePoints( &nStrIndex );
+-                bCached = rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, &aFontName );
++                bCached = rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &aFontName );
+                 if( !bCached || (rFontSelData.maSearchName != aFontName) )
+                     pRemainingCodes[ nRemainingLength++ ] = cChar;
+             }
+@@ -2008,8 +2015,8 @@
+             // cache the result even if there was no match
+             for(;;)
+             {
+-                 if( !rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, &rFontSelData.maSearchName ) )
+-                     rFontSelData.mpFontEntry->AddFallbackForUnicode( cChar, rFontSelData.maSearchName );
++                 if( !rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &rFontSelData.maSearchName ) )
++                     rFontSelData.mpFontEntry->AddFallbackForUnicode( cChar, rFontSelData.GetWeight(), rFontSelData.maSearchName );
+                  if( nStrIndex >= aOldMissingCodes.getLength() )
+                      break;
+                  cChar = aOldMissingCodes.iterateCodePoints( &nStrIndex );
+@@ -2020,7 +2027,7 @@
+                 for( nStrIndex = 0; nStrIndex < rMissingCodes.getLength(); )
+                 {
+                     cChar = rMissingCodes.iterateCodePoints( &nStrIndex );
+-                    rFontSelData.mpFontEntry->IgnoreFallbackForUnicode( cChar, rFontSelData.maSearchName );
++                    rFontSelData.mpFontEntry->IgnoreFallbackForUnicode( cChar, rFontSelData.GetWeight(), rFontSelData.maSearchName );
+                 }
+             }
+         }
+diff -ru vcl.orig/unx/source/gdi/salgdi3.cxx vcl/unx/source/gdi/salgdi3.cxx
+--- vcl.orig/unx/source/gdi/salgdi3.cxx	2010-02-09 12:34:09.000000000 +0000
++++ vcl/unx/source/gdi/salgdi3.cxx	2010-02-09 12:34:24.000000000 +0000
+@@ -2037,8 +2037,10 @@
  
  // -----------------------------------------------------------------------
  
@@ -192,7 +304,7 @@ diff -ru vcl/unx/source/gdi/salgdi3.cxx 
      const rtl::OString aLangAttrib; //TODO: = MsLangId::convertLanguageToIsoByteString( rFontSelData.meLanguage );
  
      psp::italic::type eItalic = psp::italic::Unknown;
-@@ -2138,7 +2140,72 @@
+@@ -2106,7 +2108,72 @@
      }
  
      const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
@@ -266,7 +378,7 @@ diff -ru vcl/unx/source/gdi/salgdi3.cxx 
  }
  
  //--------------------------------------------------------------------------
-@@ -2154,20 +2221,19 @@
+@@ -2122,20 +2189,19 @@
          return false;
  
      rtl::OUString aDummy;
@@ -292,7 +404,7 @@ diff -ru vcl/unx/source/gdi/salgdi3.cxx 
      return true;
  }
  
-@@ -2184,21 +2250,20 @@
+@@ -2152,21 +2218,20 @@
      ||  0 == rFontSelData.maSearchName.CompareIgnoreCaseToAscii( "opensymbol", 10) )
          return false;
  


Index: openoffice.org.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/F-12/openoffice.org.spec,v
retrieving revision 1.2065
retrieving revision 1.2066
diff -u -p -r1.2065 -r1.2066
--- openoffice.org.spec	6 Feb 2010 12:26:14 -0000	1.2065
+++ openoffice.org.spec	9 Feb 2010 12:44:36 -0000	1.2066
@@ -4323,9 +4323,10 @@ fi
     unopkg list --shared > /dev/null 2>&1 || :
 
 %changelog
-* Sat Feb 06 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.1.1-19.26-UNBUILT
+* Tue Feb 09 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.1.1-19.26-UNBUILT
 - Resolves: rhbz#561778 openoffice.org-3.2.0.oooXXXXX.svx.safestyledelete.patch
 - Resolves: rhbz#561989 openoffice.org-3.2.0.ooo109009.sc.tooltipcrash.patch
+- Resolves: rhbz#445588 improve same name substitution
 
 * Tue Feb 02 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.1.1-19.25
 - Resolves: rhbz#549890 add workspace.extmgr01.patch (dtardon)



More information about the scm-commits mailing list