# %%%% date: 2003/05/06 09:04:03; state: Exp; lines: +5 -1 # separate-control-over-AA-for-doc-and-ui # Added infrastructure for controlling allowance of AA for UI and for # document serparately. Currently only using $SAL_ANTIALIAS_UI_DISABLE and # $SAL_ANTIALIAS_DOCUMENT_DISABLE (no gui for this yet) # # It seems there is a considerable fraction of people who would like to have # UI non-antialiased, and document fonts to be antialiased.. Index: oo/vcl/inc/font.hxx diff -u oo/vcl/inc/font.hxx:1.1 oo/vcl/inc/font.hxx:1.2 --- oo/vcl/inc/font.hxx:1.1 Mon Apr 28 21:44:39 2003 +++ oo/vcl/inc/font.hxx Tue May 6 14:04:03 2003 @@ -125,7 +125,8 @@ mbOutline:1, mbShadow:1, mbVertical:1, - mbTransparent:1; // compatibility, now on output device + mbTransparent:1, // compatibility, now on output device + mbForUI:1; friend SvStream& operator>>( SvStream& rIStm, Impl_Font& rImplFont ); friend SvStream& operator<<( SvStream& rOStm, const Impl_Font& rImplFont ); @@ -214,6 +215,9 @@ FontEmphasisMark GetEmphasisMark() const { return mpImplFont->meEmphasisMark; } void SetWordLineMode( BOOL bWordLine ); BOOL IsWordLineMode() const { return mpImplFont->mbWordLine; } + + void SetIsForUI( BOOL forUI); + BOOL GetIsForUI() const; void Merge( const Font& rFont ); Index: oo/vcl/source/app/settings.cxx diff -u oo/vcl/source/app/settings.cxx:1.1 oo/vcl/source/app/settings.cxx:1.2 --- oo/vcl/source/app/settings.cxx:1.1 Mon Apr 28 21:44:37 2003 +++ oo/vcl/source/app/settings.cxx Tue May 6 14:04:05 2003 @@ -596,6 +596,7 @@ aStdFont.SetCharSet( gsl_getSystemTextEncoding() ); aStdFont.SetWeight( WEIGHT_NORMAL ); aStdFont.SetName( vcl::DefaultFontConfigItem::get()->getUserInterfaceFont(LANGUAGE_ENGLISH) ); + aStdFont.SetIsForUI(TRUE); maAppFont = aStdFont; maHelpFont = aStdFont; maMenuFont = aStdFont; Index: oo/vcl/source/gdi/font.cxx diff -u oo/vcl/source/gdi/font.cxx:1.1 oo/vcl/source/gdi/font.cxx:1.2 --- oo/vcl/source/gdi/font.cxx:1.1 Mon Apr 28 21:44:39 2003 +++ oo/vcl/source/gdi/font.cxx Tue May 6 14:04:05 2003 @@ -105,6 +105,7 @@ mbShadow = FALSE; mbVertical = FALSE; mbTransparent = TRUE; + mbForUI = FALSE; } // ----------------------------------------------------------------------- @@ -137,6 +138,7 @@ mbShadow = rImplFont.mbShadow; mbVertical = rImplFont.mbVertical; mbTransparent = rImplFont.mbTransparent; + mbForUI = rImplFont.mbForUI; } // ----------------------------------------------------------------------- @@ -488,6 +490,22 @@ // ----------------------------------------------------------------------- +void Font::SetIsForUI( BOOL forUI) +{ + DBG_CHKTHIS( Font, NULL ); + MakeUnique(); + mpImplFont->mbForUI = forUI; +} + +// ----------------------------------------------------------------------- + +BOOL Font::GetIsForUI() const +{ + return mpImplFont->mbForUI; +} + +// ----------------------------------------------------------------------- + Font& Font::operator=( const Font& rFont ) { DBG_CHKTHIS( Font, NULL ); @@ -547,6 +565,7 @@ (mpImplFont->mbOutline == rFont.mpImplFont->mbOutline ) && (mpImplFont->mbShadow == rFont.mpImplFont->mbShadow ) && (mpImplFont->mnKerning == rFont.mpImplFont->mnKerning ) && + (mpImplFont->mbForUI == rFont.mpImplFont->mbForUI ) && (mpImplFont->mbTransparent == rFont.mpImplFont->mbTransparent ) ) return TRUE; else Index: oo/vcl/source/gdi/outdev3.cxx diff -u oo/vcl/source/gdi/outdev3.cxx:1.1 oo/vcl/source/gdi/outdev3.cxx:1.2 --- oo/vcl/source/gdi/outdev3.cxx:1.1 Mon Apr 28 21:44:38 2003 +++ oo/vcl/source/gdi/outdev3.cxx Tue May 6 14:04:05 2003 @@ -4954,6 +4954,20 @@ } } +static BOOL get_aa_mode_for_font(const Font& rNewFont) +{ + /* HOOK: this function decides whether to do AA for UI, and whether to + do AA for document. */ + static BOOL alowance_initialized = 0; + static BOOL ui_disabled,doc_disabled; + if (!alowance_initialized) + { + alowance_initialized = 1; + ui_disabled = getenv("SAL_ANTIALIAS_UI_DISABLE"); + doc_disabled = getenv("SAL_ANTIALIAS_DOCUMENT_DISABLE"); + }; + return !(rNewFont.GetIsForUI() ? ui_disabled : doc_disabled); +}; // ----------------------------------------------------------------------- void OutputDevice::SetFont( const Font& rNewFont ) @@ -4962,6 +4976,10 @@ DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice ); DBG_CHKOBJ( &rNewFont, Font, NULL ); + get_aa_mode_for_font(rNewFont) ? + SetAntialiasing(GetAntialiasing() & ~ANTIALIASING_DISABLE_TEXT) : + SetAntialiasing(GetAntialiasing() | ANTIALIASING_DISABLE_TEXT); + Font aFont( rNewFont ); if ( mnDrawMode & (DRAWMODE_BLACKTEXT | DRAWMODE_WHITETEXT | DRAWMODE_GRAYTEXT | DRAWMODE_GHOSTEDTEXT | DRAWMODE_SETTINGSTEXT | DRAWMODE_BLACKFILL | DRAWMODE_WHITEFILL | DRAWMODE_GRAYFILL | DRAWMODE_NOFILL |