diff options
author | th <th@openoffice.org> | 2000-11-03 13:19:57 +0000 |
---|---|---|
committer | th <th@openoffice.org> | 2000-11-03 13:19:57 +0000 |
commit | bff5cca6ab6ab1bacf521f81d90b2e45c0b7db19 (patch) | |
tree | f0420a914946ed436c0f6f579c917315de4a622a /vcl/win | |
parent | 7f5ebc0f34acc618886d386f40c85b3dc8f296f6 (diff) |
ImplGetLogFontFromFontSelect()
Diffstat (limited to 'vcl/win')
-rw-r--r-- | vcl/win/inc/salgdi.h | 8 | ||||
-rw-r--r-- | vcl/win/source/gdi/salgdi3.cxx | 86 |
2 files changed, 53 insertions, 41 deletions
diff --git a/vcl/win/inc/salgdi.h b/vcl/win/inc/salgdi.h index ef89bc3f1f7d..9c104ea5fe9b 100644 --- a/vcl/win/inc/salgdi.h +++ b/vcl/win/inc/salgdi.h @@ -2,9 +2,9 @@ * * $RCSfile: salgdi.h,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 17:05:49 $ + * last change: $Author: th $ $Date: 2000-11-03 14:16:43 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -66,6 +66,8 @@ #include <sv.h> #endif +struct ImplFontSelectData; + // ----------- // - Defines - // ----------- @@ -122,6 +124,8 @@ void ImplSalInitGraphics( SalGraphicsData* mpData ); void ImplSalDeInitGraphics( SalGraphicsData* mpData ); void ImplUpdateSysColorEntries(); int ImplIsSysColorEntry( SalColor nSalColor ); +void ImplGetLogFontFromFontSelect( const ImplFontSelectData* pFont, + LOGFONTW& rLogFont ); // ----------- // - Defines - diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx index dce9e510c54e..f53bd31caf39 100644 --- a/vcl/win/source/gdi/salgdi3.cxx +++ b/vcl/win/source/gdi/salgdi3.cxx @@ -2,9 +2,9 @@ * * $RCSfile: salgdi3.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: mt $ $Date: 2000-11-02 14:25:41 $ + * last change: $Author: th $ $Date: 2000-11-03 14:19:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -484,48 +484,56 @@ void SalGraphics::SetTextColor( SalColor nSalColor ) // ----------------------------------------------------------------------- +void ImplGetLogFontFromFontSelect( const ImplFontSelectData* pFont, + LOGFONTW& rLogFont ) +{ + UniString aName; + if ( pFont->mpFontData ) + aName = pFont->mpFontData->maName; + else + aName = pFont->maName.GetToken( 0 ); + + UINT nNameLen = aName.Len(); + if ( nNameLen > (sizeof( rLogFont.lfFaceName )/sizeof( wchar_t ))-1 ) + nNameLen = (sizeof( rLogFont.lfFaceName )/sizeof( wchar_t ))-1; + memcpy( rLogFont.lfFaceName, aName.GetBuffer(), nNameLen*sizeof( wchar_t ) ); + rLogFont.lfFaceName[nNameLen] = 0; + if ( pFont->mpFontData && + ((pFont->meCharSet == RTL_TEXTENCODING_DONTKNOW) || + ((WIN_BYTE)(pFont->mpFontData->mpSysData) == OEM_CHARSET)) ) + rLogFont.lfCharSet = (WIN_BYTE)(pFont->mpFontData->mpSysData); + else + rLogFont.lfCharSet = ImplCharSetToWin( pFont->meCharSet ); + rLogFont.lfPitchAndFamily = ImplPitchToWin( pFont->mePitch ); + rLogFont.lfPitchAndFamily |= ImplFamilyToWin( pFont->meFamily ); + rLogFont.lfWeight = ImplWeightToWin( pFont->meWeight ); + rLogFont.lfHeight = (int)-pFont->mnHeight; + rLogFont.lfWidth = (int)pFont->mnWidth; + rLogFont.lfUnderline = 0; + rLogFont.lfStrikeOut = 0; + rLogFont.lfItalic = (pFont->meItalic) != ITALIC_NONE; + rLogFont.lfEscapement = pFont->mnOrientation; + rLogFont.lfOrientation = 0; + rLogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; + rLogFont.lfQuality = DEFAULT_QUALITY; + if ( pFont->mnOrientation ) + { + rLogFont.lfOutPrecision = OUT_TT_PRECIS; + rLogFont.lfClipPrecision |= CLIP_LH_ANGLES; + } + else + rLogFont.lfOutPrecision = OUT_DEFAULT_PRECIS; +} + +// ----------------------------------------------------------------------- + USHORT SalGraphics::SetFont( ImplFontSelectData* pFont ) { HFONT hNewFont; if ( aSalShlData.mbWNT ) { - LOGFONTW aLogFont; - UniString aName; - if ( pFont->mpFontData ) - aName = pFont->mpFontData->maName; - else - aName = pFont->maName.GetToken( 0 ); - - UINT nNameLen = aName.Len(); - if ( nNameLen > (sizeof( aLogFont.lfFaceName )/sizeof( wchar_t ))-1 ) - nNameLen = (sizeof( aLogFont.lfFaceName )/sizeof( wchar_t ))-1; - memcpy( aLogFont.lfFaceName, aName.GetBuffer(), nNameLen*sizeof( wchar_t ) ); - aLogFont.lfFaceName[nNameLen] = 0; - if ( pFont->mpFontData && - ((pFont->meCharSet == RTL_TEXTENCODING_DONTKNOW) || - ((WIN_BYTE)(pFont->mpFontData->mpSysData) == OEM_CHARSET)) ) - aLogFont.lfCharSet = (WIN_BYTE)(pFont->mpFontData->mpSysData); - else - aLogFont.lfCharSet = ImplCharSetToWin( pFont->meCharSet ); - aLogFont.lfPitchAndFamily = ImplPitchToWin( pFont->mePitch ); - aLogFont.lfPitchAndFamily |= ImplFamilyToWin( pFont->meFamily ); - aLogFont.lfWeight = ImplWeightToWin( pFont->meWeight ); - aLogFont.lfHeight = (int)-pFont->mnHeight; - aLogFont.lfWidth = (int)pFont->mnWidth; - aLogFont.lfUnderline = 0; - aLogFont.lfStrikeOut = 0; - aLogFont.lfItalic = (pFont->meItalic) != ITALIC_NONE; - aLogFont.lfEscapement = pFont->mnOrientation; - aLogFont.lfOrientation = 0; - aLogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; - aLogFont.lfQuality = DEFAULT_QUALITY; - if ( pFont->mnOrientation ) - { - aLogFont.lfOutPrecision = OUT_TT_PRECIS; - aLogFont.lfClipPrecision |= CLIP_LH_ANGLES; - } - else - aLogFont.lfOutPrecision = OUT_DEFAULT_PRECIS; + LOGFONTW aLogFont; + ImplGetLogFontFromFontSelect( pFont, aLogFont ); // Auf dem Bildschirm nehmen wir Courier New, wenn Courier nicht // skalierbar ist und wenn der Font skaliert oder rotiert werden |