vcl/inc/outfont.hxx | 3 vcl/source/gdi/outdev3.cxx | 77 +++++++++++++++++++++++- vcl/win/source/gdi/salgdi3.cxx | 116 ------------------------------------- vcl/win/source/gdi/salprn.cxx | 1 vcl/win/source/window/salframe.cxx | 19 ------ 5 files changed, 76 insertions(+), 140 deletions(-)
New commits: commit f2601ba087d9d21af09134703b12de2a1d1763f8 Author: Thomas Arnhold <tho...@arnhold.org> Date: Sat Feb 18 14:40:11 2012 +0100 remove some unused windows code diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx index 692005d..e3e94b4 100644 --- a/vcl/win/source/gdi/salgdi3.cxx +++ b/vcl/win/source/gdi/salgdi3.cxx @@ -1228,8 +1228,6 @@ sal_IntPtr ImplWinFontData::GetFontId() const // ----------------------------------------------------------------------- static unsigned GetUInt( const unsigned char* p ) { return((p[0]<<24)+(p[1]<<16)+(p[2]<<8)+p[3]);} -static unsigned GetUShort( const unsigned char* p ){ return((p[0]<<8)+p[1]);} -//static signed GetSShort( const unsigned char* p ){ return((short)((p[0]<<8)+p[1]));} static inline DWORD CalcTag( const char p[4]) { return (p[0]+(p[1]<<8)+(p[2]<<16)+(p[3]<<24)); } // ----------------------------------------------------------------------- @@ -1807,120 +1805,6 @@ int CALLBACK SalEnumCharSetsProcExA( const ENUMLOGFONTEXA* pLogFont, // ----------------------------------------------------------------------- -static void ImplGetAllFontCharSets( WinSalGraphics* pData ) -{ - if ( !pData->mpFontCharSets ) - pData->mpFontCharSets = new BYTE[256]; - - LOGFONTA aLogFont; - memset( &aLogFont, 0, sizeof( aLogFont ) ); - aLogFont.lfCharSet = DEFAULT_CHARSET; - GetTextFaceA( pData->mhDC, sizeof( aLogFont.lfFaceName ), aLogFont.lfFaceName ); - EnumFontFamiliesExA( pData->mhDC, &aLogFont, (FONTENUMPROCA)SalEnumCharSetsProcExA, - (LPARAM)(void*)pData, 0 ); -} - -// ----------------------------------------------------------------------- - -static void ImplAddKerningPairs( WinSalGraphics* pData ) -{ - sal_uLong nPairs = ::GetKerningPairsA( pData->mhDC, 0, NULL ); - if ( !nPairs ) - return; - - CHARSETINFO aInfo; - if ( !TranslateCharsetInfo( (DWORD*)(sal_uLong)GetTextCharset( pData->mhDC ), &aInfo, TCI_SRCCHARSET ) ) - return; - - if ( !pData->mpFontKernPairs ) - pData->mpFontKernPairs = new KERNINGPAIR[nPairs]; - else - { - KERNINGPAIR* pOldPairs = pData->mpFontKernPairs; - pData->mpFontKernPairs = new KERNINGPAIR[nPairs+pData->mnFontKernPairCount]; - memcpy( pData->mpFontKernPairs, pOldPairs, - pData->mnFontKernPairCount*sizeof( KERNINGPAIR ) ); - delete[] pOldPairs; - } - - UINT nCP = aInfo.ciACP; - sal_uLong nOldPairs = pData->mnFontKernPairCount; - KERNINGPAIR* pTempPair = pData->mpFontKernPairs+pData->mnFontKernPairCount; - nPairs = ::GetKerningPairsA( pData->mhDC, nPairs, pTempPair ); - for ( sal_uLong i = 0; i < nPairs; i++ ) - { - unsigned char aBuf[2]; - wchar_t nChar; - int nLen; - sal_Bool bAdd = TRUE; - - // None-ASCII?, then we must convert the char - if ( (pTempPair->wFirst > 125) || (pTempPair->wFirst == 92) ) - { - if ( pTempPair->wFirst < 256 ) - { - aBuf[0] = (unsigned char)pTempPair->wFirst; - nLen = 1; - } - else - { - aBuf[0] = (unsigned char)(pTempPair->wFirst >> 8); - aBuf[1] = (unsigned char)(pTempPair->wFirst & 0xFF); - nLen = 2; - } - if ( MultiByteToWideChar( nCP, MB_PRECOMPOSED | MB_USEGLYPHCHARS, - (const char*)aBuf, nLen, &nChar, 1 ) ) - pTempPair->wFirst = nChar; - else - bAdd = FALSE; - } - if ( (pTempPair->wSecond > 125) || (pTempPair->wSecond == 92) ) - { - if ( pTempPair->wSecond < 256 ) - { - aBuf[0] = (unsigned char)pTempPair->wSecond; - nLen = 1; - } - else - { - aBuf[0] = (unsigned char)(pTempPair->wSecond >> 8); - aBuf[1] = (unsigned char)(pTempPair->wSecond & 0xFF); - nLen = 2; - } - if ( MultiByteToWideChar( nCP, MB_PRECOMPOSED | MB_USEGLYPHCHARS, - (const char*)aBuf, nLen, &nChar, 1 ) ) - pTempPair->wSecond = nChar; - else - bAdd = FALSE; - } - - // TODO: get rid of linear search! - KERNINGPAIR* pTempPair2 = pData->mpFontKernPairs; - for ( sal_uLong j = 0; j < nOldPairs; j++ ) - { - if ( (pTempPair2->wFirst == pTempPair->wFirst) && - (pTempPair2->wSecond == pTempPair->wSecond) ) - { - bAdd = FALSE; - break; - } - pTempPair2++; - } - - if ( bAdd ) - { - KERNINGPAIR* pDestPair = pData->mpFontKernPairs+pData->mnFontKernPairCount; - if ( pDestPair != pTempPair ) - memcpy( pDestPair, pTempPair, sizeof( KERNINGPAIR ) ); - pData->mnFontKernPairCount++; - } - - pTempPair++; - } -} - -// ----------------------------------------------------------------------- - sal_uLong WinSalGraphics::GetKernPairs( sal_uLong nPairs, ImplKernPairData* pKernPairs ) { DBG_ASSERT( sizeof( KERNINGPAIR ) == sizeof( ImplKernPairData ), diff --git a/vcl/win/source/gdi/salprn.cxx b/vcl/win/source/gdi/salprn.cxx index 53b54ed..99133ec 100644 --- a/vcl/win/source/gdi/salprn.cxx +++ b/vcl/win/source/gdi/salprn.cxx @@ -105,7 +105,6 @@ using ::rtl::OUString; // ======================================================================= static char aImplWindows[] = "windows"; -static char aImplDevices[] = "devices"; static char aImplDevice[] = "device"; static LPDEVMODEW SAL_DEVMODE_W( const ImplJobSetup* pSetupData ) diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx index 6a2a16f..2243e21 100644 --- a/vcl/win/source/window/salframe.cxx +++ b/vcl/win/source/window/salframe.cxx @@ -3472,32 +3472,13 @@ static sal_uInt16 ImplSalGetKeyCode( WPARAM wParam ) // ----------------------------------------------------------------------- -static UINT ImplStrToNum( const sal_Char* pStr ) -{ - sal_uInt16 n = 0; - - // Solange es sich um eine Ziffer handelt, String umwandeln - while( (*pStr >= 48) && (*pStr <= 57) ) - { - n *= 10; - n += ((*pStr) - 48); - pStr++; - } - - return n; -} - -// ----------------------------------------------------------------------- - static void ImplUpdateInputLang( WinSalFrame* pFrame ) { - sal_Bool bLanguageChange = FALSE; UINT nLang = LOWORD( GetKeyboardLayout( 0 ) ); if ( nLang && nLang != pFrame->mnInputLang ) { // keep input lang up-to-date pFrame->mnInputLang = nLang; - bLanguageChange = TRUE; } // We are on Windows NT so we use Unicode FrameProcs and get commit 04af52609aef5b4ccbbf82553ac190ef43700652 Author: Thomas Arnhold <tho...@arnhold.org> Date: Sat Feb 18 14:33:54 2012 +0100 vcl: bring ImplFindByLocale back (windows build) Partially reverts 78e9ba6febb7402d4661fbf7934a2526efc8629a This is used by WinGlyphFallbackSubstititution::FindFontSubstitute diff --git a/vcl/inc/outfont.hxx b/vcl/inc/outfont.hxx index 9acb296..75871da 100644 --- a/vcl/inc/outfont.hxx +++ b/vcl/inc/outfont.hxx @@ -228,6 +228,9 @@ public: ImplGetDevFontList* GetDevFontList() const; ImplGetDevSizeList* GetDevSizeList( const String& rFontName ) const; + //used by 2-level font fallback + ImplDevFontListData* ImplFindByLocale( com::sun::star::lang::Locale& ) const; + protected: void InitMatchData() const; bool AreMapNamesAvailable() const { return mbMapNames; } diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index 598823e..6cd8e34 100755 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -26,6 +26,8 @@ * ************************************************************************/ +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_vcl.hxx" #include "i18npool/mslangid.hxx" @@ -416,6 +418,35 @@ sal_uInt16 OutputDevice::GetFontSubstituteCount() // ----------------------------------------------------------------------- +void OutputDevice::GetFontSubstitute( sal_uInt16 n, + XubString& rFontName, + XubString& rReplaceFontName, + sal_uInt16& rFlags ) +{ + const ImplDirectFontSubstitution* pSubst = ImplGetSVData()->maGDIData.mpDirectFontSubst; + if( pSubst ) + pSubst->GetFontSubstitute( n, rFontName, rReplaceFontName, rFlags ); +} + +// ----------------------------------------------------------------------- + +bool ImplDirectFontSubstitution::GetFontSubstitute( int nIndex, + String& rFontName, String& rSubstFontName, sal_uInt16& rFlags ) const +{ + FontSubstList::const_iterator it = maFontSubstList.begin(); + for( int nCount = 0; (it != maFontSubstList.end()) && (nCount++ != nIndex); ++it ) ; + if( it == maFontSubstList.end() ) + return false; + + const ImplFontSubstEntry* pEntry = &(*it); + rFontName = pEntry->maName; + rSubstFontName = pEntry->maReplaceName; + rFlags = pEntry->mnFlags; + return true; +} + +// ----------------------------------------------------------------------- + bool ImplDirectFontSubstitution::FindFontSubstitute( String& rSubstName, const String& rSearchName, sal_uInt16 nFlags ) const { @@ -1668,6 +1699,18 @@ void ImplDevFontList::InitMatchData() const } } +//---------------------------------------------------------------------------- +ImplDevFontListData* ImplDevFontList::ImplFindByLocale( com::sun::star::lang::Locale& rLocale ) const +{ + // get the default font for a specified locale + const DefaultFontConfiguration& rDefaults = DefaultFontConfiguration::get(); + const String aDefault = rDefaults.getUserInterfaceFont( rLocale ); + ImplDevFontListData* pFontData = ImplFindByTokenNames( aDefault ); + if( pFontData ) + return pFontData; + return NULL; +} + // ----------------------------------------------------------------------- ImplDevFontListData* ImplDevFontList::ImplFindByAttributes( sal_uLong nSearchType, @@ -3135,6 +3178,15 @@ bool OutputDevice::ImplNewFont() const // ----------------------------------------------------------------------- +long OutputDevice::ImplGetTextWidth( const SalLayout& rSalLayout ) const +{ + long nWidth = rSalLayout.GetTextWidth(); + nWidth /= rSalLayout.GetUnitsPerPixel(); + return nWidth; +} + +// ----------------------------------------------------------------------- + void OutputDevice::ImplDrawTextRect( long nBaseX, long nBaseY, long nDistX, long nDistY, long nWidth, long nHeight ) { @@ -5460,6 +5512,13 @@ void OutputDevice::DrawTextLine( const Point& rPos, long nWidth, // ------------------------------------------------------------------------ +sal_Bool OutputDevice::IsTextUnderlineAbove( const Font& rFont ) +{ + return ImplIsUnderlineAbove( rFont ); +} + +// ------------------------------------------------------------------------ + void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos, sal_uInt16 nStyle ) { @@ -5967,9 +6026,7 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr, if( bFilter ) { xub_StrLen nCutStart, nCutStop, nOrgLen = nLen; - rtl::OUString aTmpStr(aStr); - bool bFiltered = mpGraphics->filterText( rOrigStr, aTmpStr, nMinIndex, nLen, nCutStart, nCutStop ); - aStr = aTmpStr; + bool bFiltered = mpGraphics->filterText( rOrigStr, aStr, nMinIndex, nLen, nCutStart, nCutStop ); if( !nLen ) return NULL; @@ -6416,7 +6473,8 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const Rectangle& r nFormatLines = nLines-1; pLineInfo = aMultiLineInfo.GetLine( nFormatLines ); - aLastLine = convertLineEnd(aStr.Copy(pLineInfo->GetIndex()), LINEEND_LF); + aLastLine = aStr.Copy( pLineInfo->GetIndex() ); + aLastLine.ConvertLineEnd( LINEEND_LF ); // Alle LineFeed's durch Spaces ersetzen xub_StrLen nLastLineLen = aLastLine.Len(); for ( i = 0; i < nLastLineLen; i++ ) @@ -7438,6 +7496,17 @@ long OutputDevice::GetMinKashida() const ImplFontMetricData* pMetric = &(pEntry->maMetric); return ImplDevicePixelToLogicWidth( pMetric->mnMinKashida ); } +// ----------------------------------------------------------------------- + +long OutputDevice::GetMinKashida( const Font& rFont ) const +{ + // select font, query Kashida, select original font again + Font aOldFont = GetFont(); + const_cast<OutputDevice*>(this)->SetFont( rFont ); + long aKashida = GetMinKashida(); + const_cast<OutputDevice*>(this)->SetFont( aOldFont ); + return aKashida; +} // ----------------------------------------------------------------------- xub_StrLen OutputDevice::ValidateKashidas ( const String& rTxt, _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits