summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2003-03-27 16:59:30 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2003-03-27 16:59:30 +0000
commit2f382d6c2579a25c68dbd121af7f1f5dc7ec9852 (patch)
tree8c6c555a872e6812cd3f76de570b06683526ad14
parentf7a0cc83bb59efd6abd820bd78acc75e8313ea4e (diff)
MWS_SRX644: migrate branch mws_srx644 -> HEAD
-rw-r--r--vcl/aqua/inc/salatsuifontutils.hxx8
-rw-r--r--vcl/prj/build.lst2
-rw-r--r--vcl/prj/d.lst4
-rw-r--r--vcl/source/app/settings.cxx220
-rw-r--r--vcl/source/app/sound.cxx28
-rw-r--r--vcl/source/app/svapp.cxx26
-rw-r--r--vcl/source/app/svdata.cxx303
-rw-r--r--vcl/source/control/combobox.cxx51
-rw-r--r--vcl/source/control/edit.cxx30
-rw-r--r--vcl/source/control/ilstbox.cxx22
-rw-r--r--vcl/source/control/lstbox.cxx8
-rw-r--r--vcl/source/gdi/base14.cxx20
-rw-r--r--vcl/source/gdi/bitmap.cxx9
-rw-r--r--vcl/source/gdi/bmpconv.cxx253
-rw-r--r--vcl/source/gdi/cvtsvm.cxx57
-rw-r--r--vcl/source/gdi/font.cxx5
-rw-r--r--vcl/source/gdi/fontcfg.cxx17
-rw-r--r--vcl/source/gdi/graph.cxx21
-rw-r--r--vcl/source/gdi/image.cxx8
-rw-r--r--vcl/source/gdi/implncvt.cxx12
-rw-r--r--vcl/source/gdi/impprn.cxx32
-rw-r--r--vcl/source/gdi/impvect.cxx7
-rw-r--r--vcl/source/gdi/makefile.mk15
-rw-r--r--vcl/source/gdi/metaact.cxx9
-rw-r--r--vcl/source/gdi/opengl.cxx25
-rw-r--r--vcl/source/gdi/outdev.cxx85
-rw-r--r--vcl/source/gdi/outdev2.cxx54
-rw-r--r--vcl/source/gdi/outdev3.cxx1075
-rw-r--r--vcl/source/gdi/outdev4.cxx87
-rw-r--r--vcl/source/gdi/outdev5.cxx31
-rw-r--r--vcl/source/gdi/outdev6.cxx14
-rw-r--r--vcl/source/gdi/outmap.cxx551
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx275
-rw-r--r--vcl/source/gdi/pdfwriter_impl.hxx9
-rw-r--r--vcl/source/gdi/print.cxx89
-rw-r--r--vcl/source/gdi/print2.cxx1177
-rw-r--r--vcl/source/gdi/salgdilayout.cxx32
-rwxr-xr-xvcl/source/gdi/sallayout.cxx801
-rw-r--r--vcl/source/glyphs/gcach_ftyp.cxx26
-rwxr-xr-xvcl/source/glyphs/gcach_layout.cxx99
-rw-r--r--vcl/source/glyphs/glyphcache.cxx83
-rw-r--r--vcl/source/helper/makefile.mk10
-rw-r--r--vcl/source/src/btntext.src27
-rw-r--r--vcl/source/src/helptext.src141
-rw-r--r--vcl/source/src/menu.src58
-rw-r--r--vcl/source/src/stdtext.src220
-rw-r--r--vcl/source/src/units.src65
-rw-r--r--vcl/source/window/brdwin.cxx8
-rw-r--r--vcl/source/window/cursor.cxx61
-rw-r--r--vcl/source/window/decoview.cxx42
-rw-r--r--vcl/source/window/dialog.cxx16
-rw-r--r--vcl/source/window/dndevdis.cxx40
-rw-r--r--vcl/source/window/dockwin.cxx11
-rw-r--r--vcl/source/window/floatwin.cxx29
-rw-r--r--vcl/source/window/introwin.cxx132
-rw-r--r--vcl/source/window/makefile.mk6
-rw-r--r--vcl/source/window/menu.cxx64
-rw-r--r--vcl/source/window/splitwin.cxx81
-rw-r--r--vcl/source/window/status.cxx55
-rw-r--r--vcl/source/window/toolbox.cxx60
-rw-r--r--vcl/source/window/window.cxx309
-rw-r--r--vcl/source/window/window2.cxx15
-rw-r--r--vcl/source/window/winproc.cxx18
-rw-r--r--vcl/source/window/wrkwin.cxx29
-rw-r--r--vcl/test/makefile.mk6
-rw-r--r--vcl/unx/inc/dtint.hxx8
-rw-r--r--vcl/unx/inc/saldata.hxx6
-rw-r--r--vcl/unx/inc/saldisp.hxx17
-rw-r--r--vcl/unx/inc/salframe.h20
-rw-r--r--vcl/unx/inc/salgdi.h6
-rw-r--r--vcl/unx/inc/strhelper.hxx77
-rw-r--r--vcl/unx/inc/wmadaptor.hxx34
-rw-r--r--vcl/unx/inc/xfont.hxx6
-rw-r--r--vcl/unx/source/app/i18n_im.cxx7
-rw-r--r--vcl/unx/source/app/i18n_keysym.cxx48
-rw-r--r--vcl/unx/source/app/saldata.cxx233
-rw-r--r--vcl/unx/source/app/saldisp.cxx335
-rw-r--r--vcl/unx/source/app/salinst.cxx4
-rw-r--r--vcl/unx/source/app/salsys.cxx9
-rw-r--r--vcl/unx/source/app/saltimer.cxx4
-rw-r--r--vcl/unx/source/app/soicon.cxx93
-rw-r--r--vcl/unx/source/app/wmadaptor.cxx342
-rw-r--r--vcl/unx/source/gdi/dtint.cxx30
-rw-r--r--vcl/unx/source/gdi/dtsetenum.hxx9
-rw-r--r--vcl/unx/source/gdi/gcach_xpeer.cxx16
-rw-r--r--vcl/unx/source/gdi/salgdi.cxx65
-rw-r--r--vcl/unx/source/gdi/salgdi3.cxx84
-rw-r--r--vcl/unx/source/gdi/salprnpsp.cxx46
-rw-r--r--vcl/unx/source/gdi/salvd.cxx7
-rw-r--r--vcl/unx/source/gdi/xfont.cxx18
-rw-r--r--vcl/unx/source/window/salframe.cxx526
-rw-r--r--vcl/util/defs/wntmsci83499
-rw-r--r--vcl/util/makefile.mk13
-rw-r--r--vcl/win/inc/saldata.hxx32
-rw-r--r--vcl/win/source/app/salinst.cxx15
-rw-r--r--vcl/win/source/gdi/salgdi.cxx38
-rw-r--r--vcl/win/source/gdi/salgdi3.cxx222
-rw-r--r--vcl/win/source/gdi/salprn.cxx69
-rw-r--r--vcl/win/source/gdi/salvd.cxx7
-rwxr-xr-xvcl/win/source/gdi/winlayout.cxx1252
-rw-r--r--vcl/win/source/window/salframe.cxx101
-rw-r--r--vcl/workben/svdem.cxx10
102 files changed, 7107 insertions, 7384 deletions
diff --git a/vcl/aqua/inc/salatsuifontutils.hxx b/vcl/aqua/inc/salatsuifontutils.hxx
index 7fe59c05dbcc..c005ceab2e62 100644
--- a/vcl/aqua/inc/salatsuifontutils.hxx
+++ b/vcl/aqua/inc/salatsuifontutils.hxx
@@ -2,8 +2,8 @@
*
* $RCSfile: salatsuifontutils.hxx,v $
*
- * $Revision: 1.3 $
- * last change: $Author: bmahbod $ $Date: 2001-03-26 21:53:15 $
+ * $Revision: 1.4 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -100,8 +100,8 @@ extern "C" {
static const short kMacOSCharSize = sizeof(char);
static const short kFontFamilyNameLength = 32; static const short kFontStyleNameLength = 32;
- static const long kFontFamilyNameMemSize = kFontFamilyNameLength * kMacOSCharSize;
-static const long kFontStyleNameMemSize = kFontStyleNameLength * kMacOSCharSize;
+ static const long kFontFamilyNameMemSize = kFontFamilyNameLength * kMacOSCharSize;
+static const long kFontStyleNameMemSize = kFontStyleNameLength * kMacOSCharSize;
// -----------------------------------------------------------------------
diff --git a/vcl/prj/build.lst b/vcl/prj/build.lst
index 2dec0c12fe32..bfb77654882a 100644
--- a/vcl/prj/build.lst
+++ b/vcl/prj/build.lst
@@ -1,4 +1,4 @@
-vc vcl : nas freetype psprint rsc sot ucbhelper unotools sysui rvpapi icu unoil ridljar NULL
+vc vcl : nas freetype psprint rsc sot ucbhelper unotools rvpapi icu unoil ridljar NULL
vc vcl usr1 - all vc_mkout NULL
vc vcl\source\unotypes nmake - all vc_unot NULL
vc vcl\source\glyphs nmake - all vc_glyphs vc_unot NULL
diff --git a/vcl/prj/d.lst b/vcl/prj/d.lst
index f22d8113326c..72c8592c7177 100644
--- a/vcl/prj/d.lst
+++ b/vcl/prj/d.lst
@@ -6,8 +6,6 @@ mkdir: %_DEST%\inc%_EXT%\uno
mkdir: %_DEST%\inc%_EXT%\uno\awt
mkdir: %_DEST%\inc%_EXT%\vcl
mkdir: %_DEST%\inc%_EXT%\vcl\unx
-mkdir: %_DEST%\ucr%_EXT%
-mkdir: %_DEST%\ucr%_EXT%\vcl
..\%__SRC%\bin\remote\vcl?????.dll %_DEST%\bin%_EXT%\remote\vcl?????.dll
..\%__SRC%\bin\vcl?????.res %_DEST%\bin%_EXT%\vcl?????.res
@@ -34,7 +32,6 @@ mkdir: %_DEST%\ucr%_EXT%\vcl
..\%__SRC%\slb\sv.lib %_DEST%\lib%_EXT%\xsv.lib
..\%__SRC%\slo\salmain.o %_DEST%\lib%_EXT%\salmain.o
..\%__SRC%\slo\svdll.obj %_DEST%\lib%_EXT%\xsvdll.obj
-..\%__SRC%\ucr\*.ucr %_DEST%\ucr%_EXT%\vcl\*.ucr
hedabu: ..\%__SRC%\inc\*.h %_DEST%\inc%_EXT%\vcl\*.h
hedabu: ..\%__SRC%\inc\*.hxx %_DEST%\inc%_EXT%\vcl\*.hxx
@@ -187,6 +184,7 @@ hedabu: ..\inc\i18nhelp.hxx %_DEST%\inc%_EXT%\vcl\i18nhelp.hxx
hedabu: ..\inc\dndhelp.hxx %_DEST%\inc%_EXT%\vcl\dndhelp.hxx
hedabu: ..\inc\pdfwriter.hxx %_DEST%\inc%_EXT%\vcl\pdfwriter.hxx
hedabu: ..\inc\controllayout.hxx %_DEST%\inc%_EXT%\vcl\controllayout.hxx
+hedabu: ..\inc\introwin.hxx %_DEST%\inc%_EXT%\vcl\introwin.hxx
..\%__SRC%\lib\lib*static*.dylib %_DEST%\lib%_EXT%\lib*static*.dylib
..\%__SRC%\misc\*staticdatamembers.cxx %_DEST%\inc%_EXT%\*staticdatamembers.cxx
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 1001f7a27a3e..e2cb26afce04 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: settings.cxx,v $
*
- * $Revision: 1.35 $
+ * $Revision: 1.36 $
*
- * last change: $Author: cd $ $Date: 2002-12-13 07:32:25 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:50 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -93,6 +93,9 @@
#ifndef _UNOTOOLS_COLLATORWRAPPER_HXX
#include <unotools/collatorwrapper.hxx>
#endif
+#ifndef _UNOTOOLS_CONFIGNODE_HXX_
+#include <unotools/confignode.hxx>
+#endif
#ifdef UNX
#include <prex.h>
@@ -101,6 +104,14 @@
#include <stdio.h>
#endif
+#ifdef WNT
+#include <tools/prewin.h>
+#include <windows.h>
+#include <tools/postwin.h>
+#endif
+
+using namespace rtl;
+
#pragma hdrstop
// =======================================================================
@@ -480,6 +491,7 @@ ImplStyleData::ImplStyleData()
mnDisplayOptions = 0;
mnOptions = 0;
mnAutoMnemonic = 1;
+ mnToolbarIconSize = STYLE_TOOLBAR_ICONSIZE_UNKNOWN;
SetStandardStyles();
}
@@ -515,6 +527,7 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
maDeactiveBorderColor( rData.maDeactiveBorderColor ),
maMenuColor( rData.maMenuColor ),
maMenuBarColor( rData.maMenuBarColor ),
+ maMenuBorderColor( rData.maMenuBorderColor ),
maMenuTextColor( rData.maMenuTextColor ),
maMenuHighlightColor( rData.maMenuHighlightColor ),
maMenuHighlightTextColor( rData.maMenuHighlightTextColor ),
@@ -538,7 +551,8 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
maRadioCheckFont( rData.maRadioCheckFont ),
maPushButtonFont( rData.maPushButtonFont ),
maFieldFont( rData.maFieldFont ),
- maIconFont( rData.maIconFont )
+ maIconFont( rData.maIconFont ),
+ maFontColor( rData.maFontColor )
{
mnRefCount = 1;
mnBorderSize = rData.mnBorderSize;
@@ -568,8 +582,10 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
mnOptions = rData.mnOptions;
mnHighContrast = rData.mnHighContrast;
mnUseSystemUIFonts = rData.mnUseSystemUIFonts;
+ mnUseFlatMenues = rData.mnUseFlatMenues;
mnAutoMnemonic = rData.mnAutoMnemonic;
mnUseImagesInMenus = rData.mnUseImagesInMenus;
+ mnToolbarIconSize = rData.mnToolbarIconSize;
}
// -----------------------------------------------------------------------
@@ -624,6 +640,7 @@ void ImplStyleData::SetStandardStyles()
maDeactiveBorderColor = Color( COL_LIGHTGRAY );
maMenuColor = Color( COL_LIGHTGRAY );
maMenuBarColor = Color( COL_LIGHTGRAY );
+ maMenuBorderColor = Color( COL_LIGHTGRAY );
maMenuTextColor = Color( COL_BLACK );
maMenuHighlightColor = Color( COL_BLUE );
maMenuHighlightTextColor = Color( COL_WHITE );
@@ -635,6 +652,7 @@ void ImplStyleData::SetStandardStyles()
maLinkColor = Color( COL_BLUE );
maVisitedLinkColor = Color( COL_RED );
maHighlightLinkColor = Color( COL_LIGHTBLUE );
+ maFontColor = Color( COL_BLACK );
mnRadioButtonStyle &= ~STYLE_RADIOBUTTON_STYLE;
mnCheckBoxStyle &= ~STYLE_CHECKBOX_STYLE;
@@ -649,6 +667,7 @@ void ImplStyleData::SetStandardStyles()
mnMenuBarHeight = 14;
mnHighContrast = 0;
mnUseSystemUIFonts = 0;
+ mnUseFlatMenues = 0;
mnUseImagesInMenus = (USHORT)TRUE;
}
@@ -722,6 +741,7 @@ void ImplStyleData::SetStandardOS2Styles()
maDeactiveBorderColor = Color( COL_LIGHTGRAY );
maMenuColor = Color( COL_LIGHTGRAY );
maMenuBarColor = Color( COL_LIGHTGRAY );
+ maMenuBorderColor = Color( COL_LIGHTGRAY );
maMenuTextColor = Color( COL_BLACK );
maMenuHighlightColor = Color( COL_BLUE );
maMenuHighlightTextColor = Color( COL_WHITE );
@@ -749,6 +769,7 @@ void ImplStyleData::SetStandardOS2Styles()
mnMenuBarHeight = 14;
mnHighContrast = 0;
mnUseSystemUIFonts = 0;
+ mnUseFlatMenues = 0;
mnUseImagesInMenus = (USHORT)TRUE;
}
@@ -807,6 +828,7 @@ void ImplStyleData::SetStandardMacStyles()
maDeactiveBorderColor = Color( COL_LIGHTGRAY );
maMenuColor = Color( COL_LIGHTGRAY );
maMenuBarColor = Color( COL_LIGHTGRAY );
+ maMenuBorderColor = Color( COL_LIGHTGRAY );
maMenuTextColor = Color( COL_BLACK );
maMenuHighlightColor = Color( COL_BLUE );
maMenuHighlightTextColor = Color( COL_WHITE );
@@ -833,6 +855,7 @@ void ImplStyleData::SetStandardMacStyles()
mnMenuBarHeight = 14;
mnHighContrast = 0;
mnUseSystemUIFonts = 0;
+ mnUseFlatMenues = 0;
mnUseImagesInMenus = (USHORT)TRUE;
}
@@ -901,6 +924,7 @@ void StyleSettings::Set3DColors( const Color& rColor )
CopyData();
mpData->maFaceColor = rColor;
mpData->maLightBorderColor = rColor;
+ mpData->maMenuBorderColor = rColor;
mpData->maDarkShadowColor = Color( COL_BLACK );
if ( rColor != Color( COL_LIGHTGRAY ) )
{
@@ -1032,6 +1056,7 @@ BOOL StyleSettings::operator ==( const StyleSettings& rSet ) const
(mpData->mnTabControlStyle == rSet.mpData->mnTabControlStyle) &&
(mpData->mnHighContrast == rSet.mpData->mnHighContrast) &&
(mpData->mnUseSystemUIFonts == rSet.mpData->mnUseSystemUIFonts) &&
+ (mpData->mnUseFlatMenues == rSet.mpData->mnUseFlatMenues) &&
(mpData->maFaceColor == rSet.mpData->maFaceColor) &&
(mpData->maCheckedColor == rSet.mpData->maCheckedColor) &&
(mpData->maLightColor == rSet.mpData->maLightColor) &&
@@ -1060,6 +1085,7 @@ BOOL StyleSettings::operator ==( const StyleSettings& rSet ) const
(mpData->maDeactiveBorderColor == rSet.mpData->maDeactiveBorderColor) &&
(mpData->maMenuColor == rSet.mpData->maMenuColor) &&
(mpData->maMenuBarColor == rSet.mpData->maMenuBarColor) &&
+ (mpData->maMenuBorderColor == rSet.mpData->maMenuBorderColor) &&
(mpData->maMenuTextColor == rSet.mpData->maMenuTextColor) &&
(mpData->maMenuHighlightColor == rSet.mpData->maMenuHighlightColor) &&
(mpData->maMenuHighlightTextColor == rSet.mpData->maMenuHighlightTextColor) &&
@@ -1084,7 +1110,8 @@ BOOL StyleSettings::operator ==( const StyleSettings& rSet ) const
(mpData->maPushButtonFont == rSet.mpData->maPushButtonFont) &&
(mpData->maFieldFont == rSet.mpData->maFieldFont) &&
(mpData->maIconFont == rSet.mpData->maIconFont) &&
- (mpData->mnUseImagesInMenus == rSet.mpData->mnUseImagesInMenus) )
+ (mpData->mnUseImagesInMenus == rSet.mpData->mnUseImagesInMenus) &&
+ (mpData->maFontColor == rSet.mpData->maFontColor ))
return TRUE;
else
return FALSE;
@@ -1187,19 +1214,16 @@ BOOL MiscSettings::operator ==( const MiscSettings& rSet ) const
BOOL MiscSettings::GetEnableATToolSupport() const
{
+#ifndef REMOTE_APPSERVER
if( mpData->mnEnableATT == (USHORT)~0 )
{
#ifdef UNX
mpData->mnEnableATT = 0;
-#ifndef REMOTE_APPSERVER
DtIntegrator* pIntegrator = DtIntegrator::CreateDtIntegrator( NULL );
static const char* pEnv = getenv("SAL_ACCESSIBILITY_ENABLED" );
if( ( pIntegrator && pIntegrator->GetDtType() == DtGNOME ) ||
( pEnv && *pEnv ) )
-#else
- if( 0 )
-#endif
{
char buf[16];
// use 2 shells to suppress the eventual "gcontool-2 not found" message
@@ -1219,17 +1243,66 @@ BOOL MiscSettings::GetEnableATToolSupport() const
static const char* pEnv = getenv("SAL_ACCESSIBILITY_ENABLED" );
if( !pEnv || !*pEnv )
{
+#ifdef WNT
+ // Check in the Windows registry if an AT tool wants Accessibility support to
+ // be activated ..
+ HKEY hkey;
+
+ if( ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,
+ "Software\\OpenOffice.org\\Accessibility\\AtToolSupport",
+ &hkey) )
+ {
+ DWORD dwType;
+ WIN_BYTE Data[6]; // possible values: "true", "false", "1", "0", DWORD
+ DWORD cbData = sizeof(Data);
+
+ if( ERROR_SUCCESS == RegQueryValueEx(hkey, "SupportAssistiveTechnology",
+ NULL, &dwType, Data, &cbData) )
+ {
+ switch (dwType)
+ {
+ case REG_SZ:
+ mpData->mnEnableATT = ((0 == stricmp((const char *) Data, "1")) || (0 == stricmp((const char *) Data, "true")));
+ break;
+ case REG_DWORD:
+ mpData->mnEnableATT = (USHORT) (((DWORD *) Data)[0]);
+ break;
+ default:
+ // Unsupported registry type
+ mpData->mnEnableATT = 0;
+ break;
+ }
+ }
+
+ RegCloseKey(hkey);
+ }
+
+ // Registry does not exist ..
+ if( mpData->mnEnableATT == (USHORT)~0 )
+ {
+ rtl::OUString aEnable =
+ vcl::SettingsConfigItem::get()->
+ getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Accessibility" ) ),
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EnableATToolSupport" ) ) );
+ mpData->mnEnableATT = aEnable.equalsIgnoreAsciiCaseAscii( "true" ) ? 1 : 0;
+ }
+#else
rtl::OUString aEnable =
vcl::SettingsConfigItem::get()->
getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Accessibility" ) ),
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EnableATToolSupport" ) ) );
mpData->mnEnableATT = aEnable.equalsIgnoreAsciiCaseAscii( "true" ) ? 1 : 0;
+#endif
}
else
mpData->mnEnableATT = 1;
#endif
}
return (BOOL)mpData->mnEnableATT;
+
+#else // REMOTE_APPSERVER
+ return FALSE;
+#endif
}
// -----------------------------------------------------------------------
@@ -1238,9 +1311,47 @@ void MiscSettings::SetEnableATToolSupport( BOOL bEnable )
{
if ( bEnable != mpData->mnEnableATT )
{
- if( bEnable && !ImplInitAccessBridge() )
- bEnable = FALSE;
+ if( bEnable && !ImplInitAccessBridge(false) )
+ return;
+
+#ifdef WNT
+ HKEY hkey;
+ // If the accessibility key in the Windows registry exists, change it synchronously
+ if( ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,
+ "Software\\OpenOffice.org\\Accessibility\\AtToolSupport",
+ &hkey) )
+ {
+ DWORD dwType;
+ WIN_BYTE Data[6]; // possible values: "true", "false", 1, 0
+ DWORD cbData = sizeof(Data);
+
+ if( ERROR_SUCCESS == RegQueryValueEx(hkey, "SupportAssistiveTechnology",
+ NULL, &dwType, Data, &cbData) )
+ {
+ switch (dwType)
+ {
+ case REG_SZ:
+ RegSetValueEx(hkey, "SupportAssistiveTechnology",
+ NULL, dwType,
+ bEnable ? (WIN_BYTE *) "true" : (WIN_BYTE *) "false",
+ bEnable ? sizeof("true") : sizeof("false"));
+ break;
+ case REG_DWORD:
+ ((DWORD *) Data)[0] = bEnable ? 1 : 0;
+ RegSetValueEx(hkey, "SupportAssistiveTechnology",
+ NULL, dwType, Data, sizeof(DWORD));
+ break;
+ default:
+ // Unsupported registry type
+ break;
+ }
+ }
+
+ RegCloseKey(hkey);
+ }
+
+#endif
vcl::SettingsConfigItem::get()->
setValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Accessibility" ) ),
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EnableATToolSupport" ) ),
@@ -1998,42 +2109,71 @@ void AllSettings::SetUILanguage( LanguageType eLang )
BOOL AllSettings::GetLayoutRTL() const
{
static const char* pEnv = getenv("SAL_RTL_ENABLED" );
+ static int nUIMirroring = -1; // -1: undef, 0: auto, 1: on 2: off
+
+ // environment always overrides
+ if( pEnv )
+ return true;
- LanguageType aLang = LANGUAGE_DONTKNOW;
BOOL bRTL = FALSE;
- ImplSVData* pSVData = ImplGetSVData();
- if ( pSVData->maAppData.mpSettings )
- aLang = pSVData->maAppData.mpSettings->GetUILanguage();
+ if( nUIMirroring == -1 )
+ {
+ nUIMirroring = 0; // ask configuration only once
+ utl::OConfigurationNode aNode = utl::OConfigurationTreeRoot::tryCreateWithServiceFactory(
+ vcl::unohelper::GetMultiServiceFactory(),
+ OUString::createFromAscii( "org.openoffice.Office.Common/I18N/CTL" ) ); // note: case sensisitive !
+ if ( aNode.isValid() )
+ {
+ BOOL bTmp;
+ ::com::sun::star::uno::Any aValue = aNode.getNodeValue( OUString::createFromAscii( "UIMirroring" ) );
+ if( aValue >>= bTmp )
+ {
+ // found true or false; if it was nil, nothing is changed
+ nUIMirroring = bTmp ? 1 : 2;
+ }
+ }
+ }
- switch( aLang )
+ if( nUIMirroring == 0 ) // no config found (eg, setup) or default (nil) was set: check language
{
- // languages with right-to-left UI
- case LANGUAGE_ARABIC:
- case LANGUAGE_ARABIC_SAUDI_ARABIA:
- case LANGUAGE_ARABIC_IRAQ:
- case LANGUAGE_ARABIC_EGYPT:
- case LANGUAGE_ARABIC_LIBYA:
- case LANGUAGE_ARABIC_ALGERIA:
- case LANGUAGE_ARABIC_MOROCCO:
- case LANGUAGE_ARABIC_TUNISIA:
- case LANGUAGE_ARABIC_OMAN:
- case LANGUAGE_ARABIC_YEMEN:
- case LANGUAGE_ARABIC_SYRIA:
- case LANGUAGE_ARABIC_JORDAN:
- case LANGUAGE_ARABIC_LEBANON:
- case LANGUAGE_ARABIC_KUWAIT:
- case LANGUAGE_ARABIC_UAE:
- case LANGUAGE_ARABIC_BAHRAIN:
- case LANGUAGE_ARABIC_QATAR:
- case LANGUAGE_HEBREW:
- bRTL = TRUE;
- break;
-
- default:
- break;
+ LanguageType aLang = LANGUAGE_DONTKNOW;
+ ImplSVData* pSVData = ImplGetSVData();
+ if ( pSVData->maAppData.mpSettings )
+ aLang = pSVData->maAppData.mpSettings->GetUILanguage();
+
+ switch( aLang )
+ {
+ // languages with right-to-left UI
+ case LANGUAGE_ARABIC:
+ case LANGUAGE_ARABIC_SAUDI_ARABIA:
+ case LANGUAGE_ARABIC_IRAQ:
+ case LANGUAGE_ARABIC_EGYPT:
+ case LANGUAGE_ARABIC_LIBYA:
+ case LANGUAGE_ARABIC_ALGERIA:
+ case LANGUAGE_ARABIC_MOROCCO:
+ case LANGUAGE_ARABIC_TUNISIA:
+ case LANGUAGE_ARABIC_OMAN:
+ case LANGUAGE_ARABIC_YEMEN:
+ case LANGUAGE_ARABIC_SYRIA:
+ case LANGUAGE_ARABIC_JORDAN:
+ case LANGUAGE_ARABIC_LEBANON:
+ case LANGUAGE_ARABIC_KUWAIT:
+ case LANGUAGE_ARABIC_UAE:
+ case LANGUAGE_ARABIC_BAHRAIN:
+ case LANGUAGE_ARABIC_QATAR:
+ case LANGUAGE_HEBREW:
+ bRTL = TRUE;
+ break;
+
+ default:
+ break;
+ }
}
- return (bRTL || pEnv);
+ else
+ bRTL = (nUIMirroring == 1);
+
+ return bRTL;
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/app/sound.cxx b/vcl/source/app/sound.cxx
index 518c1e297262..6a227ed0a4b9 100644
--- a/vcl/source/app/sound.cxx
+++ b/vcl/source/app/sound.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: sound.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: ka $ $Date: 2001-07-30 11:47:12 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:50 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -189,7 +189,7 @@ void Sound::Notify()
BOOL Sound::SetSoundName( const XubString& rSoundName )
{
- BOOL bRet;
+ BOOL bRet( FALSE );
if( !rSoundName.Len() )
{
@@ -225,27 +225,37 @@ BOOL Sound::SetSoundName( const XubString& rSoundName )
{
INetURLObject aSoundURL( rSoundName );
String aSoundName, aTmp;
+ BOOL bValidName( FALSE );
- if( aSoundURL.GetProtocol() != INET_PROT_NOT_VALID )
+ // #106654# Accept only local sound files
+ if( aSoundURL.GetProtocol() == INET_PROT_FILE )
{
#ifdef REMOTE_APPSERVER
aSoundName = aSoundURL.GetMainURL( INetURLObject::NO_DECODE );
#else
::utl::LocalFileHelper::ConvertURLToPhysicalName( aSoundURL.GetMainURL( INetURLObject::NO_DECODE ), aSoundName );
#endif
+ bValidName = TRUE;
}
- else if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( rSoundName, aTmp ) )
+ else if( aSoundURL.GetProtocol() == INET_PROT_NOT_VALID &&
+ ::utl::LocalFileHelper::ConvertPhysicalNameToURL( rSoundName, aTmp ) )
+ {
aSoundName = rSoundName;
+ bValidName = TRUE;
+ }
else
{
- DBG_ERROR( "invalid sound file name" );
+ // no valid sound file name
aSoundName = String();
+
+ // #106654# Don't set bRet to true for invalid sound file
+ // names, but init with empty string, anyway
+ mpSound->Init( NULL, aSoundName, mnSoundLen );
}
- bRet = mpSound->Init( NULL, aSoundName, mnSoundLen );
+ if( bValidName )
+ bRet = mpSound->Init( NULL, aSoundName, mnSoundLen );
}
- else
- bRet = FALSE;
maSoundName = rSoundName;
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 161e8e60cba9..65bf030067dd 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: svapp.cxx,v $
*
- * $Revision: 1.41 $
+ * $Revision: 1.42 $
*
- * last change: $Author: ssa $ $Date: 2002-12-09 09:23:17 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:51 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -200,7 +200,22 @@ ImplReservedKey ImplReservedKeys[] = {
ImplReservedKey(KeyCode(KEY_F6,0), SV_SHORTCUT_NEXTSUBWINDOW),
ImplReservedKey(KeyCode(KEY_F6,KEY_MOD1), SV_SHORTCUT_TODOCUMENT),
ImplReservedKey(KeyCode(KEY_F6,KEY_SHIFT), SV_SHORTCUT_PREVSUBWINDOW),
+ ImplReservedKey(KeyCode(KEY_F6,KEY_MOD1|KEY_SHIFT), 0), // activate splitter (string is missing!)
ImplReservedKey(KeyCode(KEY_F10,0), SV_SHORTCUT_MENUBAR)
+#ifdef UNX
+ ,
+ ImplReservedKey(KeyCode(KEY_1,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_2,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_3,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_4,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_5,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_6,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_7,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_8,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_9,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_0,KEY_SHIFT|KEY_MOD1), 0),
+ ImplReservedKey(KeyCode(KEY_ADD,KEY_SHIFT|KEY_MOD1), 0)
+#endif
};
@@ -531,7 +546,7 @@ const KeyCode* Application::GetReservedKeyCode( ULONG i )
String Application::GetReservedKeyCodeDescription( ULONG i )
{
- if( i >= GetReservedKeyCodeCount() )
+ if( i >= GetReservedKeyCodeCount() || ! ImplReservedKeys[i].mnResId )
return String();
else
return String( ResId( ImplReservedKeys[i].mnResId, ImplGetResMgr() ) );
@@ -1015,6 +1030,11 @@ void Application::SetSettings( const AllSettings& rSettings )
else
{
AllSettings aOldSettings = *pSVData->maAppData.mpSettings;
+ if( aOldSettings.GetUILanguage() != rSettings.GetUILanguage() && pSVData->mpResMgr )
+ {
+ delete pSVData->mpResMgr;
+ pSVData->mpResMgr = NULL;
+ }
*pSVData->maAppData.mpSettings = rSettings;
ULONG nChangeFlags = aOldSettings.GetChangeFlags( *pSVData->maAppData.mpSettings );
if ( nChangeFlags )
diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx
index 61d4f420e8e9..17c433587fd1 100644
--- a/vcl/source/app/svdata.cxx
+++ b/vcl/source/app/svdata.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: svdata.cxx,v $
*
- * $Revision: 1.21 $
+ * $Revision: 1.22 $
*
- * last change: $Author: vg $ $Date: 2002-12-09 16:50:33 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:51 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -79,6 +79,7 @@
#include <vos/mutex.hxx>
#endif
+#include <osl/process.h>
#include <osl/file.hxx>
#ifndef _UNO_CURRENT_CONTEXT_HXX_
#include <uno/current_context.hxx>
@@ -129,8 +130,17 @@
#ifndef _COM_SUN_STAR_AWT_XEXTENDEDTOOLKIT_HPP_
#include <drafts/com/sun/star/awt/XExtendedToolkit.hpp>
#endif
-#ifndef _COM_SUN_STAR_JAVA_JAVAINITIALIZATIONEXCEPTION_HPP_
-#include <com/sun/star/java/JavaInitializationException.hpp>
+#ifndef _COM_SUN_STAR_JAVA_JAVANOTCONFIGUREDEXCEPTION_HPP_
+#include <com/sun/star/java/JavaNotConfiguredException.hpp>
+#endif
+#ifndef _COM_SUN_STAR_JAVA_JAVAVMCREATIONFAILUREEXCEPTION_HPP_
+#include <com/sun/star/java/JavaVMCreationFailureException.hpp>
+#endif
+#ifndef _COM_SUN_STAR_JAVA_MISSINGJAVARUNTIMEEXCEPTION_HPP_
+#include <com/sun/star/java/MissingJavaRuntimeException.hpp>
+#endif
+#ifndef _COM_SUN_STAR_JAVA_JAVADISABLEDEXCEPTION_HPP_
+#include <com/sun/star/java/JavaDisabledException.hpp>
#endif
#include <com/sun/star/lang/XComponent.hpp>
@@ -164,6 +174,7 @@ ImplSVShlData aImplSVShlData;
static String& ReplaceJavaErrorMessages( String& rString )
{
+ rString.SearchAndReplaceAllAscii( "%OK", Button::GetStandardText( BUTTON_OK ) );
rString.SearchAndReplaceAllAscii( "%IGNORE", Button::GetStandardText( BUTTON_IGNORE ) );
rString.SearchAndReplaceAllAscii( "%CANCEL", Button::GetStandardText( BUTTON_CANCEL ) );
@@ -325,30 +336,32 @@ com::sun::star::uno::Any AccessBridgeCurrentContext::getValueByName( const rtl::
}
-bool ImplInitAccessBridge()
+bool ImplInitAccessBridge(bool bOnFirstWindow)
{
- bool bSuccess = true;
bool bErrorMessage = (FALSE != vcl::SettingsConfigItem::get()->IsValidConfigMgr());
- // No error messages when env var is set ..
- static const char* pEnv = getenv("SAL_ACCESSIBILITY_ENABLED" );
- if( pEnv && *pEnv )
- {
- bErrorMessage = false;
+ // Always return true on shutdown to avoid that these messages appear more than once
+ if (ImplGetSVData()->maAppData.mbAppQuit == TRUE) {
+ return true;
}
- ImplSVData* pSVData = ImplGetSVData();
- if( ! pSVData->mxAccessBridge.is() )
+ try
{
- try
+ bool bSuccess = true;
+
+ // No error messages when env var is set ..
+ static const char* pEnv = getenv("SAL_ACCESSIBILITY_ENABLED" );
+ if( pEnv && *pEnv )
+ {
+ bErrorMessage = false;
+ }
+
+ ImplSVData* pSVData = ImplGetSVData();
+ if( ! pSVData->mxAccessBridge.is() )
{
Reference< XMultiServiceFactory > xFactory(vcl::unohelper::GetMultiServiceFactory());
- // customize the java-not-available-interaction-handler entry within the
- // current context.
- com::sun::star::uno::ContextLayer layer(
- new AccessBridgeCurrentContext( com::sun::star::uno::getCurrentContext() ) );
- if(xFactory.is())
+ if( xFactory.is() )
{
Reference< XExtendedToolkit > xToolkit =
Reference< XExtendedToolkit >(Application::GetVCLToolkit(), UNO_QUERY);
@@ -356,72 +369,242 @@ bool ImplInitAccessBridge()
Sequence< Any > arguments(1);
arguments[0] = makeAny(xToolkit);
- pSVData->mxAccessBridge = Reference< XAccessibleTopWindowMap >(
- xFactory->createInstanceWithArguments(
- OUString::createFromAscii( "drafts.com.sun.star.accessibility.bridge.AccessBridge" ),
- arguments
- ), UNO_QUERY );
+#ifdef WNT
+ // This code causes the AccessBridge to redirect the console output to log file,
+ // which is extremly helpful on Windows because there is currently no code that
+ // opens a console window on demand.
+
+ OUString aLogPath;
+ OUString aEnvVar("ACCESSBRIDGE_LOGPATH", sizeof("ACCESSBRIDGE_LOGPATH"), RTL_TEXTENCODING_ASCII_US);
+ osl_getEnvironment(aEnvVar.pData, &aLogPath.pData);
+ if( aLogPath.getLength() > 0 )
+ {
+ arguments.realloc(2);
+ arguments[1] = makeAny(aLogPath);
+ }
+#endif
+
+ // Disable default java error messages on startup, because they were probably unreadable
+ // for a disabled user. Use native message boxes which are accessible without java support.
+ // No need to do this when activated by Tools-Options dialog ..
+ if( bOnFirstWindow )
+ {
+ // customize the java-not-available-interaction-handler entry within the
+ // current context when called at startup.
+ com::sun::star::uno::ContextLayer layer(
+ new AccessBridgeCurrentContext( com::sun::star::uno::getCurrentContext() ) );
+
+ pSVData->mxAccessBridge = Reference< XAccessibleTopWindowMap >(
+ xFactory->createInstanceWithArguments(
+ OUString::createFromAscii( "drafts.com.sun.star.accessibility.bridge.AccessBridge" ),
+ arguments
+ ), UNO_QUERY );
+ }
+ else
+ {
+ pSVData->mxAccessBridge = Reference< XAccessibleTopWindowMap >(
+ xFactory->createInstanceWithArguments(
+ OUString::createFromAscii( "drafts.com.sun.star.accessibility.bridge.AccessBridge" ),
+ arguments
+ ), UNO_QUERY );
+ }
if( !pSVData->mxAccessBridge.is() )
bSuccess = false;
}
}
- catch(::com::sun::star::java::JavaInitializationException exception)
+ return bSuccess;
+ }
+
+ catch(::com::sun::star::java::JavaNotConfiguredException e)
+ {
+ if( bErrorMessage )
{
- bSuccess = false;
+ ResMgr *pResMgr = ImplGetResMgr();
- if( bErrorMessage )
+ String aTitle(ResId(SV_ACCESSERROR_JAVA_NOT_CONFIGURED, pResMgr));
+ String aMessage(ResId(SV_ACCESSERROR_JAVA_MSG, pResMgr));
+
+ aMessage += String(" ", 1, RTL_TEXTENCODING_ASCII_US);
+ aMessage += String(ResId(SV_ACCESSERROR_OK_CANCEL_MSG, pResMgr));
+
+ int ret = ImplShowNativeMessageBox(
+ aTitle,
+ ReplaceJavaErrorMessages(aMessage),
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
+
+ // Do not change the setting in case the user chooses to cancel
+ if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
{
- ResMgr *pResMgr = ImplGetResMgr();
-
- String aMessage1(ResId(SV_ACCESSERROR_MISSING_JAVA, pResMgr));
- String aMessage2(ResId(SV_ACCESSERROR_MISSING_JAVA_MSG, pResMgr));
- ImplShowNativeMessageBox(
- ReplaceJavaErrorMessages(aMessage1),
- ReplaceJavaErrorMessages(aMessage2),
- SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_ABORT_RETRY_IGNORE,
- SALSYSTEM_SHOWNATIVEMSGBOX_BTN_IGNORE);
+ // Application::Quit results in an endlesss loop
+ ImplGetSVData()->maAppData.mbAppQuit = TRUE;
+ return true;
+
}
}
- catch(::com::sun::star::uno::Exception exception)
+ return false;
+ }
+
+ catch(::com::sun::star::java::JavaVMCreationFailureException e)
+ {
+ if( bErrorMessage )
{
- bSuccess = false;
+ ResMgr *pResMgr = ImplGetResMgr();
+
+ String aTitle(ResId(SV_ACCESSERROR_FAULTY_JAVA, pResMgr));
+ String aMessage(ResId(SV_ACCESSERROR_JAVA_MSG, pResMgr));
+
+ aMessage += String(" ", 1, RTL_TEXTENCODING_ASCII_US);
+ aMessage += String(ResId(SV_ACCESSERROR_OK_CANCEL_MSG, pResMgr));
+
+ int ret = ImplShowNativeMessageBox(
+ aTitle,
+ ReplaceJavaErrorMessages(aMessage),
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
- if( bErrorMessage )
+ // Do not change the setting in case the user chooses to cancel
+ if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
{
- String aTitle;
- String aMessage;
- ResMgr *pResMgr = ImplGetResMgr();
+ // Application::Quit results in an endlesss loop
+ ImplGetSVData()->maAppData.mbAppQuit = TRUE;
+ return true;
- if( exception.Message.compareTo(::rtl::OUString::createFromAscii("ClassNotFound"), 13) )
- {
- String aTmp(ResId(SV_ACCESSERROR_MISSING_BRIDGE, pResMgr));
- aTitle = ReplaceJavaErrorMessages(aTmp);
- aTmp = String(ResId(SV_ACCESSERROR_MISSING_BRIDGE_MSG, pResMgr));
- aMessage = ReplaceJavaErrorMessages(aTmp);
- }
- else if( exception.Message.compareTo(::rtl::OUString::createFromAscii("NoSuchMethod"), 12) )
+ }
+ }
+
+ return false;
+ }
+
+ catch(::com::sun::star::java::MissingJavaRuntimeException e)
+ {
+ if( bErrorMessage )
+ {
+ ResMgr *pResMgr = ImplGetResMgr();
+
+ String aTitle(ResId(SV_ACCESSERROR_MISSING_JAVA, pResMgr));
+ String aMessage(ResId(SV_ACCESSERROR_JAVA_MSG, pResMgr));
+
+ aMessage += String(" ", 1, RTL_TEXTENCODING_ASCII_US);
+ aMessage += String(ResId(SV_ACCESSERROR_OK_CANCEL_MSG, pResMgr));
+
+ int ret = ImplShowNativeMessageBox(
+ aTitle,
+ ReplaceJavaErrorMessages(aMessage),
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
+
+ // Do not change the setting in case the user chooses to cancel
+ if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
+ {
+ // Application::Quit results in an endlesss loop
+ ImplGetSVData()->maAppData.mbAppQuit = TRUE;
+ return true;
+
+ }
+ }
+
+ return false;
+ }
+
+ catch(::com::sun::star::java::JavaDisabledException e)
+ {
+ if( bErrorMessage )
+ {
+ ResMgr *pResMgr = ImplGetResMgr();
+
+ String aTitle(ResId(SV_ACCESSERROR_JAVA_DISABLED, pResMgr));
+ String aMessage(ResId(SV_ACCESSERROR_JAVA_MSG, pResMgr));
+
+ aMessage += String(" ", 1, RTL_TEXTENCODING_ASCII_US);
+ aMessage += String(ResId(SV_ACCESSERROR_OK_CANCEL_MSG, pResMgr));
+
+ int ret = ImplShowNativeMessageBox(
+ aTitle,
+ ReplaceJavaErrorMessages(aMessage),
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
+
+ // Do not change the setting in case the user chooses to cancel
+ if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
+ {
+ // Application::Quit results in an endlesss loop
+ ImplGetSVData()->maAppData.mbAppQuit = TRUE;
+ return true;
+
+ }
+ }
+
+ return false;
+ }
+
+
+ catch(::com::sun::star::uno::RuntimeException e)
+ {
+ if( bErrorMessage )
+ {
+ ResMgr *pResMgr = ImplGetResMgr();
+
+ String aTitle;
+ String aMessage(ResId(SV_ACCESSERROR_BRIDGE_MSG, pResMgr));
+
+ if( 0 == e.Message.compareTo(::rtl::OUString::createFromAscii("ClassNotFound"), 13) )
+ {
+ aTitle = String(ResId(SV_ACCESSERROR_MISSING_BRIDGE, pResMgr));
+ }
+ else if( 0 == e.Message.compareTo(::rtl::OUString::createFromAscii("NoSuchMethod"), 12) )
+ {
+ aTitle = String(ResId(SV_ACCESSERROR_WRONG_VERSION, pResMgr));
+ }
+
+ if( aTitle.Len() != 0 )
+ {
+ if( bOnFirstWindow )
{
- String aTmp(ResId(SV_ACCESSERROR_WRONG_VERSION, pResMgr));
- aTitle = ReplaceJavaErrorMessages(aTmp);
- aTmp = String(ResId(SV_ACCESSERROR_WRONG_VERSION_MSG, pResMgr));
- aMessage = ReplaceJavaErrorMessages(aTmp);
- }
+ // Something went wrong initializing the Java AccessBridge (on Windows) during the
+ // startup. Since the office will be probably unusable for a disabled user, we offer
+ // to terminate directly.
+ aMessage += String(" ", 1, RTL_TEXTENCODING_ASCII_US);
+ aMessage += String(ResId(SV_ACCESSERROR_OK_CANCEL_MSG, pResMgr));
- if( aTitle.Len() != 0 )
+ int ret = ImplShowNativeMessageBox(
+ aTitle,
+ ReplaceJavaErrorMessages(aMessage),
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL,
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL);
+
+ // Do not change the setting in case the user chooses to cancel
+ if( SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL == ret )
+ {
+ // Application::Quit results in an endlesss loop
+ ImplGetSVData()->maAppData.mbAppQuit = TRUE;
+ return true;
+
+ }
+ }
+ else
{
+ // The user tried to activate accessibility support using Tools-Options dialog,
+ // so we don't offer to terminate here !
ImplShowNativeMessageBox(
aTitle,
- aMessage,
- SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_ABORT_RETRY_IGNORE,
- SALSYSTEM_SHOWNATIVEMSGBOX_BTN_IGNORE);
+ ReplaceJavaErrorMessages(aMessage),
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK,
+ SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK);
}
}
}
+
+ return false;
+ }
+
+ catch (...)
+ {
+ return false;
}
- return bSuccess;
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 05b74c757729..42f58c873d24 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: combobox.cxx,v $
*
- * $Revision: 1.22 $
+ * $Revision: 1.23 $
*
- * last change: $Author: mt $ $Date: 2002-12-12 16:26:01 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:52 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -819,7 +819,11 @@ long ComboBox::Notify( NotifyEvent& rNEvt )
nDone = 1;
}
else
+ {
+ if( mpFloatWin )
+ mpImplLB->GetMainWindow()->CalcMaxVisibleEntries( mpFloatWin->CalcFloatSize() );
nDone = mpImplLB->ProcessKeyInput( aKeyEvt );
+ }
}
break;
@@ -1399,3 +1403,46 @@ const Wallpaper& ComboBox::GetDisplayBackground() const
return Control::GetDisplayBackground();
return rBack;
}
+// -----------------------------------------------------------------------------
+USHORT ComboBox::GetSelectEntryCount() const
+{
+ return mpImplLB->GetEntryList()->GetSelectEntryCount();
+}
+// -----------------------------------------------------------------------------
+USHORT ComboBox::GetSelectEntryPos( USHORT nIndex ) const
+{
+ USHORT nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( nIndex );
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND )
+ {
+ if ( nPos < mpImplLB->GetEntryList()->GetMRUCount() )
+ nPos = mpImplLB->GetEntryList()->FindEntry( mpImplLB->GetEntryList()->GetEntryText( nPos ) );
+ nPos -= mpImplLB->GetEntryList()->GetMRUCount();
+ }
+ return nPos;
+}
+// -----------------------------------------------------------------------------
+BOOL ComboBox::IsEntryPosSelected( USHORT nPos ) const
+{
+ return mpImplLB->GetEntryList()->IsEntryPosSelected( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
+}
+// -----------------------------------------------------------------------------
+void ComboBox::SelectEntryPos( USHORT nPos, BOOL bSelect)
+{
+ if ( nPos < mpImplLB->GetEntryList()->GetEntryCount() )
+ mpImplLB->SelectEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), bSelect );
+}
+// -----------------------------------------------------------------------------
+void ComboBox::SetNoSelection()
+{
+ mpImplLB->SetNoSelection();
+ mpSubEdit->SetText( String() );
+}
+// -----------------------------------------------------------------------------
+Rectangle ComboBox::GetBoundingRectangle( USHORT nItem ) const
+{
+ Rectangle aRect = mpImplLB->GetMainWindow()->GetBoundingRectangle( nItem );
+ Rectangle aOffset = mpImplLB->GetMainWindow()->GetWindowExtentsRelative( (Window*)this );
+ aRect.Move( aOffset.TopLeft().X(), aOffset.TopLeft().Y() );
+ return aRect;
+}
+// -----------------------------------------------------------------------------
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index 767d8fc5d4fa..584213a16d33 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: edit.cxx,v $
*
- * $Revision: 1.55 $
+ * $Revision: 1.56 $
*
- * last change: $Author: tbe $ $Date: 2002-11-28 13:19:11 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:52 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -827,7 +827,7 @@ void Edit::ImplSetText( const XubString& rText, const Selection* pNewSelection )
{
// Der Text wird dadurch geloescht das der alte Text komplett 'selektiert'
// wird, dann InsertText, damit flackerfrei.
- if ( (rText != maText) || (pNewSelection && (*pNewSelection != maSelection)) )
+ if ( ( rText.Len() <= mnMaxTextLen ) && ( (rText != maText) || (pNewSelection && (*pNewSelection != maSelection)) ) )
{
delete mpLayoutData, mpLayoutData = NULL;
maSelection.Min() = 0;
@@ -1083,6 +1083,15 @@ void Edit::ImplLoadRes( const ResId& rResId )
// -----------------------------------------------------------------------
+void Edit::ImplCopyToSelectionClipboard()
+{
+ if ( GetSelection().Len() )
+ {
+ ::com::sun::star::uno::Reference<com::sun::star::datatransfer::clipboard::XClipboard> aSelection(Window::GetSelection());
+ ImplCopy( aSelection );
+ }
+}
+
void Edit::ImplCopy( uno::Reference< datatransfer::clipboard::XClipboard >& rxClipboard )
{
if ( rxClipboard.is() )
@@ -1163,12 +1172,17 @@ void Edit::MouseButtonDown( const MouseEvent& rMEvt )
{
mbClickedInSelection = FALSE;
if ( rMEvt.GetClicks() == 3 )
+ {
ImplSetSelection( Selection( 0, 0xFFFF ) );
+ ImplCopyToSelectionClipboard();
+
+ }
else if ( rMEvt.GetClicks() == 2 )
{
uno::Reference < i18n::XBreakIterator > xBI = ImplGetBreakIterator();
i18n::Boundary aBoundary = xBI->getWordBoundary( maText, aSelection.Max(), GetSettings().GetLocale(), i18n::WordType::ANYWORD_IGNOREWHITESPACES, sal_True );
ImplSetSelection( Selection( aBoundary.startPos, aBoundary.endPos ) );
+ ImplCopyToSelectionClipboard();
}
else if ( !rMEvt.IsShift() && HasFocus() && aSelection.IsInside( nChar ) )
mbClickedInSelection = TRUE;
@@ -1214,10 +1228,9 @@ void Edit::Tracking( const TrackingEvent& rTEvt )
ImplSetCursorPos( nChar, FALSE );
mbClickedInSelection = FALSE;
}
- else if ( rTEvt.GetMouseEvent().IsLeft() && GetSelection().Len() )
+ else if ( rTEvt.GetMouseEvent().IsLeft() )
{
- ::com::sun::star::uno::Reference<com::sun::star::datatransfer::clipboard::XClipboard> aSelection(Window::GetSelection());
- ImplCopy( aSelection );
+ ImplCopyToSelectionClipboard();
}
}
else
@@ -1346,10 +1359,7 @@ BOOL Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
if ( aSel != GetSelection() )
{
ImplSetSelection( aSel );
- if ( aSel.Len() ) {
- ::com::sun::star::uno::Reference<com::sun::star::datatransfer::clipboard::XClipboard> aSelection(Window::GetSelection());
- ImplCopy( aSelection );
- }
+ ImplCopyToSelectionClipboard();
}
if ( (nCode == KEY_END) && maAutocompleteHdl.IsSet() && !rKEvt.GetKeyCode().GetModifier() )
diff --git a/vcl/source/control/ilstbox.cxx b/vcl/source/control/ilstbox.cxx
index 3d9231b66922..ca757c9d82bc 100644
--- a/vcl/source/control/ilstbox.cxx
+++ b/vcl/source/control/ilstbox.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ilstbox.cxx,v $
*
- * $Revision: 1.39 $
+ * $Revision: 1.40 $
*
- * last change: $Author: mt $ $Date: 2002-11-22 11:26:19 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:53 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -927,6 +927,7 @@ void ImplListBoxWindow::SelectEntry( USHORT nPos, BOOL bSelect )
delete mpLayoutData, mpLayoutData = NULL;
if ( !mnMaxVisibleEntries || !IsReallyVisible() || ( nPos < GetTopEntry() ) )
{
+ Resize();
SetTopEntry( nPos );
}
else
@@ -1522,6 +1523,10 @@ BOOL ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
((nSelect != mnCurrentPos ) || ( eLET == LET_KEYSPACE)) )
{
DBG_ASSERT( (nSelect != mnCurrentPos) || mbMulti, "ImplListBox: Selecting same Entry" );
+ if( nSelect >= mpEntryList->GetEntryCount() )
+ nSelect = mpEntryList->GetEntryCount()-1;
+ else if (nSelect < 0 )
+ nSelect = 0;
mnCurrentPos = nSelect;
if ( SelectEntries( nSelect, eLET, bShift, bCtrl ) )
{
@@ -1736,6 +1741,14 @@ void ImplListBoxWindow::Resize()
// -----------------------------------------------------------------------
+void ImplListBoxWindow::CalcMaxVisibleEntries( const Size& rFloatSize )
+{
+ if( mnMaxHeight )
+ mnMaxVisibleEntries = (USHORT) ( (rFloatSize.Height()-4) / mnMaxHeight );
+}
+
+// -----------------------------------------------------------------------
+
void ImplListBoxWindow::GetFocus()
{
USHORT nPos = mnCurrentPos;
@@ -2203,7 +2216,8 @@ void ImplListBox::ImplResizeControls()
else
{
mpVScrollBar->Hide();
- SetTopEntry( 0 );
+ // #107254# Don't reset top entry after resize, but check for max top entry
+ SetTopEntry( GetTopEntry() );
}
// horz. ScrollBar
@@ -2610,7 +2624,7 @@ void ImplBtn::MouseButtonDown( const MouseEvent& rMEvt )
// =======================================================================
ImplListBoxFloatingWindow::ImplListBoxFloatingWindow( Window* pParent ) :
- FloatingWindow( pParent, WB_BORDER | WB_SYSTEMWINDOW )
+ FloatingWindow( pParent, WB_BORDER | WB_SYSTEMWINDOW | WB_NOSHADOW ) // no drop shadow for list boxes
{
mpImplLB = NULL;
mnDDLineCount = 0;
diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx
index 089867e99752..f01bbcbb7edb 100644
--- a/vcl/source/control/lstbox.cxx
+++ b/vcl/source/control/lstbox.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: lstbox.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: mt $ $Date: 2002-12-12 16:26:00 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:53 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -809,7 +809,11 @@ long ListBox::PreNotify( NotifyEvent& rNEvt )
break;
default:
+ {
+ if( mpFloatWin )
+ mpImplLB->GetMainWindow()->CalcMaxVisibleEntries( mpFloatWin->CalcFloatSize() );
nDone = mpImplLB->ProcessKeyInput( aKeyEvt );
+ }
}
}
else if ( rNEvt.GetType() == EVENT_LOSEFOCUS )
diff --git a/vcl/source/gdi/base14.cxx b/vcl/source/gdi/base14.cxx
index 4191655eebcc..4f6890cd1b74 100644
--- a/vcl/source/gdi/base14.cxx
+++ b/vcl/source/gdi/base14.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: base14.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: pl $ $Date: 2002-07-29 12:47:10 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:55 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -72,7 +72,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_MS_1252, // charset
PITCH_FIXED, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NONE, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -117,7 +117,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_MS_1252, // charset
PITCH_FIXED, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NORMAL, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -252,7 +252,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_MS_1252, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NONE, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -297,7 +297,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_MS_1252, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NORMAL, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -432,7 +432,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_MS_1252, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NONE, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -477,7 +477,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_MS_1252, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NORMAL, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -612,7 +612,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_SYMBOL, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NONE, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
@@ -657,7 +657,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
RTL_TEXTENCODING_SYMBOL, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
- WEIGHT_NORMAL, // weight type
+ WEIGHT_MEDIUM, // weight type
ITALIC_NONE, // italic type
{ 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 7
0, 0, 0, 0, 0, 0, 0, 0, // 8 - 15
diff --git a/vcl/source/gdi/bitmap.cxx b/vcl/source/gdi/bitmap.cxx
index b20101c4786a..5651cb70b5f1 100644
--- a/vcl/source/gdi/bitmap.cxx
+++ b/vcl/source/gdi/bitmap.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: bitmap.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: thb $ $Date: 2002-10-22 17:25:33 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:55 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -1929,6 +1929,11 @@ BOOL Bitmap::CombineSimple( const Bitmap& rMask, BmpCombine eCombine )
return bRet;
}
+BOOL Bitmap::MakeMono( BYTE cThreshold )
+{
+ return ImplMakeMono( cThreshold );
+}
+
// ------------------------------------------------------------------
#ifdef REMOTE_APPSERVER
diff --git a/vcl/source/gdi/bmpconv.cxx b/vcl/source/gdi/bmpconv.cxx
new file mode 100644
index 000000000000..8a9d3d124e04
--- /dev/null
+++ b/vcl/source/gdi/bmpconv.cxx
@@ -0,0 +1,253 @@
+/*************************************************************************
+ *
+ * $RCSfile: bmpconv.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:56 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <bitmap.hxx>
+#include <impbmpconv.hxx>
+#include <svapp.hxx>
+#include <vos/mutex.hxx>
+
+#ifndef _STREAM_HXX
+#include <tools/stream.hxx>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XINVOCATION_HPP_
+#include <com/sun/star/script/XInvocation.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XBITMAP_HPP_
+#include <com/sun/star/awt/XBitmap.hpp>
+#endif
+
+#ifndef _CPPUHELPER_COMPBASE1_HXX_
+#include <cppuhelper/compbase1.hxx>
+#endif
+
+
+using namespace com::sun::star::uno;
+using namespace com::sun::star::script;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::reflection;
+using namespace com::sun::star::awt;
+using namespace rtl;
+
+namespace vcl {
+
+class BmpTransporter :
+ public cppu::WeakImplHelper1< com::sun::star::awt::XBitmap >
+{
+ Sequence<sal_Int8> m_aBM;
+ com::sun::star::awt::Size m_aSize;
+public:
+ BmpTransporter( const Bitmap& rBM );
+ virtual ~BmpTransporter();
+
+ virtual com::sun::star::awt::Size SAL_CALL getSize() throw();
+ virtual Sequence< sal_Int8 > SAL_CALL getDIB() throw();
+ virtual Sequence< sal_Int8 > SAL_CALL getMaskDIB() throw();
+};
+
+class BmpConverter :
+ public cppu::WeakImplHelper1< com::sun::star::script::XInvocation >
+{
+public:
+ BmpConverter();
+ virtual ~BmpConverter();
+
+ virtual Reference< XIntrospectionAccess > SAL_CALL getIntrospection() throw();
+ virtual void SAL_CALL setValue( const OUString& rProperty, const Any& rValue )
+ throw( UnknownPropertyException );
+ virtual Any SAL_CALL getValue( const OUString& rProperty )
+ throw( UnknownPropertyException );
+ virtual sal_Bool SAL_CALL hasMethod( const OUString& rName ) throw();
+ virtual sal_Bool SAL_CALL hasProperty( const OUString& rProp ) throw();
+
+ virtual Any SAL_CALL invoke( const OUString& rFunction,
+ const Sequence< Any >& rParams,
+ Sequence< sal_Int16 >& rOutParamIndex,
+ Sequence< Any >& rOutParam
+ )
+ throw( CannotConvertException, InvocationTargetException );
+};
+
+}
+
+using namespace vcl;
+
+Reference< XInvocation > vcl::createBmpConverter()
+{
+ return static_cast<XInvocation*>(new BmpConverter());
+}
+
+BmpConverter::BmpConverter()
+{
+}
+
+BmpConverter::~BmpConverter()
+{
+}
+
+Reference< XIntrospectionAccess > SAL_CALL BmpConverter::getIntrospection() throw()
+{
+ return Reference< XIntrospectionAccess >();
+}
+
+void SAL_CALL BmpConverter::setValue( const OUString& rProperty, const Any& rValue ) throw( UnknownPropertyException )
+{
+ throw UnknownPropertyException();
+}
+
+Any SAL_CALL BmpConverter::getValue( const OUString& rProperty ) throw( UnknownPropertyException )
+{
+ throw UnknownPropertyException();
+}
+
+sal_Bool SAL_CALL BmpConverter::hasMethod( const OUString& rName ) throw()
+{
+ return rName.equalsIgnoreAsciiCase( OUString::createFromAscii( "convert-bitmap-depth" ) );
+}
+
+sal_Bool SAL_CALL BmpConverter::hasProperty( const OUString& rName ) throw()
+{
+ return sal_False;
+}
+
+Any SAL_CALL BmpConverter::invoke(
+ const OUString& rFunction,
+ const Sequence< Any >& rParams,
+ Sequence< sal_Int16 >& rOutParamIndex,
+ Sequence< Any >& rOutParam )
+ throw( CannotConvertException, InvocationTargetException )
+{
+ Any aRet;
+
+ if( rFunction.equalsIgnoreAsciiCase( OUString::createFromAscii( "convert-bitmap-depth" ) ) )
+ {
+ Reference< XBitmap > xBM;
+ sal_uInt16 nTargetDepth = 0;
+ if( rParams.getLength() != 2 )
+ throw CannotConvertException();
+
+ if( ! (rParams.getConstArray()[0] >>= xBM ) ||
+ ! ( rParams.getConstArray()[1] >>= nTargetDepth ) )
+ throw CannotConvertException();
+
+ Sequence< sal_Int8 > aDIB = xBM->getDIB();
+
+ // call into vcl not thread safe
+ vos::OGuard aGuard( Application::GetSolarMutex() );
+
+ SvMemoryStream aStream( aDIB.getArray(), aDIB.getLength(), STREAM_READ | STREAM_WRITE );
+ Bitmap aBM;
+ aBM.Read( aStream, TRUE );
+ if( nTargetDepth < 4 )
+ nTargetDepth = 1;
+ else if( nTargetDepth < 8 )
+ nTargetDepth = 4;
+ else if( nTargetDepth >8 && nTargetDepth < 24 )
+ nTargetDepth = 24;
+
+ if( aBM.GetBitCount() == 24 && nTargetDepth <= 8 )
+ aBM.Dither( BMP_DITHER_FLOYD );
+
+ if( aBM.GetBitCount() != nTargetDepth )
+ {
+ switch( nTargetDepth )
+ {
+ case 1: aBM.Convert( BMP_CONVERSION_1BIT_THRESHOLD );break;
+ case 4: aBM.ReduceColors( BMP_CONVERSION_4BIT_COLORS );break;
+ case 8: aBM.ReduceColors( BMP_CONVERSION_8BIT_COLORS );break;
+ case 24: aBM.Convert( BMP_CONVERSION_24BIT );break;
+ }
+ }
+ xBM = new BmpTransporter( aBM );
+ aRet <<= xBM;
+ }
+ else
+ throw InvocationTargetException();
+
+ return aRet;
+}
+
+BmpTransporter::BmpTransporter( const Bitmap& rBM )
+{
+ m_aSize.Width = rBM.GetSizePixel().Width();
+ m_aSize.Height = rBM.GetSizePixel().Height();
+ SvMemoryStream aStream;
+ rBM.Write( aStream, FALSE, TRUE );
+ m_aBM = Sequence<sal_Int8>((const sal_Int8*)aStream.GetData(), aStream.GetSize() );
+}
+
+BmpTransporter::~BmpTransporter()
+{
+}
+
+com::sun::star::awt::Size SAL_CALL BmpTransporter::getSize() throw()
+{
+ return m_aSize;
+}
+
+Sequence< sal_Int8 > SAL_CALL BmpTransporter::getDIB() throw()
+{
+ return m_aBM;
+}
+
+Sequence< sal_Int8 > SAL_CALL BmpTransporter::getMaskDIB() throw()
+{
+ return Sequence< sal_Int8 >();
+}
diff --git a/vcl/source/gdi/cvtsvm.cxx b/vcl/source/gdi/cvtsvm.cxx
index ca57ea3c9c57..270f223f09ef 100644
--- a/vcl/source/gdi/cvtsvm.cxx
+++ b/vcl/source/gdi/cvtsvm.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: cvtsvm.cxx,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: thb $ $Date: 2002-12-10 17:28:12 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:56 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -62,6 +62,7 @@
#define _SV_CVTSVM_CXX
#define ENABLE_BYTESTRING_STREAM_OPERATORS
+#include <algorithm>
#include <string.h>
#ifndef _STACK_HXX //autogen
@@ -445,6 +446,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
const USHORT nOldFormat = rIStm.GetNumberFormatInt();
rtl_TextEncoding eActualCharSet = gsl_getSystemTextEncoding();
BOOL bFatLine = FALSE;
+ VirtualDevice aFontVDev;
rIStm.SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
@@ -695,6 +697,9 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
rMtf.AddAction( new MetaTextAlignAction( aFont.GetAlign() ) );
rMtf.AddAction( new MetaTextColorAction( aFont.GetColor() ) );
rMtf.AddAction( new MetaTextFillColorAction( aFont.GetFillColor(), !aFont.IsTransparent() ) );
+
+ // #106172# Track font relevant data in shadow VDev
+ aFontVDev.SetFont( aFont );
}
break;
@@ -724,10 +729,41 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
if( nAryLen > 0L )
{
- pDXAry = new long[ nAryLen ];
+ INT32 nStrLen( aStr.Len() );
+
+ pDXAry = new long[ ::std::max( nAryLen, nStrLen ) ];
for( long i = 0L; i < nAryLen; i++ )
rIStm >> nTmp, pDXAry[ i ] = nTmp;
+
+ // #106172# Add last DX array elem, if missing
+ if( nAryLen != nStrLen )
+ {
+ if( nAryLen+1 == nStrLen )
+ {
+ long* pTmpAry = new long[nStrLen];
+
+ aFontVDev.GetTextArray( aStr, pTmpAry, (USHORT) nIndex, (USHORT) nLen );
+
+ // now, the difference between the
+ // last and the second last DX array
+ // is the advancement for the last
+ // glyph. Thus, to complete our meta
+ // action's DX array, just add that
+ // difference to last elem and store
+ // in very last.
+ if( nStrLen > 1 )
+ pDXAry[ nStrLen-1 ] = pDXAry[ nStrLen-2 ] + pTmpAry[ nStrLen-1 ] - pTmpAry[ nStrLen-2 ];
+ else
+ pDXAry[ nStrLen-1 ] = pTmpAry[ nStrLen-1 ]; // len=1: 0th position taken to be 0
+
+ delete pTmpAry;
+ }
+#ifdef DBG_UTIL
+ else
+ DBG_ERROR("More than one DX array element missing on SVM import");
+#endif
+ }
}
if ( nUnicodeCommentActionNumber == i )
ImplReadUnicodeComment( nUnicodeCommentStreamPos, rIStm, aStr );
@@ -812,6 +848,9 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
{
ImplReadMapMode( rIStm, aMapMode );
rMtf.AddAction( new MetaMapModeAction( aMapMode ) );
+
+ // #106172# Track font relevant data in shadow VDev
+ aFontVDev.SetMapMode( aMapMode );
}
break;
@@ -919,6 +958,9 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
{
aLIStack.Push( new LineInfo( aLineInfo ) );
rMtf.AddAction( new MetaPushAction( PUSH_ALL ) );
+
+ // #106172# Track font relevant data in shadow VDev
+ aFontVDev.Push();
}
break;
@@ -936,6 +978,9 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
}
rMtf.AddAction( new MetaPopAction() );
+
+ // #106172# Track font relevant data in shadow VDev
+ aFontVDev.Pop();
}
break;
@@ -1032,6 +1077,12 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
#ifdef CVTSVM_WRITE_SUBACTIONCOUNT
i += nFollowingActionCount;
#endif
+
+ // #106172# Track font relevant data in shadow VDev
+ if( bSet )
+ aFontVDev.SetRefPoint( aRefPoint );
+ else
+ aFontVDev.SetRefPoint();
}
break;
diff --git a/vcl/source/gdi/font.cxx b/vcl/source/gdi/font.cxx
index b70562a97420..83d766457867 100644
--- a/vcl/source/gdi/font.cxx
+++ b/vcl/source/gdi/font.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: font.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: pl $ $Date: 2001-08-01 12:32:47 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:56 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -538,6 +538,7 @@ BOOL Font::operator==( const Font& rFont ) const
(mpImplFont->maFillColor == rFont.mpImplFont->maFillColor ) &&
(mpImplFont->maSize == rFont.mpImplFont->maSize ) &&
(mpImplFont->mnOrientation == rFont.mpImplFont->mnOrientation ) &&
+ (mpImplFont->mbVertical == rFont.mpImplFont->mbVertical ) &&
(mpImplFont->meUnderline == rFont.mpImplFont->meUnderline ) &&
(mpImplFont->meStrikeout == rFont.mpImplFont->meStrikeout ) &&
(mpImplFont->meRelief == rFont.mpImplFont->meRelief ) &&
diff --git a/vcl/source/gdi/fontcfg.cxx b/vcl/source/gdi/fontcfg.cxx
index eb1314ba9f1f..26733c7adcdb 100644
--- a/vcl/source/gdi/fontcfg.cxx
+++ b/vcl/source/gdi/fontcfg.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: fontcfg.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: ssa $ $Date: 2002-10-11 13:28:08 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:56 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -406,6 +406,7 @@ const OUString& DefaultFontConfigItem::getUserInterfaceFont( int nLanguage ) con
#define FALLBACKFONT_UI_SANS "Andale Sans UI;Tahoma;Arial Unicode MS;Interface User;Geneva;WarpSans;Dialog;Swiss;Lucida;Helvetica;Charcoal;Chicago;Arial;MS Sans Serif;Helv;Times;Times New Roman;Interface System"
#define FALLBACKFONT_UI_SANS_ARABIC "Tahoma;Traditional Arabic;Simplified Arabic;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Interface User;Arial Unicode MS;Lucida Sans Unicode;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Helmet;Interface System;Sans Serif"
#define FALLBACKFONT_UI_SANS_THAI "OONaksit;Tahoma;Lucidasans;Arial Unicode MS"
+ #define FALLBACKFONT_UI_SANS_KOREAN "SunGulim;Gulim;Roundgothic;Arial Unicode MS;Lucida Sans Unicode;Tahoma;Andale Sans UI"
if( nLanguage == LANGUAGE_SYSTEM )
nLanguage = Application::GetSettings().GetUILanguage();
@@ -420,6 +421,14 @@ const OUString& DefaultFontConfigItem::getUserInterfaceFont( int nLanguage ) con
static const OUString aFallback (RTL_CONSTASCII_USTRINGPARAM(FALLBACKFONT_UI_SANS));
static const OUString aFallBackArabic (RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_ARABIC ) );
static const OUString aFallBackThai (RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_THAI ) );
+
+ // we need localized names for korean fonts
+ static sal_Unicode const aSunGulim[] = { 0xC36C, 0xAD74, 0xB9BC, 0, 0 };
+ String aFallBackKoreanLocalized( aSunGulim );
+ aFallBackKoreanLocalized += String(RTL_CONSTASCII_USTRINGPARAM( ";" ) );
+ aFallBackKoreanLocalized += String(RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_KOREAN ) );
+ static const OUString aFallBackKorean( aFallBackKoreanLocalized );
+
// optimize font list for some locales, as long as Andale Sans UI does not support them
switch( nLanguage )
{
@@ -446,6 +455,10 @@ const OUString& DefaultFontConfigItem::getUserInterfaceFont( int nLanguage ) con
case LANGUAGE_THAI:
return aFallBackThai;
break;
+ case LANGUAGE_KOREAN:
+ case LANGUAGE_KOREAN_JOHAB:
+ return aFallBackKorean;
+ break;
default:
break;
}
diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx
index 0afb77b34f57..90bb71990a67 100644
--- a/vcl/source/gdi/graph.cxx
+++ b/vcl/source/gdi/graph.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: graph.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: ka $ $Date: 2001-08-24 14:10:36 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:57 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -67,6 +67,9 @@
#ifndef _SV_OUTDEV_HXX
#include <outdev.hxx>
#endif
+#ifndef _SV_SVAPP_HXX
+#include <svapp.hxx>
+#endif
#include <graph.hxx>
// -----------------------
@@ -499,6 +502,20 @@ void Graphic::SetPrefMapMode( const MapMode& rPrefMapMode )
// ------------------------------------------------------------------
+Size Graphic::GetSizePixel( const OutputDevice* pRefDevice ) const
+{
+ Size aRet;
+
+ if( GRAPHIC_BITMAP == mpImpGraphic->ImplGetType() )
+ aRet = mpImpGraphic->ImplGetBitmapEx( NULL ).GetSizePixel();
+ else
+ aRet = ( pRefDevice ? pRefDevice : Application::GetDefaultDevice() )->LogicToPixel( GetPrefSize(), GetPrefMapMode() );
+
+ return aRet;
+}
+
+// ------------------------------------------------------------------
+
ULONG Graphic::GetSizeBytes() const
{
return mpImpGraphic->ImplGetSizeBytes();
diff --git a/vcl/source/gdi/image.cxx b/vcl/source/gdi/image.cxx
index e30131defdae..1d20876c2f6c 100644
--- a/vcl/source/gdi/image.cxx
+++ b/vcl/source/gdi/image.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: image.cxx,v $
*
- * $Revision: 1.7 $
+ * $Revision: 1.8 $
*
- * last change: $Author: cd $ $Date: 2002-11-28 14:06:32 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:57 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -1737,7 +1737,7 @@ void OutputDevice::DrawImage( const Point& rPos, const Image& rImage,
DBG_ASSERT( GetOutDevType() != OUTDEV_PRINTER,
"DrawImage(): Images can't be drawn on any mprinter" );
- if( !rImage.mpImplData )
+ if( !rImage.mpImplData || ImplIsRecordLayout() )
return;
switch( rImage.mpImplData->meType )
@@ -1784,7 +1784,7 @@ void OutputDevice::DrawImage( const Point& rPos, const Size& rSize,
DBG_ASSERT( GetOutDevType() != OUTDEV_PRINTER,
"DrawImage(): Images can't be drawn on any mprinter" );
- if( !rImage.mpImplData )
+ if( !rImage.mpImplData || ImplIsRecordLayout() )
return;
switch( rImage.mpImplData->meType )
diff --git a/vcl/source/gdi/implncvt.cxx b/vcl/source/gdi/implncvt.cxx
index 98a428d36380..8450b387188d 100644
--- a/vcl/source/gdi/implncvt.cxx
+++ b/vcl/source/gdi/implncvt.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: implncvt.cxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:05:38 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:57 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -362,8 +362,8 @@ const Polygon* ImplLineConverter::ImplGetNext()
ImplFloatPoint aN2Vec( aPointB.GetNVec( aPointC ) );
aN2Vec *= mfWidthHalf;
- f2D = ( aN2Vec.fX == 0 ) ? 1 : ( aN2Vec.fY / aN2Vec.fX );
- if ( f1D == f2D )
+ f2D = ( fabs( aN2Vec.fX ) < 0.00000001 ) ? 1 : ( aN2Vec.fY / aN2Vec.fX );
+ if ( fabs( f1D - f2D ) < 0.00000001 )
nDirection = CURVE_STRAIGHTON;
else
{
@@ -413,7 +413,7 @@ const Polygon* ImplLineConverter::ImplGetNext()
int nValid = 0;
- if ( ( aN2Vec.fX ) == 0 )
+ if ( fabs( aN2Vec.fX ) < 0.00000001 )
{
fX = aDestPoint.fX;
nValid = 1;
@@ -421,7 +421,7 @@ const Polygon* ImplLineConverter::ImplGetNext()
else
fBDest = aDestPoint.fY - ( aN2Vec.fY / aN2Vec.fX * aDestPoint.fX );
- if ( ( aN1Vec.fX ) == 0 )
+ if ( fabs( aN1Vec.fX ) < 0.000000001 )
{
fX = aSourcePoint.fX;
nValid = 2;
diff --git a/vcl/source/gdi/impprn.cxx b/vcl/source/gdi/impprn.cxx
index fa3c038a8251..523e4bb8b167 100644
--- a/vcl/source/gdi/impprn.cxx
+++ b/vcl/source/gdi/impprn.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: impprn.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: ka $ $Date: 2001-07-04 11:28:52 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:57 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -265,7 +265,33 @@ void ImplQPrinter::ImplPrintMtf( GDIMetaFile& rMtf, long nMaxBmpDPIX, long nMaxB
}
else if( nType == META_TRANSPARENT_ACTION )
{
- DrawPolyPolygon( ( (MetaTransparentAction*) pAct )->GetPolyPolygon() );
+ MetaTransparentAction* pTransAct = static_cast<MetaTransparentAction*>(pAct);
+ USHORT nTransparency( pTransAct->GetTransparence() );
+
+ // #i10613# Respect transparency for draw color
+ if( nTransparency )
+ {
+ Push( PUSH_LINECOLOR|PUSH_FILLCOLOR );
+
+ // assume white background for alpha blending
+ Color aLineColor( GetLineColor() );
+ aLineColor.SetRed( static_cast<UINT8>( (255L*nTransparency + (100L - nTransparency)*aLineColor.GetRed()) / 100L ) );
+ aLineColor.SetGreen( static_cast<UINT8>( (255L*nTransparency + (100L - nTransparency)*aLineColor.GetGreen()) / 100L ) );
+ aLineColor.SetBlue( static_cast<UINT8>( (255L*nTransparency + (100L - nTransparency)*aLineColor.GetBlue()) / 100L ) );
+ SetLineColor( aLineColor );
+
+ Color aFillColor( GetFillColor() );
+ aFillColor.SetRed( static_cast<UINT8>( (255L*nTransparency + (100L - nTransparency)*aFillColor.GetRed()) / 100L ) );
+ aFillColor.SetGreen( static_cast<UINT8>( (255L*nTransparency + (100L - nTransparency)*aFillColor.GetGreen()) / 100L ) );
+ aFillColor.SetBlue( static_cast<UINT8>( (255L*nTransparency + (100L - nTransparency)*aFillColor.GetBlue()) / 100L ) );
+ SetFillColor( aFillColor );
+ }
+
+ DrawPolyPolygon( pTransAct->GetPolyPolygon() );
+
+ if( nTransparency )
+ Pop();
+
bExecuted = sal_True;
}
else if( nType == META_FLOATTRANSPARENT_ACTION )
diff --git a/vcl/source/gdi/impvect.cxx b/vcl/source/gdi/impvect.cxx
index 2a3e27ebf2c5..95f9e712038d 100644
--- a/vcl/source/gdi/impvect.cxx
+++ b/vcl/source/gdi/impvect.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: impvect.cxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:05:38 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:57 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -303,8 +303,7 @@ inline const Point& ImplPointArray::operator[]( ULONG nPos ) const
void ImplPointArray::ImplCreatePoly( Polygon& rPoly ) const
{
- rPoly.SetSize( (USHORT) mnRealSize );
- HMEMCPY( rPoly.ImplGetPointAry(), mpArray, mnRealSize * sizeof( Point ) );
+ rPoly = Polygon( mnRealSize, mpArray );
}
// ---------------
diff --git a/vcl/source/gdi/makefile.mk b/vcl/source/gdi/makefile.mk
index f8824c041071..33b641076651 100644
--- a/vcl/source/gdi/makefile.mk
+++ b/vcl/source/gdi/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.13 $
+# $Revision: 1.14 $
#
-# last change: $Author: vg $ $Date: 2002-08-22 12:47:16 $
+# last change: $Author: hr $ $Date: 2003-03-27 17:57:58 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -109,7 +109,6 @@ SLOFILES= $(SLO)$/salmisc.obj \
$(SLO)$/impvect.obj \
$(SLO)$/implncvt.obj \
$(SLO)$/jobset.obj \
- $(SLO)$/line.obj \
$(SLO)$/lineinfo.obj \
$(SLO)$/mapmod.obj \
$(SLO)$/metaact.obj \
@@ -123,8 +122,6 @@ SLOFILES= $(SLO)$/salmisc.obj \
$(SLO)$/outdev5.obj \
$(SLO)$/outdev6.obj \
$(SLO)$/fontcvt.obj \
- $(SLO)$/poly.obj \
- $(SLO)$/poly2.obj \
$(SLO)$/print.obj \
$(SLO)$/print2.obj \
$(SLO)$/regband.obj \
@@ -135,7 +132,8 @@ SLOFILES= $(SLO)$/salmisc.obj \
$(SLO)$/fontcfg.obj \
$(SLO)$/base14.obj \
$(SLO)$/pdfwriter.obj \
- $(SLO)$/pdfwriter_impl.obj
+ $(SLO)$/pdfwriter_impl.obj\
+ $(SLO)$/bmpconv.obj
.IF "$(remote)"==""
SLOFILES += $(SLO)$/salgdilayout.obj
@@ -154,7 +152,6 @@ EXCEPTIONSFILES= $(SLO)$/bitmap.obj \
$(SLO)$/outdev.obj \
$(SLO)$/outdev3.obj \
$(SLO)$/outdev6.obj \
- $(SLO)$/poly.obj \
$(SLO)$/print.obj \
$(SLO)$/print2.obj \
$(SLO)$/virdev.obj
@@ -162,9 +159,9 @@ EXCEPTIONSFILES= $(SLO)$/bitmap.obj \
.ELSE
EXCEPTIONSFILES= $(SLO)$/outdev.obj \
$(SLO)$/gfxlink.obj \
- $(SLO)$/poly.obj \
$(SLO)$/print.obj \
- $(SLO)$/impgraph.obj
+ $(SLO)$/impgraph.obj \
+ $(SLO)$/bmpconv.obj
.ENDIF
# --- Targets ------------------------------------------------------
diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx
index 994c4afde0ff..4530c5aa2195 100644
--- a/vcl/source/gdi/metaact.cxx
+++ b/vcl/source/gdi/metaact.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: metaact.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: sj $ $Date: 2002-10-25 12:30:49 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:58 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -62,6 +62,7 @@
#define _SV_METAACT_CXX
#define ENABLE_BYTESTRING_STREAM_OPERATORS
+#include <algorithm>
#include <string.h>
#ifndef _STREAM_HXX
@@ -1464,7 +1465,9 @@ void MetaTextArrayAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
if( nAryLen )
{
- mpDXAry = new long[ nAryLen ];
+ // #i9762#, #106172# Ensure that DX array is at least mnLen entries long
+ const ULONG nIntAryLen( ::std::max(nAryLen, static_cast<ULONG>(mnLen)) );
+ mpDXAry = new long[ nIntAryLen ];
for( ULONG i = 0UL; i < nAryLen; i++ )
rIStm >> mpDXAry[ i ];
diff --git a/vcl/source/gdi/opengl.cxx b/vcl/source/gdi/opengl.cxx
index 930aeed7cd78..9d7e58fcaebe 100644
--- a/vcl/source/gdi/opengl.cxx
+++ b/vcl/source/gdi/opengl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: opengl.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: pl $ $Date: 2002-03-15 17:10:25 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -76,6 +76,10 @@
#ifndef _SV_OPENGL_HXX
#include <opengl.hxx>
#endif
+#ifndef _SV_SALGDI_HXX
+#include <salgdi.hxx>
+#endif
+
#include <svapp.hxx>
#include <vos/mutex.hxx>
@@ -616,6 +620,14 @@ void OpenGL::Viewport( GLint nX, GLint nY, GLsizei nWidth, GLsizei nHeight )
mpOGL->OGLEntry( PGRAPHICS );
+ // --- RTL --- mirror viewport coordinates
+ if( mpOutDev->ImplHasMirroredGraphics() )
+ {
+ long lx = nX + mpOutDev->mnOutOffX;
+ long lwidth = nWidth;
+ ((SalGraphicsLayout*)mpOutDev->mpGraphics)->mirror( lx, lwidth, mpOutDev );
+ nX = lx - mpOutDev->mnOutOffX;
+ }
pImplOpenGLFncViewport( nX + mpOutDev->mnOutOffX,
nOutHeight - nY - nHeight - mpOutDev->mnOutOffY,
nWidth, nHeight );
@@ -1505,6 +1517,15 @@ void OpenGL::Scissor( GLint nX, GLint nY, GLsizei nWidth, GLsizei nHeight )
nOutHeight = mpOutDev->mnOutHeight;
mpOGL->OGLEntry( PGRAPHICS );
+
+ // --- RTL --- mirror scissor coordinates
+ if( mpOutDev->ImplHasMirroredGraphics() )
+ {
+ long lx = nX + mpOutDev->mnOutOffX;
+ long lwidth = nWidth;
+ ((SalGraphicsLayout*)mpOutDev->mpGraphics)->mirror( lx, lwidth, mpOutDev );
+ nX = lx - mpOutDev->mnOutOffX;
+ }
pImplOpenGLFncScissor( nX + mpOutDev->mnOutOffX,
nOutHeight - nY - nHeight - mpOutDev->mnOutOffY,
nWidth, nHeight );
diff --git a/vcl/source/gdi/outdev.cxx b/vcl/source/gdi/outdev.cxx
index 1cff4ec9edfd..16a9493de6a0 100644
--- a/vcl/source/gdi/outdev.cxx
+++ b/vcl/source/gdi/outdev.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outdev.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: thb $ $Date: 2002-11-19 18:22:29 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -98,11 +98,8 @@
#ifndef _SV_SVAPP_HXX
#include <svapp.hxx>
#endif
-#ifndef _SV_POLY_H
-#include <poly.h>
-#endif
-#ifndef _SV_POLY_HXX
-#include <poly.hxx>
+#ifndef _POLY_HXX
+#include <tools/poly.hxx>
#endif
#ifndef _SV_REGION_HXX
#include <region.hxx>
@@ -339,8 +336,8 @@ void OutputDevice::ImplDrawPolyPolygon( USHORT nPoly, const PolyPolygon& rPolyPo
if ( nSize )
{
pPointAry[i] = nSize;
- pPointAryAry[i] = (PCONSTSALPOINT)rPoly.ImplGetConstPointAry();
- pFlagAryAry[i] = rPoly.ImplGetConstFlagAry();
+ pPointAryAry[i] = (PCONSTSALPOINT)rPoly.GetConstPointAry();
+ pFlagAryAry[i] = rPoly.GetConstFlagAry();
last = i;
if( pFlagAryAry[i] )
@@ -361,7 +358,7 @@ void OutputDevice::ImplDrawPolyPolygon( USHORT nPoly, const PolyPolygon& rPolyPo
if( !mpGraphics->DrawPolygonBezier( *pPointAry, *pPointAryAry, *pFlagAryAry, this ) )
{
Polygon aPoly = ImplSubdivideBezier( rPolyPoly.GetObject( last ) );
- mpGraphics->DrawPolygon( aPoly.GetSize(), (const SalPoint*)aPoly.ImplGetConstPointAry(), this );
+ mpGraphics->DrawPolygon( aPoly.GetSize(), (const SalPoint*)aPoly.GetConstPointAry(), this );
}
}
else
@@ -436,6 +433,7 @@ OutputDevice::OutputDevice() :
mnDrawMode = 0;
mnTextLayoutMode = 0;
meOutDevType = OUTDEV_DONTKNOW;
+ meOutDevViewType = OUTDEV_VIEWTYPE_DONTKNOW;
mbMap = FALSE;
mbMapIsDefault = TRUE;
mbClipRegion = FALSE;
@@ -526,6 +524,21 @@ OutputDevice::~OutputDevice()
// -----------------------------------------------------------------------
+void OutputDevice::EnableRTL( BOOL bEnable )
+{
+ mbEnableRTL = (bEnable != 0);
+ if( meOutDevType == OUTDEV_VIRDEV )
+ {
+ // virdevs default to not mirroring, they will only be set to mirroring
+ // under rare circumstances in the UI, eg the valueset control
+ // because each virdev has its own SalGraphics we can safely switch the SalGraphics here
+ // ...hopefully
+ if( Application::GetSettings().GetLayoutRTL() ) // allow mirroring only in BiDi Office
+ if( ImplGetGraphics() )
+ mpGraphics->SetLayout( mbEnableRTL ? SAL_LAYOUT_BIDI_RTL : 0 );
+ }
+}
+
BOOL OutputDevice::ImplHasMirroredGraphics()
{
#ifndef REMOTE_APPSERVER
@@ -818,17 +831,33 @@ void OutputDevice::ImplInitOutDevData()
{
mpOutDevData = new ImplOutDevData;
mpOutDevData->mpRotateDev = NULL;
+ mpOutDevData->mpRecordLayout = NULL;
+ mpOutDevData->mpFirstFontSubstEntry = NULL;
}
}
// -----------------------------------------------------------------------
+BOOL OutputDevice::ImplIsRecordLayout() const
+{
+ return mpOutDevData && mpOutDevData->mpRecordLayout;
+}
+
+// -----------------------------------------------------------------------
+
void OutputDevice::ImplDeInitOutDevData()
{
if ( mpOutDevData )
{
if ( mpOutDevData->mpRotateDev )
delete mpOutDevData->mpRotateDev;
+ ImplFontSubstEntry* pEntry = mpOutDevData->mpFirstFontSubstEntry;
+ while( pEntry )
+ {
+ ImplFontSubstEntry* pNext = pEntry->mpNext;
+ delete pEntry;
+ pEntry = pNext;
+ }
delete mpOutDevData;
}
}
@@ -1193,7 +1222,7 @@ void OutputDevice::SetLineColor( const Color& rColor )
}
else if( mnDrawMode & DRAWMODE_SETTINGSLINE )
{
- aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ aColor = GetSettings().GetStyleSettings().GetFontColor();
}
if( mnDrawMode & DRAWMODE_GHOSTEDLINE )
@@ -1379,7 +1408,7 @@ void OutputDevice::DrawLine( const Point& rStartPt, const Point& rEndPt )
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaLineAction( rStartPt, rEndPt ) );
- if ( !IsDeviceOutputNecessary() || !mbLineColor )
+ if ( !IsDeviceOutputNecessary() || !mbLineColor || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1430,7 +1459,7 @@ void OutputDevice::DrawLine( const Point& rStartPt, const Point& rEndPt,
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaLineAction( rStartPt, rEndPt, rLineInfo ) );
- if ( !IsDeviceOutputNecessary() || !mbLineColor || ( LINE_NONE == rLineInfo.GetStyle() ) )
+ if ( !IsDeviceOutputNecessary() || !mbLineColor || ( LINE_NONE == rLineInfo.GetStyle() ) || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1465,7 +1494,7 @@ void OutputDevice::DrawLine( const Point& rStartPt, const Point& rEndPt,
ImplInitFillColor();
for( const Polygon* pPoly = aLineCvt.ImplGetFirst(); pPoly; pPoly = aLineCvt.ImplGetNext() )
- mpGraphics->DrawPolygon( pPoly->GetSize(), (const SalPoint*) pPoly->ImplGetConstPointAry(), this );
+ mpGraphics->DrawPolygon( pPoly->GetSize(), (const SalPoint*) pPoly->GetConstPointAry(), this );
SetFillColor( aOldFillColor );
SetLineColor( aOldLineColor );
@@ -1557,7 +1586,7 @@ void OutputDevice::DrawRect( const Rectangle& rRect )
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaRectAction( rRect ) );
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || ImplIsRecordLayout() )
return;
Rectangle aRect( ImplLogicToDevicePixel( rRect ) );
@@ -1610,7 +1639,7 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly )
USHORT nPoints = rPoly.GetSize();
- if ( !IsDeviceOutputNecessary() || !mbLineColor || (nPoints < 2) )
+ if ( !IsDeviceOutputNecessary() || !mbLineColor || (nPoints < 2) || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1630,16 +1659,16 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly )
ImplInitLineColor();
Polygon aPoly = ImplLogicToDevicePixel( rPoly );
- const SalPoint* pPtAry = (const SalPoint*)aPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aPoly.GetConstPointAry();
// #100127# Forward beziers to sal, if any
if( aPoly.HasFlags() )
{
- const BYTE* pFlgAry = aPoly.ImplGetConstFlagAry();
+ const BYTE* pFlgAry = aPoly.GetConstFlagAry();
if( !mpGraphics->DrawPolyLineBezier( nPoints, pPtAry, pFlgAry, this ) )
{
aPoly = ImplSubdivideBezier(aPoly);
- pPtAry = (const SalPoint*)aPoly.ImplGetConstPointAry();
+ pPtAry = (const SalPoint*)aPoly.GetConstPointAry();
mpGraphics->DrawPolyLine( aPoly.GetSize(), pPtAry, this );
}
}
@@ -1684,7 +1713,7 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly, const LineInfo& rLineInfo
USHORT nPoints = rPoly.GetSize();
- if ( !IsDeviceOutputNecessary() || !mbLineColor || ( nPoints < 2 ) || ( LINE_NONE == rLineInfo.GetStyle() ) )
+ if ( !IsDeviceOutputNecessary() || !mbLineColor || ( nPoints < 2 ) || ( LINE_NONE == rLineInfo.GetStyle() ) || ImplIsRecordLayout() )
return;
Polygon aPoly = ImplLogicToDevicePixel( rPoly );
@@ -1723,7 +1752,7 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly, const LineInfo& rLineInfo
ImplInitFillColor();
for( const Polygon* pPoly = aLineCvt.ImplGetFirst(); pPoly; pPoly = aLineCvt.ImplGetNext() )
- mpGraphics->DrawPolygon( pPoly->GetSize(), (const SalPoint*) pPoly->ImplGetConstPointAry(), this );
+ mpGraphics->DrawPolygon( pPoly->GetSize(), (const SalPoint*) pPoly->GetConstPointAry(), this );
SetLineColor( aOldLineColor );
SetFillColor( aOldFillColor );
@@ -1737,10 +1766,10 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly, const LineInfo& rLineInfo
{
ImplLineConverter aLineCvt( aPoly, aInfo, ( mbRefPoint ) ? &maRefPoint : NULL );
for( const Polygon* pPoly = aLineCvt.ImplGetFirst(); pPoly; pPoly = aLineCvt.ImplGetNext() )
- mpGraphics->DrawPolyLine( pPoly->GetSize(), (const SalPoint*)pPoly->ImplGetConstPointAry(), this );
+ mpGraphics->DrawPolyLine( pPoly->GetSize(), (const SalPoint*)pPoly->GetConstPointAry(), this );
}
else
- mpGraphics->DrawPolyLine( nPoints, (const SalPoint*) aPoly.ImplGetConstPointAry(), this );
+ mpGraphics->DrawPolyLine( nPoints, (const SalPoint*) aPoly.GetConstPointAry(), this );
}
#else
ImplServerGraphics* pGraphics = ImplGetServerGraphics();
@@ -1799,7 +1828,7 @@ void OutputDevice::DrawPolygon( const Polygon& rPoly )
USHORT nPoints = rPoly.GetSize();
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || (nPoints < 2) )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || (nPoints < 2) || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1821,16 +1850,16 @@ void OutputDevice::DrawPolygon( const Polygon& rPoly )
ImplInitFillColor();
Polygon aPoly = ImplLogicToDevicePixel( rPoly );
- const SalPoint* pPtAry = (const SalPoint*)aPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aPoly.GetConstPointAry();
// #100127# Forward beziers to sal, if any
if( aPoly.HasFlags() )
{
- const BYTE* pFlgAry = aPoly.ImplGetConstFlagAry();
+ const BYTE* pFlgAry = aPoly.GetConstFlagAry();
if( !mpGraphics->DrawPolygonBezier( nPoints, pPtAry, pFlgAry, this ) )
{
aPoly = ImplSubdivideBezier(aPoly);
- pPtAry = (const SalPoint*)aPoly.ImplGetConstPointAry();
+ pPtAry = (const SalPoint*)aPoly.GetConstPointAry();
mpGraphics->DrawPolygon( aPoly.GetSize(), pPtAry, this );
}
}
@@ -1871,7 +1900,7 @@ void OutputDevice::DrawPolyPolygon( const PolyPolygon& rPolyPoly )
USHORT nPoly = rPolyPoly.Count();
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || !nPoly )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || !nPoly || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
diff --git a/vcl/source/gdi/outdev2.cxx b/vcl/source/gdi/outdev2.cxx
index 27203e09ba5a..ae59b229ac51 100644
--- a/vcl/source/gdi/outdev2.cxx
+++ b/vcl/source/gdi/outdev2.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outdev2.cxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: thb $ $Date: 2002-11-15 10:48:09 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -342,6 +342,9 @@ void OutputDevice::DrawOutDev( const Point& rDestPt, const Size& rDestSize,
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
DBG_ASSERT( meOutDevType != OUTDEV_PRINTER, "Don't use OutputDevice::DrawOutDev(...) with printer devices!" );
+ if( ImplIsRecordLayout() )
+ return;
+
if ( meOutDevType == OUTDEV_PRINTER )
return;
@@ -412,7 +415,7 @@ void OutputDevice::DrawOutDev( const Point& rDestPt, const Size& rDestSize,
DBG_ASSERT( meOutDevType != OUTDEV_PRINTER, "Don't use OutputDevice::DrawOutDev(...) with printer devices!" );
DBG_ASSERT( rOutDev.meOutDevType != OUTDEV_PRINTER, "Don't use OutputDevice::DrawOutDev(...) with printer devices!" );
- if ( (meOutDevType == OUTDEV_PRINTER) || (rOutDev.meOutDevType == OUTDEV_PRINTER) )
+ if ( (meOutDevType == OUTDEV_PRINTER) || (rOutDev.meOutDevType == OUTDEV_PRINTER) || ImplIsRecordLayout() )
return;
if ( ROP_INVERT == meRasterOp )
@@ -452,7 +455,7 @@ void OutputDevice::CopyArea( const Point& rDestPt,
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
DBG_ASSERT( meOutDevType != OUTDEV_PRINTER, "Don't use OutputDevice::CopyArea(...) with printer devices!" );
- if ( meOutDevType == OUTDEV_PRINTER )
+ if ( meOutDevType == OUTDEV_PRINTER || ImplIsRecordLayout() )
return;
RasterOp eOldRop = GetRasterOp();
@@ -596,6 +599,10 @@ void OutputDevice::ImplGetFrameDev( const Point& rPt, const Point& rDevPt, const
void OutputDevice::DrawBitmap( const Point& rDestPt, const Bitmap& rBitmap )
{
DBG_TRACE( "OutputDevice::DrawBitmap()" );
+
+ if( ImplIsRecordLayout() )
+ return;
+
const Size aSizePix( rBitmap.GetSizePixel() );
ImplDrawBitmap( rDestPt, PixelToLogic( aSizePix ), Point(), aSizePix, rBitmap, META_BMP_ACTION );
}
@@ -605,6 +612,10 @@ void OutputDevice::DrawBitmap( const Point& rDestPt, const Bitmap& rBitmap )
void OutputDevice::DrawBitmap( const Point& rDestPt, const Size& rDestSize, const Bitmap& rBitmap )
{
DBG_TRACE( "OutputDevice::DrawBitmap( Size )" );
+
+ if( ImplIsRecordLayout() )
+ return;
+
ImplDrawBitmap( rDestPt, rDestSize, Point(), rBitmap.GetSizePixel(), rBitmap, META_BMPSCALE_ACTION );
}
@@ -615,6 +626,10 @@ void OutputDevice::DrawBitmap( const Point& rDestPt, const Size& rDestSize,
const Bitmap& rBitmap )
{
DBG_TRACE( "OutputDevice::DrawBitmap( Point, Size )" );
+
+ if( ImplIsRecordLayout() )
+ return;
+
ImplDrawBitmap( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmap, META_BMPSCALEPART_ACTION );
}
@@ -726,6 +741,9 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt,
{
DBG_TRACE( "OutputDevice::DrawBitmapEx()" );
+ if( ImplIsRecordLayout() )
+ return;
+
if( TRANSPARENT_NONE == rBitmapEx.GetTransparentType() )
DrawBitmap( rDestPt, rBitmapEx.GetBitmap() );
else
@@ -742,6 +760,9 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
{
DBG_TRACE( "OutputDevice::DrawBitmapEx( Size )" );
+ if( ImplIsRecordLayout() )
+ return;
+
if ( TRANSPARENT_NONE == rBitmapEx.GetTransparentType() )
DrawBitmap( rDestPt, rDestSize, rBitmapEx.GetBitmap() );
else
@@ -756,6 +777,9 @@ void OutputDevice::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
{
DBG_TRACE( "OutputDevice::DrawBitmapEx( Point, Size )" );
+ if( ImplIsRecordLayout() )
+ return;
+
if( TRANSPARENT_NONE == rBitmapEx.GetTransparentType() )
DrawBitmap( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmapEx.GetBitmap() );
else
@@ -897,6 +921,10 @@ void OutputDevice::DrawMask( const Point& rDestPt,
const Bitmap& rBitmap, const Color& rMaskColor )
{
DBG_TRACE( "OutputDevice::DrawMask()" );
+
+ if( ImplIsRecordLayout() )
+ return;
+
const Size aSizePix( rBitmap.GetSizePixel() );
ImplDrawMask( rDestPt, PixelToLogic( aSizePix ), Point(), aSizePix, rBitmap, rMaskColor, META_MASK_ACTION );
}
@@ -907,6 +935,10 @@ void OutputDevice::DrawMask( const Point& rDestPt, const Size& rDestSize,
const Bitmap& rBitmap, const Color& rMaskColor )
{
DBG_TRACE( "OutputDevice::DrawMask( Size )" );
+
+ if( ImplIsRecordLayout() )
+ return;
+
ImplDrawMask( rDestPt, rDestSize, Point(), rBitmap.GetSizePixel(), rBitmap, rMaskColor, META_MASKSCALE_ACTION );
}
@@ -917,6 +949,10 @@ void OutputDevice::DrawMask( const Point& rDestPt, const Size& rDestSize,
const Bitmap& rBitmap, const Color& rMaskColor )
{
DBG_TRACE( "OutputDevice::DrawMask( Point, Size )" );
+
+ if( ImplIsRecordLayout() )
+ return;
+
ImplDrawMask( rDestPt, rDestSize, rSrcPtPixel, rSrcSizePixel, rBitmap, rMaskColor, META_MASKSCALEPART_ACTION );
}
@@ -1239,7 +1275,7 @@ void OutputDevice::DrawPixel( const Point& rPt )
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaPointAction( rPt ) );
- if ( !IsDeviceOutputNecessary() || !mbLineColor )
+ if ( !IsDeviceOutputNecessary() || !mbLineColor || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1302,7 +1338,7 @@ void OutputDevice::DrawPixel( const Point& rPt, const Color& rColor )
}
else if( mnDrawMode & DRAWMODE_SETTINGSLINE )
{
- aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ aColor = GetSettings().GetStyleSettings().GetFontColor();
}
if( mnDrawMode & DRAWMODE_GHOSTEDLINE )
@@ -1317,7 +1353,7 @@ void OutputDevice::DrawPixel( const Point& rPt, const Color& rColor )
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaPixelAction( rPt, aColor ) );
- if ( !IsDeviceOutputNecessary() || ImplIsColorTransparent( aColor ) )
+ if ( !IsDeviceOutputNecessary() || ImplIsColorTransparent( aColor ) || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1363,7 +1399,7 @@ void OutputDevice::DrawPixel( const Polygon& rPts, const Color* pColors )
for ( USHORT i = 0; i < nSize; i++ )
mpMetaFile->AddAction( new MetaPixelAction( rPts[ i ], pColors[ i ] ) );
- if ( !IsDeviceOutputNecessary() )
+ if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -1397,7 +1433,7 @@ void OutputDevice::DrawPixel( const Polygon& rPts, const Color* pColors )
void OutputDevice::DrawPixel( const Polygon& rPts, const Color& rColor )
{
- if( rColor != COL_TRANSPARENT )
+ if( rColor != COL_TRANSPARENT && ! ImplIsRecordLayout() )
{
const USHORT nSize = rPts.GetSize();
Color* pColArray = new Color[ nSize ];
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 9afbe256fefe..991a03c269c4 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outdev3.cxx,v $
*
- * $Revision: 1.142 $
+ * $Revision: 1.143 $
*
- * last change: $Author: hdu $ $Date: 2002-12-12 18:07:00 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:57:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -157,6 +157,9 @@
#ifndef _VCL_PDFWRITER_IMPL_HXX
#include <pdfwriter_impl.hxx>
#endif
+#ifndef _VCL_CONTROLLAYOUT_HXX
+#include <controllayout.hxx>
+#endif
#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HDL_
#include <com/sun/star/beans/PropertyValues.hdl>
@@ -311,7 +314,21 @@ void OutputDevice::ImplUpdateFontData( BOOL bNewFontLists )
mpFontCache = new ImplFontCache( FALSE );
}
else
+ {
+ if( mpOutDevData )
+ {
+ ImplFontSubstEntry* pEntry = mpOutDevData->mpFirstFontSubstEntry;
+ while( pEntry )
+ {
+ ImplFontSubstEntry* pNext = pEntry->mpNext;
+ delete pEntry;
+ pEntry = pNext;
+ }
+ mpOutDevData->mpFirstFontSubstEntry = NULL;
+ }
mpGraphics->GetDevFontList( mpFontList );
+ mpGraphics->GetDevFontSubstList( this );
+ }
}
}
}
@@ -431,6 +448,47 @@ static sal_Unicode const aMSPMincho[] = { 'm', 's', 'p', 0x660E, 0x671D, 0, 0 };
static sal_Unicode const aHGMinchoL[] = { 'h', 'g', 0x660E, 0x671D, 'l', 0, 0 };
static sal_Unicode const aHGGothicB[] = { 'h', 'g', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 0, 0 };
static sal_Unicode const aHGHeiseiMin[] = { 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 0, 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 'w', '3', 'x', '1', '2', 0, 0 };
+static sal_Unicode const aSunDotum[] = { 0xC36C, 0xB3CB, 0xC6C0, 0, 0 };
+static sal_Unicode const aSunGulim[] = { 0xC36C, 0xAD74, 0xB9BC, 0, 0 };
+static sal_Unicode const aSunBatang[] = { 0xC36C, 0xBC14, 0xD0D5, 0, 0 };
+static sal_Unicode const aFzHeiTi[] = { 0x65B9, 0x6B63, 0x9ED1, 0x9AD4, 0, 0 };
+static sal_Unicode const aFzMingTi[] = { 0x65B9, 0x6B63, 0x660E, 0x9AD4, 0, 0 };
+static sal_Unicode const aFzSongTi[] = { 0x65B9, 0x6B63, 0x5B8B, 0x4F53, 0, 0 };
+
+static sal_Unicode const aHYMyeongJoExtra[] = { 'h', 'y', 0xACAC, 0xBA85, 0xC870, 0, 0 };
+static sal_Unicode const aHYSinMyeongJoMedium[] = { 'h', 'y', 0xC2E0, 0xBA85, 0xC870, 0, 0 };
+static sal_Unicode const aHYGothicMedium[] = { 'h', 'y', 0xC911, 0xACE0, 0xB515, 0, 0 };
+static sal_Unicode const aHYGraphicMedium[] = { 'h', 'y', 0xADF8, 0xB798, 0xD53D, 'm', 0, 0 };
+static sal_Unicode const aHYGraphic[] = { 'h', 'y', 0xADF8, 0xB798, 0xD53D, 0, 0 };
+static sal_Unicode const aNewGulim[] = { 0xC0C8, 0xAD74, 0xB9BC, 0, 0 };
+static sal_Unicode const aSunGungseo[] = { 0xC36C, 0xAD81, 0xC11C, 0, 0 };
+static sal_Unicode const aHYGungSoBold[] = { 'h','y', 0xAD81, 0xC11C, 'b', 0, 0 };
+static sal_Unicode const aHYGungSo[] = { 'h','y', 0xAD81, 0xC11C, 0, 0 };
+static sal_Unicode const aSunHeadLine[] = { 0xC36C, 0xD5E4, 0xB4DC, 0xB77C, 0xC778, 0, 0 };
+static sal_Unicode const aHYHeadLineMedium[] = { 'h', 'y', 0xD5E4, 0xB4DC, 0xB77C, 0xC778, 'm', 0, 0 };
+static sal_Unicode const aHYHeadLine[] = { 'h', 'y', 0xD5E4, 0xB4DC, 0xB77C, 0xC778, 0, 0 };
+static sal_Unicode const aYetR[] = { 0xD734, 0xBA3C, 0xC61B, 0xCCB4, 0, 0 };
+static sal_Unicode const aHYGothicExtra[] = { 'h', 'y', 0xACAC, 0xACE0, 0xB515, 0, 0 };
+static sal_Unicode const aSunMokPan[] = { 0xC36C, 0xBAA9, 0xD310, 0, 0 };
+static sal_Unicode const aSunYeopseo[] = { 0xC36C, 0xC5FD, 0xC11C, 0, 0 };
+static sal_Unicode const aHYPostLight[] = { 'h', 'y', 0xC5FD, 0xC11C, 'l', 0, 0 };
+static sal_Unicode const aHYPost[] = { 'h', 'y', 0xC5FD, 0xC11C, 0, 0 };
+static sal_Unicode const aMagicR[] = { 0xD734, 0xBA3C, 0xB9E4, 0xC9C1, 0xCCB4, 0, 0 };
+static sal_Unicode const aSunCrystal[] = { 0xC36C, 0xD06C, 0xB9AC, 0xC2A4, 0xD0C8, 0, 0 };
+static sal_Unicode const aSunSaemmul[] = { 0xC36C, 0xC0D8, 0xBB3C, 0, 0 };
+static sal_Unicode const aHYShortSamulMedium[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 'm', 0, 0 };
+static sal_Unicode const aHYShortSamul[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 0, 0 };
+static sal_Unicode const aHaansoftBatang[] = { 0xD55C, 0xCEF4, 0xBC14, 0xD0D5, 0, 0 };
+static sal_Unicode const aHaansoftDotum[] = { 0xD55C, 0xCEF4, 0xB3CB, 0xC6C0, 0, 0 };
+static sal_Unicode const aHyhaeseo[] = { 0xD55C, 0xC591, 0xD574, 0xC11C, 0, 0 };
+static sal_Unicode const aMDSol[] = { 'm', 'd', 0xC194, 0xCCB4, 0, 0 };
+static sal_Unicode const aMDGaesung[] = { 'm', 'd', 0xAC1C, 0xC131, 0xCCB4, 0, 0 };
+static sal_Unicode const aMDArt[] = { 'm', 'd', 0xC544, 0xD2B8, 0xCCB4, 0, 0 };
+static sal_Unicode const aMDAlong[] = { 'm', 'd', 0xC544, 0xB871, 0xCCB4, 0, 0 };
+static sal_Unicode const aMDEasop[] = { 'm', 'd', 0xC774, 0xC19D, 0xCCB4, 0, 0 };
+static sal_Unicode const HYShortSamulMedium[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 'm', 0, 0 };
+static sal_Unicode const HYShortSamul[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 0, 0 };
+
static ImplLocaliziedFontName const aImplLocaliziedNamesList[] =
{
@@ -470,6 +528,45 @@ static ImplLocaliziedFontName const aImplLocaliziedNamesList[] =
{ "hgminchol", aHGMinchoL },
{ "hggothicb", aHGGothicB },
{ "hgheiseimin", aHGHeiseiMin },
+{ "sundotum", aSunDotum },
+{ "sungulim", aSunGulim },
+{ "sunbatang", aSunBatang },
+{ "fzheiti", aFzHeiTi },
+{ "fzmingti", aFzMingTi },
+{ "fzsongti", aFzSongTi },
+{ "hymyeongjoextra", aHYMyeongJoExtra },
+{ "hysinmyeongjomedium", aHYSinMyeongJoMedium },
+{ "hygothicmedium", aHYGothicMedium },
+{ "hygraphicmedium", aHYGraphicMedium },
+{ "hygraphic", aHYGraphic },
+{ "newgulim", aNewGulim },
+{ "sungungseo", aSunGungseo },
+{ "hygungsobold", aHYGungSoBold },
+{ "hygungso", aHYGungSo },
+{ "sunheadline", aSunHeadLine },
+{ "hyheadlinemedium", aHYHeadLineMedium },
+{ "hyheadline", aHYHeadLine },
+{ "yetr", aYetR },
+{ "hygothicextra", aHYGothicExtra },
+{ "sunmokpan", aSunMokPan },
+{ "sunyeopseo", aSunYeopseo },
+{ "hypostlight", aHYPostLight },
+{ "hypost", aHYPost },
+{ "magicr", aMagicR },
+{ "suncrystal", aSunCrystal },
+{ "sunsaemmul", aSunSaemmul },
+{ "hyshortsamulmedium", aHYShortSamulMedium },
+{ "hyshortsamul", aHYShortSamul },
+{ "haansoftbatang", aHaansoftBatang },
+{ "haansoftdotum", aHaansoftDotum },
+{ "hyhaeseo", aHyhaeseo },
+{ "mdsol", aMDSol },
+{ "mdgaesung", aMDGaesung },
+{ "mdart", aMDArt },
+{ "mdalong", aMDAlong },
+{ "mdeasop", aMDEasop },
+{ "hyshortsamulmedium", HYShortSamulMedium },
+{ "hyshortsamul", HYShortSamul },
{ NULL, NULL },
};
@@ -595,11 +692,11 @@ String GetFontToken( const String& rStr, xub_StrLen nToken, xub_StrLen& rIndex )
xub_StrLen nFirstChar = rIndex;
xub_StrLen i = nFirstChar;
- // Bestimme die Token-Position und Laenge
+ // get the token position and it's length
pStr += i;
while ( i < nLen )
{
- // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
+ // increase TokCount when the token matches
if ( (*pStr == ';') || (*pStr == ',') )
{
nTok++;
@@ -649,55 +746,6 @@ static int ImplStrMatchCompare( const String& rStr1, const char* pStr2 )
return *pStr1-((xub_Unicode)(unsigned char)*pStr2);
}
-// -----------------------------------------------------------------------
-#if 0
-static const ImplFontNameAttr* ImplGetFontNameAttr( const String& rName )
-{
-#if 0
-#ifdef DEBUG
- static bool bOnce = false;
- if( ! bOnce )
- {
- bOnce = true;
- writeFontNameList();
- }
-#endif
-#endif
- int nCount = sizeof( aImplFontNameList ) / sizeof( ImplFontNameAttr );
- for( int nLower = 0, nUpper = nCount-1; nLower <= nUpper; )
- {
- long nMid = (nUpper + nLower) >> 1;
- int nComp = ImplStrMatchCompare( rName, aImplFontNameList[nMid].mpName );
- if ( !nComp )
- {
- // Find shortest match
- while ( nMid &&
- (ImplStrMatchCompare( rName, aImplFontNameList[nMid-1].mpName ) == 0) )
- nMid--;
- return &(aImplFontNameList[nMid]);
- }
- else if ( nComp < 0 )
- nUpper = nMid-1;
- else /* ( nComp > 0 ) */
- nLower = nMid+1;
- }
-
- return NULL;
-}
-#endif
-
-// =======================================================================
-
-struct ImplFontSubstEntry
-{
- String maName;
- String maReplaceName;
- String maSearchName;
- String maSearchReplaceName;
- USHORT mnFlags;
- ImplFontSubstEntry* mpNext;
-};
-
// =======================================================================
void ImplFreeOutDevFontData()
@@ -761,14 +809,36 @@ void OutputDevice::AddFontSubstitute( const XubString& rFontName,
// -----------------------------------------------------------------------
+void OutputDevice::ImplAddDevFontSubstitute( const XubString& rFontName,
+ const XubString& rReplaceFontName,
+ USHORT nFlags )
+{
+ ImplInitOutDevData();
+
+ ImplFontSubstEntry* pEntry = new ImplFontSubstEntry;
+
+ pEntry->maName = rFontName;
+ pEntry->maReplaceName = rReplaceFontName;
+ pEntry->maSearchName = rFontName;
+ pEntry->maSearchReplaceName = rReplaceFontName;
+ pEntry->mnFlags = nFlags;
+ pEntry->mpNext = mpOutDevData->mpFirstFontSubstEntry;
+ ImplGetEnglishSearchFontName( pEntry->maSearchName );
+ ImplGetEnglishSearchFontName( pEntry->maSearchReplaceName );
+
+ mpOutDevData->mpFirstFontSubstEntry = pEntry;
+}
+
+// -----------------------------------------------------------------------
+
void OutputDevice::RemoveFontSubstitute( USHORT n )
{
ImplSVData* pSVData = ImplGetSVData();
ImplFontSubstEntry* pEntry = pSVData->maGDIData.mpFirstFontSubst;
ImplFontSubstEntry* pPrev = NULL;
USHORT nCount = 0;
- while ( pEntry )
+ while ( pEntry )
{
if ( nCount == n )
{
@@ -831,7 +901,7 @@ void OutputDevice::GetFontSubstitute( USHORT n,
// -----------------------------------------------------------------------
static BOOL ImplFontSubstitute( XubString& rFontName,
- USHORT nFlags1, USHORT nFlags2 )
+ USHORT nFlags1, USHORT nFlags2, ImplFontSubstEntry* pDevSpecific )
{
#ifdef DBG_UTIL
String aTempName = rFontName;
@@ -839,6 +909,7 @@ static BOOL ImplFontSubstitute( XubString& rFontName,
DBG_ASSERT( aTempName == rFontName, "ImplFontSubstitute() called without a searchname" );
#endif
+ // apply font replacement (eg, from the list in Tools->Options)
ImplSVData* pSVData = ImplGetSVData();
ImplFontSubstEntry* pEntry = pSVData->maGDIData.mpFirstFontSubst;
while ( pEntry )
@@ -852,6 +923,20 @@ static BOOL ImplFontSubstitute( XubString& rFontName,
pEntry = pEntry->mpNext;
}
+ if( pDevSpecific )
+ {
+ pEntry = pDevSpecific;
+ while ( pEntry )
+ {
+ if ( ((pEntry->mnFlags & nFlags1) == nFlags2) &&
+ (pEntry->maSearchName == rFontName) )
+ {
+ rFontName = pEntry->maSearchReplaceName;
+ return TRUE;
+ }
+ pEntry = pEntry->mpNext;
+ }
+ }
return FALSE;
}
@@ -947,8 +1032,13 @@ Font OutputDevice::GetDefaultFont( USHORT nType, LanguageType eLang,
#define FALLBACKFONT_UI_SANS "Andale Sans UI;Tahoma;Arial Unicode MS;Interface User;Geneva;WarpSans;Dialog;Swiss;Lucida;Helvetica;Charcoal;Chicago;Arial;MS Sans Serif;Helv;Times;Times New Roman;Interface System"
#define FALLBACKFONT_UI_SANS_ARABIC "Tahoma;Traditional Arabic;Simplified Arabic;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Interface User;Arial Unicode MS;Lucida Sans Unicode;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Helmet;Interface System;Sans Serif"
#define FALLBACKFONT_UI_SANS_THAI "OONaksit;Tahoma;Lucidasans;Arial Unicode MS"
+ #define FALLBACKFONT_UI_SANS_KOREAN "SunGulim;Gulim;Roundgothic;Arial Unicode MS;Lucida Sans Unicode;Tahoma;Andale Sans UI"
+
+ if( eLang == LANGUAGE_NONE || eLang == LANGUAGE_SYSTEM || eLang == LANGUAGE_DONTKNOW )
+ {
+ eLang = Application::GetSettings().GetUILanguage();
+ }
- Font aFont;
String aSearch( RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS ) );
// optimize font list for some locales, as long as Andale Sans UI does not support them
@@ -977,16 +1067,27 @@ Font OutputDevice::GetDefaultFont( USHORT nType, LanguageType eLang,
case LANGUAGE_THAI:
aSearch = String( RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_THAI ) );
break;
+ case LANGUAGE_KOREAN:
+ case LANGUAGE_KOREAN_JOHAB:
+ {
+ // we need localized names for korean fonts
+ static sal_Unicode const aSunGulim[] = { 0xC36C, 0xAD74, 0xB9BC, 0, 0 };
+ aSearch = String( aSunGulim );
+ aSearch += String( RTL_CONSTASCII_USTRINGPARAM( ";" ) );
+ aSearch += String( RTL_CONSTASCII_USTRINGPARAM( FALLBACKFONT_UI_SANS_KOREAN ) );
+ break;
+ }
default:
break;
}
DefaultFontConfigItem* pDefaults = DefaultFontConfigItem::get();
-
String aDefault = pDefaults->getDefaultFont( eLang, nType );
if( aDefault.Len() )
aSearch = aDefault;
+
+ Font aFont;
switch ( nType )
{
case DEFAULTFONT_SANS_UNICODE:
@@ -1095,10 +1196,9 @@ Font OutputDevice::GetDefaultFont( USHORT nType, LanguageType eLang,
if( (0 == aSize.Width()) && (0 != aFont.GetSize().Width()) )
aSize.Width() = 1;
- ImplFontEntry* pEntry = pOutDev->mpFontCache->Get( pOutDev->mpFontList, aFont, aSize );
- aFont.SetName( pEntry->maFontSelData.maName );
+ ImplFontEntry* pEntry = pOutDev->mpFontCache->Get( pOutDev->mpFontList, aFont, aSize, pOutDev->mpOutDevData ? pOutDev->mpOutDevData->mpFirstFontSubstEntry : NULL );
+ aFont.SetName( pEntry->maFontSelData.maFoundName ); // returns a single name
}
-
}
else
aFont.SetName( aSearch );
@@ -1162,21 +1262,37 @@ String GetSubsFontName( const String& rName, ULONG nFlags )
// =======================================================================
-static BOOL ImplIsCJKFont( const String& rFontName )
+static unsigned ImplIsCJKFont( const String& rFontName )
{
// Test, if Fontname includes CJK characters --> In this case we
// mention that it is a CJK font
const sal_Unicode* pStr = rFontName.GetBuffer();
while ( *pStr )
{
+ // japanese
+ if ( ((*pStr >= 0x3040) && (*pStr <= 0x30FF)) ||
+ ((*pStr >= 0x3190) && (*pStr <= 0x319F)) )
+ return IMPL_FONT_ATTR_CJK|IMPL_FONT_ATTR_CJK_JP;
+
+ // korean
+ if ( ((*pStr >= 0xAC00) && (*pStr <= 0xD7AF)) ||
+ ((*pStr >= 0x3130) && (*pStr <= 0x318F)) ||
+ ((*pStr >= 0x1100) && (*pStr <= 0x11FF)) )
+ return IMPL_FONT_ATTR_CJK|IMPL_FONT_ATTR_CJK_KR;
+
+ // chinese
+ if ( ((*pStr >= 0x3400) && (*pStr <= 0x9FFF)) )
+ return IMPL_FONT_ATTR_CJK|IMPL_FONT_ATTR_CJK_TC|IMPL_FONT_ATTR_CJK_SC;
+
+ // cjk
if ( ((*pStr >= 0x3000) && (*pStr <= 0xD7AF)) ||
((*pStr >= 0xFF00) && (*pStr <= 0xFFEE)) )
- return TRUE;
+ return IMPL_FONT_ATTR_CJK;
pStr++;
}
- return FALSE;
+ return 0;
}
// -----------------------------------------------------------------------
@@ -1218,6 +1334,8 @@ ImplDevFontList::ImplDevFontList() :
{
mbMatchData = FALSE;
mbMapNames = FALSE;
+ mpFallbackList = NULL;
+ mnFallbackCount = -1;
}
// -----------------------------------------------------------------------
@@ -1250,6 +1368,14 @@ void ImplDevFontList::ImplClear()
delete pEntry;
}
+
+ // remove fallback lists
+ delete[] mpFallbackList;
+ mpFallbackList = NULL;
+ mnFallbackCount = -1;
+
+ // match data must be recalculated too
+ mbMatchData = FALSE;
}
// -----------------------------------------------------------------------
@@ -1262,6 +1388,30 @@ void ImplDevFontList::Clear()
// -----------------------------------------------------------------------
+bool ImplDevFontList::HasFallbacks() const
+{
+ return (mnFallbackCount >= 0);
+}
+
+// -----------------------------------------------------------------------
+
+void ImplDevFontList::SetFallbacks( ImplDevFontListData** pList, int nCount )
+{
+ mnFallbackCount = nCount;
+ mpFallbackList = pList;
+}
+
+// -----------------------------------------------------------------------
+
+ImplDevFontListData* ImplDevFontList::GetFallback( int nIndex ) const
+{
+ if( nIndex < mnFallbackCount )
+ return mpFallbackList[ nIndex ];
+ return NULL;
+}
+
+// -----------------------------------------------------------------------
+
static StringCompare ImplCompareFontDataWithoutSize( const ImplFontData* pEntry1,
const ImplFontData* pEntry2 )
{
@@ -1318,7 +1468,7 @@ void ImplDevFontList::Add( ImplFontData* pNewData )
XubString aSearchName = pNewData->maName;
ImplGetEnglishSearchFontName( aSearchName );
- // Add Font
+ // add font
ULONG nIndex;
ImplDevFontListData* pFoundData = ImplFind( aSearchName, &nIndex );
BOOL bInsert = TRUE;
@@ -1369,6 +1519,12 @@ void ImplDevFontList::Add( ImplFontData* pNewData )
(pNewData->meItalic == ITALIC_OBLIQUE) )
pFoundData->mnTypeFaces |= IMPL_DEVFONT_ITALIC;
+ // TODO: is it cheaper to calc match data now or later?
+ if( (pFoundData->meMatchWeight == WEIGHT_DONTKNOW)
+ || (pFoundData->meMatchWidth == WIDTH_DONTKNOW)
+ || (pFoundData->mnMatchType == 0) )
+ mbMatchData = FALSE;
+
// add map/alias names
if ( pNewData->maMapNames.Len() )
{
@@ -1551,8 +1707,7 @@ void ImplDevFontList::InitMatchData()
pTempFontAttr = pFontSubst->getSubstInfo( aTempShortName );
ImplCalcType( pEntry->mnMatchType, pEntry->meMatchWeight, pEntry->meMatchWidth,
pEntry->meFamily, pTempFontAttr );
- if ( ImplIsCJKFont( pEntry->maName ) )
- pEntry->mnMatchType |= IMPL_FONT_ATTR_CJK;
+ pEntry->mnMatchType |= ImplIsCJKFont( pEntry->maName );
pEntry = Next();
}
@@ -1587,8 +1742,7 @@ void ImplGetDevSizeList::Add( long nNewHeight )
ImplFontEntry::~ImplFontEntry()
{
- if ( mpKernPairs )
- delete mpKernPairs;
+ delete[] mpKernPairs;
}
// =======================================================================
@@ -1604,17 +1758,18 @@ ImplFontCache::ImplFontCache( BOOL bPrinter )
ImplFontCache::~ImplFontCache()
{
- for( ImplFontEntry* pEntry = mpFirstEntry, *pNext; pEntry; pEntry = pNext )
+ for( ImplFontEntry* pEntry = mpFirstEntry; pEntry; )
{
- pNext = pEntry->mpNext;
+ ImplFontEntry* pNext = pEntry->mpNext;
delete pEntry;
+ pEntry = pNext;
}
}
// -----------------------------------------------------------------------
ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
- const Font& rFont, const Size& rSize )
+ const Font& rFont, const Size& rSize, ImplFontSubstEntry* pDevSpecific )
{
String aName = rFont.GetName();
const XubString& rStyleName = rFont.GetStyleName();
@@ -1653,7 +1808,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
&& (nHeight == pFontSelData->mnHeight) &&
(eWeight == pFontSelData->meWeight) &&
(eItalic == pFontSelData->meItalic) &&
- (aName == pFontSelData->maName) &&
+ ((aName == pFontSelData->maName) || (aName == pFontSelData->maFoundName)) &&
(rStyleName == pFontSelData->maStyleName) &&
(eFamily == pFontSelData->meFamily) &&
(ePitch == pFontSelData->mePitch) &&
@@ -1666,7 +1821,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
if ( !pEntry->mnRefCount++ )
mnRef0Count--;
- // Entry nach vorne bringen
+ // entry becomes head of list
if ( pPrevEntry )
{
pPrevEntry->mpNext = pEntry->mpNext;
@@ -1702,7 +1857,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
String aToken = GetFontToken( aName, 0, nIndex );
aSearchName = aToken;
ImplGetEnglishSearchFontName( aSearchName );
- ImplFontSubstitute( aSearchName, nSubstFlags1, nSubstFlags2 );
+ ImplFontSubstitute( aSearchName, nSubstFlags1, nSubstFlags2, pDevSpecific );
pFoundData = pFontList->ImplFind( aSearchName );
if( pFoundData )
{
@@ -1730,7 +1885,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
}
else
nIndex = STRING_NOTFOUND;
- ImplFontSubstitute( aSearchName, nSubstFlags1, nSubstFlags2 );
+ ImplFontSubstitute( aSearchName, nSubstFlags1, nSubstFlags2, pDevSpecific );
pFoundData = pFontList->ImplFind( aSearchName );
if( pFoundData )
break;
@@ -1762,14 +1917,16 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
FontSubstConfigItem::getMapName( aSearchName, aSearchShortName, aSearchFamilyName,
eSearchWeight, eSearchWidth, nSearchType );
+ // note: the search name was already translated to english (if possible)
+
// Search, if ShortName is available
if ( aSearchShortName != aSearchName )
{
+#ifdef UNX
/* #96738# don't use mincho as an replacement for "MS Mincho" on X11: Mincho is
a korean bitmap font that is not suitable here. Use the font replacement table,
that automatically leads to the desired "HG Mincho Light J". Same story for
MS Gothic, there are thai and korean "Gothic" fonts, so we even prefer Andale */
-#ifdef UNX
static String aMS_Mincho = String(RTL_CONSTASCII_USTRINGPARAM("msmincho"));
static String aMS_Gothic = String(RTL_CONSTASCII_USTRINGPARAM("msgothic"));
if ((aSearchName != aMS_Mincho) && (aSearchName != aMS_Gothic))
@@ -1778,16 +1935,24 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
}
if ( !pFoundData && aSearchName.Len() )
{
+ // look for substitution tables for the name, shortname and family name in that order
pFontAttr = pFontSubst->getSubstInfo( aSearchName );
if ( !pFontAttr && (aSearchShortName != aSearchName) )
pFontAttr = pFontSubst->getSubstInfo( aSearchShortName );
+ if ( !pFontAttr && (aSearchFamilyName != aSearchShortName) )
+ pFontAttr = pFontSubst->getSubstInfo( aSearchFamilyName );
// Try Substitution
if ( pFontAttr )
{
for( ::std::vector< String >::const_iterator it = pFontAttr->Substitutions.begin();
! pFoundData && it != pFontAttr->Substitutions.end(); ++it )
- pFoundData = pFontList->ImplFind( *it );
+ {
+ String aFontname( *it );
+ // list may contain localized names -> translate
+ ImplGetEnglishSearchFontName( aFontname );
+ pFoundData = pFontList->ImplFind( aFontname );
+ }
}
}
@@ -1820,16 +1985,24 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
if ( !pFoundData && aTempName.Len() )
{
+ // look for substitution tables for the name, shortname and family name in that order
pTempFontAttr = pFontSubst->getSubstInfo( aTempName );
if ( !pTempFontAttr && (aTempShortName != aTempName) )
pTempFontAttr = pFontSubst->getSubstInfo( aTempShortName );
+ if ( !pTempFontAttr && (aTempFamilyName != aTempShortName) )
+ pTempFontAttr = pFontSubst->getSubstInfo( aTempFamilyName );
// Try Substitution
if ( pTempFontAttr )
{
for( ::std::vector< String >::const_iterator it = pTempFontAttr->Substitutions.begin();
! pFoundData && it != pTempFontAttr->Substitutions.end(); ++it )
- pFoundData = pFontList->ImplFind( *it );
+ {
+ String aFontname( *it );
+ // list may contain localized names -> translate
+ ImplGetEnglishSearchFontName( aFontname );
+ pFoundData = pFontList->ImplFind( aFontname );
+ }
}
}
}
@@ -1889,10 +2062,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
else if ( eLang == LANGUAGE_JAPANESE )
nSearchType |= IMPL_FONT_ATTR_CJK | IMPL_FONT_ATTR_CJK_JP;
else
- {
- if ( ImplIsCJKFont( aName ) )
- nSearchType |= IMPL_FONT_ATTR_CJK;
- }
+ nSearchType |= ImplIsCJKFont( aName );
if ( bSymbolEncoding )
nSearchType |= IMPL_FONT_ATTR_SYMBOL;
@@ -2159,8 +2329,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
!(pData->mnTypeFaces & IMPL_DEVFONT_NORMAL) )
nTestMatch -= 1000000;
- // skalierbare Schriften haben schon einen echten Vorteil
- // gegenueber nicht skalierbaren Schriften
+ // prefer scalable fonts
if ( pData->mnTypeFaces & IMPL_DEVFONT_SCALABLE )
nTestMatch += 10000*4;
else
@@ -2168,7 +2337,6 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
if ( nMatchType & IMPL_FONT_ATTR_STANDARD )
nTestMatch += 10000*2;
if ( nMatchType & IMPL_FONT_ATTR_DEFAULT )
-
nTestMatch += 10000;
if ( nMatchType & IMPL_FONT_ATTR_FULL )
nTestMatch += 10000;
@@ -2211,7 +2379,7 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
}
else if ( nTestMatch == nBestMatch )
{
- // We have some fonts, where we think that they are more useful
+ // some fonts are more suitable defaults
if ( nMatchType & IMPL_FONT_ATTR_DEFAULT )
{
pFoundData = pData;
@@ -2468,22 +2636,23 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
mpFirstEntry = pEntry;
// initialize font selection data
- ImplFontSelectData* pFontSelData = &(pEntry->maFontSelData);
- pFontSelData->mpFontData = pFontData;
- pFontSelData->maName = aName;
- pFontSelData->maStyleName = rStyleName;
- pFontSelData->mnWidth = nWidth;
- pFontSelData->mnHeight = nHeight;
- pFontSelData->meFamily = eFamily;
- pFontSelData->meCharSet = eCharSet;
- pFontSelData->meLanguage = eLanguage;
- pFontSelData->meWidthType = WIDTH_DONTKNOW;
- pFontSelData->meWeight = eWeight;
- pFontSelData->meItalic = eItalic;
- pFontSelData->mePitch = ePitch;
- pFontSelData->mnOrientation = nOrientation;
- pFontSelData->mbVertical = bVertical;
- pFontSelData->mbNonAntialiased = FALSE;
+ ImplFontSelectData& rFontSelData = pEntry->maFontSelData;
+ rFontSelData.mpFontData = pFontData;
+ rFontSelData.maName = rFont.GetName();
+ rFontSelData.maFoundName = aName;
+ rFontSelData.maStyleName = rStyleName;
+ rFontSelData.mnWidth = nWidth;
+ rFontSelData.mnHeight = nHeight;
+ rFontSelData.meFamily = eFamily;
+ rFontSelData.meCharSet = eCharSet;
+ rFontSelData.meLanguage = eLanguage;
+ rFontSelData.meWidthType = WIDTH_DONTKNOW;
+ rFontSelData.meWeight = eWeight;
+ rFontSelData.meItalic = eItalic;
+ rFontSelData.mePitch = ePitch;
+ rFontSelData.mnOrientation = nOrientation;
+ rFontSelData.mbVertical = bVertical;
+ rFontSelData.mbNonAntialiased = FALSE;
return pEntry;
}
@@ -2491,12 +2660,62 @@ ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
// -----------------------------------------------------------------------
ImplFontEntry* ImplFontCache::GetFallback( ImplDevFontList* pFontList,
- const Font& rOrigFont, const Size& rSize, sal_Unicode cMissingChar )
+ const Font& rOrigFont, const Size& rSize, int nLevel, ImplFontSubstEntry* pDevSpecific )
{
+ // make sure the fontlist knows it's fallbacks
+ if( !pFontList->HasFallbacks() )
+ {
+ // TODO: implement dynamic lists or improve static lists
+ #define FALLBACKFONT_NAMELIST \
+ "Arial Unicode MS;Andale Sans UI;Cyberbit;StarSymbol;Lucida TypeWriter;" \
+ "FZMingTi;SunBatang;" \
+ "HGMinchoLightJ;MSungLightSC;MSungLightTC;HYMyeongJoLight K;" \
+ "Lucida Sans;Tahoma;" \
+ "Shree;Mangal;Raavi;Shruti;Tunga;Latha;" \
+ "Shayyal MT;Nask MT;David;" \
+ "Norasi;AngsanaUPC;" \
+ "Gulim;Batang;Dotum;MS Mincho"
+ String aNameList( RTL_CONSTASCII_USTRINGPARAM(FALLBACKFONT_NAMELIST) );
+ int nMaxLevel = 0;
+ ImplDevFontListData** pFallbackList = NULL;
+ for( xub_StrLen nTokenPos = 0; nTokenPos != STRING_NOTFOUND; )
+ {
+ String aTokenName = GetFontToken( aNameList, 0, nTokenPos );
+ ImplGetEnglishSearchFontName( aTokenName );
+ //ImplFontSubstitute( aSearchName, nSubstFlags1, nSubstFlags2 );
+ ImplDevFontListData* pFoundData = pFontList->ImplFind( aTokenName );
+ // TODO: check FontCharset and reject if it is already covered
+ if( pFoundData && (pFoundData->mpFirst->meType == TYPE_SCALABLE) )
+ {
+ if( !pFallbackList )
+ pFallbackList = new ImplDevFontListData*[ MAX_FALLBACK ];
+ pFallbackList[ nMaxLevel ] = pFoundData;
+ if( ++nMaxLevel >= MAX_FALLBACK )
+ break;
+ }
+ }
+
+ pFontList->SetFallbacks( pFallbackList, nMaxLevel );
+ }
+
+ // nLevel>=1 for fallback => remove +1 offset
+ ImplDevFontListData* pFallbackData = pFontList->GetFallback( nLevel-1 );
+ if( !pFallbackData )
+ return NULL;
+
+ // TODO: use pFallbackData directly
Font aFallbackFont = rOrigFont;
- // TODO: use cMissingChar for fallback font name
- aFallbackFont.SetName( String( RTL_CONSTASCII_USTRINGPARAM( "Arial Unicode MS;Andale Sans UI" ) ) );
- ImplFontEntry* pFallbackFont = Get( pFontList, aFallbackFont, rSize );
+ aFallbackFont.SetName( pFallbackData->maName );
+ ImplFontEntry* pFallbackFont = Get( pFontList, aFallbackFont, rSize, pDevSpecific );
+
+ if( pFallbackFont && !pFallbackFont->mbInit )
+ {
+ // HACK: maMetrics are irrelevant for fallback fonts, but
+ // to prevent trouble at cleanup we need to set some members
+ pFallbackFont->maMetric.maName =
+ pFallbackFont->maMetric.maStyleName = pFallbackData->maName;
+ }
+
return pFallbackFont;
}
@@ -2504,30 +2723,30 @@ ImplFontEntry* ImplFontCache::GetFallback( ImplDevFontList* pFontList,
void ImplFontCache::Release( ImplFontEntry* pEntry )
{
+ static const int FONTCACHE_MIN = 5;
+ static const int FONTCACHE_MAX = 50;
+
if( --pEntry->mnRefCount > 0 )
return;
- if( ++mnRef0Count < MAXFONT_CACHE )
+ if( ++mnRef0Count < FONTCACHE_MAX )
return;
- // delete least-recently-used unreferenced entry
- ImplFontEntry* pPrevDelEntry = mpFirstEntry;
- int nCurRef0Count = !(pPrevDelEntry->mnRefCount);
- while( ImplFontEntry* pDelEntry = pPrevDelEntry->mpNext )
+ // delete least-recently-used unreferenced entries
+ int mnRef0Index = 0;
+ for( ImplFontEntry** pNextPtr = &mpFirstEntry; pEntry = *pNextPtr; )
{
- if( !pDelEntry->mnRefCount && (++nCurRef0Count >= MAXFONT_CACHE) )
+ if( (pEntry->mnRefCount > 0) || (++mnRef0Index < FONTCACHE_MAX) )
+ pNextPtr = &pEntry->mpNext;
+ else
{
+ *pNextPtr = pEntry->mpNext;
+ delete pEntry;
--mnRef0Count;
- pPrevDelEntry->mpNext = pDelEntry->mpNext;
- delete pDelEntry;
- return;
}
-
- pPrevDelEntry = pDelEntry;
}
- DBG_ASSERT( false, "ImplFontCache::Release() - no font released" );
- return; // we should never get here
+ DBG_ASSERT( (mnRef0Index<=FONTCACHE_MAX), "ImplFontCache::Release() - mismatch" );
}
// -----------------------------------------------------------------------
@@ -2535,7 +2754,7 @@ void ImplFontCache::Release( ImplFontEntry* pEntry )
void ImplFontCache::Clear()
{
// delete all entries
- for( ImplFontEntry* pNext = mpFirstEntry; pNext; )
+ for( ImplFontEntry* pNext = mpFirstEntry; pNext != NULL; )
{
ImplFontEntry* pEntry = pNext;
pNext = pEntry->mpNext;
@@ -2551,9 +2770,9 @@ void ImplFontCache::Clear()
ImplMultiTextLineInfo::ImplMultiTextLineInfo()
{
- mpLines = new PImplTextLineInfo[MULTITEXTLINEINFO_RESIZE];
- mnLines = 0;
- mnSize = MULTITEXTLINEINFO_RESIZE;
+ mpLines = new PImplTextLineInfo[MULTITEXTLINEINFO_RESIZE];
+ mnLines = 0;
+ mnSize = MULTITEXTLINEINFO_RESIZE;
}
@@ -2743,7 +2962,7 @@ int OutputDevice::ImplNewFont()
// get font entry
ImplFontEntry* pOldEntry = mpFontEntry;
- mpFontEntry = mpFontCache->Get( mpFontList, maFont, aSize );
+ mpFontEntry = mpFontCache->Get( mpFontList, maFont, aSize, mpOutDevData ? mpOutDevData->mpFirstFontSubstEntry : NULL );
ImplFontEntry* pFontEntry = mpFontEntry;
// do lower layers need notification
@@ -3012,109 +3231,6 @@ void OutputDevice::ImplInitKerningPairs( ImplKernPairData* pKernPairs, long nKer
// -----------------------------------------------------------------------
-#ifndef ENABLE_CTL
-
-long OutputDevice::ImplCalcKerning( const sal_Unicode* pStr, xub_StrLen nLen,
- long* pDXAry, xub_StrLen nAryLen ) const
-{
- if ( !nLen )
- return 0;
-
- ImplFontEntry* pEntry = mpFontEntry;
- ImplKernPairData* pKernPairs = pEntry->mpKernPairs;
- ULONG nKernPairs = pEntry->mnKernPairs;
- long nWidth = 0;
- xub_StrLen i;
-
- if( (maFont.GetKerning() & KERNING_FONTSPECIFIC) && nKernPairs )
- {
-#ifdef DBG_UTIL
- {
- ImplKernPairData aTestPair;
-#ifdef __LITTLEENDIAN
- sal_uInt32 nTestComp = ((sal_uInt32)((USHORT)0xAABB) << 16) | (USHORT)0xCCDD;
-#else
- sal_uInt32 nTestComp = ((sal_uInt32)((USHORT)0xCCDD) << 16) | (USHORT)0xAABB;
-#endif
- aTestPair.mnChar1 = 0xCCDD;
- aTestPair.mnChar2 = 0xAABB;
- DBG_ASSERT( nTestComp == *((ULONG*)&aTestPair), "Code doesn't work in this Version" );
- }
-#endif
-
- const sal_Unicode* pTempStr = pStr;
- for ( i = 0; i < nLen-1; i++ )
- {
- USHORT nIndex = (USHORT)*pTempStr;
- pTempStr++;
-#ifdef __LITTLEENDIAN
- sal_uInt32 nComp = ((sal_uInt32)((USHORT)*pTempStr) << 16) | nIndex;
-#else
-
- sal_uInt32 nComp = ((sal_uInt32)nIndex << 16) | ((USHORT)*pTempStr);
-#endif
-
- // Search for Kerning Pair
- for( long nLower = 0, nUpper = (long)nKernPairs-1; nLower <= nUpper; )
- {
- long nMid = (nUpper + nLower) >> 1;
- ImplKernPairData* pCurKernPair = pKernPairs+nMid;
- sal_uInt32 nCurComp = *((sal_uInt32*)pCurKernPair);
- if ( nComp == nCurComp )
- {
- long nAmount = pCurKernPair->mnKern;
- nWidth += nAmount;
- if ( pDXAry )
- {
- for ( xub_StrLen n = i; n < nAryLen; n++ )
- pDXAry[n] += nAmount;
- }
- break;
-
- }
- else if ( nComp < nCurComp )
- nUpper = nMid-1;
- else // ( nComp > nCurComp )
- nLower = nMid+1;
- }
- }
-
- }
-
- if ( (maFont.GetKerning() & KERNING_ASIAN) &&
- (ImplGetCharWidth(0x3001) == ImplGetCharWidth(0x3007)) ) // monospaced font?
- {
- for( i = 0; i < nLen-1; ++i )
- {
- sal_Unicode nFirst = pStr[i];
- sal_Unicode nNext = pStr[i+1];
-
- if ( (nFirst >= 0x3000) && (nNext >= 0x3000) &&
- (nFirst <= 0x30FB) && (nNext <= 0x30FB) )
- {
- long nKernFirst = +CalcAsianKerning( nFirst, true );
- long nKernNext = -CalcAsianKerning( nNext, false );
-
- long nAmount = (nKernFirst < nKernNext) ? nKernFirst : nKernNext;
- if( nAmount<0 && nKernFirst!=0 && nKernNext!=0 )
- {
- nAmount *= ImplGetCharWidth( nFirst );
- nAmount /= 4 * mpFontEntry->mnWidthFactor;
- nWidth += nAmount;
- for( xub_StrLen n = i; n < nAryLen; ++n )
- pDXAry[n] += nAmount;
- }
- }
- }
- }
-
- return nWidth;
-}
-
-#endif // ENABLE_CTL
-
-// -----------------------------------------------------------------------
-
long OutputDevice::ImplGetTextWidth( const SalLayout& rSalLayout ) const
{
long nWidth = rSalLayout.GetTextWidth();
@@ -3766,7 +3882,7 @@ void OutputDevice::ImplDrawTextLine( long nBaseX,
// calculate approximation of strikeout atom size
long nStrikeoutWidth = nWidth;
String aStrikeoutTest( pChars, 4 );
- SalLayout* pSalLayout = ImplLayout( aStrikeoutTest, 0, 4, Point(0,0) );
+ SalLayout* pSalLayout = ImplLayout( aStrikeoutTest, 0, 4 );
if( pSalLayout )
{
nStrikeoutWidth = (pSalLayout->GetTextWidth() + 2) / 4;
@@ -4452,7 +4568,7 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
if( !rSalLayout.GetNextGlyphs( 1, &nGlyphIndex, aOutPoint, nStart ) )
break;
- if( !mpGraphics->GetGlyphBoundRect( nGlyphIndex, true, aRectangle, NULL ) )
+ if( !mpGraphics->GetGlyphBoundRect( nGlyphIndex, aRectangle, NULL ) )
continue;
if( !rSalLayout.IsSpacingGlyph( nGlyphIndex ) )
@@ -4571,7 +4687,7 @@ void OutputDevice::ImplDrawTextDirect( SalLayout& rSalLayout, BOOL bTextLines )
if( ImplDrawRotateText( rSalLayout ) )
return;
- long oldX = rSalLayout.DrawBase().X();
+ long nOldX = rSalLayout.DrawBase().X();
if( ! (mpPDFWriter && mpPDFWriter->isBuiltinFont(mpFontEntry->maFontSelData.mpFontData) ) )
{
if( ImplHasMirroredGraphics() )
@@ -4591,7 +4707,7 @@ void OutputDevice::ImplDrawTextDirect( SalLayout& rSalLayout, BOOL bTextLines )
rSalLayout.DrawText( *mpGraphics );
}
- rSalLayout.DrawBase().X() = oldX;
+ rSalLayout.DrawBase().X() = nOldX;
if( bTextLines )
ImplDrawTextLines( rSalLayout,
@@ -4773,9 +4889,10 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
if ( xBI.is() )
{
+ static const com::sun::star::lang::Locale aDefLocale;
xub_StrLen nSoftBreak = GetTextBreak( rStr, nWidth, nPos, nBreakPos - nPos );
DBG_ASSERT( nSoftBreak < nBreakPos, "Break?!" );
- i18n::LineBreakResults aLBR = xBI->getLineBreak( aText, nSoftBreak, GetSettings().GetLocale(), nPos, aHyphOptions, aUserOptions );
+ i18n::LineBreakResults aLBR = xBI->getLineBreak( aText, nSoftBreak, aDefLocale, nPos, aHyphOptions, aUserOptions );
nBreakPos = (xub_StrLen)aLBR.breakIndex;
if ( nBreakPos <= nPos )
nBreakPos = nSoftBreak;
@@ -4850,7 +4967,7 @@ void OutputDevice::SetFont( const Font& rNewFont )
aTextColor = Color( cLum, cLum, cLum );
}
else if ( mnDrawMode & DRAWMODE_SETTINGSTEXT )
- aTextColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ aTextColor = GetSettings().GetStyleSettings().GetFontColor();
if ( mnDrawMode & DRAWMODE_GHOSTEDTEXT )
{
@@ -4948,7 +5065,7 @@ void OutputDevice::SetTextColor( const Color& rColor )
aColor = Color( cLum, cLum, cLum );
}
else if ( mnDrawMode & DRAWMODE_SETTINGSTEXT )
- aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ aColor = GetSettings().GetStyleSettings().GetFontColor();
if ( mnDrawMode & DRAWMODE_GHOSTEDTEXT )
{
@@ -5081,7 +5198,7 @@ void OutputDevice::SetTextLineColor( const Color& rColor )
aColor = Color( cLum, cLum, cLum );
}
else if ( mnDrawMode & DRAWMODE_SETTINGSTEXT )
- aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ aColor = GetSettings().GetStyleSettings().GetFontColor();
if ( mnDrawMode & DRAWMODE_GHOSTEDTEXT )
{
@@ -5132,7 +5249,7 @@ void OutputDevice::DrawTextLine( const Point& rPos, long nWidth,
((eStrikeout == STRIKEOUT_NONE) || (eStrikeout == STRIKEOUT_DONTKNOW)) )
return;
- if ( !IsDeviceOutputNecessary() )
+ if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -5178,7 +5295,7 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos,
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
#ifndef REMOTE_APPSERVER
- if ( !IsDeviceOutputNecessary() )
+ if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
// we need a graphics
@@ -5244,25 +5361,36 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos,
// -----------------------------------------------------------------------
-void OutputDevice::DrawText( const Point& rStartPt, const String& rOrigStr,
+void OutputDevice::DrawText( const Point& rStartPt, const String& rStr,
xub_StrLen nIndex, xub_StrLen nLen,
MetricVector* pVector, String* pDisplayText
)
{
+ if( mpOutDevData && mpOutDevData->mpRecordLayout )
+ {
+ pVector = &mpOutDevData->mpRecordLayout->m_aUnicodeBoundRects;
+ pDisplayText = &mpOutDevData->mpRecordLayout->m_aDisplayText;
+ }
+
DBG_TRACE( "OutputDevice::DrawText()" );
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
if ( mpMetaFile )
- mpMetaFile->AddAction( new MetaTextAction( rStartPt, rOrigStr, nIndex, nLen ) );
+ mpMetaFile->AddAction( new MetaTextAction( rStartPt, rStr, nIndex, nLen ) );
if( pVector )
{
Region aClip( GetClipRegion() );
if( meOutDevType == OUTDEV_WINDOW )
aClip.Intersect( Rectangle( Point(), GetOutputSize() ) );
+ if( mpOutDevData && mpOutDevData->mpRecordLayout )
+ {
+ mpOutDevData->mpRecordLayout->m_aLineIndices.push_back( mpOutDevData->mpRecordLayout->m_aDisplayText.Len() );
+ aClip.Intersect( mpOutDevData->maRecordRect );
+ }
if( ! aClip.IsNull() )
{
MetricVector aTmp;
- GetGlyphBoundRects( rStartPt, rOrigStr, nIndex, nLen, nIndex, aTmp );
+ GetGlyphBoundRects( rStartPt, rStr, nIndex, nLen, nIndex, aTmp );
bool bInserted = false;
for( MetricVector::const_iterator it = aTmp.begin(); it != aTmp.end(); ++it, nIndex++ )
@@ -5271,7 +5399,7 @@ void OutputDevice::DrawText( const Point& rStartPt, const String& rOrigStr,
if( aClip.IsOver( *it ) )
bAppend = true;
- else if( rOrigStr.GetChar( nIndex ) == ' ' && bInserted )
+ else if( rStr.GetChar( nIndex ) == ' ' && bInserted )
{
MetricVector::const_iterator next = it;
++next;
@@ -5283,34 +5411,34 @@ void OutputDevice::DrawText( const Point& rStartPt, const String& rOrigStr,
{
pVector->push_back( *it );
if( pDisplayText )
- pDisplayText->Append( rOrigStr.GetChar( nIndex ) );
+ pDisplayText->Append( rStr.GetChar( nIndex ) );
bInserted = true;
}
}
}
else
{
- GetGlyphBoundRects( rStartPt, rOrigStr, nIndex, nLen, nIndex, *pVector );
+ GetGlyphBoundRects( rStartPt, rStr, nIndex, nLen, nIndex, *pVector );
if( pDisplayText )
- pDisplayText->Append( rOrigStr.Copy( nIndex, nLen ) );
+ pDisplayText->Append( rStr.Copy( nIndex, nLen ) );
}
}
if ( !IsDeviceOutputNecessary() || pVector )
return;
#ifdef UNX
- String aStr( rOrigStr );
+ String aStr( rStr );
if( meOutDevType == OUTDEV_PRINTER )
{
if( !mpGraphics )
if( !ImplGetGraphics() )
return;
xub_StrLen nCutStart, nCutStop;
- aStr = mpGraphics->maGraphicsData.FaxPhoneComment( rOrigStr, nIndex, nLen, nCutStart, nCutStop );
+ aStr = mpGraphics->maGraphicsData.FaxPhoneComment( rStr, nIndex, nLen, nCutStart, nCutStop );
}
SalLayout* pSalLayout = ImplLayout( aStr, nIndex, nLen, rStartPt );
#else
- SalLayout* pSalLayout = ImplLayout( rOrigStr, nIndex, nLen, rStartPt );
+ SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen, rStartPt );
#endif
if( pSalLayout )
{
@@ -5321,13 +5449,13 @@ void OutputDevice::DrawText( const Point& rStartPt, const String& rOrigStr,
// -----------------------------------------------------------------------
-long OutputDevice::GetTextWidth( const String& rOrigStr,
+long OutputDevice::GetTextWidth( const String& rStr,
xub_StrLen nIndex, xub_StrLen nLen ) const
{
DBG_TRACE( "OutputDevice::GetTextWidth()" );
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
- long nWidth = GetTextArray( rOrigStr, NULL, nIndex, nLen );
+ long nWidth = GetTextArray( rStr, NULL, nIndex, nLen );
return nWidth;
}
@@ -5352,7 +5480,7 @@ long OutputDevice::GetTextHeight() const
// -----------------------------------------------------------------------
-void OutputDevice::DrawTextArray( const Point& rStartPt, const String& rOrigStr,
+void OutputDevice::DrawTextArray( const Point& rStartPt, const String& rStr,
const long* pDXAry,
xub_StrLen nIndex, xub_StrLen nLen )
{
@@ -5360,20 +5488,20 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const String& rOrigStr,
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
if ( mpMetaFile )
- mpMetaFile->AddAction( new MetaTextArrayAction( rStartPt, rOrigStr, pDXAry, nIndex, nLen ) );
+ mpMetaFile->AddAction( new MetaTextArrayAction( rStartPt, rStr, pDXAry, nIndex, nLen ) );
if ( !IsDeviceOutputNecessary() )
return;
#ifdef UNX
- String aStr( rOrigStr );
+ String aStr( rStr );
if( meOutDevType == OUTDEV_PRINTER )
{
if( !mpGraphics )
if( !ImplGetGraphics() )
return;
xub_StrLen nCutStart, nCutStop, nOrgLen = nLen;
- aStr = mpGraphics->maGraphicsData.FaxPhoneComment( rOrigStr, nIndex, nLen, nCutStart, nCutStop );
+ aStr = mpGraphics->maGraphicsData.FaxPhoneComment( rStr, nIndex, nLen, nCutStart, nCutStop );
if( nCutStop != nCutStart )
{
long* pAry = (long*)alloca(sizeof(long)*nLen );
@@ -5385,7 +5513,7 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const String& rOrigStr,
}
SalLayout* pSalLayout = ImplLayout( aStr, nIndex, nLen, rStartPt, 0, pDXAry );
#else
- SalLayout* pSalLayout = ImplLayout( rOrigStr, nIndex, nLen, rStartPt, 0, pDXAry );
+ SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen, rStartPt, 0, pDXAry );
#endif
if( pSalLayout )
{
@@ -5396,26 +5524,31 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const String& rOrigStr,
// -----------------------------------------------------------------------
-long OutputDevice::GetTextArray( const String& rOrigStr, long* pDXAry,
+long OutputDevice::GetTextArray( const String& rStr, long* pDXAry,
xub_StrLen nIndex, xub_StrLen nLen ) const
{
DBG_TRACE( "OutputDevice::GetTextArray()" );
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
- if( nIndex >= rOrigStr.Len() )
+ if( nIndex >= rStr.Len() )
return 0;
- if( (ULONG)nIndex+nLen >= rOrigStr.Len() )
- nLen = rOrigStr.Len() - nIndex;
+ if( (ULONG)nIndex+nLen >= rStr.Len() )
+ nLen = rStr.Len() - nIndex;
// do layout
- SalLayout* pSalLayout = ImplLayout( rOrigStr, nIndex, nLen, Point(0,0) );
+ SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen );
if( !pSalLayout )
return 0;
- int nWidthFactor = pSalLayout->GetUnitsPerPixel();
long nWidth = pSalLayout->FillDXArray( pDXAry );
+ int nWidthFactor = pSalLayout->GetUnitsPerPixel();
pSalLayout->Release();
+ // convert virtual char widths to virtual absolute positions
+ if( pDXAry )
+ for( int i = 1; i < nLen; ++i )
+ pDXAry[ i ] += pDXAry[ i-1 ];
+
// convert from font units to logical units
if( mbMap )
{
@@ -5425,7 +5558,7 @@ long OutputDevice::GetTextArray( const String& rOrigStr, long* pDXAry,
nWidth = ImplDevicePixelToLogicWidth( nWidth );
}
- if( nWidthFactor != 1 )
+ if( nWidthFactor > 1 )
{
if( pDXAry )
for( int i = 0; i < nLen; ++i )
@@ -5458,26 +5591,41 @@ bool OutputDevice::GetCaretPositions( const XubString& rStr, long* pCaretXArray,
return false;
int nWidthFactor = pSalLayout->GetUnitsPerPixel();
- pSalLayout->GetCaretPositions( pCaretXArray );
+ pSalLayout->GetCaretPositions( 2*nLen, pCaretXArray );
long nWidth = pSalLayout->GetTextWidth();
pSalLayout->Release();
- if( Application::GetSettings().GetLayoutRTL() && IsRTLEnabled() )
+ // fixup unknown caret positions
+ int i;
+ for( i = 0; i < 2 * nLen; ++i )
+ if( pCaretXArray[ i ] >= 0 )
+ break;
+ long nXPos = pCaretXArray[ i ];
+ for( i = 0; i < 2 * nLen; ++i )
+ {
+ if( pCaretXArray[ i ] >= 0 )
+ nXPos = pCaretXArray[ i ];
+ else
+ pCaretXArray[ i ] = nXPos;
+ }
+
+ // handle window mirroring
+ if( ((OutputDevice*)this)->ImplHasMirroredGraphics() && IsRTLEnabled() )
{
- for( int i = 0; i < 2 * nLen; ++i )
+ for( i = 0; i < 2 * nLen; ++i )
pCaretXArray[i] = nWidth - pCaretXArray[i] - 1;
}
// convert from font units to logical units
if( mbMap )
{
- for( int i = 0; i < 2*nLen; ++i )
+ for( i = 0; i < 2*nLen; ++i )
pCaretXArray[i] = ImplDevicePixelToLogicWidth( pCaretXArray[i] );
}
if( nWidthFactor != 1 )
{
- for( int i = 0; i < 2*nLen; ++i )
+ for( i = 0; i < 2*nLen; ++i )
pCaretXArray[i] /= nWidthFactor;
}
@@ -5493,31 +5641,31 @@ bool OutputDevice::GetCaretPositions( const XubString& rStr, long* pCaretXArray,
// -----------------------------------------------------------------------
void OutputDevice::DrawStretchText( const Point& rStartPt, ULONG nWidth,
- const String& rOrigStr,
+ const String& rStr,
xub_StrLen nIndex, xub_StrLen nLen )
{
DBG_TRACE( "OutputDevice::DrawStretchText()" );
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
if ( mpMetaFile )
- mpMetaFile->AddAction( new MetaStretchTextAction( rStartPt, nWidth, rOrigStr, nIndex, nLen ) );
+ mpMetaFile->AddAction( new MetaStretchTextAction( rStartPt, nWidth, rStr, nIndex, nLen ) );
if ( !IsDeviceOutputNecessary() )
return;
#ifdef UNX
- String aStr( rOrigStr );
+ String aStr( rStr );
if( meOutDevType == OUTDEV_PRINTER )
{
if( !mpGraphics )
if( !ImplGetGraphics() )
return;
xub_StrLen nCutStart, nCutStop;
- aStr = mpGraphics->maGraphicsData.FaxPhoneComment( rOrigStr, nIndex, nLen, nCutStart, nCutStop );
+ aStr = mpGraphics->maGraphicsData.FaxPhoneComment( rStr, nIndex, nLen, nCutStart, nCutStop );
}
SalLayout* pSalLayout = ImplLayout( aStr, nIndex, nLen, rStartPt, nWidth );
#else
- SalLayout* pSalLayout = ImplLayout( rOrigStr, nIndex, nLen, rStartPt, nWidth );
+ SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen, rStartPt, nWidth );
#endif
if( pSalLayout )
{
@@ -5574,7 +5722,7 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr,
{
// disable Bidi if no RTL hint and no RTL codes used
const xub_Unicode* pStr = aStr.GetBuffer() + nMinIndex;
- const xub_Unicode* pEnd = pStr + (nEndIndex - nMinIndex);
+ const xub_Unicode* pEnd = aStr.GetBuffer() + nEndIndex;
for( ; pStr < pEnd; ++pStr )
if( ((*pStr >= 0x0580) && (*pStr < 0x0800)) // middle eastern scripts
|| ((*pStr >= 0xFB18) && (*pStr < 0xFE00)) // hebrew + arabic A presentation forms
@@ -5601,12 +5749,12 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr,
{
// disable CTL for non-CTL text
const xub_Unicode* pStr = aStr.GetBuffer() + nMinIndex;
- const xub_Unicode* pEnd = pStr + (nEndIndex-nMinIndex);
+ const xub_Unicode* pEnd = aStr.GetBuffer() + nEndIndex;
for( ; pStr < pEnd; ++pStr )
- if( (*pStr >= 0x0590) && (*pStr < 0x10A0)
- || (*pStr >= 0x1700) && (*pStr < 0x1900)
- || (*pStr >= 0xFB1D) && (*pStr < 0xFE00) // middle east presentation
- || (*pStr >= 0xFE70) && (*pStr < 0xFF00) ) // arabic presentation B
+ if( ((*pStr >= 0x0590) && (*pStr < 0x10A0))
+ || ((*pStr >= 0x1700) && (*pStr < 0x1900))
+ || ((*pStr >= 0xFB1D) && (*pStr < 0xFE00)) // middle east presentation
+ || ((*pStr >= 0xFE70) && (*pStr < 0xFF00)) ) // arabic presentation B
break;
if( pStr >= pEnd )
nLayoutFlags |= SAL_LAYOUT_COMPLEX_DISABLED;
@@ -5614,11 +5762,14 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr,
// right align for RTL text, DRAWPOS_REVERSED, RTL window style
bool bRightAlign = ((mnTextLayoutMode & TEXT_LAYOUT_BIDI_RTL) != 0);
- bRightAlign ^= ((mnTextLayoutMode & TEXT_LAYOUT_DRAWPOS_REVERSED) != 0);
+ if( mnTextLayoutMode & TEXT_LAYOUT_TEXTORIGIN_LEFT )
+ bRightAlign = false;
+ else if ( mnTextLayoutMode & TEXT_LAYOUT_TEXTORIGIN_RIGHT )
+ bRightAlign = true;
// SSA: hack for western office, ie text get right aligned
// for debugging purposes of mirrored UI
//static const char* pEnv = getenv( "SAL_RTL_MIRRORTEXT" );
- bool bRTLWindow = (Application::GetSettings().GetLayoutRTL() && IsRTLEnabled());
+ bool bRTLWindow = (((OutputDevice*)this)->ImplHasMirroredGraphics() && IsRTLEnabled());
bRightAlign ^= bRTLWindow;
if( bRightAlign )
nLayoutFlags |= SAL_LAYOUT_RIGHT_ALIGN;
@@ -5650,44 +5801,87 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr,
}
aLayoutArgs.SetDXArray( pDXArray );
+ // get matching layout object for base font
if( mpPDFWriter )
- pSalLayout = mpPDFWriter->createSalLayout( &mpFontEntry->maFontSelData, aLayoutArgs );
+ pSalLayout = mpPDFWriter->GetTextLayout( aLayoutArgs, &mpFontEntry->maFontSelData );
if( !pSalLayout )
- pSalLayout = mpGraphics->LayoutText( aLayoutArgs, 0 );
-
- // TODO: multi-level font fallback
- if( aLayoutArgs.SetFallbackArgs() && mpFontEntry )
- {
- bool bRTL;
- int nCharPos;
- aLayoutArgs.GetNextPos( &nCharPos, &bRTL );
- sal_Unicode cMissing = aLayoutArgs.mpStr[ nCharPos ];
- aLayoutArgs.ResetPos();
- Size aSize( mpFontEntry->maFontSelData.mnWidth, mpFontEntry->maFontSelData.mnHeight );
- ImplFontEntry* pFallbackFont = mpFontCache->GetFallback( mpFontList, maFont, aSize, cMissing );
-
- if( pFallbackFont && (pFallbackFont != mpFontEntry) )
- {
- // use matching fallback font for text layout
- ImplFontSelectData aIFSD = mpFontEntry->maFontSelData;
- aIFSD.mpFontData = pFallbackFont->maFontSelData.mpFontData;
- pFallbackFont->mnSetFontFlags = mpGraphics->SetFont( &aIFSD, 1 );
- SalLayout* pFallback = mpGraphics->LayoutText( aLayoutArgs, 1 );
+ pSalLayout = mpGraphics->GetTextLayout( aLayoutArgs, 0 );
+
+ // layout text
+ if( pSalLayout && !pSalLayout->LayoutText( aLayoutArgs ) )
+ {
+ pSalLayout->Release();
+ pSalLayout = NULL;
+ }
+
+ // do glyph fallback if needed
+ // #105768# avoid fallback for very small font sizes
+ if( mpFontEntry && (mpFontEntry->maFontSelData.mnHeight >= 6)
+ && (pSalLayout && aLayoutArgs.PrepareFallback()) )
+ {
+ // prepare multi level glyph fallback
+ MultiSalLayout* pMultiSalLayout = NULL;
+ ImplLayoutArgs aMultiArgs = aLayoutArgs;
+ aLayoutArgs.mnFlags |= SAL_LAYOUT_FOR_FALLBACK;
+
+ ImplFontSelectData aFontSelData = mpFontEntry->maFontSelData;
+ Size aFontSize( mpFontEntry->maFontSelData.mnWidth, mpFontEntry->maFontSelData.mnHeight );
+
+ for( int nLevel = 1; nLevel < MAX_FALLBACK; ++nLevel )
+ {
+ // find font family suited for this fallback
+ ImplFontEntry* pFallbackFont = mpFontCache->GetFallback( mpFontList,
+ maFont, aFontSize, nLevel, mpOutDevData ? mpOutDevData->mpFirstFontSubstEntry : NULL );
+ if( !pFallbackFont )
+ break;
+
+ // set up fallback font to match the original font
+ // don't fallback to itself
+ aFontSelData.mpFontData = pFallbackFont->maFontSelData.mpFontData;
+ if( mpFontEntry
+ && mpFontEntry->maFontSelData.mpFontData == aFontSelData.mpFontData )
+ continue;
+ pFallbackFont->mnSetFontFlags = mpGraphics->SetFont( &aFontSelData, nLevel );
+
+ // create and add fallback layout to multilayout
+ aLayoutArgs.ResetPos();
+ SalLayout* pFallback = mpGraphics->GetTextLayout( aLayoutArgs, nLevel );
if( pFallback )
{
- MultiSalLayout* pMulti = new MultiSalLayout( aLayoutArgs, *pSalLayout );
- pMulti->ApplyFallback( *pFallback );
- pSalLayout = pMulti;
+ if( pFallback->LayoutText( aLayoutArgs ) )
+ {
+ if( !pMultiSalLayout )
+ pMultiSalLayout = new MultiSalLayout( *pSalLayout );
+ pMultiSalLayout->AddFallback( *pFallback );
+ }
+ else
+ pFallback->Release();
}
+
mpFontCache->Release( pFallbackFont );
+
+ // break when this fallback was sufficient
+ if( !aLayoutArgs.PrepareFallback() )
+ break;
}
+
+ if( pMultiSalLayout )
+ {
+ pMultiSalLayout->LayoutText( aMultiArgs );
+ pSalLayout = pMultiSalLayout;
+ }
+
+ // restore orig font settings
+ pSalLayout->InitFont();
}
- // adjust to right alignment if necessary
if( pSalLayout )
{
+ // position, justify, etc. the layout
+ pSalLayout->AdjustLayout( aLayoutArgs );
pSalLayout->DrawBase() = aPixelPos;
+ // adjust to right alignment if necessary
if( bRightAlign )
{
long nRTLOffset;
@@ -5714,7 +5908,7 @@ xub_StrLen OutputDevice::GetTextBreak( const String& rStr, long nTextWidth,
DBG_TRACE( "OutputDevice::GetTextBreak()" );
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
- SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen, Point(0,0) );
+ SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen );
xub_StrLen nRetVal = STRING_LEN;
if( pSalLayout )
{
@@ -5752,7 +5946,7 @@ xub_StrLen OutputDevice::GetTextBreak( const String& rStr, long nTextWidth,
rHyphenatorPos = STRING_LEN;
- SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen, Point(0,0) );
+ SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen );
if( !pSalLayout )
return STRING_LEN;
@@ -5777,7 +5971,8 @@ xub_StrLen OutputDevice::GetTextBreak( const String& rStr, long nTextWidth,
// calculate hyphenated break position
String aHyphenatorStr( &nHyphenatorChar, 1 );
- SalLayout* pHyphenatorLayout = ImplLayout( aHyphenatorStr, 0, 1, Point(0,0) );
+ xub_StrLen nTempLen = 1;
+ SalLayout* pHyphenatorLayout = ImplLayout( aHyphenatorStr, 0, nTempLen );
if( pHyphenatorLayout )
{
// calculate subpixel width of hyphenation character
@@ -5803,7 +5998,14 @@ xub_StrLen OutputDevice::GetTextBreak( const String& rStr, long nTextWidth,
void OutputDevice::DrawText( const Rectangle& rRect,
const String& rOrigStr, USHORT nStyle,
MetricVector* pVector, String* pDisplayText )
+
{
+ if( mpOutDevData && mpOutDevData->mpRecordLayout )
+ {
+ pVector = &mpOutDevData->mpRecordLayout->m_aUnicodeBoundRects;
+ pDisplayText = &mpOutDevData->mpRecordLayout->m_aDisplayText;
+ }
+
DBG_TRACE( "OutputDevice::DrawText( const Rectangle& )" );
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
@@ -5977,12 +6179,16 @@ void OutputDevice::DrawText( const Rectangle& rRect,
long *pCaretXArray = (long*) alloca( 2 * sizeof(long) * nLineLen );
BOOL bRet = GetCaretPositions( aStr, pCaretXArray,
nIndex, nLineLen);
- long lc_x1 = pCaretXArray[2*(nIndex + nMnemonicPos)];
- long lc_x2 = pCaretXArray[2*(nIndex + nMnemonicPos)+1];
+ long lc_x1 = pCaretXArray[2*(nMnemonicPos - nIndex)];
+ long lc_x2 = pCaretXArray[2*(nMnemonicPos - nIndex)+1];
nMnemonicWidth = ::abs((int)(lc_x1 - lc_x2));
Point aTempPos = LogicToPixel( aPos );
+#if (_MSC_VER < 1300)
nMnemonicX = mnOutOffX + aTempPos.X() + ImplLogicWidthToDevicePixel( std::min( lc_x1, lc_x2 ) );
+#else
+ nMnemonicX = mnOutOffX + aTempPos.X() + ImplLogicWidthToDevicePixel( min( lc_x1, lc_x2 ) );
+#endif
nMnemonicY = mnOutOffY + aTempPos.Y() + ImplLogicWidthToDevicePixel( GetFontMetric().GetAscent() );
ImplDrawMnemonicLine( nMnemonicX, nMnemonicY, nMnemonicWidth );
}
@@ -6052,7 +6258,11 @@ void OutputDevice::DrawText( const Rectangle& rRect,
nMnemonicWidth = ::abs((int)(lc_x1 - lc_x2));
Point aTempPos = LogicToPixel( aPos );
+#if (_MSC_VER < 1300)
nMnemonicX = mnOutOffX + aTempPos.X() + ImplLogicWidthToDevicePixel( std::min(lc_x1, lc_x2) );
+#else
+ nMnemonicX = mnOutOffX + aTempPos.X() + ImplLogicWidthToDevicePixel( min(lc_x1, lc_x2) );
+#endif
nMnemonicY = mnOutOffY + aTempPos.Y() + ImplLogicWidthToDevicePixel( GetFontMetric().GetAscent() );
}
@@ -6381,6 +6591,17 @@ void OutputDevice::DrawCtrlText( const Point& rPos, const XubString& rStr,
--nLen;
DBG_ASSERT( nMnemonicPos < (nIndex+nLen), "Mnemonic underline marker after last character" );
}
+ BOOL bInvalidPos = FALSE;
+
+ if( nMnemonicPos >= nLen )
+ {
+ // #106952#
+ // may occur in BiDi-Strings: the '~' is sometimes found behind the last char
+ // due to some strange BiDi text editors
+ // ->place the underline behind the string to indicate a failure
+ bInvalidPos = TRUE;
+ nMnemonicPos = nLen-1;
+ }
long *pCaretXArray = (long*)alloca( 2 * sizeof(long) * nLen );
BOOL bRet = GetCaretPositions( aStr, pCaretXArray, nIndex, nLen );
@@ -6388,7 +6609,15 @@ void OutputDevice::DrawCtrlText( const Point& rPos, const XubString& rStr,
long lc_x2 = pCaretXArray[ 2*(nMnemonicPos - nIndex)+1 ];
nMnemonicWidth = ::abs((int)(lc_x1 - lc_x2));
+#if (_MSC_VER < 1300)
Point aTempPos( std::min(lc_x1,lc_x2), GetFontMetric().GetAscent() );
+ if( bInvalidPos ) // #106952#, place behind the (last) character
+ aTempPos = Point( std::max(lc_x1,lc_x2), GetFontMetric().GetAscent() );
+#else
+ Point aTempPos( min(lc_x1,lc_x2), GetFontMetric().GetAscent() );
+ if( bInvalidPos ) // #106952#, place behind the (last) character
+ aTempPos = Point( max(lc_x1,lc_x2), GetFontMetric().GetAscent() );
+#endif
aTempPos += rPos;
aTempPos = LogicToPixel( aTempPos );
nMnemonicX = mnOutOffX + aTempPos.X();
@@ -6695,17 +6924,18 @@ FontMetric OutputDevice::GetFontMetric() const
FontMetric aMetric;
- if( mbNewFont && !(const_cast<OutputDevice&>(*this).ImplNewFont()) )
- return aMetric;
+ if( mbNewFont )
+ if( !(const_cast<OutputDevice&>(*this).ImplNewFont()) )
+ return aMetric;
ImplFontEntry* pEntry = mpFontEntry;
ImplFontMetricData* pMetric = &(pEntry->maMetric);
- // Mappen und StarView Struktur fuellen
+ // map and fill StarView structure
aMetric.Font::operator=( maFont );
- // Fontdaten ermitteln und setzen
- aMetric.SetName( pMetric->maName );
+ // set aMetric with info from font
+ aMetric.SetName( maFont.GetName() );
aMetric.SetStyleName( pMetric->maStyleName );
aMetric.SetSize( PixelToLogic( Size( pMetric->mnWidth, pMetric->mnAscent+pMetric->mnDescent-pMetric->mnLeading ) ) );
aMetric.SetCharSet( pMetric->meCharSet );
@@ -6860,36 +7090,39 @@ BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect,
rRect.SetEmpty();
SalLayout* pSalLayout = NULL;
-
// calculate offset when nBase!=nIndex
long nXOffset = 0;
if( nBase != nIndex )
{
+#if (_MSC_VER < 1300)
xub_StrLen nStart = std::min( nBase, nIndex );
xub_StrLen nOfsLen = std::max( nBase, nIndex ) - nStart;
- pSalLayout = ImplLayout( rStr, nStart, nOfsLen, Point(0,0) );
+#else
+ xub_StrLen nStart = min( nBase, nIndex );
+ xub_StrLen nOfsLen = max( nBase, nIndex ) - nStart;
+#endif
+ pSalLayout = ImplLayout( rStr, nStart, nOfsLen );
if( pSalLayout )
{
- nXOffset = pSalLayout->FillDXArray( NULL );
+ nXOffset = pSalLayout->GetTextWidth();
nXOffset /= pSalLayout->GetUnitsPerPixel();
pSalLayout->Release();
// TODO: fix offset calculation for Bidi case
- if( nBase > nIndex)
+ if( nBase < nIndex)
nXOffset = -nXOffset;
}
}
- pSalLayout = ImplLayout( rStr, nIndex, nLen, Point(0,0) );
+ pSalLayout = ImplLayout( rStr, nIndex, nLen );
+ Rectangle aPixelRect;
if( pSalLayout )
{
- int nWidthFactor = pSalLayout->GetUnitsPerPixel();
- Point aPos = pSalLayout->GetDrawPosition();
-
- Rectangle aPixelRect;
bRet = pSalLayout->GetBoundRect( *mpGraphics, aPixelRect );
if( bRet )
{
+ int nWidthFactor = pSalLayout->GetUnitsPerPixel();
+
if( nWidthFactor > 1 )
{
double fFactor = 1.0 / nWidthFactor;
@@ -6917,109 +7150,112 @@ BOOL OutputDevice::GetTextBoundRect( Rectangle& rRect,
if( bRet || (OUTDEV_PRINTER == meOutDevType) )
return bRet;
- // bitmap method to get the bounding rectangle
+ // fall back to bitmap method to get the bounding rectangle,
+ // so we need a monochrome virtual device with matching font
VirtualDevice aVDev( 1 );
- pSalLayout = aVDev.ImplLayout( rStr, nIndex, nLen, Point(0,0) );
- if( !pSalLayout )
- return false;
-
- long nWidth = ImplGetTextWidth( *pSalLayout );
- long nHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
- Point aOffset( nWidth >> 1, 8 );
- Size aSize( nWidth + ( aOffset.X() << 1 ), nHeight + ( aOffset.Y() << 1 ) );
-
- if( !aVDev.SetOutputSizePixel( aSize ) )
- return false;
-
Font aFont( GetFont() );
aFont.SetShadow( FALSE );
aFont.SetOutline( FALSE );
aFont.SetRelief( RELIEF_NONE );
aFont.SetOrientation( 0 );
aFont.SetSize( Size( mpFontEntry->maFontSelData.mnWidth, mpFontEntry->maFontSelData.mnHeight ) );
-
aVDev.SetFont( aFont );
aVDev.SetTextAlign( ALIGN_TOP );
+
+ // layout the text on the virtual device
+ pSalLayout = aVDev.ImplLayout( rStr, nIndex, nLen );
+ if( !pSalLayout )
+ return false;
+
+ // make the bitmap big enough
+ // TODO: use factors when it would get too big
+ long nWidth = pSalLayout->GetTextWidth();
+ long nHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
+ Point aOffset( nWidth/2, 8 );
+ Size aSize( nWidth + 2*aOffset.X(), nHeight + 2*aOffset.Y() );
+ if( !nWidth || !aVDev.SetOutputSizePixel( aSize ) )
+ return false;
+
+ // draw text in black
+ pSalLayout->DrawBase() = aOffset;
aVDev.SetTextColor( Color( COL_BLACK ) );
aVDev.SetTextFillColor();
- aVDev.ImplNewFont();
- aVDev.ImplInitFont();
aVDev.ImplInitTextColor();
-
- pSalLayout->DrawBase() = aOffset - Point( mnTextOffX, mnTextOffY );
aVDev.ImplDrawText( *pSalLayout );
pSalLayout->Release();
+ // find extents using the bitmap
Bitmap aBmp = aVDev.GetBitmap( Point(), aSize );
BitmapReadAccess* pAcc = aBmp.AcquireReadAccess();
- if( pAcc )
- {
- const long nW = pAcc->Width();
- const long nW1 = nW - 1L;
- const long nH = pAcc->Height();
- long nLeft, nTop, nRight, nBottom;
- const BitmapColor aBlack( pAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
- BOOL bLineDone;
-
- nLeft = nW;
- nTop = nH;
- nRight = nBottom = -1L;
-
- for( long nY = 0L; nY < nH; nY++ )
- {
- bLineDone = FALSE;
-
- for( long nX = 0L; ( nX < nW ) && !bLineDone; nX++ )
- {
- if( pAcc->GetPixel( nY, nX ) == aBlack )
- {
- // find y minimum
- if( nY < nTop )
- nTop = nY;
-
- // find y maximum
- if( nY > nBottom )
- nBottom = nY;
-
- // find x minimum
- if( nX < nLeft )
- nLeft = nX;
+ if( !pAcc )
+ return FALSE;
+ const BitmapColor aBlack( pAcc->GetBestMatchingColor( Color( COL_BLACK ) ) );
+ const long nW = pAcc->Width();
+ const long nH = pAcc->Height();
+ long nLeft, nRight;
- // find x maximum (last pixel in line)
- for( long nX2 = nW1; nX2 >= nX; nX2-- )
+ // find top left point
+ long nTop = 0;
+ for(; nTop < nH; ++nTop )
+ {
+ for( nLeft = 0; nLeft < nW; ++nLeft )
+ if( pAcc->GetPixel( nTop, nLeft ) == aBlack )
+ break;
+ if( nLeft < nW )
+ break;
+ }
- {
- if( pAcc->GetPixel( nY, nX2 ) == aBlack )
- {
- if( nX2 > nRight )
- nRight = nX2;
+ // find bottom right point
+ long nBottom = nH;
+ while( --nBottom >= nTop )
+ {
+ for( nRight = nW; --nRight >= 0; )
+ if( pAcc->GetPixel( nBottom, nRight ) == aBlack )
+ break;
+ if( nRight >= 0 )
+ break;
+ }
+ if( nRight < nLeft )
+ {
+ long nX = nRight;
+ nRight = nLeft;
+ nLeft = nX;
+ }
- bLineDone = TRUE;
- break;
- }
- }
- }
- }
- }
+ for( long nY = nTop; nY <= nBottom; ++nY )
+ {
+ // find leftmost point
+ long nX;
+ for( nX = 0; nX < nLeft; ++nX )
+ if( pAcc->GetPixel( nY, nX ) == aBlack )
+ break;
+ nLeft = nX;
- if( nLeft < nW && nTop < nH && nRight > -1L && nBottom > -1L )
- {
- nLeft -= aOffset.X(), nTop -= aOffset.Y();
- nRight -= aOffset.X(), nBottom -= aOffset.Y();
+ // find rightmost point
+ for( nX = nW; --nX > nRight; )
+ if( pAcc->GetPixel( nY, nX ) == aBlack )
+ break;
+ nRight = nX;
+ }
- nWidth = ImplDevicePixelToLogicWidth( nRight - nLeft + 1L );
- nHeight = ImplDevicePixelToLogicHeight( nBottom - nTop + 1L );
- nLeft = ImplDevicePixelToLogicWidth( nLeft );
- nTop = ImplDevicePixelToLogicHeight( nTop );
- rRect = Rectangle( Point( nLeft, nTop ), Size( nWidth, nHeight ) );
- bRet = TRUE;
- }
+ aBmp.ReleaseAccess( pAcc );
- aBmp.ReleaseAccess( pAcc );
+ if( nTop <= nBottom )
+ {
+ Size aSize( nRight - nLeft + 1, nBottom - nTop + 1 );
+ Point aTopLeft( nLeft, nTop );
+ aTopLeft -= aOffset;
+ // adjust to text alignment
+ aTopLeft.Y()+= mnTextOffY - (mpFontEntry->maMetric.mnAscent + mnEmphasisAscent);
+ // convert to logical coordinates
+ aSize = PixelToLogic( aSize );
+ aTopLeft.X() = ImplDevicePixelToLogicWidth( aTopLeft.X() );
+ aTopLeft.Y() = ImplDevicePixelToLogicHeight( aTopLeft.Y() );
+ rRect = Rectangle( aTopLeft, aSize );
+ return TRUE;
}
- rRect += Point( mnTextOffX, mnTextOffY );
- return bRet;
+ return FALSE;
}
// -----------------------------------------------------------------------
@@ -7047,6 +7283,9 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
{
BOOL bRet = FALSE;
rVector.clear();
+ if( nLen == STRING_LEN )
+ nLen = rStr.Len() - nIndex;
+ rVector.reserve( nLen );
// we want to get the Rectangle in logical units, so to
// avoid rounding errors we just size the font in logical units
@@ -7063,12 +7302,17 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
long nXOffset = 0;
if( nBase != nIndex )
{
+#if (_MSC_VER < 1300)
xub_StrLen nStart = std::min( nBase, nIndex );
xub_StrLen nOfsLen = std::max( nBase, nIndex ) - nStart;
- pSalLayout = ImplLayout( rStr, nStart, nOfsLen, Point(0,0) );
+#else
+ xub_StrLen nStart = min( nBase, nIndex );
+ xub_StrLen nOfsLen = max( nBase, nIndex ) - nStart;
+#endif
+ pSalLayout = ImplLayout( rStr, nStart, nOfsLen );
if( pSalLayout )
{
- nXOffset = pSalLayout->FillDXArray( NULL );
+ nXOffset = pSalLayout->GetTextWidth();
pSalLayout->Release();
// TODO: fix offset calculation for Bidi case
if( nBase > nIndex)
@@ -7076,7 +7320,7 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
}
}
- pSalLayout = ImplLayout( rStr, nIndex, nLen, Point(0,0) );
+ pSalLayout = ImplLayout( rStr, nIndex, nLen );
if( pSalLayout )
{
int nWidthFactor = pSalLayout->GetUnitsPerPixel();
@@ -7119,10 +7363,10 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
// Here, we can savely assume that the mapping between characters and glyphs
// is one-to-one.
- pSalLayout = ImplLayout(rStr, nIndex, nLen, Point(0, 0));
+ pSalLayout = ImplLayout(rStr, nIndex, nLen );
if (pSalLayout == 0)
return false;
- long nOrgWidth = ImplGetTextWidth(*pSalLayout);
+ long nOrgWidth = pSalLayout->GetTextWidth();
long nOrgHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent
+ mnEmphasisDescent;
pSalLayout->Release();
@@ -7144,10 +7388,10 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
xVDev->SetTextColor(Color(COL_BLACK));
xVDev->SetTextFillColor();
- pSalLayout = xVDev->ImplLayout(rStr, nIndex, nLen, Point(0, 0));
+ pSalLayout = xVDev->ImplLayout(rStr, nIndex, nLen );
if (pSalLayout == 0)
return false;
- long nWidth = xVDev->ImplGetTextWidth(*pSalLayout);
+ long nWidth = pSalLayout->GetTextWidth();
long nHeight = xVDev->mpFontEntry->mnLineHeight + xVDev->mnEmphasisAscent
+ xVDev->mnEmphasisDescent;
pSalLayout->Release();
@@ -7162,12 +7406,17 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
nXOffset = 0;
if( nBase != nIndex )
{
+#if (_MSC_VER < 1300)
xub_StrLen nStart = std::min( nBase, nIndex );
xub_StrLen nLength = std::max( nBase, nIndex ) - nStart;
- pSalLayout = xVDev->ImplLayout( rStr, nStart, nLength, Point(0,0) );
+#else
+ xub_StrLen nStart = min( nBase, nIndex );
+ xub_StrLen nLength = max( nBase, nIndex ) - nStart;
+#endif
+ pSalLayout = xVDev->ImplLayout( rStr, nStart, nLength );
if( pSalLayout )
{
- nXOffset = pSalLayout->FillDXArray( NULL );
+ nXOffset = pSalLayout->GetTextWidth();
pSalLayout->Release();
if( nBase > nIndex)
nXOffset = -nXOffset;
@@ -7180,10 +7429,10 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
bool bSuccess = false;
// draw character into virtual device
- pSalLayout = xVDev->ImplLayout(rStr, i, 1, Point(0, 0));
+ pSalLayout = xVDev->ImplLayout(rStr, i, 1 );
if (pSalLayout == 0)
return false;
- long nCharWidth = xVDev->ImplGetTextWidth(*pSalLayout);
+ long nCharWidth = pSalLayout->GetTextWidth();
Point aOffset(nCharWidth / 2, 8);
Size aSize(nCharWidth + 2 * aOffset.X(), nHeight + 2 * aOffset.Y());
@@ -7192,7 +7441,7 @@ BOOL OutputDevice::GetTextOutlines( PolyPolyVector& rVector,
{
xVDev->Erase();
pSalLayout->DrawBase() += aOffset;
- xVDev->ImplDrawText(*pSalLayout);
+ pSalLayout->DrawText( *xVDev->mpGraphics );
}
pSalLayout->Release();
diff --git a/vcl/source/gdi/outdev4.cxx b/vcl/source/gdi/outdev4.cxx
index 590ffa811a9c..307672c4136a 100644
--- a/vcl/source/gdi/outdev4.cxx
+++ b/vcl/source/gdi/outdev4.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outdev4.cxx,v $
*
- * $Revision: 1.12 $
+ * $Revision: 1.13 $
*
- * last change: $Author: thb $ $Date: 2002-10-14 09:56:03 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:00 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -95,11 +95,8 @@
#ifndef _SV_OUTDATA_HXX
#include <outdata.hxx>
#endif
-#ifndef _SV_POLY_H
-#include <poly.h>
-#endif
-#ifndef _SV_POLY_HXX
-#include <poly.hxx>
+#ifndef _POLY_HXX
+#include <tools/poly.hxx>
#endif
#ifndef _SV_SALBTYPE_HXX
#include <salbtype.hxx>
@@ -161,7 +158,7 @@ void OutputDevice::ImplDrawPolygon( const Polygon& rPoly, const PolyPolygon* pCl
if ( nPoints < 2 )
return;
- const SalPoint* pPtAry = (const SalPoint*)rPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)rPoly.GetConstPointAry();
mpGraphics->DrawPolygon( nPoints, pPtAry, this );
}
}
@@ -187,7 +184,7 @@ void OutputDevice::ImplDrawPolyPolygon( const PolyPolygon& rPolyPoly, const Poly
if( nSize >= 2 )
{
- const SalPoint* pPtAry = (const SalPoint*)rPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)rPoly.GetConstPointAry();
mpGraphics->DrawPolygon( nSize, pPtAry, this );
}
}
@@ -204,7 +201,7 @@ void OutputDevice::ImplDrawPolyPolygon( const PolyPolygon& rPolyPoly, const Poly
if ( nSize )
{
pPointAry[i] = nSize;
- pPointAryAry[i] = (PCONSTSALPOINT)rPoly.ImplGetConstPointAry();
+ pPointAryAry[i] = (PCONSTSALPOINT)rPoly.GetConstPointAry();
i++;
}
else
@@ -332,9 +329,14 @@ void OutputDevice::ImplDrawLinearGradient( const Rectangle& rRect,
long nInc;
if ( meOutDevType != OUTDEV_PRINTER && !bMtf )
+ {
nInc = (nMinRect < 50) ? 2 : 4;
+ }
else
- nInc = ((nMinRect >> 9) + 1) << 3;
+ {
+ // #105998# Use display-equivalent step size calculation
+ nInc = (nMinRect < 800) ? 10 : 20;
+ }
if ( !nInc )
nInc = 1;
@@ -450,7 +452,10 @@ void OutputDevice::ImplDrawLinearGradient( const Rectangle& rRect,
{
// fuer axiale FV muss die letzte Farbe der ersten
// Farbe entsprechen
- if ( i > nSteps )
+ // #107350# Setting end color one step earlier, as the
+ // last time we get here, we drop out of the loop later
+ // on.
+ if ( i >= nSteps )
{
nRed = (UINT8)nEndRed;
nGreen = (UINT8)nEndGreen;
@@ -582,10 +587,14 @@ void OutputDevice::ImplDrawComplexGradient( const Rectangle& rRect,
long nInc;
if ( meOutDevType != OUTDEV_PRINTER && !bMtf )
+ {
nInc = ( nMinRect < 50 ) ? 2 : 4;
-
+ }
else
- nInc = ( ( nMinRect >> 9 ) + 1 ) << 3;
+ {
+ // #105998# Use display-equivalent step size calculation
+ nInc = (nMinRect < 800) ? 10 : 20;
+ }
if( !nInc )
nInc = 1;
@@ -615,6 +624,7 @@ void OutputDevice::ImplDrawComplexGradient( const Rectangle& rRect,
double fScanBottom = aRect.Bottom();
double fScanInc = (double) nMinRect / (double) nSteps * 0.5;
UINT8 nRed = (UINT8) nStartRed, nGreen = (UINT8) nStartGreen, nBlue = (UINT8) nStartBlue;
+ bool bPaintLastPolygon( false ); // #107349# Paint last polygon only if loop has generated any output
if( bMtf )
mpMetaFile->AddAction( new MetaFillColorAction( Color( nRed, nGreen, nBlue ), TRUE ) );
@@ -668,16 +678,11 @@ void OutputDevice::ImplDrawComplexGradient( const Rectangle& rRect,
nGreen = ImplGetGradientColorValue( nStartGreen + ( ( nGreenSteps * nStepIndex ) / nSteps ) );
nBlue = ImplGetGradientColorValue( nStartBlue + ( ( nBlueSteps * nStepIndex ) / nSteps ) );
- if( bMtf )
- mpMetaFile->AddAction( new MetaFillColorAction( Color( nRed, nGreen, nBlue ), TRUE ) );
-#ifndef REMOTE_APPSERVER
- else
- mpGraphics->SetFillColor( MAKE_SALCOLOR( nRed, nGreen, nBlue ) );
-#endif
-
// entweder langsame PolyPolygon-Ausgaben oder schnelles Polygon-Painting
if( pPolyPoly )
{
+ bPaintLastPolygon = true; // #107349# Paint last polygon only if loop has generated any output
+
pPolyPoly->Replace( pPolyPoly->GetObject( 1 ), 0 );
pPolyPoly->Replace( aPoly, 1 );
@@ -687,10 +692,30 @@ void OutputDevice::ImplDrawComplexGradient( const Rectangle& rRect,
else
ImplDrawPolyPolygon( *pPolyPoly, pClipPolyPoly );
#endif
+
+ // #107349# Set fill color _after_ geometry painting:
+ // pPolyPoly's geometry is the band from last iteration's
+ // aPoly to current iteration's aPoly. The window outdev
+ // path (see else below), on the other hand, paints the
+ // full aPoly. Thus, here, we're painting the band before
+ // the one painted in the window outdev path below. To get
+ // matching colors, have to delay color setting here.
+ if( bMtf )
+ mpMetaFile->AddAction( new MetaFillColorAction( Color( nRed, nGreen, nBlue ), TRUE ) );
+ else
+ mpGraphics->SetFillColor( MAKE_SALCOLOR( nRed, nGreen, nBlue ) );
}
#ifndef REMOTE_APPSERVER
else
+ {
+ // #107349# Set fill color _before_ geometry painting
+ if( bMtf )
+ mpMetaFile->AddAction( new MetaFillColorAction( Color( nRed, nGreen, nBlue ), TRUE ) );
+ else
+ mpGraphics->SetFillColor( MAKE_SALCOLOR( nRed, nGreen, nBlue ) );
+
ImplDrawPolygon( aPoly, pClipPolyPoly );
+ }
#endif
}
@@ -701,9 +726,15 @@ void OutputDevice::ImplDrawComplexGradient( const Rectangle& rRect,
if( !rPoly.GetBoundRect().IsEmpty() )
{
- nRed = ImplGetGradientColorValue( nEndRed );
- nGreen = ImplGetGradientColorValue( nEndGreen );
- nBlue = ImplGetGradientColorValue( nEndBlue );
+ // #107349# Paint last polygon with end color only if loop
+ // has generated output. Otherwise, the current
+ // (i.e. start) color is taken, to generate _any_ output.
+ if( bPaintLastPolygon )
+ {
+ nRed = ImplGetGradientColorValue( nEndRed );
+ nGreen = ImplGetGradientColorValue( nEndGreen );
+ nBlue = ImplGetGradientColorValue( nEndBlue );
+ }
if( bMtf )
{
@@ -792,7 +823,7 @@ void OutputDevice::DrawGradient( const Rectangle& rRect,
if( mpMetaFile )
mpMetaFile->AddAction( new MetaGradientAction( rRect, aGradient ) );
- if( !IsDeviceOutputNecessary() )
+ if( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
// Rechteck in Pixel umrechnen
@@ -925,7 +956,7 @@ void OutputDevice::DrawGradient( const PolyPolygon& rPolyPoly,
mpMetaFile->AddAction( new MetaCommentAction( "XGRAD_SEQ_END" ) );
}
- if( !IsDeviceOutputNecessary() )
+ if( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
Gradient aGradient( rGradient );
@@ -1128,7 +1159,7 @@ void OutputDevice::DrawHatch( const PolyPolygon& rPolyPoly, const Hatch& rHatch
}
else if( mnDrawMode & DRAWMODE_SETTINGSLINE )
{
- aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
+ aColor = GetSettings().GetStyleSettings().GetFontColor();
}
if ( mnDrawMode & DRAWMODE_GHOSTEDLINE )
@@ -1144,7 +1175,7 @@ void OutputDevice::DrawHatch( const PolyPolygon& rPolyPoly, const Hatch& rHatch
if( mpMetaFile )
mpMetaFile->AddAction( new MetaHatchAction( rPolyPoly, aHatch ) );
- if( !IsDeviceOutputNecessary() )
+ if( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
diff --git a/vcl/source/gdi/outdev5.cxx b/vcl/source/gdi/outdev5.cxx
index 918ee8b76ac2..4563b20fdc4a 100644
--- a/vcl/source/gdi/outdev5.cxx
+++ b/vcl/source/gdi/outdev5.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outdev5.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: ssa $ $Date: 2002-08-29 15:35:30 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:00 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -84,11 +84,8 @@
#ifndef _SV_SVDATA_HXX
#include <svdata.hxx>
#endif
-#ifndef _SV_POLY_H
-#include <poly.h>
-#endif
-#ifndef _SV_POLY_HXX
-#include <poly.hxx>
+#ifndef _POLY_HXX
+#include <tools/poly.hxx>
#endif
#ifndef _SV_METAACT_HXX
#include <metaact.hxx>
@@ -121,7 +118,7 @@ void OutputDevice::DrawRect( const Rectangle& rRect,
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaRoundRectAction( rRect, nHorzRound, nVertRound ) );
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || ImplIsRecordLayout() )
return;
const Rectangle aRect( ImplLogicToDevicePixel( rRect ) );
@@ -158,7 +155,7 @@ void OutputDevice::DrawRect( const Rectangle& rRect,
if ( aRoundRectPoly.GetSize() >= 2 )
{
- const SalPoint* pPtAry = (const SalPoint*) aRoundRectPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*) aRoundRectPoly.GetConstPointAry();
if ( !mbFillColor )
mpGraphics->DrawPolyLine( aRoundRectPoly.GetSize(), pPtAry, this );
@@ -192,7 +189,7 @@ void OutputDevice::DrawEllipse( const Rectangle& rRect )
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaEllipseAction( rRect ) );
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || ImplIsRecordLayout() )
return;
Rectangle aRect( ImplLogicToDevicePixel( rRect ) );
@@ -218,7 +215,7 @@ void OutputDevice::DrawEllipse( const Rectangle& rRect )
Polygon aRectPoly( aRect.Center(), aRect.GetWidth() >> 1, aRect.GetHeight() >> 1 );
if ( aRectPoly.GetSize() >= 2 )
{
- const SalPoint* pPtAry = (const SalPoint*)aRectPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aRectPoly.GetConstPointAry();
if ( !mbFillColor )
mpGraphics->DrawPolyLine( aRectPoly.GetSize(), pPtAry, this );
else
@@ -252,7 +249,7 @@ void OutputDevice::DrawArc( const Rectangle& rRect,
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaArcAction( rRect, rStartPt, rEndPt ) );
- if ( !IsDeviceOutputNecessary() || !mbLineColor )
+ if ( !IsDeviceOutputNecessary() || !mbLineColor || ImplIsRecordLayout() )
return;
Rectangle aRect( ImplLogicToDevicePixel( rRect ) );
@@ -281,7 +278,7 @@ void OutputDevice::DrawArc( const Rectangle& rRect,
if ( aArcPoly.GetSize() >= 2 )
{
- const SalPoint* pPtAry = (const SalPoint*)aArcPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aArcPoly.GetConstPointAry();
mpGraphics->DrawPolyLine( aArcPoly.GetSize(), pPtAry, this );
}
#else
@@ -310,7 +307,7 @@ void OutputDevice::DrawPie( const Rectangle& rRect,
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaPieAction( rRect, rStartPt, rEndPt ) );
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || ImplIsRecordLayout() )
return;
Rectangle aRect( ImplLogicToDevicePixel( rRect ) );
@@ -339,7 +336,7 @@ void OutputDevice::DrawPie( const Rectangle& rRect,
if ( aPiePoly.GetSize() >= 2 )
{
- const SalPoint* pPtAry = (const SalPoint*)aPiePoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aPiePoly.GetConstPointAry();
if ( !mbFillColor )
mpGraphics->DrawPolyLine( aPiePoly.GetSize(), pPtAry, this );
else
@@ -375,7 +372,7 @@ void OutputDevice::DrawChord( const Rectangle& rRect,
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaChordAction( rRect, rStartPt, rEndPt ) );
- if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) )
+ if ( !IsDeviceOutputNecessary() || (!mbLineColor && !mbFillColor) || ImplIsRecordLayout() )
return;
Rectangle aRect( ImplLogicToDevicePixel( rRect ) );
@@ -404,7 +401,7 @@ void OutputDevice::DrawChord( const Rectangle& rRect,
if ( aChordPoly.GetSize() >= 2 )
{
- const SalPoint* pPtAry = (const SalPoint*)aChordPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aChordPoly.GetConstPointAry();
if ( !mbFillColor )
mpGraphics->DrawPolyLine( aChordPoly.GetSize(), pPtAry, this );
else
diff --git a/vcl/source/gdi/outdev6.cxx b/vcl/source/gdi/outdev6.cxx
index 3499fc433bfa..5d8ba68e2efb 100644
--- a/vcl/source/gdi/outdev6.cxx
+++ b/vcl/source/gdi/outdev6.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outdev6.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: ssa $ $Date: 2002-08-29 15:35:30 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:00 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -123,7 +123,7 @@ void OutputDevice::DrawGrid( const Rectangle& rRect, const Size& rDist, ULONG nF
Rectangle aDstRect( PixelToLogic( Point() ), GetOutputSize() );
aDstRect.Intersection( rRect );
- if( aDstRect.IsEmpty() )
+ if( aDstRect.IsEmpty() || ImplIsRecordLayout() )
return;
#ifndef REMOTE_APPSERVER
@@ -241,7 +241,7 @@ void OutputDevice::DrawTransparent( const PolyPolygon& rPolyPoly,
if( mpMetaFile )
mpMetaFile->AddAction( new MetaTransparentAction( rPolyPoly, nTransparencePercent ) );
- if( !IsDeviceOutputNecessary() || ( !mbLineColor && !mbFillColor ) )
+ if( !IsDeviceOutputNecessary() || ( !mbLineColor && !mbFillColor ) || ImplIsRecordLayout() )
return;
GDIMetaFile* pOldMetaFile = mpMetaFile;
@@ -912,7 +912,7 @@ void OutputDevice::DrawWallpaper( const Rectangle& rRect,
if ( mpMetaFile )
mpMetaFile->AddAction( new MetaWallpaperAction( rRect, rWallpaper ) );
- if ( !IsDeviceOutputNecessary() )
+ if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
if ( rWallpaper.GetStyle() != WALLPAPER_NULL )
@@ -932,7 +932,7 @@ void OutputDevice::DrawWallpaper( const Rectangle& rRect,
void OutputDevice::Erase()
{
- if ( !IsDeviceOutputNecessary() )
+ if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
if ( mbBackground )
@@ -1003,7 +1003,7 @@ void OutputDevice::DrawEPS( const Point& rPoint, const Size& rSize,
mpMetaFile->AddAction( new MetaEPSAction( rPoint, rSize, rGfxLink, aSubst ) );
}
- if ( !IsDeviceOutputNecessary() )
+ if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() )
return;
Rectangle aRect( ImplLogicToDevicePixel( Rectangle( rPoint, rSize ) ) );
diff --git a/vcl/source/gdi/outmap.cxx b/vcl/source/gdi/outmap.cxx
index 91c179ff1769..969cc27adb24 100644
--- a/vcl/source/gdi/outmap.cxx
+++ b/vcl/source/gdi/outmap.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: outmap.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: thb $ $Date: 2002-11-15 10:49:43 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:01 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -77,11 +77,8 @@
#ifndef _SV_SVDATA_HXX
#include <svdata.hxx>
#endif
-#ifndef _SV_POLY_H
-#include <poly.h>
-#endif
-#ifndef _SV_POLY_HXX
-#include <poly.hxx>
+#ifndef _POLY_HXX
+#include <tools/poly.hxx>
#endif
#ifndef _SV_REGION_HXX
#include <region.hxx>
@@ -416,178 +413,6 @@ inline void ImplCalcMapResolution( const MapMode& rMapMode,
// -----------------------------------------------------------------------
-void OutputDevice::SetMapMode()
-{
- DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
-
- if ( mpMetaFile )
- mpMetaFile->AddAction( new MetaMapModeAction( MapMode() ) );
-
- if ( mbMap || !maMapMode.IsDefault() )
- {
- mbMap = FALSE;
- maMapMode = MapMode();
-
- // create new objects (clip region werden nicht neu skaliert)
- mbNewFont = TRUE;
- mbInitFont = TRUE;
- if ( GetOutDevType() == OUTDEV_WINDOW )
- {
- if ( ((Window*)this)->mpCursor )
- ((Window*)this)->mpCursor->ImplNew();
- }
- }
-}
-
-// -----------------------------------------------------------------------
-
-void OutputDevice::SetMapMode( const MapMode& rNewMapMode )
-{
- DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
-
- BOOL bRelMap = (rNewMapMode.GetMapUnit() == MAP_RELATIVE);
-
- if ( mpMetaFile )
- {
- mpMetaFile->AddAction( new MetaMapModeAction( rNewMapMode ) );
-#ifdef DBG_UTIL
- if ( GetOutDevType() != OUTDEV_PRINTER )
- DBG_ASSERTWARNING( bRelMap, "Please record only relative MapModes!" );
-#endif
- }
-
- // Ist der MapMode der gleiche wie vorher, dann mache nichts
- if ( maMapMode == rNewMapMode )
- return;
-
- // Ist Default-MapMode, dann bereche nichts
- BOOL bOldMap = mbMap;
- mbMap = !rNewMapMode.IsDefault();
- if ( mbMap )
- {
- // Falls nur der Orign umgesetzt wird, dann scaliere nichts neu
- if ( (rNewMapMode.GetMapUnit() == maMapMode.GetMapUnit()) &&
- (rNewMapMode.GetScaleX() == maMapMode.GetScaleX()) &&
- (rNewMapMode.GetScaleY() == maMapMode.GetScaleY()) &&
- (bOldMap == mbMap) )
- {
- // Offset setzen
- Point aOrigin = rNewMapMode.GetOrigin();
- maMapRes.mnMapOfsX = aOrigin.X();
- maMapRes.mnMapOfsY = aOrigin.Y();
- maMapMode = rNewMapMode;
- return;
- }
- if ( !bOldMap && bRelMap )
- {
- maMapRes.mnMapScNumX = 1;
- maMapRes.mnMapScNumY = 1;
- maMapRes.mnMapScDenomX = mnDPIX;
- maMapRes.mnMapScDenomY = mnDPIY;
- maMapRes.mnMapOfsX = 0;
- maMapRes.mnMapOfsY = 0;
- }
-
- // Neue MapMode-Aufloesung berechnen
- ImplCalcMapResolution( rNewMapMode, mnDPIX, mnDPIY, maMapRes, maThresRes );
- }
-
- // Neuen MapMode setzen
- if ( bRelMap )
- {
- Point aOrigin( maMapRes.mnMapOfsX, maMapRes.mnMapOfsY );
- // aScale? = maMapMode.GetScale?() * rNewMapMode.GetScale?()
- Fraction aScaleX = ImplMakeFraction( maMapMode.GetScaleX().GetNumerator(),
- rNewMapMode.GetScaleX().GetNumerator(),
- maMapMode.GetScaleX().GetDenominator(),
- rNewMapMode.GetScaleX().GetDenominator() );
- Fraction aScaleY = ImplMakeFraction( maMapMode.GetScaleY().GetNumerator(),
- rNewMapMode.GetScaleY().GetNumerator(),
- maMapMode.GetScaleY().GetDenominator(),
- rNewMapMode.GetScaleY().GetDenominator() );
- maMapMode.SetOrigin( aOrigin );
- maMapMode.SetScaleX( aScaleX );
- maMapMode.SetScaleY( aScaleY );
- }
- else
- maMapMode = rNewMapMode;
-
- // create new objects (clip region werden nicht neu skaliert)
- mbNewFont = TRUE;
- mbInitFont = TRUE;
- if ( GetOutDevType() == OUTDEV_WINDOW )
- {
- if ( ((Window*)this)->mpCursor )
- ((Window*)this)->mpCursor->ImplNew();
- }
-}
-
-// -----------------------------------------------------------------------
-
-void OutputDevice::SetRelativeMapMode( const MapMode& rNewMapMode )
-{
- DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
-
- // Ist der MapMode der gleiche wie vorher, dann mache nichts
- if ( maMapMode == rNewMapMode )
- return;
-
- MapUnit eOld = maMapMode.GetMapUnit();
- MapUnit eNew = rNewMapMode.GetMapUnit();
-
- // a?F = rNewMapMode.GetScale?() / maMapMode.GetScale?()
- Fraction aXF = ImplMakeFraction( rNewMapMode.GetScaleX().GetNumerator(),
- maMapMode.GetScaleX().GetDenominator(),
- rNewMapMode.GetScaleX().GetDenominator(),
- maMapMode.GetScaleX().GetNumerator() );
- Fraction aYF = ImplMakeFraction( rNewMapMode.GetScaleY().GetNumerator(),
- maMapMode.GetScaleY().GetDenominator(),
- rNewMapMode.GetScaleY().GetDenominator(),
- maMapMode.GetScaleY().GetNumerator() );
-
- Point aPt( LogicToLogic( Point(), NULL, &rNewMapMode ) );
- if ( eNew != eOld )
- {
- if ( eOld > MAP_PIXEL )
- {
- DBG_ERRORFILE( "Not implemented MapUnit" )
- }
- else if ( eNew > MAP_PIXEL )
- {
- DBG_ERRORFILE( "Not implemented MapUnit" )
- }
- else
- {
- Fraction aF( aImplNumeratorAry[eNew] * aImplDenominatorAry[eOld],
- aImplNumeratorAry[eOld] * aImplDenominatorAry[eNew] );
-
- // a?F = a?F * aF
- aXF = ImplMakeFraction( aXF.GetNumerator(), aF.GetNumerator(),
- aXF.GetDenominator(), aF.GetDenominator() );
- aYF = ImplMakeFraction( aYF.GetNumerator(), aF.GetNumerator(),
- aYF.GetDenominator(), aF.GetDenominator() );
- if ( eOld == MAP_PIXEL )
- {
- aXF *= Fraction( mnDPIX, 1 );
- aYF *= Fraction( mnDPIY, 1 );
- }
- else if ( eNew == MAP_PIXEL )
- {
- aXF *= Fraction( 1, mnDPIX );
- aYF *= Fraction( 1, mnDPIY );
- }
- }
- }
-
- MapMode aNewMapMode( MAP_RELATIVE, Point( -aPt.X(), -aPt.Y() ), aXF, aYF );
- SetMapMode( aNewMapMode );
-
- if ( eNew != eOld )
- maMapMode = rNewMapMode;
-}
-
-// -----------------------------------------------------------------------
-
static long ImplLogicToPixel( long n, long nDPI, long nMapNum, long nMapDenom,
long nThres )
{
@@ -860,32 +685,31 @@ Polygon OutputDevice::ImplLogicToDevicePixel( const Polygon& rLogicPoly ) const
Polygon aPoly( rLogicPoly );
// Pointer auf das Point-Array holen (Daten werden kopiert)
-#ifdef WIN
- Point huge* pPointAry = (Point huge*)aPoly.ImplGetPointAry();
-#else
- Point* pPointAry = aPoly.ImplGetPointAry();
-#endif
+ const Point* pPointAry = aPoly.GetConstPointAry();
if ( mbMap )
{
for ( i = 0; i < nPoints; i++ )
{
- Point* pPt = &(pPointAry[i]);
- pPt->X() = ImplLogicToPixel( pPt->X()+maMapRes.mnMapOfsX, mnDPIX,
- maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
- maThresRes.mnThresLogToPixX )+mnOutOffX+mnOutOffOrigX;
- pPt->Y() = ImplLogicToPixel( pPt->Y()+maMapRes.mnMapOfsY, mnDPIY,
- maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
- maThresRes.mnThresLogToPixY )+mnOutOffY+mnOutOffOrigY;
+ const Point* pPt = &(pPointAry[i]);
+ Point aPt;
+ aPt.X() = ImplLogicToPixel( pPt->X()+maMapRes.mnMapOfsX, mnDPIX,
+ maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
+ maThresRes.mnThresLogToPixX )+mnOutOffX+mnOutOffOrigX;
+ aPt.Y() = ImplLogicToPixel( pPt->Y()+maMapRes.mnMapOfsY, mnDPIY,
+ maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
+ maThresRes.mnThresLogToPixY )+mnOutOffY+mnOutOffOrigY;
+ aPoly[i] = aPt;
}
}
else
{
for ( i = 0; i < nPoints; i++ )
{
- Point* pPt = &(pPointAry[i]);
- pPt->X() += mnOutOffX;
- pPt->Y() += mnOutOffY;
+ Point aPt = pPointAry[i];
+ aPt.X() += mnOutOffX;
+ aPt.Y() += mnOutOffY;
+ aPoly[i] = aPt;
}
}
@@ -981,6 +805,198 @@ Region OutputDevice::ImplPixelToDevicePixel( const Region& rRegion ) const
// -----------------------------------------------------------------------
+void OutputDevice::SetMapMode()
+{
+ DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
+
+ if ( mpMetaFile )
+ mpMetaFile->AddAction( new MetaMapModeAction( MapMode() ) );
+
+ if ( mbMap || !maMapMode.IsDefault() )
+ {
+ mbMap = FALSE;
+ maMapMode = MapMode();
+
+ // create new objects (clip region werden nicht neu skaliert)
+ mbNewFont = TRUE;
+ mbInitFont = TRUE;
+ if ( GetOutDevType() == OUTDEV_WINDOW )
+ {
+ if ( ((Window*)this)->mpCursor )
+ ((Window*)this)->mpCursor->ImplNew();
+ }
+
+ // #106426# Adapt logical offset when changing mapmode
+ mnOutOffLogicX = mnOutOffOrigX; // no mapping -> equal offsets
+ mnOutOffLogicY = mnOutOffOrigY;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void OutputDevice::SetMapMode( const MapMode& rNewMapMode )
+{
+ DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
+
+ BOOL bRelMap = (rNewMapMode.GetMapUnit() == MAP_RELATIVE);
+
+ if ( mpMetaFile )
+ {
+ mpMetaFile->AddAction( new MetaMapModeAction( rNewMapMode ) );
+#ifdef DBG_UTIL
+ if ( GetOutDevType() != OUTDEV_PRINTER )
+ DBG_ASSERTWARNING( bRelMap, "Please record only relative MapModes!" );
+#endif
+ }
+
+ // Ist der MapMode der gleiche wie vorher, dann mache nichts
+ if ( maMapMode == rNewMapMode )
+ return;
+
+ // Ist Default-MapMode, dann bereche nichts
+ BOOL bOldMap = mbMap;
+ mbMap = !rNewMapMode.IsDefault();
+ if ( mbMap )
+ {
+ // Falls nur der Orign umgesetzt wird, dann scaliere nichts neu
+ if ( (rNewMapMode.GetMapUnit() == maMapMode.GetMapUnit()) &&
+ (rNewMapMode.GetScaleX() == maMapMode.GetScaleX()) &&
+ (rNewMapMode.GetScaleY() == maMapMode.GetScaleY()) &&
+ (bOldMap == mbMap) )
+ {
+ // Offset setzen
+ Point aOrigin = rNewMapMode.GetOrigin();
+ maMapRes.mnMapOfsX = aOrigin.X();
+ maMapRes.mnMapOfsY = aOrigin.Y();
+ maMapMode = rNewMapMode;
+ return;
+ }
+ if ( !bOldMap && bRelMap )
+ {
+ maMapRes.mnMapScNumX = 1;
+ maMapRes.mnMapScNumY = 1;
+ maMapRes.mnMapScDenomX = mnDPIX;
+ maMapRes.mnMapScDenomY = mnDPIY;
+ maMapRes.mnMapOfsX = 0;
+ maMapRes.mnMapOfsY = 0;
+ }
+
+ // Neue MapMode-Aufloesung berechnen
+ ImplCalcMapResolution( rNewMapMode, mnDPIX, mnDPIY, maMapRes, maThresRes );
+ }
+
+ // Neuen MapMode setzen
+ if ( bRelMap )
+ {
+ Point aOrigin( maMapRes.mnMapOfsX, maMapRes.mnMapOfsY );
+ // aScale? = maMapMode.GetScale?() * rNewMapMode.GetScale?()
+ Fraction aScaleX = ImplMakeFraction( maMapMode.GetScaleX().GetNumerator(),
+ rNewMapMode.GetScaleX().GetNumerator(),
+ maMapMode.GetScaleX().GetDenominator(),
+ rNewMapMode.GetScaleX().GetDenominator() );
+ Fraction aScaleY = ImplMakeFraction( maMapMode.GetScaleY().GetNumerator(),
+ rNewMapMode.GetScaleY().GetNumerator(),
+ maMapMode.GetScaleY().GetDenominator(),
+ rNewMapMode.GetScaleY().GetDenominator() );
+ maMapMode.SetOrigin( aOrigin );
+ maMapMode.SetScaleX( aScaleX );
+ maMapMode.SetScaleY( aScaleY );
+ }
+ else
+ maMapMode = rNewMapMode;
+
+ // create new objects (clip region werden nicht neu skaliert)
+ mbNewFont = TRUE;
+ mbInitFont = TRUE;
+ if ( GetOutDevType() == OUTDEV_WINDOW )
+ {
+ if ( ((Window*)this)->mpCursor )
+ ((Window*)this)->mpCursor->ImplNew();
+ }
+
+ // #106426# Adapt logical offset when changing mapmode
+ mnOutOffLogicX = ImplPixelToLogic( mnOutOffOrigX, mnDPIX,
+ maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
+ maThresRes.mnThresPixToLogX );
+ mnOutOffLogicY = ImplPixelToLogic( mnOutOffOrigY, mnDPIY,
+ maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
+ maThresRes.mnThresPixToLogY );
+}
+
+// -----------------------------------------------------------------------
+
+void OutputDevice::SetRelativeMapMode( const MapMode& rNewMapMode )
+{
+ DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
+
+ // Ist der MapMode der gleiche wie vorher, dann mache nichts
+ if ( maMapMode == rNewMapMode )
+ return;
+
+ MapUnit eOld = maMapMode.GetMapUnit();
+ MapUnit eNew = rNewMapMode.GetMapUnit();
+
+ // a?F = rNewMapMode.GetScale?() / maMapMode.GetScale?()
+ Fraction aXF = ImplMakeFraction( rNewMapMode.GetScaleX().GetNumerator(),
+ maMapMode.GetScaleX().GetDenominator(),
+ rNewMapMode.GetScaleX().GetDenominator(),
+ maMapMode.GetScaleX().GetNumerator() );
+ Fraction aYF = ImplMakeFraction( rNewMapMode.GetScaleY().GetNumerator(),
+ maMapMode.GetScaleY().GetDenominator(),
+ rNewMapMode.GetScaleY().GetDenominator(),
+ maMapMode.GetScaleY().GetNumerator() );
+
+ Point aPt( LogicToLogic( Point(), NULL, &rNewMapMode ) );
+ if ( eNew != eOld )
+ {
+ if ( eOld > MAP_PIXEL )
+ {
+ DBG_ERRORFILE( "Not implemented MapUnit" )
+ }
+ else if ( eNew > MAP_PIXEL )
+ {
+ DBG_ERRORFILE( "Not implemented MapUnit" )
+ }
+ else
+ {
+ Fraction aF( aImplNumeratorAry[eNew] * aImplDenominatorAry[eOld],
+ aImplNumeratorAry[eOld] * aImplDenominatorAry[eNew] );
+
+ // a?F = a?F * aF
+ aXF = ImplMakeFraction( aXF.GetNumerator(), aF.GetNumerator(),
+ aXF.GetDenominator(), aF.GetDenominator() );
+ aYF = ImplMakeFraction( aYF.GetNumerator(), aF.GetNumerator(),
+ aYF.GetDenominator(), aF.GetDenominator() );
+ if ( eOld == MAP_PIXEL )
+ {
+ aXF *= Fraction( mnDPIX, 1 );
+ aYF *= Fraction( mnDPIY, 1 );
+ }
+ else if ( eNew == MAP_PIXEL )
+ {
+ aXF *= Fraction( 1, mnDPIX );
+ aYF *= Fraction( 1, mnDPIY );
+ }
+ }
+ }
+
+ MapMode aNewMapMode( MAP_RELATIVE, Point( -aPt.X(), -aPt.Y() ), aXF, aYF );
+ SetMapMode( aNewMapMode );
+
+ if ( eNew != eOld )
+ maMapMode = rNewMapMode;
+
+ // #106426# Adapt logical offset when changing mapmode
+ mnOutOffLogicX = ImplPixelToLogic( mnOutOffOrigX, mnDPIX,
+ maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
+ maThresRes.mnThresPixToLogX );
+ mnOutOffLogicY = ImplPixelToLogic( mnOutOffOrigY, mnDPIY,
+ maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
+ maThresRes.mnThresPixToLogY );
+}
+
+// -----------------------------------------------------------------------
+
Point OutputDevice::LogicToPixel( const Point& rLogicPt ) const
{
DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
@@ -1051,21 +1067,19 @@ Polygon OutputDevice::LogicToPixel( const Polygon& rLogicPoly ) const
Polygon aPoly( rLogicPoly );
// Pointer auf das Point-Array holen (Daten werden kopiert)
-#ifdef WIN
- Point huge* pPointAry = (Point huge*)aPoly.ImplGetPointAry();
-#else
- Point* pPointAry = aPoly.ImplGetPointAry();
-#endif
+ const Point* pPointAry = aPoly.GetConstPointAry();
for ( i = 0; i < nPoints; i++ )
{
- Point* pPt = &(pPointAry[i]);
- pPt->X() = ImplLogicToPixel( pPt->X() + maMapRes.mnMapOfsX, mnDPIX,
- maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
- maThresRes.mnThresLogToPixX )+mnOutOffOrigX;
- pPt->Y() = ImplLogicToPixel( pPt->Y() + maMapRes.mnMapOfsY, mnDPIY,
- maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
- maThresRes.mnThresLogToPixY )+mnOutOffOrigY;
+ const Point* pPt = &(pPointAry[i]);
+ Point aPt;
+ aPt.X() = ImplLogicToPixel( pPt->X() + maMapRes.mnMapOfsX, mnDPIX,
+ maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
+ maThresRes.mnThresLogToPixX )+mnOutOffOrigX;
+ aPt.Y() = ImplLogicToPixel( pPt->Y() + maMapRes.mnMapOfsY, mnDPIY,
+ maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
+ maThresRes.mnThresLogToPixY )+mnOutOffOrigY;
+ aPoly[i] = aPt;
}
return aPoly;
@@ -1227,21 +1241,19 @@ Polygon OutputDevice::LogicToPixel( const Polygon& rLogicPoly,
Polygon aPoly( rLogicPoly );
// Pointer auf das Point-Array holen (Daten werden kopiert)
-#ifdef WIN
- Point huge* pPointAry = (Point huge*)aPoly.ImplGetPointAry();
-#else
- Point* pPointAry = aPoly.ImplGetPointAry();
-#endif
+ const Point* pPointAry = aPoly.GetConstPointAry();
for ( i = 0; i < nPoints; i++ )
{
- Point* pPt = &(pPointAry[i]);
- pPt->X() = ImplLogicToPixel( pPt->X() + aMapRes.mnMapOfsX, mnDPIX,
- aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
- aThresRes.mnThresLogToPixX )+mnOutOffOrigX;
- pPt->Y() = ImplLogicToPixel( pPt->Y() + aMapRes.mnMapOfsY, mnDPIY,
- aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
- aThresRes.mnThresLogToPixY )+mnOutOffOrigY;
+ const Point* pPt = &(pPointAry[i]);
+ Point aPt;
+ aPt.X() = ImplLogicToPixel( pPt->X() + aMapRes.mnMapOfsX, mnDPIX,
+ aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
+ aThresRes.mnThresLogToPixX )+mnOutOffOrigX;
+ aPt.Y() = ImplLogicToPixel( pPt->Y() + aMapRes.mnMapOfsY, mnDPIY,
+ aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
+ aThresRes.mnThresLogToPixY )+mnOutOffOrigY;
+ aPoly[i] = aPt;
}
return aPoly;
@@ -1318,12 +1330,12 @@ Point OutputDevice::PixelToLogic( const Point& rDevicePt ) const
if ( !mbMap )
return rDevicePt;
- return Point( ImplPixelToLogic( rDevicePt.X()-mnOutOffOrigX, mnDPIX,
+ return Point( ImplPixelToLogic( rDevicePt.X(), mnDPIX,
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
- maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX,
- ImplPixelToLogic( rDevicePt.Y()-mnOutOffOrigY, mnDPIY,
+ maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
+ ImplPixelToLogic( rDevicePt.Y(), mnDPIY,
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
- maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY );
+ maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
}
// -----------------------------------------------------------------------
@@ -1352,18 +1364,18 @@ Rectangle OutputDevice::PixelToLogic( const Rectangle& rDeviceRect ) const
if ( !mbMap || rDeviceRect.IsEmpty() )
return rDeviceRect;
- return Rectangle( ImplPixelToLogic( rDeviceRect.Left()-mnOutOffOrigX, mnDPIX,
+ return Rectangle( ImplPixelToLogic( rDeviceRect.Left(), mnDPIX,
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
- maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX,
- ImplPixelToLogic( rDeviceRect.Top()-mnOutOffOrigY, mnDPIY,
+ maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
+ ImplPixelToLogic( rDeviceRect.Top(), mnDPIY,
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
- maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY,
- ImplPixelToLogic( rDeviceRect.Right()-mnOutOffOrigX, mnDPIX,
+ maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY - mnOutOffLogicY,
+ ImplPixelToLogic( rDeviceRect.Right(), mnDPIX,
maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
- maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX,
- ImplPixelToLogic( rDeviceRect.Bottom()-mnOutOffOrigY, mnDPIY,
+ maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX - mnOutOffLogicX,
+ ImplPixelToLogic( rDeviceRect.Bottom(), mnDPIY,
maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
- maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY );
+ maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY - mnOutOffLogicY );
}
// -----------------------------------------------------------------------
@@ -1381,21 +1393,19 @@ Polygon OutputDevice::PixelToLogic( const Polygon& rDevicePoly ) const
Polygon aPoly( rDevicePoly );
// Pointer auf das Point-Array holen (Daten werden kopiert)
-#ifdef WIN
- Point huge* pPointAry = (Point huge*)aPoly.ImplGetPointAry();
-#else
- Point* pPointAry = aPoly.ImplGetPointAry();
-#endif
+ const Point* pPointAry = aPoly.GetConstPointAry();
for ( i = 0; i < nPoints; i++ )
{
- Point* pPt = &(pPointAry[i]);
- pPt->X() = ImplPixelToLogic( pPt->X()-mnOutOffOrigX, mnDPIX,
- maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
- maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX;
- pPt->Y() = ImplPixelToLogic( pPt->Y()-mnOutOffOrigY, mnDPIY,
- maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
- maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY;
+ const Point* pPt = &(pPointAry[i]);
+ Point aPt;
+ aPt.X() = ImplPixelToLogic( pPt->X(), mnDPIX,
+ maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
+ maThresRes.mnThresPixToLogX ) - maMapRes.mnMapOfsX - mnOutOffLogicX;
+ aPt.Y() = ImplPixelToLogic( pPt->Y(), mnDPIY,
+ maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
+ maThresRes.mnThresPixToLogY ) - maMapRes.mnMapOfsY - mnOutOffLogicY;
+ aPoly[i] = aPt;
}
return aPoly;
@@ -1477,12 +1487,12 @@ Point OutputDevice::PixelToLogic( const Point& rDevicePt,
ImplThresholdRes aThresRes;
ImplCalcMapResolution( rMapMode, mnDPIX, mnDPIY, aMapRes, aThresRes );
- return Point( ImplPixelToLogic( rDevicePt.X()-mnOutOffOrigX, mnDPIX,
+ return Point( ImplPixelToLogic( rDevicePt.X(), mnDPIX,
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
- aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX,
- ImplPixelToLogic( rDevicePt.Y()-mnOutOffOrigY, mnDPIY,
+ aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
+ ImplPixelToLogic( rDevicePt.Y(), mnDPIY,
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
- aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY );
+ aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
}
// -----------------------------------------------------------------------
@@ -1525,18 +1535,18 @@ Rectangle OutputDevice::PixelToLogic( const Rectangle& rDeviceRect,
ImplThresholdRes aThresRes;
ImplCalcMapResolution( rMapMode, mnDPIX, mnDPIY, aMapRes, aThresRes );
- return Rectangle( ImplPixelToLogic( rDeviceRect.Left()-mnOutOffOrigX, mnDPIX,
+ return Rectangle( ImplPixelToLogic( rDeviceRect.Left(), mnDPIX,
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
- aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX,
- ImplPixelToLogic( rDeviceRect.Top()-mnOutOffOrigY, mnDPIY,
+ aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
+ ImplPixelToLogic( rDeviceRect.Top(), mnDPIY,
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
- aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY,
- ImplPixelToLogic( rDeviceRect.Right()-mnOutOffOrigX, mnDPIX,
+ aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY - mnOutOffLogicY,
+ ImplPixelToLogic( rDeviceRect.Right(), mnDPIX,
aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
- aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX,
- ImplPixelToLogic( rDeviceRect.Bottom()-mnOutOffOrigY, mnDPIY,
+ aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX - mnOutOffLogicX,
+ ImplPixelToLogic( rDeviceRect.Bottom(), mnDPIY,
aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
- aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY );
+ aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY - mnOutOffLogicY );
}
// -----------------------------------------------------------------------
@@ -1561,21 +1571,19 @@ Polygon OutputDevice::PixelToLogic( const Polygon& rDevicePoly,
Polygon aPoly( rDevicePoly );
// Pointer auf das Point-Array holen (Daten werden kopiert)
-#ifdef WIN
- Point huge* pPointAry = (Point huge*)aPoly.ImplGetPointAry();
-#else
- Point* pPointAry = aPoly.ImplGetPointAry();
-#endif
+ const Point* pPointAry = aPoly.GetConstPointAry();
for ( i = 0; i < nPoints; i++ )
{
- Point* pPt = &(pPointAry[i]);
- pPt->X() = ImplPixelToLogic( pPt->X()-mnOutOffOrigX, mnDPIX,
- aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
- aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX;
- pPt->Y() = ImplPixelToLogic( pPt->Y()-mnOutOffOrigY, mnDPIY,
- aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
- aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY;
+ const Point* pPt = &(pPointAry[i]);
+ Point aPt;
+ aPt.X() = ImplPixelToLogic( pPt->X(), mnDPIX,
+ aMapRes.mnMapScNumX, aMapRes.mnMapScDenomX,
+ aThresRes.mnThresPixToLogX ) - aMapRes.mnMapOfsX - mnOutOffLogicX;
+ aPt.Y() = ImplPixelToLogic( pPt->Y(), mnDPIY,
+ aMapRes.mnMapScNumY, aMapRes.mnMapScDenomY,
+ aThresRes.mnThresPixToLogY ) - aMapRes.mnMapOfsY - mnOutOffLogicY;
+ aPoly[i] = aPt;
}
return aPoly;
@@ -2090,8 +2098,15 @@ long OutputDevice::LogicToLogic( long nLongSource,
void OutputDevice::SetPixelOffset( const Size& rOffset )
{
- mnOutOffOrigX = rOffset.Width();
- mnOutOffOrigY = rOffset.Height();
+ mnOutOffOrigX = rOffset.Width();
+ mnOutOffOrigY = rOffset.Height();
+
+ mnOutOffLogicX = ImplPixelToLogic( mnOutOffOrigX, mnDPIX,
+ maMapRes.mnMapScNumX, maMapRes.mnMapScDenomX,
+ maThresRes.mnThresPixToLogX );
+ mnOutOffLogicY = ImplPixelToLogic( mnOutOffOrigY, mnDPIY,
+ maMapRes.mnMapScNumY, maMapRes.mnMapScDenomY,
+ maThresRes.mnThresPixToLogY );
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 278f88f892f2..0716cffc08b7 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: pdfwriter_impl.cxx,v $
*
- * $Revision: 1.46 $
+ * $Revision: 1.47 $
*
- * last change: $Author: pl $ $Date: 2002-11-20 14:37:06 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:01 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -292,11 +292,33 @@ bool PDFWriterImpl::PDFPage::emit(sal_Int32 nParentObject )
return m_pWriter->writeBuffer( aLine.getStr(), aLine.getLength() );
}
+namespace vcl
+{
+template < class GEOMETRY >
+GEOMETRY lcl_convert( const MapMode& _rSource, const MapMode& _rDest, OutputDevice* _pPixelConversion, const GEOMETRY& _rObject )
+{
+ GEOMETRY aPoint;
+ if ( MAP_PIXEL == _rSource.GetMapUnit() )
+ {
+ aPoint = _pPixelConversion->PixelToLogic( _rObject, _rDest );
+ }
+ else
+ {
+ aPoint = OutputDevice::LogicToLogic( _rObject, _rSource, _rDest );
+ }
+ return aPoint;
+}
+}
+
void PDFWriterImpl::PDFPage::appendPoint( const Point& rPoint, OStringBuffer& rBuffer, bool bNeg )
{
- Point aPoint = OutputDevice::LogicToLogic( rPoint,
- m_pWriter->m_aGraphicsStack.front().m_aMapMode,
- m_pWriter->m_aMapMode );
+ Point aPoint( lcl_convert(
+ m_pWriter->m_aGraphicsStack.front().m_aMapMode,
+ m_pWriter->m_aMapMode,
+ m_pWriter->getReferenceDevice(),
+ rPoint
+ ) );
+
sal_Int32 nValue = aPoint.X();
if( bNeg )
nValue = -nValue;
@@ -348,9 +370,11 @@ void PDFWriterImpl::PDFPage::appendRect( const Rectangle& rRect, OStringBuffer&
void PDFWriterImpl::PDFPage::convertRect( Rectangle& rRect )
{
- Rectangle aConvertRect = OutputDevice::LogicToLogic( rRect,
- m_pWriter->getMapMode(),
- m_pWriter->m_aMapMode );
+ Rectangle aConvertRect( lcl_convert( m_pWriter->m_aGraphicsStack.front().m_aMapMode,
+ m_pWriter->m_aMapMode,
+ m_pWriter->getReferenceDevice(),
+ rRect
+ ) );
sal_Int32 nMirror = m_nPageHeight ? m_nPageHeight : m_pWriter->m_nInheritedPageHeight;
rRect = Rectangle( Point( aConvertRect.BottomLeft().X(), 10*nMirror-aConvertRect.BottomLeft().Y() ),
aConvertRect.GetSize() );
@@ -386,9 +410,10 @@ void PDFWriterImpl::PDFPage::appendMappedLength( sal_Int32 nLength, OStringBuffe
nLength = -nLength;
}
- Size aSize = OutputDevice::LogicToLogic( Size( nLength, nLength ),
- m_pWriter->m_aGraphicsStack.front().m_aMapMode,
- m_pWriter->m_aMapMode );
+ Size aSize( lcl_convert( m_pWriter->m_aGraphicsStack.front().m_aMapMode,
+ m_pWriter->m_aMapMode,
+ m_pWriter->getReferenceDevice(),
+ Size( nLength, nLength ) ) );
sal_Int32 nInt = ( bVertical ? aSize.Height() : aSize.Width() ) / 10;
sal_Int32 nDecimal = ( bVertical ? aSize.Height() : aSize.Width() ) % 10;
@@ -402,10 +427,10 @@ void PDFWriterImpl::PDFPage::appendMappedLength( sal_Int32 nLength, OStringBuffe
void PDFWriterImpl::PDFPage::appendMappedLength( double fLength, OStringBuffer& rBuffer, bool bVertical )
{
- Size aSize = OutputDevice::LogicToLogic( Size( 1000, 1000 ),
- m_pWriter->m_aGraphicsStack.front().m_aMapMode,
- m_pWriter->m_aMapMode );
-
+ Size aSize( lcl_convert( m_pWriter->m_aGraphicsStack.front().m_aMapMode,
+ m_pWriter->m_aMapMode,
+ m_pWriter->getReferenceDevice(),
+ Size( 1000, 1000 ) ) );
fLength *= (double)(bVertical ? aSize.Height() : aSize.Width()) / 10000.0;
appendDouble( fLength, rBuffer );
}
@@ -676,7 +701,7 @@ ImplDevFontList* PDFWriterImpl::filterDevFontList( ImplDevFontList* pFontList )
pNewData->meWidthType = m_aBuiltinFonts[i].m_eWidthType;
pNewData->meType = TYPE_SCALABLE;
pNewData->mnVerticalOrientation = 0;
- pNewData->mbOrientation = FALSE;
+ pNewData->mbOrientation = TRUE;
pNewData->mbDevice = TRUE;
pNewData->mnQuality = 50000;
pNewData->mbSubsettable = FALSE;
@@ -724,48 +749,62 @@ void PDFWriterImpl::getFontMetric( ImplFontSelectData* pSelect, ImplFontMetricDa
// -----------------------------------------------------------------------
+namespace vcl {
+
class PDFSalLayout : public GenericSalLayout
{
- const String maText;
+ PDFWriterImpl& mrPDFWriterImpl;
+ const PDFWriterImpl::BuiltinFont& mrBuiltinFont;
+ bool mbIsSymbolFont;
long mnPixelPerEM;
- const PDFWriterImpl::BuiltinFont& mrFont;
+ String maOrigText;
public:
- PDFSalLayout( ImplLayoutArgs&, const String&,
- const PDFWriterImpl::BuiltinFont&, long nPixelPerEM );
+ PDFSalLayout( PDFWriterImpl&,
+ const PDFWriterImpl::BuiltinFont&,
+ long nPixelPerEM, int nOrientation );
- virtual bool LayoutText( ImplLayoutArgs& rArgs );
+ void SetText( const String& rText ) { maOrigText = rText; }
+ virtual bool LayoutText( ImplLayoutArgs& );
+ virtual void InitFont() const;
virtual void DrawText( SalGraphics& ) const;
};
+}
+
// -----------------------------------------------------------------------
-PDFSalLayout::PDFSalLayout( ImplLayoutArgs& rArgs, const String& rStr,
- const PDFWriterImpl::BuiltinFont& rFont, long nPixelPerEM )
-: GenericSalLayout( rArgs ),
- maText( rStr ),
- mrFont( rFont ),
+PDFSalLayout::PDFSalLayout( PDFWriterImpl& rPDFWriterImpl,
+ const PDFWriterImpl::BuiltinFont& rBuiltinFont,
+ long nPixelPerEM, int nOrientation )
+: mrPDFWriterImpl( rPDFWriterImpl ),
+ mrBuiltinFont( rBuiltinFont ),
mnPixelPerEM( nPixelPerEM )
-{}
+{
+ mbIsSymbolFont = (rBuiltinFont.m_eCharSet == RTL_TEXTENCODING_SYMBOL);
+ SetOrientation( nOrientation );
+}
// -----------------------------------------------------------------------
bool PDFSalLayout::LayoutText( ImplLayoutArgs& rArgs )
{
+ const String aText( rArgs.mpStr+rArgs.mnMinCharPos, rArgs.mnEndCharPos-rArgs.mnMinCharPos );
+ SetText( aText );
SetUnitsPerPixel( 1000 );
Point aNewPos( 0, 0 );
- for( int nGlyphCount = 0;; ++nGlyphCount )
+ for(;;)
{
- int nLogicalIndex;
+ int nCharPos;
bool bRightToLeft;
- if( !rArgs.GetNextPos( &nLogicalIndex, &bRightToLeft ) )
+ if( !rArgs.GetNextPos( &nCharPos, &bRightToLeft ) )
break;
- sal_Unicode cChar = rArgs.mpStr[ nLogicalIndex ];
+ sal_Unicode cChar = rArgs.mpStr[ nCharPos ];
if( cChar & 0xff00 )
{
// some characters can be used by conversion
- if( mrFont.m_eCharSet == RTL_TEXTENCODING_SYMBOL && cChar >= 0xf000 )
+ if( (cChar >= 0xf000) && mbIsSymbolFont )
cChar -= 0xf000;
else
{
@@ -775,105 +814,57 @@ bool PDFSalLayout::LayoutText( ImplLayoutArgs& rArgs )
}
}
DBG_ASSERT( cChar < 256, "invalid character index requested for builtin font" );
- if( cChar & 0xff00 ) // not so good
- cChar = 0;
-#if 0
- // TODO: find out if builtin font contains the char
- // update fallback_runs if needed
- if( mrFont.HasGlyph( cChar ) )
+ if( cChar & 0xff00 )
+ {
+ cChar = 0; // NotDef glyph
rArgs.NeedFallback( nCharPos, bRightToLeft );
-#endif
+ }
- long nGlyphWidth = (long)mrFont.m_aWidths[cChar] * mnPixelPerEM;
+ long nGlyphWidth = (long)mrBuiltinFont.m_aWidths[cChar] * mnPixelPerEM;
long nGlyphFlags = (nGlyphWidth > 0) ? 0 : GlyphItem::IS_IN_CLUSTER;
if( bRightToLeft )
nGlyphFlags |= GlyphItem::IS_RTL_GLYPH;
- GlyphItem aGI( nLogicalIndex, cChar, aNewPos, nGlyphFlags, nGlyphWidth );
+ GlyphItem aGI( nCharPos, cChar, aNewPos, nGlyphFlags, nGlyphWidth );
AppendGlyph( aGI );
aNewPos.X() += nGlyphWidth;
}
- if( rArgs.mpDXArray )
- ApplyDXArray( rArgs.mpDXArray );
- if( rArgs.mnLayoutWidth )
- Justify( rArgs.mnLayoutWidth );
- return false;
+ return true;
+}
+
+// -----------------------------------------------------------------------
+
+void PDFSalLayout::InitFont() const
+{
+ // TODO: recreate font with all its attributes
}
// -----------------------------------------------------------------------
void PDFSalLayout::DrawText( SalGraphics& rSalGraphics ) const
{
- // TODO
- DBG_ASSERT( false, "PDFSalLayout::DrawText() not implemented yet" );
+ mrPDFWriterImpl.drawLayout( *const_cast<PDFSalLayout*>(this), maOrigText, true );
}
// -----------------------------------------------------------------------
-SalLayout* PDFWriterImpl::createSalLayout( ImplFontSelectData* pSelect, ImplLayoutArgs& rArgs ) const
+SalLayout* PDFWriterImpl::GetTextLayout( ImplLayoutArgs& rArgs, ImplFontSelectData* pSelect )
{
+ DBG_ASSERT( (pSelect->mpFontData != NULL),
+ "PDFWriterImpl::GetTextLayout mpFontData is NULL" );
+
for( unsigned int n = 0; n < sizeof(m_aBuiltinFonts)/sizeof(m_aBuiltinFonts[0]); n++ )
{
if( pSelect->mpFontData->mpSysData != (void*)&m_aBuiltinFonts[n] )
continue;
- const String aText( rArgs.mpStr+rArgs.mnMinCharPos, rArgs.mnEndCharPos-rArgs.mnMinCharPos );
long nPixelPerEM = pSelect->mnWidth ? pSelect->mnWidth : pSelect->mnHeight;
- PDFSalLayout& rLayout = *new PDFSalLayout( rArgs, aText, m_aBuiltinFonts[n], nPixelPerEM );
-
-#if 1
- rLayout.SetOrientation( pSelect->mnOrientation );
- rLayout.LayoutText( rArgs );
-#else
- Point aNewPos( 0, 0 );
- for( int nGlyphCount = 0;; ++nGlyphCount )
- {
- int nLogicalIndex;
- bool bRightToLeft;
- if( !rArgs.GetNextPos( &nLogicalIndex, &bRightToLeft ) )
- break;
- sal_Unicode cChar = rArgs.mpStr[ nLogicalIndex ];
- if( cChar & 0xff00 )
- {
- // some characters can be used by conversion
- if( m_aBuiltinFonts[n].m_eCharSet == RTL_TEXTENCODING_SYMBOL && cChar >= 0xf000 )
- cChar -= 0xf000;
- else
- {
- String aString( cChar);
- ByteString aChar( aString, RTL_TEXTENCODING_MS_1252 );
- cChar = ((sal_Unicode)aChar.GetChar( 0 )) & 0x00ff;
- }
- }
- DBG_ASSERT( cChar < 256, "invalid character index requested for builtin font" );
- if( cChar & 0xff00 ) // not so good
- cChar = 0;
-#if 0
- // TODO: find out if builtin font contains the char
- // update fallback_runs if needed
- if( m_aBuiltinFonts[n].HasGlyph( cChar ) )
- rArgs.NeedFallback( nCharPos, bRightToLeft );
-#endif
-
- long nGlyphWidth = (long)m_aBuiltinFonts[n].m_aWidths[cChar] * nPixelPerEM;
- long nGlyphFlags = (nGlyphWidth > 0) ? 0 : GlyphItem::IS_IN_CLUSTER;
- if( bRightToLeft )
- nGlyphFlags |= GlyphItem::IS_RTL_GLYPH;
- GlyphItem aGI( nLogicalIndex, cChar, aNewPos, nGlyphFlags, nGlyphWidth );
- rLayout.AppendGlyph( aGI );
-
- aNewPos.X() += nGlyphWidth;
- }
-
- rLayout.SetUnitsPerPixel( 1000 );
- rLayout.SetOrientation( pSelect->mnOrientation );
- if( rArgs.mpDXArray )
- rLayout.ApplyDXArray( rArgs.mpDXArray );
- if( rArgs.mnLayoutWidth )
- rLayout.Justify( rArgs.mnLayoutWidth );
-#endif
- return &rLayout;
+ int nOrientation = pSelect->mnOrientation;
+ PDFSalLayout* pLayout = new PDFSalLayout( *this, m_aBuiltinFonts[n],
+ nPixelPerEM, nOrientation );
+ pLayout->SetText( rArgs.mpStr );
+ return pLayout;
}
return NULL;
@@ -891,15 +882,15 @@ void PDFWriterImpl::endPage()
{
if( m_aPages.begin() != m_aPages.end() )
{
- if( m_pCodec )
- endCompression();
-
m_aGraphicsStack.clear();
m_aGraphicsStack.push_back( GraphicsState() );
// this should pop the PDF graphics stack if necessary
updateGraphicsState();
+ if( m_pCodec )
+ endCompression();
+
m_aPages.back().endStream();
// reset the default font
@@ -1140,7 +1131,10 @@ bool PDFWriterImpl::emitHatches()
// prepare matrix
const double theta = (double)rHatch.GetAngle() * M_PI / 1800.0;
Size aSize( rHatch.GetDistance(), 0 );
- aSize = OutputDevice::LogicToLogic( aSize, it->m_aMapMode, MapMode( MAP_POINT ) );
+ aSize = lcl_convert( it->m_aMapMode,
+ MapMode( MAP_POINT ),
+ getReferenceDevice(),
+ aSize );
const double scale = (double)aSize.Width();
appendDouble( scale*cos( theta ), aHatchObj );
aHatchObj.append( ' ' );
@@ -1244,10 +1238,10 @@ sal_Int32 PDFWriterImpl::emitBuiltinFont( ImplFontData* pFont )
" /Subtype /Type1\r\n"
" /BaseFont /" );
aLine.append( m_aBuiltinFonts[i].m_pPSName );
- aLine.append( "\r\n"
- " /Encoding /WinAnsiEncoding\r\n"
- ">>\r\n"
- "endobj\r\n\r\n" );
+ aLine.append( "\r\n" );
+ if( m_aBuiltinFonts[i].m_eCharSet != RTL_TEXTENCODING_SYMBOL )
+ aLine.append( " /Encoding /WinAnsiEncoding\r\n" );
+ aLine.append( ">>\r\nendobj\r\n\r\n" );
CHECK_RETURN( writeBuffer( aLine.getStr(), aLine.getLength() ) );
break;
@@ -1374,13 +1368,13 @@ sal_Int32 PDFWriterImpl::emitEmbeddedFont( ImplFontData* pFont )
// if the first four bytes are all ascii hex characters, then binary data
// has to be converted to real binary data
for( nIndex = 0; nIndex < 4 &&
- ! ( ( pFontData[ nBeginBinaryIndex+nIndex ] >= '0' && pFontData[ nBeginBinaryIndex+nIndex ] <= '9' ) ||
- ( pFontData[ nBeginBinaryIndex+nIndex ] >= 'a' && pFontData[ nBeginBinaryIndex+nIndex ] <= 'f' ) ||
- ( pFontData[ nBeginBinaryIndex+nIndex ] >= 'A' && pFontData[ nBeginBinaryIndex+nIndex ] <= 'F' )
- ); ++nIndex )
+ ( ( pFontData[ nBeginBinaryIndex+nIndex ] >= '0' && pFontData[ nBeginBinaryIndex+nIndex ] <= '9' ) ||
+ ( pFontData[ nBeginBinaryIndex+nIndex ] >= 'a' && pFontData[ nBeginBinaryIndex+nIndex ] <= 'f' ) ||
+ ( pFontData[ nBeginBinaryIndex+nIndex ] >= 'A' && pFontData[ nBeginBinaryIndex+nIndex ] <= 'F' )
+ ); ++nIndex )
;
bool bConvertHexData = true;
- if( nIndex > 3 )
+ if( nIndex < 4 )
{
bConvertHexData = false;
nLength2 = nEndBinaryIndex - nBeginBinaryIndex + 1; // include the last byte
@@ -1586,9 +1580,10 @@ sal_Int32 PDFWriterImpl::emitEmbeddedFont( ImplFontData* pFont )
" /Subtype /Type1\r\n"
" /BaseFont /" );
aLine.append( OUStringToOString( aInfo.m_aPSName, osl_getThreadTextEncoding() ) );
- aLine.append( "\r\n"
- " /Encoding /WinAnsiEncoding\r\n"
- " /FirstChar 0\r\n"
+ aLine.append( "\r\n" );
+ if( pFont->meCharSet != RTL_TEXTENCODING_SYMBOL )
+ aLine.append( " /Encoding /WinAnsiEncoding\r\n" );
+ aLine.append( " /FirstChar 0\r\n"
" /LastChar 255\r\n"
" /Widths [ " );
for( int i = 0; i < 256; i++ )
@@ -2957,12 +2952,6 @@ void PDFWriterImpl::drawText( const Rectangle& rRect, const String& rOrigStr, US
else if ( nStyle & TEXT_DRAW_VCENTER )
aPos.Y() += (nHeight-(nFormatLines*nTextHeight))/2;
- // font alignment
- if ( eAlign == ALIGN_BOTTOM )
- aPos.Y() -= m_pReferenceDevice->GetFontMetric().GetDescent();
- else if ( eAlign == ALIGN_TOP )
- aPos.Y() += m_pReferenceDevice->GetFontMetric().GetAscent();
-
// draw all lines excluding the last
for ( i = 0; i < nFormatLines; i++ )
{
@@ -3008,12 +2997,6 @@ void PDFWriterImpl::drawText( const Rectangle& rRect, const String& rOrigStr, US
else if ( nStyle & TEXT_DRAW_CENTER )
aPos.X() += (nWidth-nTextWidth)/2;
- // font alignment
- if ( eAlign == ALIGN_BOTTOM )
- aPos.Y() -= m_pReferenceDevice->GetFontMetric().GetDescent();
- else if ( eAlign == ALIGN_TOP )
- aPos.Y() += m_pReferenceDevice->GetFontMetric().GetAscent();
-
if ( nStyle & TEXT_DRAW_BOTTOM )
aPos.Y() += nHeight-nTextHeight;
else if ( nStyle & TEXT_DRAW_VCENTER )
@@ -4587,7 +4570,10 @@ void PDFWriterImpl::drawMask( const Point& rDestPoint, const Size& rDestSize, co
sal_Int32 PDFWriterImpl::createGradient( const Gradient& rGradient, const Size& rSize )
{
- Size aPtSize = OutputDevice::LogicToLogic( rSize, m_aGraphicsStack.front().m_aMapMode, MapMode( MAP_POINT ) );
+ Size aPtSize( lcl_convert( m_aGraphicsStack.front().m_aMapMode,
+ MapMode( MAP_POINT ),
+ getReferenceDevice(),
+ rSize ) );
// check if we already have this gradient
for( std::list<GradientEmit>::iterator it = m_aGradients.begin(); it != m_aGradients.end(); ++it )
{
@@ -4746,9 +4732,10 @@ void PDFWriterImpl::drawWallpaper( const Rectangle& rRect, const Wallpaper& rWal
if( rWall.IsBitmap() )
{
aBitmap = rWall.GetBitmap();
- aBmpSize = OutputDevice::LogicToLogic( aBitmap.GetPrefSize(),
- aBitmap.GetPrefMapMode(),
- getMapMode() );
+ aBmpSize = lcl_convert( aBitmap.GetPrefMapMode(),
+ getMapMode(),
+ getReferenceDevice(),
+ aBitmap.GetPrefSize() );
Rectangle aRect( rRect );
if( rWall.IsRect() )
{
@@ -5030,14 +5017,24 @@ void PDFWriterImpl::setClipRegion( const Region& rRegion )
void PDFWriterImpl::moveClipRegion( sal_Int32 nX, sal_Int32 nY )
{
- Point aPoint = OutputDevice::LogicToLogic( Point( nX, nY ), m_aGraphicsStack.front().m_aMapMode, m_aMapMode );
- aPoint -= OutputDevice::LogicToLogic( Point(), m_aGraphicsStack.front().m_aMapMode, m_aMapMode );
+ Point aPoint( lcl_convert( m_aGraphicsStack.front().m_aMapMode,
+ m_aMapMode,
+ getReferenceDevice(),
+ Point( nX, nY ) ) );
+ aPoint -= lcl_convert( m_aGraphicsStack.front().m_aMapMode,
+ m_aMapMode,
+ getReferenceDevice(),
+ Point() );
m_aGraphicsStack.front().m_aClipRegion.Move( nX, nY );
}
bool PDFWriterImpl::intersectClipRegion( const Rectangle& rRect )
{
- Rectangle aRect = OutputDevice::LogicToLogic( rRect, m_aGraphicsStack.front().m_aMapMode, m_aMapMode );
+ Rectangle aRect( lcl_convert( m_aGraphicsStack.front().m_aMapMode,
+ m_aMapMode,
+ getReferenceDevice(),
+ rRect ) );
+
return m_aGraphicsStack.front().m_aClipRegion.Intersect( aRect );
}
diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx
index abc12185f13f..90aed93916be 100644
--- a/vcl/source/gdi/pdfwriter_impl.hxx
+++ b/vcl/source/gdi/pdfwriter_impl.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: pdfwriter_impl.hxx,v $
*
- * $Revision: 1.21 $
+ * $Revision: 1.22 $
*
- * last change: $Author: pl $ $Date: 2002-10-23 18:30:55 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:01 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -115,8 +115,11 @@ class SvMemoryStream;
namespace vcl
{
+class PDFSalLayout;
+
class PDFWriterImpl
{
+ friend class PDFSalLayout;
public:
// definition of structs
struct BuiltinFont
@@ -479,7 +482,7 @@ public:
/* for OutputDevice: get layout for builtin fonts
*/
bool isBuiltinFont( ImplFontData* pFont ) const;
- SalLayout* createSalLayout( ImplFontSelectData* pFont, ImplLayoutArgs& rArgs ) const;
+ SalLayout* GetTextLayout( ImplLayoutArgs& rArgs, ImplFontSelectData* pFont );
void getFontMetric( ImplFontSelectData* pFont, ImplFontMetricData* pMetric ) const;
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index 672ead94d08b..69009f327079 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: print.cxx,v $
*
- * $Revision: 1.39 $
+ * $Revision: 1.40 $
*
- * last change: $Author: ssa $ $Date: 2002-11-20 12:04:16 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -174,9 +174,10 @@ int nImplSysDialog = 0;
// =======================================================================
-#define PAPER_SLOPPY 20
+#define PAPER_SLOPPY 50 // Bigger sloppy value as PaperInfo uses only mm accuracy!
#define PAPER_COUNT 9
+// Use more accurate metric values for Letter/Legal/Tabloid paper formats
static long ImplPaperFormats[PAPER_COUNT*2] =
{
29700, 42000, // A3
@@ -184,9 +185,9 @@ static long ImplPaperFormats[PAPER_COUNT*2] =
14800, 21000, // A5
25000, 35300, // B4
17600, 25000, // B5
- 21600, 27900, // Letter
- 21600, 35600, // Legal
- 27900, 43100, // Tabloid
+ 21590, 27940, // Letter
+ 21590, 35570, // Legal
+ 27960, 43130, // Tabloid
0, 0 // USER
};
@@ -1340,6 +1341,72 @@ USHORT Printer::GetPaperBin() const
// -----------------------------------------------------------------------
+static BOOL ImplPaperSizeEqual( unsigned long nPaperWidth1, unsigned long nPaperHeight1,
+ unsigned long nPaperWidth2, unsigned long nPaperHeight2 )
+{
+ const unsigned long PAPER_ACCURACY = 1; // 1.0 mm accuracy
+
+ return ( (Abs( (short)(nPaperWidth1-nPaperWidth2) ) <= PAPER_ACCURACY ) &&
+ (Abs( (short)(nPaperHeight1-nPaperHeight2) ) <= PAPER_ACCURACY ) );
+}
+
+// -----------------------------------------------------------------------
+
+// Map user paper format to a available printer paper formats
+void Printer::ImplFindPaperFormatForUserSize( JobSetup& aJobSetup )
+{
+ ImplJobSetup* pSetupData = aJobSetup.ImplGetData();
+
+ int nLandscapeAngle = GetLandscapeAngle();
+ int nPaperCount = GetPaperInfoCount();
+
+ unsigned long nPaperWidth = pSetupData->mnPaperWidth/100;
+ unsigned long nPaperHeight = pSetupData->mnPaperHeight/100;
+
+ // Alle Papierformate vergleichen und ein passendes raussuchen
+ for ( int i = 0; i < nPaperCount; i++ )
+ {
+ const vcl::PaperInfo& rPaperInfo = GetPaperInfo( i );
+
+ if ( ImplPaperSizeEqual( rPaperInfo.m_nPaperWidth,
+ rPaperInfo.m_nPaperHeight,
+ nPaperWidth,
+ nPaperHeight ) )
+ {
+ pSetupData->meOrientation = ORIENTATION_PORTRAIT;
+ pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.m_nPaperWidth*100,
+ rPaperInfo.m_nPaperHeight*100 );
+ break;
+ }
+ }
+
+ // If the printer supports landscape orientation, check paper sizes again
+ // with landscape orientation. This is necessary as a printer driver provides
+ // all paper sizes with portrait orientation only!!
+ if ( pSetupData->mePaperFormat == PAPER_USER &&
+ nLandscapeAngle != 0 &&
+ HasSupport( SUPPORT_SET_ORIENTATION ))
+ {
+ for ( int i = 0; i < nPaperCount; i++ )
+ {
+ const vcl::PaperInfo& rPaperInfo = GetPaperInfo( i );
+
+ if ( ImplPaperSizeEqual( rPaperInfo.m_nPaperWidth,
+ rPaperInfo.m_nPaperHeight,
+ nPaperHeight,
+ nPaperWidth ))
+ {
+ pSetupData->meOrientation = ORIENTATION_LANDSCAPE;
+ pSetupData->mePaperFormat = ImplGetPaperFormat( rPaperInfo.m_nPaperWidth*100,
+ rPaperInfo.m_nPaperHeight*100 );
+ break;
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
BOOL Printer::SetPaper( Paper ePaper )
{
if ( mbInPrintPage )
@@ -1365,7 +1432,9 @@ BOOL Printer::SetPaper( Paper ePaper )
#ifndef REMOTE_APPSERVER
ImplReleaseGraphics();
- if ( mpInfoPrinter->SetData( SAL_JOBSET_PAPERSIZE, pSetupData ) )
+ if ( ePaper == PAPER_USER )
+ ImplFindPaperFormatForUserSize( aJobSetup );
+ if ( mpInfoPrinter->SetData( SAL_JOBSET_PAPERSIZE|SAL_JOBSET_ORIENTATION, pSetupData ) )
{
ImplUpdateJobSetupPaper( aJobSetup );
#else
@@ -1417,7 +1486,10 @@ BOOL Printer::SetPaperSizeUser( const Size& rSize )
#ifndef REMOTE_APPSERVER
ImplReleaseGraphics();
- if ( mpInfoPrinter->SetData( SAL_JOBSET_PAPERSIZE, pSetupData ) )
+ ImplFindPaperFormatForUserSize( aJobSetup );
+
+ // Changing the paper size can also change the orientation!
+ if ( mpInfoPrinter->SetData( SAL_JOBSET_PAPERSIZE|SAL_JOBSET_ORIENTATION, pSetupData ) )
{
ImplUpdateJobSetupPaper( aJobSetup );
#else
@@ -1440,6 +1512,7 @@ BOOL Printer::SetPaperSizeUser( const Size& rSize )
return TRUE;
}
+
// -----------------------------------------------------------------------
static const vcl::PaperInfo& ImplGetEmptyPaper()
diff --git a/vcl/source/gdi/print2.cxx b/vcl/source/gdi/print2.cxx
index 1c5e737e7dc6..56fd6bae9b89 100644
--- a/vcl/source/gdi/print2.cxx
+++ b/vcl/source/gdi/print2.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: print2.cxx,v $
*
- * $Revision: 1.13 $
+ * $Revision: 1.14 $
*
- * last change: $Author: thb $ $Date: 2002-12-10 17:28:12 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -62,6 +62,12 @@
#define _SV_PRINT_CXX
#define _SPOOLPRINTER_EXT
+#include <functional>
+#include <algorithm>
+#include <utility>
+#include <list>
+#include <vector>
+
#ifndef _DEBUG_HXX
#include <tools/debug.hxx>
#endif
@@ -97,334 +103,406 @@
#define MAX_TILE_WIDTH 1024
#define MAX_TILE_HEIGHT 1024
-// -----------------
-// - ImplCheckRect -
-// -----------------
+// -----------
+// - Printer -
+// -----------
-struct ImplCheckRect
+// #i10613# Extracted from Printer::GetPreparedMetaFile
+static bool ImplIsActionSpecial( const MetaAction& rAct )
{
- Rectangle* mpRect;
- MetaAction* mpAct;
- ImplCheckRect* mpNext;
- BOOL mbSpecialOutput;
-
- ImplCheckRect() { }
- ~ImplCheckRect() { delete mpRect; }
- void ImplCreate( MetaAction* pAct, OutputDevice* pOut, BOOL bSpecial );
- BOOL Intersects( const ImplCheckRect& rRect )
- {
- return( mpRect && rRect.mpRect ) ? mpRect->IsOver( *rRect.mpRect ) : FALSE;
- }
-};
-
-// -----------------------------------------------------------------------------
+ bool bRet( false );
+
+ if( META_TRANSPARENT_ACTION == rAct.GetType() )
+ bRet = true;
+ else if( META_FLOATTRANSPARENT_ACTION == rAct.GetType() )
+ bRet = true;
+ else if( META_BMPEX_ACTION == rAct.GetType() )
+ bRet = static_cast<const MetaBmpExAction&>(rAct).GetBitmapEx().IsAlpha() != 0;
+ else if( META_BMPEXSCALE_ACTION == rAct.GetType() )
+ bRet = static_cast<const MetaBmpExScaleAction&>(rAct).GetBitmapEx().IsAlpha() != 0;
+ else if( META_BMPEXSCALEPART_ACTION == rAct.GetType() )
+ bRet = static_cast<const MetaBmpExScalePartAction&>(rAct).GetBitmapEx().IsAlpha() != 0;
+
+ return bRet;
+}
-void ImplCheckRect::ImplCreate( MetaAction* pAct, OutputDevice* pOut, BOOL bSpecial )
+// #i10613# Extracted from ImplCheckRect::ImplCreate
+// Returns true, if given action creates visible (i.e. non-transparent) output
+static bool ImplIsNotTransparent( const MetaAction& rAct, const OutputDevice& rOut )
{
- const long bLineTransparency = ( pOut->GetLineColor().GetTransparency() == 255 );
- const long bFillTransparency = ( pOut->GetFillColor().GetTransparency() == 255 );
-
- mpAct = pAct;
- mpNext = NULL;
- mpRect = NULL;
+ const bool bLineTransparency( rOut.GetLineColor().GetTransparency() == 255 );
+ const bool bFillTransparency( rOut.GetFillColor().GetTransparency() == 255 );
+ bool bRet( false );
- switch( mpAct->GetType() )
+ switch( rAct.GetType() )
{
- case( META_PIXEL_ACTION ):
- mpRect = new Rectangle( ( (MetaPixelAction*) mpAct )->GetPoint(), Size( 1, 1 ) );
- break;
-
- case( META_POINT_ACTION ):
- {
+ case META_POINT_ACTION:
if( !bLineTransparency )
- mpRect = new Rectangle( ( (MetaPointAction*) mpAct )->GetPoint(), Size( 1, 1 ) );
- }
- break;
+ bRet = true;
+ break;
- case( META_LINE_ACTION ):
- {
+ case META_LINE_ACTION:
if( !bLineTransparency )
- {
- MetaLineAction* pA = (MetaLineAction*) mpAct;
- mpRect = new Rectangle( pA->GetStartPoint(), pA->GetEndPoint() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_RECT_ACTION ):
- {
+ case META_RECT_ACTION:
if( !bLineTransparency || !bFillTransparency )
- mpRect = new Rectangle( ( (MetaRectAction*) mpAct )->GetRect() );
- }
- break;
+ bRet = true;
+ break;
- case( META_ROUNDRECT_ACTION ):
- {
+ case META_ROUNDRECT_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaRoundRectAction* pA = (MetaRoundRectAction*) mpAct;
- mpRect = new Rectangle( Polygon( pA->GetRect(),
- pA->GetHorzRound(),
- pA->GetVertRound() ).GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_ELLIPSE_ACTION ):
- {
+ case META_ELLIPSE_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaEllipseAction* pA = (MetaEllipseAction*) mpAct;
- const Rectangle& rRect = pA->GetRect();
- mpRect = new Rectangle( Polygon( rRect.Center(),
- rRect.GetWidth() >> 1,
- rRect.GetHeight() >> 1 ).GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_ARC_ACTION ):
- {
+ case META_ARC_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaArcAction* pA = (MetaArcAction*) mpAct;
- mpRect = new Rectangle( Polygon( pA->GetRect(),
- pA->GetStartPoint(),
- pA->GetEndPoint(), POLY_ARC ).GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_PIE_ACTION ):
- {
+ case META_PIE_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaPieAction* pA = (MetaPieAction*) mpAct;
- mpRect = new Rectangle( Polygon( pA->GetRect(),
- pA->GetStartPoint(),
- pA->GetEndPoint(), POLY_PIE ).GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_CHORD_ACTION ):
- {
+ case META_CHORD_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaChordAction* pA = (MetaChordAction*) mpAct;
- mpRect = new Rectangle( Polygon( pA->GetRect(),
- pA->GetStartPoint(),
- pA->GetEndPoint(), POLY_CHORD ).GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_POLYLINE_ACTION ):
- {
+ case META_POLYLINE_ACTION:
if( !bLineTransparency )
- {
- MetaPolyLineAction* pA = (MetaPolyLineAction*) mpAct;
- mpRect = new Rectangle( pA->GetPolygon().GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_POLYGON_ACTION ):
- {
+ case META_POLYGON_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaPolygonAction* pA = (MetaPolygonAction*) mpAct;
- mpRect = new Rectangle( pA->GetPolygon().GetBoundRect() );
- }
- }
- break;
+ bRet = true;
+ break;
- case( META_POLYPOLYGON_ACTION ):
- {
+ case META_POLYPOLYGON_ACTION:
if( !bLineTransparency || !bFillTransparency )
- {
- MetaPolyPolygonAction* pA = (MetaPolyPolygonAction*) mpAct;
- mpRect = new Rectangle( pA->GetPolyPolygon().GetBoundRect() );
- }
- }
- break;
-
- case( META_BMP_ACTION ):
- {
- MetaBmpAction* pA = (MetaBmpAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pOut->PixelToLogic( pA->GetBitmap().GetSizePixel() ) );
- }
- break;
-
- case( META_BMPSCALE_ACTION ):
- {
- MetaBmpScaleAction* pA = (MetaBmpScaleAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pA->GetSize() );
- }
- break;
-
- case( META_BMPSCALEPART_ACTION ):
- {
- MetaBmpScalePartAction* pA = (MetaBmpScalePartAction*) mpAct;
- mpRect = new Rectangle( pA->GetDestPoint(), pA->GetDestSize() );
- }
- break;
-
- case( META_BMPEX_ACTION ):
- {
- MetaBmpExAction* pA = (MetaBmpExAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pOut->PixelToLogic( pA->GetBitmapEx().GetSizePixel() ) );
- }
- break;
+ bRet = true;
+ break;
- case( META_BMPEXSCALE_ACTION ):
+ case META_TEXT_ACTION:
{
- MetaBmpExScaleAction* pA = (MetaBmpExScaleAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pA->GetSize() );
- }
- break;
+ const MetaTextAction& rTextAct = static_cast<const MetaTextAction&>(rAct);
+ const XubString aString( rTextAct.GetText(), rTextAct.GetIndex(), rTextAct.GetLen() );
- case( META_BMPEXSCALEPART_ACTION ):
- {
- MetaBmpExScalePartAction* pA = (MetaBmpExScalePartAction*) mpAct;
- mpRect = new Rectangle( pA->GetDestPoint(), pA->GetDestSize() );
- }
- break;
-
- case( META_MASK_ACTION ):
- {
- MetaMaskAction* pA = (MetaMaskAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pOut->PixelToLogic( pA->GetBitmap().GetSizePixel() ) );
+ if( aString.Len() )
+ bRet = true;
}
break;
- case( META_MASKSCALE_ACTION ):
+ case META_TEXTARRAY_ACTION:
{
- MetaMaskScaleAction* pA = (MetaMaskScaleAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pA->GetSize() );
- }
- break;
+ const MetaTextArrayAction& rTextAct = static_cast<const MetaTextArrayAction&>(rAct);
+ const XubString aString( rTextAct.GetText(), rTextAct.GetIndex(), rTextAct.GetLen() );
- case( META_MASKSCALEPART_ACTION ):
- {
- MetaMaskScalePartAction* pA = (MetaMaskScalePartAction*) mpAct;
- mpRect = new Rectangle( pA->GetDestPoint(), pA->GetDestSize() );
+ if( aString.Len() )
+ bRet = true;
}
break;
- case( META_GRADIENT_ACTION ):
- mpRect = new Rectangle( ( (MetaGradientAction*) mpAct )->GetRect() );
- break;
-
- case( META_GRADIENTEX_ACTION ):
- mpRect = new Rectangle( ( (MetaGradientExAction*) mpAct )->GetPolyPolygon().GetBoundRect() );
- break;
+ case META_PIXEL_ACTION:
+ case META_BMP_ACTION:
+ case META_BMPSCALE_ACTION:
+ case META_BMPSCALEPART_ACTION:
+ case META_BMPEX_ACTION:
+ case META_BMPEXSCALE_ACTION:
+ case META_BMPEXSCALEPART_ACTION:
+ case META_MASK_ACTION:
+ case META_MASKSCALE_ACTION:
+ case META_MASKSCALEPART_ACTION:
+ case META_GRADIENT_ACTION:
+ case META_GRADIENTEX_ACTION:
+ case META_HATCH_ACTION:
+ case META_WALLPAPER_ACTION:
+ case META_TRANSPARENT_ACTION:
+ case META_FLOATTRANSPARENT_ACTION:
+ case META_EPS_ACTION:
+ case META_TEXTRECT_ACTION:
+ case META_STRETCHTEXT_ACTION:
+ case META_TEXTLINE_ACTION:
+ // all other actions: generate non-transparent output
+ bRet = true;
+ break;
- case( META_HATCH_ACTION ):
- mpRect = new Rectangle( ( (MetaHatchAction*) mpAct )->GetPolyPolygon().GetBoundRect() );
- break;
-
- case( META_WALLPAPER_ACTION ):
- mpRect = new Rectangle( ( (MetaWallpaperAction*) mpAct )->GetRect() );
- break;
+ default:
+ break;
+ }
- case( META_TRANSPARENT_ACTION ):
- mpRect = new Rectangle( ( (MetaTransparentAction*) mpAct )->GetPolyPolygon().GetBoundRect() );
- break;
+ return bRet;
+}
- case( META_FLOATTRANSPARENT_ACTION ):
- {
- MetaFloatTransparentAction* pA = (MetaFloatTransparentAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pA->GetSize() );
- }
- break;
+// #i10613# Extracted from ImplCheckRect::ImplCreate
+static Rectangle ImplCalcActionBounds( const MetaAction& rAct, const OutputDevice& rOut )
+{
+ Rectangle aActionBounds;
- case( META_EPS_ACTION ):
+ switch( rAct.GetType() )
+ {
+ case META_PIXEL_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaPixelAction&>(rAct).GetPoint(), Size( 1, 1 ) );
+ break;
+
+ case META_POINT_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaPointAction&>(rAct).GetPoint(), Size( 1, 1 ) );
+ break;
+
+ case META_LINE_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaLineAction&>(rAct).GetStartPoint(),
+ static_cast<const MetaLineAction&>(rAct).GetEndPoint() );
+ break;
+
+ case META_RECT_ACTION:
+ aActionBounds = static_cast<const MetaRectAction&>(rAct).GetRect();
+ break;
+
+ case META_ROUNDRECT_ACTION:
+ aActionBounds = Polygon( static_cast<const MetaRoundRectAction&>(rAct).GetRect(),
+ static_cast<const MetaRoundRectAction&>(rAct).GetHorzRound(),
+ static_cast<const MetaRoundRectAction&>(rAct).GetVertRound() ).GetBoundRect();
+ break;
+
+ case META_ELLIPSE_ACTION:
{
- MetaEPSAction* pA = (MetaEPSAction*) mpAct;
- mpRect = new Rectangle( pA->GetPoint(), pA->GetSize() );
+ const Rectangle& rRect = static_cast<const MetaEllipseAction&>(rAct).GetRect();
+ aActionBounds = Polygon( rRect.Center(),
+ rRect.GetWidth() >> 1,
+ rRect.GetHeight() >> 1 ).GetBoundRect();
+ break;
}
- break;
- case( META_TEXT_ACTION ):
+ case META_ARC_ACTION:
+ aActionBounds = Polygon( static_cast<const MetaArcAction&>(rAct).GetRect(),
+ static_cast<const MetaArcAction&>(rAct).GetStartPoint(),
+ static_cast<const MetaArcAction&>(rAct).GetEndPoint(), POLY_ARC ).GetBoundRect();
+ break;
+
+ case META_PIE_ACTION:
+ aActionBounds = Polygon( static_cast<const MetaPieAction&>(rAct).GetRect(),
+ static_cast<const MetaPieAction&>(rAct).GetStartPoint(),
+ static_cast<const MetaPieAction&>(rAct).GetEndPoint(), POLY_PIE ).GetBoundRect();
+ break;
+
+ case META_CHORD_ACTION:
+ aActionBounds = Polygon( static_cast<const MetaChordAction&>(rAct).GetRect(),
+ static_cast<const MetaChordAction&>(rAct).GetStartPoint(),
+ static_cast<const MetaChordAction&>(rAct).GetEndPoint(), POLY_CHORD ).GetBoundRect();
+ break;
+
+ case META_POLYLINE_ACTION:
+ aActionBounds = static_cast<const MetaPolyLineAction&>(rAct).GetPolygon().GetBoundRect();
+ break;
+
+ case META_POLYGON_ACTION:
+ aActionBounds = static_cast<const MetaPolygonAction&>(rAct).GetPolygon().GetBoundRect();
+ break;
+
+ case META_POLYPOLYGON_ACTION:
+ aActionBounds = static_cast<const MetaPolyPolygonAction&>(rAct).GetPolyPolygon().GetBoundRect();
+ break;
+
+ case META_BMP_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaBmpAction&>(rAct).GetPoint(),
+ rOut.PixelToLogic( static_cast<const MetaBmpAction&>(rAct).GetBitmap().GetSizePixel() ) );
+ break;
+
+ case META_BMPSCALE_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaBmpScaleAction&>(rAct).GetPoint(),
+ static_cast<const MetaBmpScaleAction&>(rAct).GetSize() );
+ break;
+
+ case META_BMPSCALEPART_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaBmpScalePartAction&>(rAct).GetDestPoint(),
+ static_cast<const MetaBmpScalePartAction&>(rAct).GetDestSize() );
+ break;
+
+ case META_BMPEX_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaBmpExAction&>(rAct).GetPoint(),
+ rOut.PixelToLogic( static_cast<const MetaBmpExAction&>(rAct).GetBitmapEx().GetSizePixel() ) );
+ break;
+
+ case META_BMPEXSCALE_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaBmpExScaleAction&>(rAct).GetPoint(),
+ static_cast<const MetaBmpExScaleAction&>(rAct).GetSize() );
+ break;
+
+ case META_BMPEXSCALEPART_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestPoint(),
+ static_cast<const MetaBmpExScalePartAction&>(rAct).GetDestSize() );
+ break;
+
+ case META_MASK_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaMaskAction&>(rAct).GetPoint(),
+ rOut.PixelToLogic( static_cast<const MetaMaskAction&>(rAct).GetBitmap().GetSizePixel() ) );
+ break;
+
+ case META_MASKSCALE_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaMaskScaleAction&>(rAct).GetPoint(),
+ static_cast<const MetaMaskScaleAction&>(rAct).GetSize() );
+ break;
+
+ case META_MASKSCALEPART_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaMaskScalePartAction&>(rAct).GetDestPoint(),
+ static_cast<const MetaMaskScalePartAction&>(rAct).GetDestSize() );
+ break;
+
+ case META_GRADIENT_ACTION:
+ aActionBounds = static_cast<const MetaGradientAction&>(rAct).GetRect();
+ break;
+
+ case META_GRADIENTEX_ACTION:
+ aActionBounds = static_cast<const MetaGradientExAction&>(rAct).GetPolyPolygon().GetBoundRect();
+ break;
+
+ case META_HATCH_ACTION:
+ aActionBounds = static_cast<const MetaHatchAction&>(rAct).GetPolyPolygon().GetBoundRect();
+ break;
+
+ case META_WALLPAPER_ACTION:
+ aActionBounds = static_cast<const MetaWallpaperAction&>(rAct).GetRect();
+ break;
+
+ case META_TRANSPARENT_ACTION:
+ aActionBounds = static_cast<const MetaTransparentAction&>(rAct).GetPolyPolygon().GetBoundRect();
+ break;
+
+ case META_FLOATTRANSPARENT_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaFloatTransparentAction&>(rAct).GetPoint(),
+ static_cast<const MetaFloatTransparentAction&>(rAct).GetSize() );
+ break;
+
+ case META_EPS_ACTION:
+ aActionBounds = Rectangle( static_cast<const MetaEPSAction&>(rAct).GetPoint(),
+ static_cast<const MetaEPSAction&>(rAct).GetSize() );
+ break;
+
+ case META_TEXT_ACTION:
{
- MetaTextAction* pA = (MetaTextAction*) mpAct;
- const XubString aString( pA->GetText(), pA->GetIndex(), pA->GetLen() );
+ const MetaTextAction& rTextAct = static_cast<const MetaTextAction&>(rAct);
+ const XubString aString( rTextAct.GetText(), rTextAct.GetIndex(), rTextAct.GetLen() );
if( aString.Len() )
{
- const Point aPtLog( pA->GetPoint() );
-
- mpRect = new Rectangle();
+ const Point aPtLog( rTextAct.GetPoint() );
// #105987# Use API method instead of Impl* methods
- pOut->GetTextBoundRect( *mpRect, pA->GetText(), 0, pA->GetIndex(), pA->GetLen() );
- mpRect->Move( aPtLog.X(), aPtLog.Y() );
+ // #107490# Set base parameter equal to index parameter
+ rOut.GetTextBoundRect( aActionBounds, rTextAct.GetText(), rTextAct.GetIndex(),
+ rTextAct.GetIndex(), rTextAct.GetLen() );
+ aActionBounds.Move( aPtLog.X(), aPtLog.Y() );
}
}
break;
- case( META_TEXTARRAY_ACTION ):
+ case META_TEXTARRAY_ACTION:
{
- MetaTextArrayAction* pA = (MetaTextArrayAction*) mpAct;
- const XubString aString( pA->GetText(), pA->GetIndex(), pA->GetLen() );
- const long nLen = aString.Len();
+ const MetaTextArrayAction& rTextAct = static_cast<const MetaTextArrayAction&>(rAct);
+ const XubString aString( rTextAct.GetText(), rTextAct.GetIndex(), rTextAct.GetLen() );
+ const long nLen = aString.Len();
if( nLen )
{
// #105987# ImplLayout takes everything in logical coordinates
- SalLayout* pSalLayout = pOut->ImplLayout( pA->GetText(), pA->GetIndex(),
- pA->GetLen(), pA->GetPoint(),
- 0, pA->GetDXArray() );
+ SalLayout* pSalLayout = rOut.ImplLayout( rTextAct.GetText(), rTextAct.GetIndex(),
+ rTextAct.GetLen(), rTextAct.GetPoint(),
+ 0, rTextAct.GetDXArray() );
if( pSalLayout )
{
- Rectangle aBoundRect( pOut->ImplGetTextBoundRect( *pSalLayout ) );
- mpRect = new Rectangle( pOut->PixelToLogic( aBoundRect ) );
+ Rectangle aBoundRect( const_cast<OutputDevice&>(rOut).ImplGetTextBoundRect( *pSalLayout ) );
+ aActionBounds = rOut.PixelToLogic( aBoundRect );
pSalLayout->Release();
}
- else
- mpRect = new Rectangle();
}
}
break;
- case( META_TEXTRECT_ACTION ):
- {
- MetaTextRectAction* pA = (MetaTextRectAction*) mpAct;
- mpRect = new Rectangle( pA->GetRect() );
- }
- break;
+ case META_TEXTRECT_ACTION:
+ aActionBounds = static_cast<const MetaTextRectAction&>(rAct).GetRect();
+ break;
- case( META_STRETCHTEXT_ACTION ):
- case( META_TEXTLINE_ACTION ):
- mpRect = NULL;
- // !!! DBG_ERROR( "Missing" );
- break;
+ case META_STRETCHTEXT_ACTION:
+ DBG_ERROR("META_STRETCHTEXT_ACTION not supported");
+ break;
+
+ case META_TEXTLINE_ACTION:
+ DBG_ERROR("META_TEXTLINE_ACTION not supported");
+ break;
default:
- break;
+ break;
}
- if( mpRect )
- {
- *mpRect = pOut->LogicToPixel( *mpRect );
- mbSpecialOutput = bSpecial;
- }
+ if( !aActionBounds.IsEmpty() )
+ return rOut.LogicToPixel( aActionBounds );
else
- mbSpecialOutput = FALSE;
+ return Rectangle();
}
-// -----------
-// - Printer -
-// -----------
+static bool ImplIsActionHandlingTransparency( const MetaAction& rAct )
+{
+ // META_FLOATTRANSPARENT_ACTION can contain a whole metafile,
+ // which is to be rendered with the given transparent gradient. We
+ // currently cannot emulate transparent painting on a white
+ // background reliably.
+
+ // For the time being, bitmaps are also not handled correctly,
+ // since they don't calculate explicit alpha against white
+ // background in ImplQPrinter::ImplPrintMtf.
+
+ // Leaves us with META_TRANSPARENT_ACTION
+ if( rAct.GetType() == META_TRANSPARENT_ACTION )
+ return true;
+ else
+ return false;
+}
+
+// predicate functor for checking whether given element is fully transparent
+class Impl_IsNotTransparent : public ::std::unary_function< ::std::pair< const MetaAction*, int >, bool >
+{
+public:
+ Impl_IsNotTransparent( const OutputDevice& rOut ) : mrOut(rOut) {}
+ bool operator()( ::std::pair< const MetaAction*, int > rElem )
+ {
+ return ImplIsNotTransparent( *rElem.first, mrOut );
+ }
+
+private:
+ const OutputDevice& mrOut;
+};
+
+typedef ::std::pair< const MetaAction*, int > Component; // MetaAction plus index in metafile
+
+// List of (intersecting) actions, plus overall bounds
+struct ConnectedComponents
+{
+ ::std::list< Component > aComponentList;
+ Rectangle aBounds;
+ bool bIsSpecial;
+};
+
+typedef ::std::list< ConnectedComponents > ConnectedComponentsList;
+
+// remove comment to enable highlighting of generated output
+#ifdef DBG_UTIL
+//#define DEBUG_GetPreparedMetaFile
+#endif
void Printer::GetPreparedMetaFile( const GDIMetaFile& rInMtf, GDIMetaFile& rOutMtf,
long nMaxBmpDPIX, long nMaxBmpDPIY )
{
const PrinterOptions& rPrinterOptions = GetPrinterOptions();
- MetaAction* pAct;
- ULONG i;
- BOOL bTransparent = FALSE;
+ MetaAction* pCurrAct;
+ bool bTransparent( false );
rOutMtf.Clear();
@@ -432,250 +510,475 @@ void Printer::GetPreparedMetaFile( const GDIMetaFile& rInMtf, GDIMetaFile& rOutM
( PRINTER_TRANSPARENCY_AUTO == rPrinterOptions.GetReducedTransparencyMode() ) )
{
// watch for transparent drawing actions
- for( pAct = ( (GDIMetaFile&) rInMtf ).FirstAction(); pAct && !bTransparent; pAct = ( (GDIMetaFile&) rInMtf ).NextAction() )
+ for( pCurrAct = ( (GDIMetaFile&) rInMtf ).FirstAction();
+ pCurrAct && !bTransparent;
+ pCurrAct = ( (GDIMetaFile&) rInMtf ).NextAction() )
{
- if( META_TRANSPARENT_ACTION == pAct->GetType() )
- bTransparent = TRUE;
- else if( META_FLOATTRANSPARENT_ACTION == pAct->GetType() )
- bTransparent = TRUE;
- else if( META_BMPEX_ACTION == pAct->GetType() )
- bTransparent = ( (MetaBmpExAction*) pAct )->GetBitmapEx().IsAlpha();
- else if( META_BMPEXSCALE_ACTION == pAct->GetType() )
- bTransparent = ( (MetaBmpExScaleAction*) pAct )->GetBitmapEx().IsAlpha();
- else if( META_BMPEXSCALEPART_ACTION == pAct->GetType() )
- bTransparent = ( (MetaBmpExScalePartAction*) pAct )->GetBitmapEx().IsAlpha();
+ // #i10613# Extracted "specialness" predicate into extra method
+ if( ImplIsActionSpecial( *pCurrAct ) )
+ bTransparent = true;
}
}
- // separate actions which are special actions or which are affected by special actions
- if( bTransparent )
+ // #i10613# Determine set of connected components containing transparent objects. These are
+ // then processed as bitmaps, the original actions are removed from the metafile.
+ if( !bTransparent )
+ {
+ // nothing transparent -> just copy
+ rOutMtf = rInMtf;
+ }
+ else
{
- Rectangle aBoundRect;
- const ULONG nCount = rInMtf.GetActionCount();
- VirtualDevice aPaintVDev;
- ImplCheckRect* pRects = new ImplCheckRect[ nCount ];
- ImplCheckRect* pIListFirst = NULL;
- ImplCheckRect* pIListPrev = NULL;
- ImplCheckRect* pIListAct = NULL;
- ImplCheckRect* pOListFirst = NULL;
- ImplCheckRect* pOListLast = NULL;
- ImplCheckRect* pOListAct = NULL;
- ImplCheckRect* pO;
-
- aPaintVDev.mnDPIX = mnDPIX;
- aPaintVDev.mnDPIY = mnDPIY;
- aPaintVDev.mbOutput = FALSE;
-
- // create list of special action rects
- for( i = 0, pO = pRects, pAct = ( (GDIMetaFile&) rInMtf ).FirstAction(); pAct;
- pAct = ( (GDIMetaFile&) rInMtf ).NextAction(), i++, pO++ )
+ // #i10613#
+ // This works as follows: we want a number of distinct sets of
+ // connected components, where each set contains metafile
+ // actions that are intersecting (note: there are possibly
+ // more actions contained as are directly intersecting,
+ // because we can only produce rectangular bitmaps later
+ // on. Thus, each set of connected components is the smallest
+ // enclosing, axis-aligned rectangle that completely bounds a
+ // number of intersecting metafile actions, plus any action
+ // that would otherwise be cut in two). Therefore, we
+ // iteratively add metafile actions from the original metafile
+ // to this connected components list (aCCList), by checking
+ // each element's bounding box against intersection with the
+ // metaaction at hand.
+ // All those intersecting elements are removed from aCCList
+ // and collected in a temporary list (aCCMergeList). After all
+ // elements have been checked, the aCCMergeList elements are
+ // merged with the metaaction at hand into one resulting
+ // connected component, with one big bounding box, and
+ // inserted into aCCList again.
+ // The time complexity of this algorithm is O(n^3), where n is
+ // the number of metafile actions, and it finds all distinct
+ // regions of rectangle-bounded connected components. This
+ // algorithm was designed by AF.
+ //
+
+ ConnectedComponentsList aCCList; // list containing distinct sets of connected components as elements.
+ int nActionNum;
+
+ // create an OutputDevice to record mapmode changes and the like
+ VirtualDevice aMapModeVDev;
+ aMapModeVDev.mnDPIX = mnDPIX;
+ aMapModeVDev.mnDPIY = mnDPIY;
+ aMapModeVDev.EnableOutput(FALSE);
+
+ //
+ // STAGE 1: Generate connected components list
+ // ===========================================
+ //
+
+ // iterate over all actions
+ for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0;
+ pCurrAct;
+ pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(), ++nActionNum )
{
- // set transparency flag
- if( META_TRANSPARENT_ACTION == pAct->GetType() )
- bTransparent = TRUE;
- else if( META_FLOATTRANSPARENT_ACTION == pAct->GetType() )
- bTransparent = TRUE;
- else if( META_BMPEX_ACTION == pAct->GetType() )
- bTransparent = ( (MetaBmpExAction*) pAct )->GetBitmapEx().IsAlpha();
- else if( META_BMPEXSCALE_ACTION == pAct->GetType() )
- bTransparent = ( (MetaBmpExScaleAction*) pAct )->GetBitmapEx().IsAlpha();
- else if( META_BMPEXSCALEPART_ACTION == pAct->GetType() )
- bTransparent = ( (MetaBmpExScalePartAction*) pAct )->GetBitmapEx().IsAlpha();
- else
- bTransparent = FALSE;
+ // execute action to get correct MapModes etc.
+ pCurrAct->Execute( &aMapModeVDev );
+
+ // cache bounds of current action
+ const Rectangle aBBCurrAct( ImplCalcActionBounds(*pCurrAct, aMapModeVDev) );
+
+ // accumulate collected bounds here, initialize with current action
+ Rectangle aTotalBounds( aBBCurrAct ); // thus,
+ // aTotalComponents.aBounds
+ // is
+ // empty
+ // for
+ // non-output-generating
+ // actions
+ bool bTreatSpecial( false );
+ ConnectedComponents aTotalComponents;
+
+ //
+ // STAGE 1.1: Search for intersecting cc entries
+ // =============================================
+ //
+
+ // if aBBCurrAct is empty, it will intersect with no
+ // aCCList member. Thus, we can safe us the check.
+ // Furthermore, this ensures that non-output-generating
+ // actions get their own aCCList entry, which is necessary
+ // when copying them to the output metafile (see stage 3
+ // below).
+ if( !aBBCurrAct.IsEmpty() )
+ {
+ ConnectedComponentsList::iterator aCurrCC;
+ const ConnectedComponentsList::iterator aLastCC( aCCList.end() );
+ bool bSomeComponentsChanged;
+
+ // now, this is unfortunate: since changing anyone of
+ // the aCCList elements (e.g. by merging or addition
+ // of an action) might generate new intersection with
+ // other aCCList elements, have to repeat the whole
+ // element scanning, until nothing changes anymore.
+ // Thus, this loop here makes us O(n^3) in the worst
+ // case.
+ do
+ {
+ // only loop here if 'intersects' branch below was hit
+ bSomeComponentsChanged = false;
+
+ // iterate over all current members of aCCList
+ for( aCurrCC=aCCList.begin(); aCurrCC != aLastCC; )
+ {
+ // first check if current element's bounds are
+ // empty. This ensures that empty actions are not
+ // merged into one component, as a matter of fact,
+ // they have no position.
+ if( !aCurrCC->aBounds.IsEmpty() &&
+ aCurrCC->aBounds.IsOver( aTotalBounds ) )
+ {
+ // union the intersecting aCCList element into aTotalComponents
+
+ // calc union bounding box
+ aTotalBounds.Union( aCurrCC->aBounds );
+
+ // extract all aCurr actions to aTotalComponents
+ aTotalComponents.aComponentList.splice( aTotalComponents.aComponentList.end(),
+ aCurrCC->aComponentList );
+
+ if( aCurrCC->bIsSpecial )
+ bTreatSpecial = true;
- // execute action to get correct MapMode's etc.
- pAct->Execute( &aPaintVDev );
+ // remove and delete aCurrCC element from list (we've now merged its content)
+ aCurrCC = aCCList.erase( aCurrCC );
- // create (bounding) rect object
- pO->ImplCreate( pAct, &aPaintVDev, bTransparent );
+ // at least one component changed, need to rescan everything
+ bSomeComponentsChanged = true;
+ }
+ else
+ {
+ ++aCurrCC;
+ }
+ }
+ }
+ while( bSomeComponentsChanged );
+ }
- // add object to one of the lists
- if( pO->mbSpecialOutput )
+ //
+ // STAGE 1.2: Determine special state for cc element
+ // =================================================
+ //
+
+ // now test whether the whole connected component must be
+ // treated specially (i.e. rendered as a bitmap): if the
+ // added action is the very first action, or all actions
+ // before it are completely transparent, the connected
+ // component need not be treated specially, not even if
+ // the added action contains transparency. This is because
+ // painting of transparent objects on _white background_
+ // works without alpha compositing (you just calculate the
+ // color). Note that for the test "all objects before me
+ // are transparent" no sorting is necessary, since the
+ // added metaaction pCurrAct is always in the order the
+ // metafile is painted. Generally, the order of the
+ // metaactions in the ConnectedComponents are not
+ // guaranteed to be the same as in the metafile.
+ if( bTreatSpecial )
{
- if( !pOListFirst )
- pOListFirst = pOListAct = pOListLast = pO;
- else
- pOListAct = pOListAct->mpNext = pOListLast = pO;
+ // prev component(s) special -> this one, too
+ aTotalComponents.bIsSpecial = true;
}
- else
+ else if( !ImplIsActionSpecial( *pCurrAct ) )
{
- if( !pIListFirst )
- pIListFirst = pIListAct = pO;
- else
- pIListAct = pIListAct->mpNext = pO;
+ // added action and none of prev components special ->
+ // this one normal, too
+ aTotalComponents.bIsSpecial = false;
}
- }
-
- // find all intersections and create list of (bitmap)
- for( pO = pOListFirst; pO; pO = pO->mpNext )
- {
- pIListPrev = NULL, pIListAct = pIListFirst;
-
- while( pIListAct )
+ else
{
- // move act object from in list to out list?
- if( pIListAct->Intersects( *pO ) )
- {
- // mark it as special object
- pIListAct->mbSpecialOutput = TRUE;
-
- if( pIListPrev )
- pIListPrev->mpNext = pIListAct->mpNext;
- else
- pIListFirst = pIListAct->mpNext;
+ // added action is special and none of prev components
+ // special -> do the detailed tests
- pOListLast = pOListLast->mpNext = pIListAct;
+ // can the action handle transparency correctly
+ // (i.e. when painted on white background, does the
+ // action still look correct)?
+ if( !ImplIsActionHandlingTransparency( *pCurrAct ) )
+ {
+ // no, action cannot handle its transparency on
+ // a printer device, render to bitmap
+ aTotalComponents.bIsSpecial = true;
}
else
- pIListPrev = pIListAct;
-
- pIListAct = pIListAct->mpNext;
- pOListLast->mpNext = NULL;
+ {
+ // yes, action can handle its transparency, so
+ // check whether we're on white background
+ if( aTotalComponents.aComponentList.empty() )
+ {
+ // nothing between pCurrAct and empty page
+ // background -> don't be special
+ aTotalComponents.bIsSpecial = false;
+ }
+ else
+ {
+ // check if _every_ object between pCurrAct and
+ // empty sheet of paper is fully transparent
+ Impl_IsNotTransparent aSpecialPredicate( aMapModeVDev );
+ if( ::std::find_if( aTotalComponents.aComponentList.begin(),
+ aTotalComponents.aComponentList.end(),
+ aSpecialPredicate ) == aTotalComponents.aComponentList.end() )
+ {
+ // predicate Impl_IsNotTransparent never
+ // returned true, so every object is
+ // transparent -> don't be special
+ aTotalComponents.bIsSpecial = false;
+ }
+ else
+ {
+ // predicate Impl_IsNotTransparent returned
+ // true at least once, so there's a visible
+ // object between pCurrAct and the empty sheet
+ // of paper -> be special, then
+ aTotalComponents.bIsSpecial = true;
+ }
+ }
+ }
}
- }
- // calculate bounding rectangle of special actions
- for( pO = pOListFirst; pO; pO = pO->mpNext )
- aBoundRect.Union( *pO->mpRect );
+ //
+ // STAGE 1.3: Add newly generated CC list element
+ // ==============================================
+ //
- Point aPoint;
- const Rectangle aOutputRect( aPoint, GetOutputSizePixel() );
+ // set new bounds and add action to list
+ aTotalComponents.aBounds = aTotalBounds;
+ aTotalComponents.aComponentList.push_back( ::std::make_pair(
+ const_cast<const MetaAction*>(pCurrAct), nActionNum) );
- aBoundRect.Intersection( aOutputRect );
+ // add aTotalComponents as a new entry to aCCList
+ aCCList.push_back( aTotalComponents );
- const double fBmpArea = (double) aBoundRect.GetWidth() * aBoundRect.GetHeight();
- const double fOutArea = (double) aOutputRect.GetWidth() * aOutputRect.GetHeight();
+ DBG_ASSERT( !aTotalComponents.aComponentList.empty(),
+ "Printer::GetPreparedMetaFile empty component" );
+ DBG_ASSERT( !aTotalComponents.aBounds.IsEmpty() ||
+ (aTotalComponents.aBounds.IsEmpty() && aTotalComponents.aComponentList.size() == 1),
+ "Printer::GetPreparedMetaFile non-output generating actions must be solitary");
+ }
- // check if output doesn't exceed given size
- if( rPrinterOptions.IsReduceTransparency() &&
- ( PRINTER_TRANSPARENCY_AUTO == rPrinterOptions.GetReducedTransparencyMode() ) &&
- ( fBmpArea > ( 0.25 * fOutArea ) ) )
+ // well now, we've got the list of disjunct connected
+ // components. Now we've got to create a map, which contains
+ // the corresponding aCCList element for every
+ // metaaction. Later on, we always process the complete
+ // metafile for each bitmap to be generated, but switch on
+ // output only for actions contained in the then current
+ // aCCList element. This ensures correct mapmode and attribute
+ // settings for all cases.
+
+ // maps mtf actions to CC list entries
+ ::std::vector< const ConnectedComponents* > aCCList_MemberMap( rInMtf.GetActionCount() );
+
+ // iterate over all aCCList members and their contained metaactions
+ ConnectedComponentsList::iterator aCurr( aCCList.begin() );
+ const ConnectedComponentsList::iterator aLast( aCCList.end() );
+ for( ; aCurr != aLast; ++aCurr )
{
- rOutMtf = rInMtf;
+ ::std::list< Component >::iterator aCurrAct( aCurr->aComponentList.begin() );
+ const ::std::list< Component >::iterator aLastAct( aCurr->aComponentList.end() );
+ for( ; aCurrAct != aLastAct; ++aCurrAct )
+ {
+ // set pointer to aCCList element for corresponding index
+ aCCList_MemberMap[ aCurrAct->second ] = &(*aCurr);
+ }
}
- else
+
+ //
+ // STAGE 2: Generate banded bitmaps for special regions
+ // ====================================================
+ //
+
+ Point aTmpPoint;
+ const Rectangle aOutputRect( aTmpPoint, GetOutputSizePixel() );
+
+ // iterate over all aCCList members and generate bitmaps for the special ones
+ for( aCurr = aCCList.begin(); aCurr != aLast; ++aCurr )
{
- // create new bitmap action first
- if( aBoundRect.GetWidth() && aBoundRect.GetHeight() )
+ if( aCurr->bIsSpecial )
{
- Point aDstPtPix( aBoundRect.TopLeft() );
- Size aDstSzPix;
- VirtualDevice aMapVDev;
+ Rectangle aBoundRect( aCurr->aBounds );
+ aBoundRect.Intersection( aOutputRect );
- rOutMtf.AddAction( new MetaPushAction( PUSH_MAPMODE ) );
- rOutMtf.AddAction( new MetaMapModeAction() );
+ const double fBmpArea( (double) aBoundRect.GetWidth() * aBoundRect.GetHeight() );
+ const double fOutArea( (double) aOutputRect.GetWidth() * aOutputRect.GetHeight() );
- aPaintVDev.mbOutput = TRUE;
- aPaintVDev.SetDrawMode( GetDrawMode() );
+ // check if output doesn't exceed given size
+ if( rPrinterOptions.IsReduceTransparency() &&
+ ( PRINTER_TRANSPARENCY_AUTO == rPrinterOptions.GetReducedTransparencyMode() ) &&
+ ( fBmpArea > ( 0.25 * fOutArea ) ) )
+ {
+ // output normally. Therefore, we simply clear the
+ // special attribute, as everything non-special is
+ // copied to rOutMtf further below.
+ aCurr->bIsSpecial = false;
+ }
+ else
+ {
+ // create new bitmap action first
+ if( aBoundRect.GetWidth() && aBoundRect.GetHeight() )
+ {
+ Point aDstPtPix( aBoundRect.TopLeft() );
+ Size aDstSzPix;
- aMapVDev.mbOutput = FALSE;
+ VirtualDevice aMapVDev; // here, we record only mapmode information
+ aMapVDev.EnableOutput(FALSE);
- while( aDstPtPix.Y() <= aBoundRect.Bottom() )
- {
- aDstPtPix.X() = aBoundRect.Left();
- aDstSzPix = Size( MAX_TILE_WIDTH, MAX_TILE_HEIGHT );
+ VirtualDevice aPaintVDev; // into this one, we render.
- if( ( aDstPtPix.Y() + aDstSzPix.Height() - 1L ) > aBoundRect.Bottom() )
- aDstSzPix.Height() = aBoundRect.Bottom() - aDstPtPix.Y() + 1L;
+ rOutMtf.AddAction( new MetaPushAction( PUSH_MAPMODE ) );
+ rOutMtf.AddAction( new MetaMapModeAction() );
- while( aDstPtPix.X() <= aBoundRect.Right() )
- {
- if( ( aDstPtPix.X() + aDstSzPix.Width() - 1L ) > aBoundRect.Right() )
- aDstSzPix.Width() = aBoundRect.Right() - aDstPtPix.X() + 1L;
+ aPaintVDev.SetDrawMode( GetDrawMode() );
- if( !Rectangle( aDstPtPix, aDstSzPix ).Intersection( aBoundRect ).IsEmpty() &&
- aPaintVDev.SetOutputSizePixel( aDstSzPix ) )
+ while( aDstPtPix.Y() <= aBoundRect.Bottom() )
{
- aPaintVDev.Push();
- aMapVDev.Push();
+ aDstPtPix.X() = aBoundRect.Left();
+ aDstSzPix = Size( MAX_TILE_WIDTH, MAX_TILE_HEIGHT );
- aMapVDev.mnDPIX = aPaintVDev.mnDPIX = mnDPIX;
- aMapVDev.mnDPIY = aPaintVDev.mnDPIY = mnDPIY;
+ if( ( aDstPtPix.Y() + aDstSzPix.Height() - 1L ) > aBoundRect.Bottom() )
+ aDstSzPix.Height() = aBoundRect.Bottom() - aDstPtPix.Y() + 1L;
- for( i = 0, pO = pRects; i < nCount; i++, pO++ )
+ while( aDstPtPix.X() <= aBoundRect.Right() )
{
- MetaAction* pAction = pO->mpAct;
- const USHORT nType = pAction->GetType();
+ if( ( aDstPtPix.X() + aDstSzPix.Width() - 1L ) > aBoundRect.Right() )
+ aDstSzPix.Width() = aBoundRect.Right() - aDstPtPix.X() + 1L;
- if( META_MAPMODE_ACTION == nType )
+ if( !Rectangle( aDstPtPix, aDstSzPix ).Intersection( aBoundRect ).IsEmpty() &&
+ aPaintVDev.SetOutputSizePixel( aDstSzPix ) )
{
- pAction->Execute( &aMapVDev );
+ aPaintVDev.Push();
+ aMapVDev.Push();
+
+ aMapVDev.mnDPIX = aPaintVDev.mnDPIX = mnDPIX;
+ aMapVDev.mnDPIY = aPaintVDev.mnDPIY = mnDPIY;
+
+ aPaintVDev.EnableOutput(FALSE);
+
+ // iterate over all actions
+ for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0;
+ pCurrAct;
+ pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(), ++nActionNum )
+ {
+ // enable output only for
+ // actions that are members of
+ // the current aCCList element
+ // (aCurr)
+ if( aCCList_MemberMap[nActionNum] == &(*aCurr) )
+ aPaintVDev.EnableOutput(TRUE);
+
+ // but process every action
+ const USHORT nType( pCurrAct->GetType() );
+
+ if( META_MAPMODE_ACTION == nType )
+ {
+ pCurrAct->Execute( &aMapVDev );
+
+ MapMode aMtfMap( aMapVDev.GetMapMode() );
+ const Point aNewOrg( aMapVDev.PixelToLogic( aDstPtPix ) );
+
+ aMtfMap.SetOrigin( Point( -aNewOrg.X(), -aNewOrg.Y() ) );
+ aPaintVDev.SetMapMode( aMtfMap );
+ }
+ else if( ( META_PUSH_ACTION == nType ) || ( META_POP_ACTION ) == nType )
+ {
+ pCurrAct->Execute( &aMapVDev );
+ pCurrAct->Execute( &aPaintVDev );
+ }
+ else if( META_GRADIENT_ACTION == nType )
+ {
+ MetaGradientAction* pGradientAction = static_cast<MetaGradientAction*>(pCurrAct);
+ DrawGradientEx( &aPaintVDev, pGradientAction->GetRect(), pGradientAction->GetGradient() );
+ }
+ else
+ {
+ pCurrAct->Execute( &aPaintVDev );
+ }
+
+ if( !( nActionNum % 4 ) )
+ Application::Reschedule();
+ }
+
+ const BOOL bOldMap = mbMap;
+ mbMap = aPaintVDev.mbMap = FALSE;
+
+ Bitmap aBandBmp( aPaintVDev.GetBitmap( Point(), aDstSzPix ) );
+
+ // scale down bitmap, if requested
+ if( rPrinterOptions.IsReduceBitmaps() && rPrinterOptions.IsReducedBitmapIncludesTransparency() )
+ {
+ aBandBmp = GetPreparedBitmap( aDstPtPix, aDstSzPix,
+ Point(), aBandBmp.GetSizePixel(),
+ aBandBmp, nMaxBmpDPIX, nMaxBmpDPIY );
+ }
+
+#ifdef DEBUG_GetPreparedMetaFile
+ //aBandBmp.Invert();
+#endif
- MapMode aMtfMap( aMapVDev.GetMapMode() );
- const Point aNewOrg( aMapVDev.PixelToLogic( aDstPtPix ) );
+ rOutMtf.AddAction( new MetaCommentAction( "PRNSPOOL_TRANSPARENTBITMAP_BEGIN" ) );
+ rOutMtf.AddAction( new MetaBmpScaleAction( aDstPtPix, aDstSzPix, aBandBmp ) );
+ rOutMtf.AddAction( new MetaCommentAction( "PRNSPOOL_TRANSPARENTBITMAP_END" ) );
- aMtfMap.SetOrigin( Point( -aNewOrg.X(), -aNewOrg.Y() ) );
- aPaintVDev.SetMapMode( aMtfMap );
- }
- else if( ( META_PUSH_ACTION == nType ) || ( META_POP_ACTION ) == nType )
- {
- pAction->Execute( &aMapVDev );
- pAction->Execute( &aPaintVDev );
+ aPaintVDev.mbMap = TRUE;
+ mbMap = bOldMap;
+ aMapVDev.Pop();
+ aPaintVDev.Pop();
}
- else if( META_GRADIENT_ACTION == nType )
- {
- MetaGradientAction* pGradientAction = (MetaGradientAction*) pAction;
- DrawGradientEx( &aPaintVDev, pGradientAction->GetRect(), pGradientAction->GetGradient() );
- }
- else
- pAction->Execute( &aPaintVDev );
-
- if( !( i % 4 ) )
- Application::Reschedule();
- }
- const BOOL bOldMap = mbMap;
- mbMap = aPaintVDev.mbMap = FALSE;
-
- Bitmap aBandBmp( aPaintVDev.GetBitmap( Point(), aDstSzPix ) );
-
- // scale down bitmap, if requested
- if( rPrinterOptions.IsReduceBitmaps() && rPrinterOptions.IsReducedBitmapIncludesTransparency() )
- {
- aBandBmp = GetPreparedBitmap( aDstPtPix, aDstSzPix,
- Point(), aBandBmp.GetSizePixel(),
- aBandBmp, nMaxBmpDPIX, nMaxBmpDPIY );
+ // overlapping bands to avoid missing lines (e.g. PostScript)
+ aDstPtPix.X() += aDstSzPix.Width();
}
-#ifdef DEBUG
- // aBandBmp.Invert();
-#endif
-
- rOutMtf.AddAction( new MetaCommentAction( "PRNSPOOL_TRANSPARENTBITMAP_BEGIN" ) );
- rOutMtf.AddAction( new MetaBmpScaleAction( aDstPtPix, aDstSzPix, aBandBmp ) );
- rOutMtf.AddAction( new MetaCommentAction( "PRNSPOOL_TRANSPARENTBITMAP_END" ) );
-
- aPaintVDev.mbMap = TRUE;
- mbMap = bOldMap;
- aMapVDev.Pop();
- aPaintVDev.Pop();
+ // overlapping bands to avoid missing lines (e.g. PostScript)
+ aDstPtPix.Y() += aDstSzPix.Height();
}
- // overlapping bands to avoid missing lines (e.g. PostScript)
- aDstPtPix.X() += aDstSzPix.Width();
+ rOutMtf.AddAction( new MetaPopAction() );
}
-
- // overlapping bands to avoid missing lines (e.g. PostScript)
- aDstPtPix.Y() += aDstSzPix.Height();
}
-
- rOutMtf.AddAction( new MetaPopAction() );
}
+ }
- // add normal actions
- for( i = 0, pO = pRects; i < nCount; i++, pO++ )
- if( !pO->mbSpecialOutput )
- rOutMtf.AddAction( ( pO->mpAct->Duplicate(), pO->mpAct ) );
+ //
+ // STAGE 3: Copy actions to output metafile
+ // ========================================
+ //
- rOutMtf.SetPrefMapMode( rInMtf.GetPrefMapMode() );
- rOutMtf.SetPrefSize( rInMtf.GetPrefSize() );
+ // iterate over all actions and duplicate the ones not in a
+ // special aCCList member into rOutMtf
+ for( pCurrAct=const_cast<GDIMetaFile&>(rInMtf).FirstAction(), nActionNum=0;
+ pCurrAct;
+ pCurrAct=const_cast<GDIMetaFile&>(rInMtf).NextAction(), ++nActionNum )
+ {
+ // NOTE: This relies on the fact that map-mode or draw
+ // mode changing actions are solitary aCCList elements and
+ // have empty bounding boxes, see comment on stage 1.1
+ // above
+ if( aCCList_MemberMap[nActionNum] &&
+ (aCCList_MemberMap[nActionNum]->aBounds.IsEmpty() ||
+ !aCCList_MemberMap[nActionNum]->bIsSpecial) )
+ {
+ rOutMtf.AddAction( ( pCurrAct->Duplicate(), pCurrAct ) );
+ }
}
- delete[] pRects;
+ rOutMtf.SetPrefMapMode( rInMtf.GetPrefMapMode() );
+ rOutMtf.SetPrefSize( rInMtf.GetPrefSize() );
+
+#ifdef DEBUG_GetPreparedMetaFile
+ // iterate over all aCCList members and generate rectangles for the bounding boxes
+ rOutMtf.AddAction( new MetaFillColorAction( COL_WHITE, FALSE ) );
+ for( aCurr = aCCList.begin(); aCurr != aLast; ++aCurr )
+ {
+ if( aCurr->bIsSpecial )
+ rOutMtf.AddAction( new MetaLineColorAction( COL_RED, TRUE) );
+ else
+ rOutMtf.AddAction( new MetaLineColorAction( COL_BLUE, TRUE) );
+
+ rOutMtf.AddAction( new MetaRectAction( aMapModeVDev.PixelToLogic( aCurr->aBounds ) ) );
+ }
+#endif
}
- else
- rOutMtf = rInMtf;
}
// -----------------------------------------------------------------------------
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index e8af5a08610a..99cca7764899 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salgdilayout.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: pl $ $Date: 2002-09-18 16:28:28 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:03 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -95,11 +95,8 @@
#ifndef _SV_SVAPP_HXX
#include <svapp.hxx>
#endif
-#ifndef _SV_POLY_H
-#include <poly.h>
-#endif
-#ifndef _SV_POLY_HXX
-#include <poly.hxx>
+#ifndef _POLY_HXX
+#include <tools/poly.hxx>
#endif
#ifndef _SV_REGION_HXX
#include <region.hxx>
@@ -194,7 +191,12 @@ SalGraphicsLayout::~SalGraphicsLayout()
void SalGraphicsLayout::mirror( long& x, const OutputDevice *pOutDev )
{
- long w = GetGraphicsWidth();
+ long w;
+ if( pOutDev && pOutDev->meOutDevType == OUTDEV_VIRDEV )
+ w = pOutDev->mnOutWidth;
+ else
+ w = GetGraphicsWidth();
+
if( w )
{
x = w-1-x;
@@ -210,7 +212,12 @@ void SalGraphicsLayout::mirror( long& x, const OutputDevice *pOutDev )
void SalGraphicsLayout::mirror( long& x, long& nWidth, const OutputDevice *pOutDev )
{
- long w = GetGraphicsWidth();
+ long w;
+ if( pOutDev && pOutDev->meOutDevType == OUTDEV_VIRDEV )
+ w = pOutDev->mnOutWidth;
+ else
+ w = GetGraphicsWidth();
+
if( w )
{
x = w-nWidth-x;
@@ -226,7 +233,12 @@ void SalGraphicsLayout::mirror( long& x, long& nWidth, const OutputDevice *pOutD
BOOL SalGraphicsLayout::mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev )
{
- long w = GetGraphicsWidth();
+ long w;
+ if( pOutDev && pOutDev->meOutDevType == OUTDEV_VIRDEV )
+ w = pOutDev->mnOutWidth;
+ else
+ w = GetGraphicsWidth();
+
if( w )
{
sal_uInt32 i, j;
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index a8a10ea53e4d..1737cd5b3e82 100755
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: sallayout.cxx,v $
*
- * $Revision: 1.37 $
+ * $Revision: 1.38 $
*
- * last change: $Author: hdu $ $Date: 2002-12-12 13:52:57 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:04 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -129,7 +129,9 @@ int GetVerticalFlags( sal_Unicode nChar )
sal_Unicode GetVerticalChar( sal_Unicode nChar )
{
+return 0;
int nVert = 0;
+
switch( nChar )
{
// CJK compatibility forms
@@ -173,6 +175,46 @@ sal_Unicode GetMirroredChar( sal_Unicode nChar )
return nChar;
}
+// -----------------------------------------------------------------------
+
+sal_Unicode GetLocalizedChar( sal_Unicode nChar, int nLocalFlags )
+{
+ // currently only conversion from ASCII digits is interesting
+ if( (nChar < '0') || ('9' < nChar) )
+ return nChar;
+
+ sal_Unicode nOffset;
+ switch( nLocalFlags )
+ {
+ case 0: nOffset = 0x0000; break; // western
+ case 1: nOffset = 0x0660; break; // persian/urdu
+ case 2: nOffset = 0x09E6; break; // bengali
+ case 3: nOffset = 0x0966; break; // devanagari
+ case 4: nOffset = 0x1369; break; // ethiopic
+ case 5: nOffset = 0x0AE6; break; // gujarati
+ case 6: nOffset = 0x0A66; break; // gurmukhi
+ case 7: nOffset = 0x0CE6; break; // kannada
+ case 8: nOffset = 0x17E0; break; // khmer
+ case 9: nOffset = 0x0ED0; break; // lao
+ case 10: nOffset = 0x0D66; break; // malayalam
+ case 11: nOffset = 0x1810; break; // mongolian
+ case 12: nOffset = 0x1040; break; // myanmar
+ case 13: nOffset = 0x0B66; break; // oriya
+ case 14: nOffset = 0x0BE7; break; // tamil
+ case 15: nOffset = 0x0C66; break; // telugu
+ case 16: nOffset = 0x0E50; break; // thai
+ case 17: nOffset = 0x0F20; break; // tibetan
+
+ case 90: nOffset = 0x2776; break; // dingbat circled
+ case 91: nOffset = 0x2070; break; // superscript
+ case 92: nOffset = 0x2080; break; // subscript
+ default: nOffset = 0; break;
+ }
+
+ nChar += nOffset;
+ return nChar;
+}
+
// =======================================================================
ImplLayoutArgs::ImplLayoutArgs( const xub_Unicode* pStr, int nLength,
@@ -251,7 +293,7 @@ ImplLayoutArgs::ImplLayoutArgs( const xub_Unicode* pStr, int nLength,
bool ImplLayoutArgs::GetNextPos( int* nCharPos, bool* bRightToLeft )
{
- if( mnRunIndex >= maRuns.size() )
+ if( mnRunIndex >= (int)maRuns.size() )
return false;
// update position in run
@@ -275,12 +317,12 @@ bool ImplLayoutArgs::GetNextPos( int* nCharPos, bool* bRightToLeft )
bool ImplLayoutArgs::GetNextRun( int* nMinRunPos, int* nEndRunPos, bool* bRightToLeft )
{
- if( mnRunIndex >= maRuns.size() )
+ if( mnRunIndex >= (int)maRuns.size() )
return false;
int nRunPos0 = maRuns[ mnRunIndex+0 ];
int nRunPos1 = maRuns[ mnRunIndex+1 ];
- if( (mnRunIndex += 2) < maRuns.size() )
+ if( (mnRunIndex += 2) < (int)maRuns.size() )
mnCurCharPos = maRuns[ mnRunIndex ];
if( nRunPos0 < nRunPos1 )
{
@@ -300,29 +342,29 @@ bool ImplLayoutArgs::GetNextRun( int* nMinRunPos, int* nEndRunPos, bool* bRightT
// -----------------------------------------------------------------------
-void ImplLayoutArgs::NeedFallback( int nCharPos, bool bRTL )
+bool ImplLayoutArgs::NeedFallback( int nCharPos, bool bRTL )
{
// try to merge fallback runs
int nIndex = maReruns.size();
- if( --nIndex > 0 )
+ if( (--nIndex > 0) && ((nCharPos + bRTL) == maReruns[ nIndex ]) )
{
- int nLastPos = maReruns[ nIndex ];
- if( (nCharPos + bRTL) == nLastPos )
- {
- // merge with current run
- maReruns[ nIndex ] = nCharPos + !bRTL;
- return;
- }
+ // merge with current run
+ maReruns[ nIndex ] = nCharPos + !bRTL;
+ }
+ else
+ {
+ // append new run
+ maReruns.push_back( nCharPos + bRTL );
+ maReruns.push_back( nCharPos + !bRTL );
}
- // append new run
- maReruns.push_back( nCharPos + bRTL );
- maReruns.push_back( nCharPos + !bRTL );
+ // TODO: return !(mnFlags & SAL_LAYOUT_FOR_FALLBACK);
+ return true;
}
// -----------------------------------------------------------------------
-void ImplLayoutArgs::NeedFallback( int nCharPos0, int nCharPos1, bool bRTL )
+bool ImplLayoutArgs::NeedFallback( int nCharPos0, int nCharPos1, bool bRTL )
{
// swap if needed
if( (nCharPos0 < nCharPos1) ^ bRTL )
@@ -335,16 +377,21 @@ void ImplLayoutArgs::NeedFallback( int nCharPos0, int nCharPos1, bool bRTL )
// append new run
maReruns.push_back( nCharPos0 );
maReruns.push_back( nCharPos1 );
+
+ return true;
+ // TODO: return !(mnFlags & SAL_LAYOUT_FOR_FALLBACK);
}
// -----------------------------------------------------------------------
-bool ImplLayoutArgs::SetFallbackArgs()
+bool ImplLayoutArgs::PrepareFallback()
{
int nSize = maReruns.size();
if( !nSize )
return false;
DBG_ASSERT( !(nSize & 1), "odd ImplLayoutArgs run size" );
+
+ // TODO: sort out chars that were not requested anyway
maRuns = maReruns;
maReruns.clear();
ResetPos();
@@ -353,11 +400,11 @@ bool ImplLayoutArgs::SetFallbackArgs()
// =======================================================================
-SalLayout::SalLayout( const ImplLayoutArgs& rArgs )
-: mnMinCharPos( rArgs.mnMinCharPos ),
- mnEndCharPos( rArgs.mnEndCharPos ),
- mnOrientation( rArgs.mnOrientation ),
- mnLayoutFlags( rArgs.mnFlags ),
+SalLayout::SalLayout()
+: mnMinCharPos( -1 ),
+ mnEndCharPos( -1 ),
+ mnLayoutFlags( 0 ),
+ mnOrientation( 0 ),
maDrawOffset( 0, 0 ),
mnUnitsPerPixel( 1 ),
mnRefCount( 1 )
@@ -370,6 +417,17 @@ SalLayout::~SalLayout()
// -----------------------------------------------------------------------
+void SalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
+{
+ mnMinCharPos = rArgs.mnMinCharPos;
+ mnEndCharPos = rArgs.mnEndCharPos;
+ mnLayoutFlags = rArgs.mnFlags;
+
+ mnOrientation = rArgs.mnOrientation;
+}
+
+// -----------------------------------------------------------------------
+
void SalLayout::Reference() const
{
// TODO: protect when multiple threads can access this
@@ -473,8 +531,7 @@ bool SalLayout::GetOutline( SalGraphics& rSalGraphics, PolyPolyVector& rVector )
break;
// get outline of individual glyph, ignoring "empty" glyphs
- bool bIsGlyph = ((nLGlyph & GF_ISCHAR) == 0);
- bool bSuccess = rSalGraphics.GetGlyphOutline( nLGlyph, bIsGlyph, aGlyphOutline, NULL );
+ bool bSuccess = rSalGraphics.GetGlyphOutline( nLGlyph, aGlyphOutline, NULL );
bRet &= bSuccess;
// only add non-empty outlines
if( bSuccess && (aGlyphOutline.Count() > 0) )
@@ -490,13 +547,12 @@ bool SalLayout::GetOutline( SalGraphics& rSalGraphics, PolyPolyVector& rVector )
// -----------------------------------------------------------------------
-bool SalLayout::GetBoundRect( SalGraphics& rSalGraphics, Rectangle& rRectangle ) const
+bool SalLayout::GetBoundRect( SalGraphics& rSalGraphics, Rectangle& rRect ) const
{
bool bRet = false;
- rRectangle.SetEmpty();
+ rRect.SetEmpty();
Point aPos;
-
Rectangle aRectangle;
for( int nStart = 0;;)
{
@@ -505,13 +561,11 @@ bool SalLayout::GetBoundRect( SalGraphics& rSalGraphics, Rectangle& rRectangle )
break;
// get bounding rectangle of individual glyph
- bool bIsGlyph = (nLGlyph & GF_ISCHAR) == 0;
- if( rSalGraphics.GetGlyphBoundRect( nLGlyph, bIsGlyph, aRectangle, NULL ) )
+ if( rSalGraphics.GetGlyphBoundRect( nLGlyph, aRectangle, NULL ) )
{
// merge rectangle
aRectangle += aPos;
- rRectangle.Union( aRectangle );
-
+ rRect.Union( aRectangle );
bRet = true;
}
}
@@ -521,15 +575,6 @@ bool SalLayout::GetBoundRect( SalGraphics& rSalGraphics, Rectangle& rRectangle )
// -----------------------------------------------------------------------
-bool SalLayout::IsNotdefGlyph( long nGlyph ) const
-{
- if( (nGlyph & GF_ISCHAR) || !(nGlyph & GF_IDXMASK) )
- return true;
- return false;
-}
-
-// -----------------------------------------------------------------------
-
bool SalLayout::IsSpacingGlyph( long nGlyph ) const
{
bool bRet = false;
@@ -548,9 +593,10 @@ bool SalLayout::IsSpacingGlyph( long nGlyph ) const
// =======================================================================
-GenericSalLayout::GenericSalLayout( const ImplLayoutArgs& rArgs )
-: SalLayout( rArgs ),
- mnGlyphCapacity(0), mnGlyphCount(0), mpGlyphItems(NULL)
+GenericSalLayout::GenericSalLayout()
+: mnGlyphCount(0),
+ mnGlyphCapacity(0),
+ mpGlyphItems(0)
{}
// -----------------------------------------------------------------------
@@ -567,7 +613,7 @@ void GenericSalLayout::AppendGlyph( const GlyphItem& rGlyphItem )
// TODO: use std::list<GlyphItem>
if( mnGlyphCount >= mnGlyphCapacity )
{
- mnGlyphCapacity += 8 + mnGlyphCount;
+ mnGlyphCapacity += 16 + mnGlyphCount;
GlyphItem* pNewGI = new GlyphItem[ mnGlyphCapacity ];
if( mpGlyphItems )
{
@@ -583,180 +629,6 @@ void GenericSalLayout::AppendGlyph( const GlyphItem& rGlyphItem )
// -----------------------------------------------------------------------
-void GenericSalLayout::UpdateGlyphPos( int nStart, int nNewXPos )
-{
- if( nStart >= mnGlyphCount )
- return;
- GlyphItem* pG = mpGlyphItems + nStart;
- long nXDelta = nNewXPos - pG->maLinearPos.X();
-#if 1
- if( !nXDelta )
- return;
- GlyphItem* pGEnd = mpGlyphItems + mnGlyphCount;
- for(; pG < pGEnd; ++pG )
-#endif
- pG->maLinearPos.X() += nXDelta;
-}
-
-// -----------------------------------------------------------------------
-
-void GenericSalLayout::RemoveNotdefs()
-{
- GlyphItem* pGDst = mpGlyphItems;
- const GlyphItem* pGSrc = mpGlyphItems;
- const GlyphItem* pGEnd = mpGlyphItems + mnGlyphCount;
- for(; pGSrc < pGEnd; ++pGSrc )
- {
- if( !IsNotdefGlyph( pGSrc->mnGlyphIndex ) )
- {
- if( pGDst != pGSrc )
- *pGDst = *pGSrc;
- ++pGDst;
- }
- }
-}
-
-// -----------------------------------------------------------------------
-
-bool GenericSalLayout::ApplyFallback( SalLayout& rFallback )
-{
- // find positions where this fallback would fit
- GlyphItem* pGNext = mpGlyphItems;
- GlyphItem* pGEnd = mpGlyphItems + mnGlyphCount;
- int bSuccess = false;
- for( int nFallbackIdx=0; pGNext < pGEnd; )
- {
- // find parts that need fallback
- GlyphItem* pGCur = pGNext;
- while( (pGCur < pGEnd) && !IsNotdefGlyph( pGCur->mnGlyphIndex ) )
- ++pGCur;
- if( pGCur >= pGEnd )
- break;
- pGNext = pGCur;
- int nMinCharPos = pGNext->mnCharPos;
- int nMaxCharPos = nMinCharPos;
-
- while( (++pGNext < pGEnd) && IsNotdefGlyph( pGNext->mnGlyphIndex ) )
- {
- if( nMinCharPos > pGNext->mnCharPos )
- nMinCharPos = pGNext->mnCharPos;
- if( nMaxCharPos < pGNext->mnCharPos )
- nMaxCharPos = pGNext->mnCharPos;
- }
-
- // update parts that have a fallback
- Point aPos;
- long nXPos = pGCur->maLinearPos.X();
- int nStart = nFallbackIdx;
- for( ;; )
- {
- // get fallback glyphs
- long nGlyphIdx;
- long nGlyphAdv;
- int nCharPos;
- int nStartBefore = nStart;
- if( !rFallback.GetNextGlyphs( 1, &nGlyphIdx, aPos, nStart,
- &nGlyphAdv, &nCharPos ) )
- break;
-
- // when this fallback doesn't match we need it for another part
- if( nCharPos < nMinCharPos || nMaxCharPos < nCharPos )
- {
- nFallbackIdx = nStartBefore;
- break;
- }
-
- // no need to fallback when it does not help
- if( rFallback.IsNotdefGlyph( nGlyphIdx ) )
- {
- // sync up position of current layout with fallback
- while( (pGCur->mnCharPos != nCharPos) && (++pGCur < pGEnd) );
- continue;
- }
-
- // adjust fallback positions
- rFallback.UpdateGlyphPos( nStartBefore, nXPos );
- nXPos += nGlyphAdv;
- bSuccess = true;
-
- // remove notdef that is handled by fallback
- --mnGlyphCount;
- --pGEnd;
- if( pGCur < pGEnd )
- {
- long nDelta = nXPos - pGCur[1].maLinearPos.X();
- for( GlyphItem* pG = pGCur; pG < pGEnd; ++pG )
- {
- pG[0] = pG[1];
- pG[0].maLinearPos.X() += nDelta;
- }
- }
- }
-
- nFallbackIdx = nStart;
- }
-
- // we are not interested in unresolved fallback glyphs
- rFallback.RemoveNotdefs();
-
- return bSuccess;
-}
-
-// -----------------------------------------------------------------------
-
-Point GenericSalLayout::GetCharPosition( int nCharPos, bool bRTL ) const
-{
- int nStartIndex = mnGlyphCount;
- int nGlyphIndex = mnGlyphCount;
- int nEndIndex = 0;
-
- int nMaxIndex = 0;
- const GlyphItem* pG = mpGlyphItems;
- for( int i = 0; i < mnGlyphCount; ++i, ++pG )
- {
- int n = pG->mnCharPos;
- if( n < mnMinCharPos || n >= mnEndCharPos )
- continue;
-
- if( nStartIndex > i )
- nStartIndex = i;
- nMaxIndex = i;
-
- if( (n <= nCharPos) && (nGlyphIndex > i) )
- nGlyphIndex = i;
- }
-
-
- long nXPos = 0;
-
- if( !bRTL ) // relative to left edge
- {
- nXPos = mpGlyphItems[nGlyphIndex].maLinearPos.X();
-
- // adjust start to cluster start
- pG = mpGlyphItems + nStartIndex;
- while( (pG > mpGlyphItems) && !pG->IsClusterStart() )
- --pG;
- nXPos -= pG->maLinearPos.X();
- }
- else // relative to right edge
- {
- // find end of last cluster
- pG = mpGlyphItems + nMaxIndex;
- const GlyphItem* pGLimit = mpGlyphItems + mnGlyphCount;
- while( (++pG < pGLimit) && !pG->IsClusterStart() );
-
- // adjust offset from start to last cluster
- pGLimit = pG;
- for( pG = mpGlyphItems + nStartIndex ; pG < pGLimit; ++pG )
- nXPos -= pG->mnNewWidth;
- }
-
- return Point( nXPos, 0 );
-}
-
-// -----------------------------------------------------------------------
-
bool GenericSalLayout::GetCharWidths( long* pCharWidths ) const
{
// initialize character extents buffer
@@ -833,21 +705,13 @@ bool GenericSalLayout::GetCharWidths( long* pCharWidths ) const
// -----------------------------------------------------------------------
-long GenericSalLayout::FillDXArray( long* pDXArray ) const
+long GenericSalLayout::FillDXArray( long* pCharWidths ) const
{
- int nCharCapacity = mnEndCharPos - mnMinCharPos;
- long* pCharWidths = (long*)alloca( nCharCapacity * sizeof(long) );
- if( !GetCharWidths( pCharWidths ) )
- return 0;
-
- long nWidth = 0;
- for( int i = mnMinCharPos; i < mnEndCharPos; ++i )
- {
- nWidth += pCharWidths[ i - mnMinCharPos ];
- if( pDXArray )
- pDXArray[ i - mnMinCharPos ] = nWidth;
- }
+ if( pCharWidths )
+ if( !GetCharWidths( pCharWidths ) )
+ return 0;
+ long nWidth = GetTextWidth();
return nWidth;
}
@@ -859,19 +723,16 @@ long GenericSalLayout::GetTextWidth() const
return 0;
const GlyphItem* pG = mpGlyphItems;
- long nMinPos = pG->maLinearPos.X();
- long nMaxPos = nMinPos + pG->mnNewWidth;
+ long nMinPos = 0;
+ long nMaxPos = pG->maLinearPos.X() + pG->mnNewWidth;
for( int i = 1; i < mnGlyphCount; ++i )
{
++pG;
- int n = pG->mnCharPos;
- if( (n < mnMinCharPos) || (mnEndCharPos <= n) )
- continue;
long nXPos = pG->maLinearPos.X();
if( nMinPos > nXPos )
nMinPos = nXPos;
nXPos += pG->mnNewWidth;
- if( nMaxPos < nXPos )
+ if( nMaxPos < nXPos )
nMaxPos = nXPos;
}
@@ -881,32 +742,41 @@ long GenericSalLayout::GetTextWidth() const
// -----------------------------------------------------------------------
-void GenericSalLayout::ApplyDXArray( const long* pDXArray )
+void GenericSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
+{
+ SalLayout::AdjustLayout( rArgs );
+
+ if( rArgs.mpDXArray )
+ ApplyDXArray( rArgs );
+ else if( rArgs.mnLayoutWidth )
+ Justify( rArgs.mnLayoutWidth );
+}
+
+// -----------------------------------------------------------------------
+
+void GenericSalLayout::ApplyDXArray( ImplLayoutArgs& rArgs )
{
if( mnGlyphCount <= 0 )
return;
// determine cluster boundaries and x base offset
- int nChars = mnEndCharPos - mnMinCharPos;
- int* pLogCluster = (int*)alloca( nChars * sizeof(int) );
+ int nCharCount = rArgs.mnEndCharPos - rArgs.mnMinCharPos;
+ int* pLogCluster = (int*)alloca( nCharCount * sizeof(int) );
int i, n;
- for( i = 0; i < nChars; ++i )
- pLogCluster[ i ] = -1;
-
long nBasePointX = -1;
+ if( mnLayoutFlags & SAL_LAYOUT_FOR_FALLBACK )
+ nBasePointX = 0;
+ for( i = 0; i < nCharCount; ++i )
+ pLogCluster[ i ] = -1;
GlyphItem* pG = mpGlyphItems;
for( i = 0; i < mnGlyphCount; ++i, ++pG )
{
- n = pG->mnCharPos;
- if( n < mnEndCharPos )
- {
- if( (n -= mnMinCharPos) >= 0 )
- {
- pLogCluster[ n ] = i;
- if( nBasePointX < 0 )
- nBasePointX = pG->maLinearPos.X();
- }
- }
+ n = pG->mnCharPos - rArgs.mnMinCharPos;
+ if( (n < 0) || (nCharCount <= n) )
+ continue;
+ pLogCluster[ n ] = i;
+ if( nBasePointX < 0 )
+ nBasePointX = pG->maLinearPos.X();
}
// calculate adjusted cluster widths
@@ -914,18 +784,18 @@ void GenericSalLayout::ApplyDXArray( const long* pDXArray )
for( i = 0; i < mnGlyphCount; ++i )
pNewClusterWidths[ i ] = 0;
- for( i = 0; i < nChars; ++i )
- if( (n = pLogCluster[i]) >= 0 )
- break;
- long nOldPos = pDXArray[i] * mnUnitsPerPixel;
- pNewClusterWidths[ n ] = nOldPos;
- while( ++i < nChars )
+ bool bRTL;
+ for( rArgs.ResetPos(); rArgs.GetNextPos( &n, &bRTL ); )
{
- if( pLogCluster[i] >= 0 )
- n = pLogCluster[ i ];
- long nNewPos = pDXArray[i] * mnUnitsPerPixel;
- pNewClusterWidths[ n ] += nNewPos - nOldPos;
- nOldPos = nNewPos;
+ n -= rArgs.mnMinCharPos;
+ i = pLogCluster[ n ];
+ if( i >= 0 )
+ {
+ long nDelta = rArgs.mpDXArray[ n ] ;
+ if( n > 0 )
+ nDelta -= rArgs.mpDXArray[ n-1 ];
+ pNewClusterWidths[ i ] += nDelta * mnUnitsPerPixel;
+ }
}
// move cluster positions using the adjusted widths
@@ -939,7 +809,7 @@ void GenericSalLayout::ApplyDXArray( const long* pDXArray )
nDelta = nBasePointX + (nNewPos - pG->maLinearPos.X());
// right align in new space for RTL glyphs
if( pG->IsRTLGlyph() )
- pG->maLinearPos.X() += pNewClusterWidths[i] - pG->mnOrigWidth;
+ nDelta += pNewClusterWidths[i] - pG->mnOrigWidth;
}
pG->maLinearPos.X() += nDelta;
@@ -956,25 +826,13 @@ void GenericSalLayout::ApplyDXArray( const long* pDXArray )
void GenericSalLayout::Justify( long nNewWidth )
{
- int nCharCapacity = mnEndCharPos - mnMinCharPos;
- long* pCharWidths = (long*)alloca( nCharCapacity * sizeof(long) );
- if( !GetCharWidths( pCharWidths ) )
- return;
-
nNewWidth *= mnUnitsPerPixel;
- int nOldWidth = FillDXArray( NULL );
+ int nOldWidth = GetTextWidth();
if( !nOldWidth || nNewWidth==nOldWidth )
return;
// find rightmost glyph, it won't get stretched
- GlyphItem* pG = mpGlyphItems;
- for( pG += mnGlyphCount; --pG > mpGlyphItems; )
- {
- int n = pG->mnCharPos;
- if( (n >= mnMinCharPos) || (n < mnEndCharPos) )
- break;
- }
- GlyphItem* pGRight = pG;
+ GlyphItem* pGRight = mpGlyphItems + mnGlyphCount - 1;
// move rightmost glyph to requested position, correct adjustment widths
nOldWidth -= pGRight->mnOrigWidth;
@@ -985,16 +843,13 @@ void GenericSalLayout::Justify( long nNewWidth )
pGRight->maLinearPos.X() = nBasePos + nNewWidth;
// interpolate inbetween glyph positions
+ GlyphItem* pG;
double fFactor = (double)nNewWidth / nOldWidth;
for( pG = mpGlyphItems; pG < pGRight; ++pG )
{
- int n = pG->mnCharPos;
- if( (n >= mnMinCharPos) || (n < mnEndCharPos) )
- {
- long nOldPos = pG->maLinearPos.X();
- long nNewPos = nBasePos + (long)(fFactor * (nOldPos - nBasePos) + 0.5);
- pG->maLinearPos.X() += nNewPos - nOldPos;
- }
+ long nOldPos = pG->maLinearPos.X();
+ long nNewPos = nBasePos + (long)(fFactor * (nOldPos - nBasePos) + 0.5);
+ pG->maLinearPos.X() += nNewPos - nOldPos;
}
// adjust new glyph advance widths to glyph movements above,
@@ -1101,13 +956,12 @@ void GenericSalLayout::KashidaJustify( long nKashidaIndex, int nKashidaWidth )
// -----------------------------------------------------------------------
-void GenericSalLayout::GetCaretPositions( long* pCaretXArray ) const
+void GenericSalLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
{
// initialize result array
- const int nMaxIdx = 2 * (mnEndCharPos - mnMinCharPos);
long nXPos = -1;
int i;
- for( i = 0; i < nMaxIdx; ++i )
+ for( i = 0; i < nMaxIndex; ++i )
pCaretXArray[ i ] = nXPos;
// calculate caret positions using glyph array
@@ -1117,38 +971,19 @@ void GenericSalLayout::GetCaretPositions( long* pCaretXArray ) const
nXPos = pG->maLinearPos.X();
long nXRight = nXPos + pG->mnOrigWidth;
int n = pG->mnCharPos;
- if( (n >= mnMinCharPos) && (n < mnEndCharPos) )
+ int nCurrIdx = 2 * (n - mnMinCharPos);
+ if( !pG->IsRTLGlyph() )
{
- int nCurrIdx = 2 * (n - mnMinCharPos);
- if( !pG->IsRTLGlyph() )
- {
- // normal positions for LTR case
- pCaretXArray[ nCurrIdx ] = nXPos;
- pCaretXArray[ nCurrIdx+1 ] = nXRight;
- }
- else
- {
-
- // reverse positions for RTL case
- pCaretXArray[ nCurrIdx ] = nXRight;
- pCaretXArray[ nCurrIdx+1 ] = nXPos;
- }
+ // normal positions for LTR case
+ pCaretXArray[ nCurrIdx ] = nXPos;
+ pCaretXArray[ nCurrIdx+1 ] = nXRight;
}
- }
-
-
- // fixup unknown caret positions
- for( i = 0; i < nMaxIdx; ++i )
- if( pCaretXArray[ i ] >= 0 )
- break;
- nXPos = pCaretXArray[ i ];
-
- for( i = 0; i < nMaxIdx; ++i )
- {
- if( pCaretXArray[ i ] >= 0 )
- nXPos = pCaretXArray[ i ];
else
- pCaretXArray[ i ] = nXPos;
+ {
+ // reverse positions for RTL case
+ pCaretXArray[ nCurrIdx ] = nXRight;
+ pCaretXArray[ nCurrIdx+1 ] = nXPos;
+ }
}
}
@@ -1184,9 +1019,8 @@ int GenericSalLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos,
for(; nStart < mnGlyphCount; ++nStart, ++pG )
{
int n = pG->mnCharPos;
- if( n < mnMinCharPos || n >= mnEndCharPos )
- continue;
- break;
+ if( (mnMinCharPos <= n) && (n < mnEndCharPos) )
+ break;
}
// return zero if no more glyph found
@@ -1202,21 +1036,23 @@ int GenericSalLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos,
long nOldFlags = pG->mnGlyphIndex;
while( nCount < nLen )
{
+ // update return data with glyph info
+ ++nCount;
*(pGlyphs++) = pG->mnGlyphIndex;
- if( pGlyphAdvAry )
- *(pGlyphAdvAry++) = pG->mnNewWidth;
if( pCharPosAry )
*(pCharPosAry++) = pG->mnCharPos;
- ++nCount;
+ if( pGlyphAdvAry )
+ *(pGlyphAdvAry++) = pG->mnNewWidth;
if( ++nStart >= mnGlyphCount )
break;
// stop when x-position is unexpected
- if( !pGlyphAdvAry && (pG->mnOrigWidth != pG->mnNewWidth) )
- break;
-
+ long nXPos = pG->maLinearPos.X();
++pG;
+ if( !pGlyphAdvAry )
+ if( pG->mnOrigWidth != (pG->maLinearPos.X() - nXPos) )
+ break;
// stop when y-position is unexpected
if( nYPos != pG->maLinearPos.Y() )
@@ -1224,7 +1060,7 @@ int GenericSalLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos,
// stop when no longer in string
int n = pG->mnCharPos;
- if( (n < mnMinCharPos) || (n >= mnEndCharPos) )
+ if( (n < mnMinCharPos) || (mnEndCharPos <= n) )
break;
// stop when glyph flags change
@@ -1241,14 +1077,62 @@ int GenericSalLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos,
return nCount;
}
+// -----------------------------------------------------------------------
+
+void GenericSalLayout::MoveGlyph( int nStart, long nNewXPos )
+{
+ if( nStart >= mnGlyphCount )
+ return;
+ GlyphItem* pG = mpGlyphItems + nStart;
+ long nXDelta = nNewXPos - pG->maLinearPos.X();
+ if( nXDelta != 0 )
+ {
+ GlyphItem* const pGEnd = mpGlyphItems + mnGlyphCount;
+ for(; pG < pGEnd; ++pG )
+ pG->maLinearPos.X() += nXDelta;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void GenericSalLayout::DropGlyph( int nStart )
+{
+ if( nStart >= mnGlyphCount )
+ return;
+ GlyphItem* pG = mpGlyphItems + nStart;
+ pG->mnGlyphIndex = GF_DROPPED;
+ pG->mnCharPos = -1;
+}
+
+// -----------------------------------------------------------------------
+
+void GenericSalLayout::Simplify( bool bIsBase )
+{
+ long nDropMarker = bIsBase ? GF_DROPPED : 0;
+
+ // remove dropped glyphs inplace
+ GlyphItem* pGDst = mpGlyphItems;
+ const GlyphItem* pGSrc = mpGlyphItems;
+ const GlyphItem* pGEnd = mpGlyphItems + mnGlyphCount;
+ for(; pGSrc < pGEnd; ++pGSrc )
+ {
+ if( pGSrc->mnGlyphIndex == nDropMarker )
+ continue;
+ if( pGDst != pGSrc )
+ *pGDst = *pGSrc;
+ ++pGDst;
+ }
+ mnGlyphCount = pGDst - mpGlyphItems;
+}
+
// =======================================================================
-MultiSalLayout::MultiSalLayout( const ImplLayoutArgs& rArgs, SalLayout& rLayout )
-: SalLayout( rArgs ),
+MultiSalLayout::MultiSalLayout( SalLayout& rBaseLayout )
+: SalLayout(),
mnLevel( 0 )
{
- if( &rLayout )
- mpLayouts[ mnLevel++ ] = &rLayout;
+ mpLayouts[ mnLevel++ ] = &rBaseLayout;
+ mnUnitsPerPixel = rBaseLayout.GetUnitsPerPixel();
}
// -----------------------------------------------------------------------
@@ -1261,27 +1145,154 @@ MultiSalLayout::~MultiSalLayout()
// -----------------------------------------------------------------------
-bool MultiSalLayout::ApplyFallback( SalLayout& rFallback )
+bool MultiSalLayout::AddFallback( SalLayout& rFallback )
{
- if( !&rFallback )
- return false;
if( mnLevel >= MAX_FALLBACK )
return false;
- mpLayouts[ mnLevel ] = &rFallback;
- if( ++mnLevel > 1 )
+ // TODO: remove test below when issues are fixed
+ if( mnUnitsPerPixel != rFallback.GetUnitsPerPixel() )
+ return false;
+
+ mpLayouts[ mnLevel++ ] = &rFallback;
+ return true;
+}
+
+// -----------------------------------------------------------------------
+
+bool MultiSalLayout::LayoutText( ImplLayoutArgs& rArgs )
+{
+ if( mnLevel <= 1 )
+ return false;
+
+ // prepare "merge sort"
+ int nStartOld[ MAX_FALLBACK ];
+ int nStartNew[ MAX_FALLBACK ];
+ int nCharPos[ MAX_FALLBACK ];
+ long nGlyphAdv[ MAX_FALLBACK ];
+ int nValid[ MAX_FALLBACK ];
+
+ long nDummy;
+ Point aPos;
+ int nLevel = 0, n;
+ for( n = 0; n < mnLevel; ++n )
{
- if( !mpLayouts[0]->ApplyFallback( rFallback ) )
+ mpLayouts[n]->SalLayout::AdjustLayout( rArgs );
+ if( n > 0 )
+ mpLayouts[n]->Simplify( false );
+ nStartNew[ nLevel ] = nStartOld[ nLevel ] = 0;
+ nValid[ nLevel ] = mpLayouts[n]->GetNextGlyphs( 1, &nDummy, aPos,
+ nStartNew[ nLevel ], &nGlyphAdv[ nLevel ], &nCharPos[ nLevel ] );
+ // release unused fallbacks
+ if( nValid[ nLevel ] || !n )
+ mpLayouts[ nLevel++ ] = mpLayouts[ n ];
+ else
+ mpLayouts[ n ]->Release();
+ }
+ mnLevel = nLevel;
+ if( mnLevel <= 1 )
+ return false;
+
+ // merge the fallback levels
+ // TODO: replace O(m*n) algorithm
+ long nXPos = 0;
+ bool bRightToLeft;
+ int nMinRunPos, nEndRunPos;
+ bool bRC = rArgs.GetNextRun( &nMinRunPos, &nEndRunPos, &bRightToLeft );
+ DBG_ASSERT( bRC, "MultiSalLayout rArgs.GNR() returned false" );
+ while( nValid[0] )
+ {
+ if( (nCharPos[0] < nMinRunPos) || (nEndRunPos <= nCharPos[0]) )
{
- rFallback.Release();
- mpLayouts[ --mnLevel ] = NULL;
+ // no fallback necessary => use base layout
+ n = 0;
+ }
+ else // fallback has been requested
+ {
+ // find match in highest level fallback
+ for( n = 1; n < nLevel; ++n )
+ if( nValid[n] && (nCharPos[0] == nCharPos[n]) )
+ break;
+
+ if( n < nLevel )
+ {
+ // update position of fallback glyph
+ mpLayouts[n]->MoveGlyph( nStartOld[n], nXPos );
+ }
+ else // if needed keep NotDef from base layout
+ n = 0;
+ }
+
+ // use glyph from best matching layout
+ nXPos += nGlyphAdv[n];
+ nStartOld[n] = nStartNew[n];
+ nValid[n] = mpLayouts[n]->GetNextGlyphs( 1, &nDummy, aPos,
+ nStartNew[n], &nGlyphAdv[n], &nCharPos[n] );
+
+ if( n > 0 ) // glyph fallback succeeded
+ {
+ // when fallback level is completed, performance optimize
+ if( !nValid[n] && (n >= nLevel-1) )
+ nLevel = nLevel - 1;
+ // drop NotDef glyph from base layout
+ mpLayouts[0]->DropGlyph( nStartOld[0] );
+ mpLayouts[0]->MoveGlyph( nStartNew[0], nXPos );
+ nStartOld[0] = nStartNew[0];
+ nValid[0] = mpLayouts[0]->GetNextGlyphs( 1, &nDummy, aPos,
+ nStartNew[0], &nGlyphAdv[0], &nCharPos[0] );
+ // use next run if current one is done
+ if( (nCharPos[0] < nMinRunPos) || (nEndRunPos <= nCharPos[0]) )
+ if( !rArgs.GetNextRun( &nMinRunPos, &nEndRunPos, &bRightToLeft ) )
+ break;
}
}
+
+ mpLayouts[0]->Simplify( true );
return true;
}
// -----------------------------------------------------------------------
+void MultiSalLayout::AdjustLayout( ImplLayoutArgs& rArgs )
+{
+ SalLayout::AdjustLayout( rArgs );
+
+ const long* pOrigArray = rArgs.mpDXArray;
+ if( !rArgs.mpDXArray && rArgs.mnLayoutWidth )
+ {
+ // for MultiSalLayout justification needs to be converted
+ // to individual adjustments of virtual character widths
+ int nCharCount = rArgs.mnEndCharPos - rArgs.mnMinCharPos;
+ long* pJustArray = (long*)alloca( nCharCount * sizeof(long) );
+ long nOrigWidth = FillDXArray( pJustArray );
+ if( nOrigWidth && (rArgs.mnLayoutWidth != nOrigWidth) )
+ {
+ const float fStretch = rArgs.mnLayoutWidth / (float)nOrigWidth;
+ for( int i = 0; i < nCharCount; ++i )
+ pJustArray[i] = (long)(pJustArray[i] * fStretch);
+ // temporarily change the pDXArray
+ rArgs.mpDXArray = pJustArray;
+ }
+ }
+
+ for( int i = mnLevel; --i >= 0; )
+ {
+ SalLayout& rLayout = *mpLayouts[ i ];
+ rLayout.AdjustLayout( rArgs );
+ }
+ rArgs.mpDXArray = pOrigArray;
+}
+
+// -----------------------------------------------------------------------
+
+void MultiSalLayout::InitFont() const
+{
+ if( mnLevel > 0 )
+ mpLayouts[0]->InitFont();
+}
+
+// -----------------------------------------------------------------------
+
void MultiSalLayout::DrawText( SalGraphics& rGraphics ) const
{
for( int i = mnLevel; --i >= 0; )
@@ -1293,70 +1304,88 @@ void MultiSalLayout::DrawText( SalGraphics& rGraphics ) const
rLayout.DrawText( rGraphics );
rLayout.DrawOffset() -= maDrawOffset;
}
+ // NOTE: now the baselevel font is active again
}
-// -----------------------------------------------------------------------
+ // -----------------------------------------------------------------------
int MultiSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
{
- // TODO: merge multiple fallback levels
- SalLayout& rLayout = *mpLayouts[ 0 ];
- int nRetVal = rLayout.GetTextBreak( nMaxWidth, nCharExtra, nFactor );
- return nRetVal;
+ if( mnLevel <= 0 )
+ return STRING_LEN;
+ if( mnLevel == 1 )
+ return mpLayouts[0]->GetTextBreak( nMaxWidth, nCharExtra, nFactor );
+
+ int nCharCount = mnEndCharPos - mnMinCharPos;
+ long* pCharWidths = (long*)alloca( 2*nCharCount * sizeof(long) );
+ mpLayouts[0]->FillDXArray( pCharWidths );
+
+ for( int n = 1; n < mnLevel; ++n )
+ {
+ SalLayout& rLayout = *mpLayouts[ n ];
+ rLayout.FillDXArray( pCharWidths + nCharCount );
+ for( int i = 0; i < nCharCount; ++i )
+ pCharWidths[ i ] += pCharWidths[ i + nCharCount ];
+ }
+
+ // TODO: fix nUnitsPerPixel cases
+ long nWidth = 0;
+ for( int i = 0; i < nCharCount; ++i )
+ {
+ nWidth += pCharWidths[ i ] * nFactor;
+ if( nWidth > nMaxWidth )
+ return (i + mnMinCharPos);
+ nWidth += nCharExtra;
+ }
+
+ return STRING_LEN;
}
// -----------------------------------------------------------------------
-long MultiSalLayout::FillDXArray( long* pDXArray ) const
+long MultiSalLayout::FillDXArray( long* pCharWidths ) const
{
- SalLayout& rLayout = *mpLayouts[ 0 ];
- int nWidth = rLayout.FillDXArray( pDXArray );
+ long nMaxWidth = mpLayouts[0]->FillDXArray( pCharWidths );
if( mnLevel > 1 )
{
- if( !pDXArray )
- for( int n = 1; n < mnLevel; ++n )
- nWidth += mpLayouts[ n ]->FillDXArray( NULL );
- else
+ const int nCharCount = mnEndCharPos - mnMinCharPos;
+ long* pTempWidths = NULL;
+ if( pCharWidths )
+ pTempWidths = (long*)alloca( nCharCount * sizeof(long) );
+ for( int n = 1; n < mnLevel; ++n )
{
- int nCharCapacity = mnEndCharPos - mnMinCharPos, i;
- long* pCharWidths = (long*)alloca( nCharCapacity * sizeof(long) );
- for( i = nCharCapacity-1; --i >= 0; )
- pDXArray[i+1] -= pDXArray[i];
- for( int n = 1; n < mnLevel; ++n )
- {
- nWidth += mpLayouts[ n ]->FillDXArray( pCharWidths );
- // TODO: merge the loops
- for( i = nCharCapacity-1; --i >= 0; )
- pCharWidths[i+1] -= pCharWidths[i];
- for( i = 0; i < nCharCapacity; ++i )
- pDXArray[ i ] += pCharWidths[ i ];
- }
- for( i = 1; i < nCharCapacity; ++i )
- pDXArray[ i ] += pDXArray[ i-1 ];
+ long nWidth = mpLayouts[n]->FillDXArray( pTempWidths );
+ if( nMaxWidth < nWidth )
+ nMaxWidth = nWidth;
+ if( pCharWidths )
+ for( int i = 0; i < nCharCount; ++i )
+ pCharWidths[ i ] += pTempWidths[ i ];
}
}
- return nWidth;
+ return nMaxWidth;
}
// -----------------------------------------------------------------------
-Point MultiSalLayout::GetCharPosition( int nCharIndex, bool bRTL ) const
+void MultiSalLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
{
- // TODO: merge multiple fallback levels
SalLayout& rLayout = *mpLayouts[ 0 ];
- Point aPoint = rLayout.GetCharPosition( nCharIndex, bRTL );
- return aPoint;
-}
+ rLayout.GetCaretPositions( nMaxIndex, pCaretXArray );
-// -----------------------------------------------------------------------
-
-void MultiSalLayout::GetCaretPositions( long* pCaretXArray ) const
-{
- // TODO: merge multiple fallback levels
- SalLayout& rLayout = *mpLayouts[ 0 ];
- rLayout.GetCaretPositions( pCaretXArray );
+ if( mnLevel > 1 )
+ {
+ long* pTempPos = (long*)alloca( nMaxIndex * sizeof(long) );
+ for( int n = 1; n < mnLevel; ++n )
+ {
+ mpLayouts[ n ]->GetCaretPositions( nMaxIndex, pTempPos );
+ // TODO: fix exotic cases like partly fallback
+ for( int i = 0; i < nMaxIndex; ++i )
+ if( pTempPos[i] >= 0 )
+ pCaretXArray[i] = pTempPos[i];
+ }
+ }
}
// -----------------------------------------------------------------------
@@ -1374,6 +1403,7 @@ int MultiSalLayout::GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos,
for(; nLevel < mnLevel; ++nLevel, nStart=0 )
{
SalLayout& rLayout = *mpLayouts[ nLevel ];
+ rLayout.InitFont();
int nRetVal = rLayout.GetNextGlyphs( nLen, pGlyphIdxAry, rPos,
nStart, pGlyphAdvAry, pCharPosAry );
if( nRetVal )
@@ -1421,8 +1451,11 @@ bool MultiSalLayout::GetBoundRect( SalGraphics& rGraphics, Rectangle& rRect ) co
rLayout.DrawBase() = maDrawBase;
rLayout.DrawOffset() += maDrawOffset;
rLayout.InitFont();
- bRet |= rLayout.GetBoundRect( rGraphics, aRectangle );
- rRect.Union( aRectangle );
+ if( rLayout.GetBoundRect( rGraphics, aRectangle ) )
+ {
+ rRect.Union( aRectangle );
+ bRet = true;
+ }
rLayout.DrawOffset() -= maDrawOffset;
}
diff --git a/vcl/source/glyphs/gcach_ftyp.cxx b/vcl/source/glyphs/gcach_ftyp.cxx
index 6f597ccf8e49..76007fe593ef 100644
--- a/vcl/source/glyphs/gcach_ftyp.cxx
+++ b/vcl/source/glyphs/gcach_ftyp.cxx
@@ -2,8 +2,8 @@
*
* $RCSfile: gcach_ftyp.cxx,v $
*
- * $Revision: 1.87 $
- * last change: $Author: hdu $ $Date: 2002-12-12 18:12:50 $
+ * $Revision: 1.88 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:13 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -124,8 +124,12 @@ static FontFileList aFontFileList;
// -----------------------------------------------------------------------
// TODO: remove when the priorities are selected by UI
-// if (AH prio == AA prio) => antialias + autohint
-// if AH<AA => do not autohint when antialiasing
+// if (AH==0) => disable autohinting
+// if (AA==0) => disable antialiasing
+// if (EB==0) => disable embedded bitmaps
+// if (AA prio <= AH prio) => antialias + autohint
+// if (AH<AA) => do not autohint when antialiasing
+// if (EB<AH) => do not autohint for monochrome
static int nPrioEmbedded = 2;
static int nPrioAutoHint = 1;
static int nPrioAntiAlias = 1;
@@ -392,7 +396,6 @@ long FreetypeManager::AddFontDir( const String& rUrlName )
OSL_VERIFY( osl_File_E_None
== ::osl::FileBase::getSystemPathFromFileURL( aFileStatus.getFileURL(), aUSytemPath ));
::rtl::OString aCFileName = rtl::OUStringToOString( aUSytemPath, theEncoding );
-
const char* pszFontFileName = aCFileName.getStr();
FT_FaceRec_* aFaceFT = NULL;
@@ -601,6 +604,9 @@ FreetypeServerFont::FreetypeServerFont( const ImplFontSelectData& rFSD, FtFontIn
if( nPrioAutoHint <= 0 )
#endif
mnLoadFlags |= FT_LOAD_NO_HINTING;
+
+ if( (nCos!=0 && nSin!=0) || (nPrioEmbedded <= 0) )
+ mnLoadFlags |= FT_LOAD_NO_BITMAP;
}
// -----------------------------------------------------------------------
@@ -644,6 +650,7 @@ void FreetypeServerFont::FetchFontMetric( ImplFontMetricData& rTo, long& rFactor
const FT_Size_Metrics& rMetrics = maFaceFT->size->metrics;
rTo.mnAscent = (+rMetrics.ascender + 32) >> 6;
#if (FTVERSION < 2000)
+
rTo.mnDescent = (+rMetrics.descender + 32) >> 6;
#else
rTo.mnDescent = (-rMetrics.descender + 32) >> 6;
@@ -843,12 +850,13 @@ int FreetypeServerFont::FixupGlyphIndex( int nGlyphIndex, sal_Unicode aChar ) co
nGlyphFlags |= GF_UNHINTED;
#endif
- if( nGlyphIndex !=0 )
+ if( nGlyphIndex != 0 )
nGlyphIndex |= nGlyphFlags;
return nGlyphIndex;
}
+
// -----------------------------------------------------------------------
int FreetypeServerFont::GetGlyphIndex( sal_Unicode aChar ) const
@@ -951,7 +959,7 @@ bool FreetypeServerFont::GetGlyphBitmap1( int nGlyphIndex, RawBitmap& rRawBitmap
nLoadFlags &= ~FT_LOAD_NO_HINTING;
#endif
- if( (nCos!=0 && nSin!=0) || (nPrioEmbedded <= nPrioAutoHint) )
+ if( nPrioEmbedded <= nPrioAutoHint )
nLoadFlags |= FT_LOAD_NO_BITMAP;
FT_Error rc = -1;
@@ -1043,7 +1051,7 @@ bool FreetypeServerFont::GetGlyphBitmap8( int nGlyphIndex, RawBitmap& rRawBitmap
nLoadFlags |= FT_LOAD_NO_HINTING;
#endif
- if( (nCos!=0 && nSin!=0) || (nPrioEmbedded <= nPrioAntiAlias) )
+ if( nPrioEmbedded <= nPrioAntiAlias )
nLoadFlags |= FT_LOAD_NO_BITMAP;
FT_Error rc = -1;
@@ -1495,7 +1503,6 @@ void PolyArgs::ClosePolygon()
Polygon aPoly( mnPoints, mpPointAry, (bHasOffline ? mpFlagAry : NULL) );
mrPolyPoly.Insert( aPoly );
-
mnPoints = 0;
bHasOffline = false;
}
@@ -1652,6 +1659,7 @@ bool FreetypeServerFont::ApplyGSUB( const ImplFontSelectData& rFSD )
const USHORT nCntLangSystem = GetUShort( pScriptTable+2 );
pScriptTable += 4;
USHORT nLangsysOffset = 0;
+
for( USHORT nLangsysIndex = 0; nLangsysIndex < nCntLangSystem; ++nLangsysIndex )
{
const ULONG nTag = GetUInt( pScriptTable+0 ); // e.g. KOR/ZHS/ZHT/JAN
diff --git a/vcl/source/glyphs/gcach_layout.cxx b/vcl/source/glyphs/gcach_layout.cxx
index 61d9fe095d0f..1274cde44af6 100755
--- a/vcl/source/glyphs/gcach_layout.cxx
+++ b/vcl/source/glyphs/gcach_layout.cxx
@@ -2,8 +2,8 @@
*
* $RCSfile: gcach_layout.cxx,v $
*
- * $Revision: 1.19 $
- * last change: $Author: hdu $ $Date: 2002-12-12 13:49:17 $
+ * $Revision: 1.20 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:13 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -68,6 +68,7 @@
#endif
#ifndef _SV_GCACHFTYP_HXX
+#include <freetype/freetype.h>
#include <gcach_ftyp.hxx>
#endif
@@ -92,19 +93,16 @@ static ServerFontLayoutEngine aSimpleLayoutEngine;
// layout implementation for ServerFont
// =======================================================================
-ServerFontLayout::ServerFontLayout( ImplLayoutArgs& rArgs, ServerFont& rFont )
-: GenericSalLayout( rArgs ),
- mrServerFont( rFont )
-{
- LayoutText( rArgs );
-}
+ServerFontLayout::ServerFontLayout( ServerFont& rFont )
+: mrServerFont( rFont )
+{}
// -----------------------------------------------------------------------
bool ServerFontLayout::LayoutText( ImplLayoutArgs& rArgs )
{
ServerFontLayoutEngine* pLE = NULL;
- if( ~rArgs.mnFlags & (SAL_LAYOUT_COMPLEX_DISABLED|SAL_LAYOUT_BIDI_STRONG) )
+ if( ~rArgs.mnFlags & SAL_LAYOUT_COMPLEX_DISABLED )
pLE = mrServerFont.GetLayoutEngine();
if( !pLE )
pLE = &aSimpleLayoutEngine;
@@ -113,6 +111,36 @@ bool ServerFontLayout::LayoutText( ImplLayoutArgs& rArgs )
return bRet;
}
+// -----------------------------------------------------------------------
+
+void ServerFontLayout::AdjustLayout( ImplLayoutArgs& rArgs )
+{
+ SalLayout::AdjustLayout( rArgs );
+
+ // general justification
+ if( rArgs.mpDXArray )
+ ApplyDXArray( rArgs );
+ else if( rArgs.mnLayoutWidth )
+ Justify( rArgs.mnLayoutWidth );
+
+ // asian kerning
+ if( (rArgs.mnFlags & SAL_LAYOUT_KERNING_ASIAN)
+ && !(rArgs.mnFlags & SAL_LAYOUT_VERTICAL) )
+ ApplyAsianKerning( rArgs.mpStr, rArgs.mnLength );
+
+ // kashida justification
+ if( rArgs.mnFlags & SAL_LAYOUT_KASHIDA_JUSTIFICATON )
+ {
+ int nKashidaIndex = mrServerFont.GetGlyphIndex( 0x0640 );
+ if( nKashidaIndex != 0 )
+ {
+ const GlyphMetric& rGM = mrServerFont.GetGlyphMetric( nKashidaIndex );
+ KashidaJustify( nKashidaIndex, rGM.GetCharWidth() );
+ // TODO: kashida-GSUB/GPOS
+ }
+ }
+}
+
// =======================================================================
bool ServerFontLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutArgs& rArgs )
@@ -132,9 +160,10 @@ bool ServerFontLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutAr
if( bRightToLeft )
cChar = GetMirroredChar( cChar );
int nGlyphIndex = rFont.GetGlyphIndex( cChar );
- // update fallback_runs if needed
+ // when glyph fallback is needed update LayoutArgs
if( !nGlyphIndex )
- rArgs.NeedFallback( nCharPos, bRightToLeft );
+ if( !rArgs.NeedFallback( nCharPos, bRightToLeft ) )
+ continue;
// apply pair kerning if requested
if( SAL_LAYOUT_KERNING_PAIRS & rArgs.mnFlags )
@@ -154,17 +183,6 @@ bool ServerFontLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutAr
rLayout.AppendGlyph( aGI );
}
- // apply asian kerning if requested
- if( (rArgs.mnFlags & SAL_LAYOUT_KERNING_ASIAN)
- && !(rArgs.mnFlags & SAL_LAYOUT_VERTICAL)
- && !rArgs.mpDXArray
- && !rArgs.mnLayoutWidth )
- rLayout.ApplyAsianKerning( rArgs.mpStr, rArgs.mnLength );
-
- if( rArgs.mpDXArray )
- rLayout.ApplyDXArray( rArgs.mpDXArray );
- else if( rArgs.mnLayoutWidth )
- rLayout.Justify( rArgs.mnLayoutWidth );
return true;
}
@@ -220,7 +238,6 @@ public:
virtual void transformFunits( float xFunits, float yFunits, LEPoint &pixels ) const;
};
-
// -----------------------------------------------------------------------
const void* IcuFontFromServerFont::getFontTable( LETag nICUTableTag ) const
@@ -267,7 +284,6 @@ void IcuFontFromServerFont::mapCharsToGlyphs( const LEUnicode pChars[],
if( !bReverse )
pMapper = NULL;
for( int i = 0; i < nCount; ++i )
-
pGlyphs[i] = mapCharToGlyph( pChars[nOffset+i], pMapper );
if( bReverse )
@@ -461,12 +477,13 @@ bool IcuLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutArgs& rAr
pIcuChars[ic] = static_cast<LEUnicode>( rArgs.mpStr[ic] );
}
- // allocate temporary arrays
- int nGlyphCapacity = 3 * (rArgs.mnEndCharPos - rArgs.mnMinCharPos ) + 16;
+ // allocate temporary arrays, note: round to even
+ int nGlyphCapacity = (3 * (rArgs.mnEndCharPos - rArgs.mnMinCharPos ) | 15) + 1;
+
struct IcuPosition{ float fX, fY; };
const int nAllocSize = sizeof(LEGlyphID) + sizeof(le_int32) + sizeof(IcuPosition);
LEGlyphID* pIcuGlyphs = (LEGlyphID*)alloca( nGlyphCapacity * nAllocSize + sizeof(IcuPosition) );
- le_int32* pCharIndices = (le_int32*)((char*)pIcuGlyphs + nGlyphCapacity * sizeof(le_int32) );
+ le_int32* pCharIndices = (le_int32*)((char*)pIcuGlyphs + nGlyphCapacity * sizeof(LEGlyphID) );
IcuPosition* pGlyphPositions = (IcuPosition*)((char*)pCharIndices + nGlyphCapacity * sizeof(le_int32) );
UErrorCode rcI18n = U_ZERO_ERROR;
@@ -515,7 +532,7 @@ bool IcuLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutArgs& rAr
mpIcuLE->getGlyphs( pIcuGlyphs, rcIcu );
mpIcuLE->getCharIndices( pCharIndices, rcIcu );
mpIcuLE->getGlyphPositions( &pGlyphPositions->fX, rcIcu );
- mpIcuLE->reset();
+ mpIcuLE->reset(); // TODO: get rid of this, PROBLEM: crash at exit when removed
if( LE_FAILURE(rcIcu) )
return false;
@@ -527,9 +544,10 @@ bool IcuLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutArgs& rAr
{
int nCharPos = pCharIndices[i] + nMinRunPos;
int nGlyphIndex = pIcuGlyphs[i];
- // update fallback_runs if needed
+ // when glyph fallback is needed update LayoutArgs
if( !nGlyphIndex )
- rArgs.NeedFallback( nCharPos, bRightToLeft );
+ if( !rArgs.NeedFallback( nCharPos, bRightToLeft ) )
+ continue;
// apply vertical flags, etc.
sal_Unicode aChar = rArgs.mpStr[ nCharPos ];
@@ -548,25 +566,10 @@ bool IcuLayoutEngine::operator()( ServerFontLayout& rLayout, ImplLayoutArgs& rAr
nGlyphCount += nRunGlyphCount;
}
- // general justification
- if( rArgs.mpDXArray )
- rLayout.ApplyDXArray( rArgs.mpDXArray );
- else if( rArgs.mnLayoutWidth )
- rLayout.Justify( rArgs.mnLayoutWidth );
-
- // kashida justification
+ // determine need for kashida justification
if( (rArgs.mpDXArray || rArgs.mnLayoutWidth)
&& ((meScriptCode == arabScriptCode) || (meScriptCode == syrcScriptCode)) )
- {
- LEGlyphID nKashidaIndex = maIcuFont.mapCharToGlyph( 0x0640, NULL );
- if( nKashidaIndex != 0 )
- {
- LEPoint aAdvance;
- maIcuFont.getGlyphAdvance( nKashidaIndex, aAdvance );
- rLayout.KashidaJustify( nKashidaIndex, (long)aAdvance.fX );
- // TODO: kashida-GSUB/GPOS
- }
- }
+ rArgs.mnFlags |= SAL_LAYOUT_KASHIDA_JUSTIFICATON;
return true;
}
@@ -579,7 +582,7 @@ ServerFontLayoutEngine* FreetypeServerFont::GetLayoutEngine()
{
// find best layout engine for font, platform, script and language
#ifdef ENABLE_ICU_LAYOUT
- if( !mpLayoutEngine )
+ if( !mpLayoutEngine && FT_IS_SFNT( maFaceFT ) )
mpLayoutEngine = new IcuLayoutEngine( *this );
#endif // ENABLE_ICU_LAYOUT
diff --git a/vcl/source/glyphs/glyphcache.cxx b/vcl/source/glyphs/glyphcache.cxx
index fc3a1b14f2d2..dc16a24e3db3 100644
--- a/vcl/source/glyphs/glyphcache.cxx
+++ b/vcl/source/glyphs/glyphcache.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: glyphcache.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: hdu $ $Date: 2002-12-04 18:31:52 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:13 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -87,6 +87,7 @@ GlyphCache::GlyphCache( ULONG nMaxSize )
: mnMaxSize(nMaxSize),
mnBytesUsed(sizeof(GlyphCache)),
mnLruIndex(0),
+ mnGlyphCount(0),
mpFtManager(NULL),
mpCurrentGCFont(NULL)
{
@@ -164,7 +165,12 @@ void GlyphCache::RemoveFont( const ImplFontData* pFontData )
if( pFontData != it->first.mpFontData )
++it;
else
+ {
+ const ServerFont* pSF = it->second;
+ if( pSF )
+ mnBytesUsed -= pSF->GetByteCount();
maFontList.erase( it++ );
+ }
}
}
@@ -226,7 +232,8 @@ ServerFont* GlyphCache::CacheFont( const ImplFontSelectData& rFontSelData )
if( it != maFontList.end() )
{
ServerFont* pFound = it->second;
- pFound->AddRef();
+ if( pFound )
+ pFound->AddRef();
return pFound;
}
@@ -236,21 +243,25 @@ ServerFont* GlyphCache::CacheFont( const ImplFontSelectData& rFontSelData )
if( !pNew && mpFtManager )
pNew = mpFtManager->CreateFont( rFontSelData );
+ maFontList[ rFontSelData ] = pNew;
if( pNew )
{
- maFontList[ rFontSelData ] = pNew;
mnBytesUsed += pNew->GetByteCount();
// schedule it for garbage collection some time later
if( !mpCurrentGCFont )
{
mpCurrentGCFont = pNew;
+ pNew->mpNextGCFont = pNew;
pNew->mpPrevGCFont = pNew;
}
- pNew->mpNextGCFont = mpCurrentGCFont;
- pNew->mpPrevGCFont = mpCurrentGCFont->mpPrevGCFont;
- mpCurrentGCFont->mpPrevGCFont->mpNextGCFont = pNew;
- mpCurrentGCFont->mpPrevGCFont = pNew;
+ else
+ {
+ pNew->mpNextGCFont = mpCurrentGCFont;
+ pNew->mpPrevGCFont = mpCurrentGCFont->mpPrevGCFont;
+ pNew->mpPrevGCFont->mpNextGCFont = pNew;
+ mpCurrentGCFont->mpPrevGCFont = pNew;
+ }
}
return pNew;
@@ -266,7 +277,11 @@ void GlyphCache::UncacheFont( ServerFont& rServerFont )
ServerFont* pFont = const_cast<ServerFont*>( &rServerFont );
if( pFont->Release() <= 0 )
// lazy release
- pFont->GarbageCollect( mnLruIndex );
+#if 1 // TODO: decide on method depending on performance impact
+ {}
+#else
+ pFont->GarbageCollect( mnLruIndex - mnGlyphCount/2 );
+#endif
}
// -----------------------------------------------------------------------
@@ -275,7 +290,11 @@ ULONG GlyphCache::CalcByteCount() const
{
ULONG nCacheSize = sizeof(*this);
for( FontList::const_iterator it = maFontList.begin(); it != maFontList.end(); ++it )
- nCacheSize += it->second->GetByteCount();
+ {
+ const ServerFont* pSF = it->second;
+ if( pSF )
+ nCacheSize += pSF->GetByteCount();
+ }
// TODO: also account something for hashtable management
return nCacheSize;
}
@@ -288,15 +307,32 @@ void GlyphCache::GarbageCollect()
ServerFont* const pServerFont = mpCurrentGCFont;
mpCurrentGCFont = mpCurrentGCFont->mpNextGCFont;
- ULONG nBytesCollected;
- if( pServerFont->GetRefCount() > 0 )
+ if( !pServerFont )
+ return;
+
+ if( (pServerFont == mpCurrentGCFont) // no other fonts
+ || (pServerFont->GetRefCount() > 0) ) // font still used
{
// try to save at least a few bytes
- pServerFont->GarbageCollect( mnLruIndex );
+ pServerFont->GarbageCollect( mnLruIndex - mnGlyphCount/2 );
+
+ // when there is a lot of memory pressure also tighten maFontList
+ if( maFontList.size() >= 200 )
+ {
+ FontList::iterator it = maFontList.begin();
+ while( it != maFontList.end() )
+ {
+ if( !it->second )
+ maFontList.erase( it++ );
+ else
+ ++it;
+ }
+ }
}
else
{
- DBG_ASSERT( (pServerFont->GetRefCount() == 0), "GlyphCache::GC detected RefCount underflow" );
+ DBG_ASSERT( (pServerFont->GetRefCount() == 0),
+ "GlyphCache::GC detected RefCount underflow" );
// now its time to remove the unreferenced font
ServerFont* const pPrev = pServerFont->mpPrevGCFont;
@@ -304,10 +340,7 @@ void GlyphCache::GarbageCollect()
pPrev->mpNextGCFont = pNext;
pNext->mpPrevGCFont = pPrev;
- if( mpCurrentGCFont == pServerFont ) // no fonts left
- mpCurrentGCFont = NULL;
-
- pServerFont->GarbageCollect( ~mnLruIndex );
+ pServerFont->GarbageCollect( mnLruIndex+0x10000000 );
mpPeer->RemovingFont( *pServerFont );
mnBytesUsed -= pServerFont->GetByteCount();
maFontList.erase( pServerFont->GetFontSelData() );
@@ -324,12 +357,12 @@ inline void GlyphCache::UsingGlyph( ServerFont&, GlyphData& rGlyphData )
// -----------------------------------------------------------------------
-
inline void GlyphCache::AddedGlyph( ServerFont& rServerFont, GlyphData& rGlyphData )
{
UsingGlyph( rServerFont, rGlyphData );
mnBytesUsed += sizeof( rGlyphData );
GrowNotify();
+ ++mnGlyphCount;
}
// -----------------------------------------------------------------------
@@ -346,6 +379,7 @@ inline void GlyphCache::RemovingGlyph( ServerFont& rSF, GlyphData& rGD, int nGly
{
mpPeer->RemovingGlyph( rSF, rGD, nGlyphIndex );
mnBytesUsed -= sizeof( GlyphData );
+ --mnGlyphCount;
}
// =======================================================================
@@ -395,6 +429,7 @@ GlyphData& ServerFont::GetGlyphData( int nGlyphIndex )
// sometimes not => we need to create and initialize it ourselves
GlyphData& rGlyphData = maGlyphList[ nGlyphIndex ];
+ mnBytesUsed += sizeof( GlyphData );
InitGlyphData( nGlyphIndex, rGlyphData );
GlyphCache::GetInstance().AddedGlyph( *this, rGlyphData );
return rGlyphData;
@@ -402,12 +437,13 @@ GlyphData& ServerFont::GetGlyphData( int nGlyphIndex )
// -----------------------------------------------------------------------
-void ServerFont::GarbageCollect( long nLruIndex )
+void ServerFont::GarbageCollect( long nMinLruIndex )
{
- for( GlyphList::iterator it = maGlyphList.begin(); it != maGlyphList.end(); )
+ GlyphList::iterator it = maGlyphList.begin();
+ while( it != maGlyphList.end() )
{
GlyphData& rGD = it->second;
- if( (ULONG)(nLruIndex - rGD.GetLruValue()) > 200 ) // TODO: change constant
+ if( (nMinLruIndex - rGD.GetLruValue()) >= 0 )
{
mnBytesUsed -= sizeof( GlyphData );
GlyphCache::GetInstance().RemovingGlyph( *this, rGD, it->first );
@@ -416,6 +452,9 @@ void ServerFont::GarbageCollect( long nLruIndex )
else
++it;
}
+
+ if( mnBytesUsed < 0 )
+ mnBytesUsed = 0; // shouldn't happen
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/helper/makefile.mk b/vcl/source/helper/makefile.mk
index d1baca08cea3..db3138edfe3d 100644
--- a/vcl/source/helper/makefile.mk
+++ b/vcl/source/helper/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.9 $
+# $Revision: 1.10 $
#
-# last change: $Author: pl $ $Date: 2002-03-01 12:56:44 $
+# last change: $Author: hr $ $Date: 2003-03-27 17:58:14 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -83,6 +83,12 @@ SLOFILES=\
SLOFILES+=$(SLO)$/xconnection.obj
.ENDIF
+.IF "$(GUI)" == "UNX"
+SLOFILES+=\
+ $(SLO)$/ppdparser.obj \
+ $(SLO)$/strhelper.obj
+.ENDIF
+
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
diff --git a/vcl/source/src/btntext.src b/vcl/source/src/btntext.src
index 5a817f61b438..1b5ea7015097 100644
--- a/vcl/source/src/btntext.src
+++ b/vcl/source/src/btntext.src
@@ -2,9 +2,9 @@
*
* $RCSfile: btntext.src,v $
*
- * $Revision: 1.28 $
+ * $Revision: 1.29 $
*
- * last change: $Author: kz $ $Date: 2002-11-27 16:22:56 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -207,7 +207,7 @@ String SV_BUTTONTEXT_RETRY
TEXT[ dutch ] = "H~erhalen";
TEXT[ chinese_simplified ] = "重试(~R)";
TEXT[ greek ] = "";
- TEXT[ korean ] = "반복(~R)";
+ TEXT[ korean ] = "다시 시도(~R)";
TEXT[ turkish ] = "Y~inele";
TEXT[ language_user1 ] = " ";
TEXT[ catalan ] = "~Reintenta";
@@ -311,18 +311,18 @@ String SV_BUTTONTEXT_ABORT
Text[ russian ] = "~Abort";
Text[ greek ] = "~Abort";
Text[ dutch ] = "~Abort";
- Text[ french ] = "~Abort";
- Text[ spanish ] = "~Abort";
+ Text[ french ] = "~Interrompre";
+ Text[ spanish ] = "~Cancelar";
Text[ finnish ] = "~Abort";
- Text[ italian ] = "~Abort";
+ Text[ italian ] = "~Annulla";
Text[ danish ] = "~Abort";
- Text[ swedish ] = "~Abort";
+ Text[ swedish ] = "~Avbryt";
Text[ polish ] = "~Abort";
Text[ portuguese_brazilian ] = "~Abort";
- Text[ japanese ] = "~Abort";
- Text[ korean ] = "~Abort";
- Text[ chinese_simplified ] = "~Abort";
- Text[ chinese_traditional ] = "~Abort";
+ Text[ japanese ] = "中止(~A)";
+ Text[ korean ] = "중단(~A)";
+ Text[ chinese_simplified ] = "取消(~A)";
+ Text[ chinese_traditional ] = "中止(~A)";
Text[ turkish ] = "~Abort";
Text[ arabic ] = "~Abort";
Text[ catalan ] = "~Abort";
@@ -373,3 +373,8 @@ RETRY ~Yrituudelleen
+
+
+
+
+
diff --git a/vcl/source/src/helptext.src b/vcl/source/src/helptext.src
index 96096751c1a6..3108a83484e3 100644
--- a/vcl/source/src/helptext.src
+++ b/vcl/source/src/helptext.src
@@ -2,9 +2,9 @@
*
* $RCSfile: helptext.src,v $
*
- * $Revision: 1.28 $
+ * $Revision: 1.29 $
*
- * last change: $Author: kz $ $Date: 2002-12-09 09:59:44 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -307,7 +307,7 @@ String SV_HELPTEXT_ALWAYSVISIBLE
TEXT[ chinese_simplified ] = "自动显示";
TEXT[ chinese_traditional ] = "自動顯示";
TEXT[ greek ] = " ";
- TEXT[ korean ] = "항상 보임";
+ TEXT[ korean ] = "항상 표시";
TEXT[ arabic ] = " ";
TEXT[ turkish ] = "Daima grnr";
TEXT[ language_user1 ] = " ";
@@ -391,7 +391,7 @@ String SV_HELPTEXT_SPLITFLOATING
TEXT[ chinese_simplified ] = "浮动";
TEXT[ chinese_traditional ] = "浮動";
TEXT[ greek ] = "";
- TEXT[ korean ] = "고정되지 않은";
+ TEXT[ korean ] = "부동적";
TEXT[ arabic ] = "";
TEXT[ turkish ] = "Serbest";
TEXT[ language_user1 ] = " ";
@@ -435,22 +435,22 @@ String SV_SHORTCUT_HELP
TEXT[ english_us ] = "Help" ;
TEXT[ portuguese ] = "Help";
TEXT[ russian ] = "Help";
- TEXT[ spanish ] = "Help";
- TEXT[ italian ] = "Help";
- TEXT[ swedish ] = "Help";
+ TEXT[ spanish ] = "Ayuda";
+ TEXT[ italian ] = "Guida";
+ TEXT[ swedish ] = "Hjlp";
TEXT[ polish ] = "Help";
TEXT[ portuguese_brazilian ] = "Help";
- TEXT[ japanese ] = "Help";
- TEXT[ korean ] = "Help";
+ TEXT[ japanese ] = "ヘルプ";
+ TEXT[ korean ] = "도움말";
TEXT[ turkish ] = "Help";
TEXT[ thai ] = "Help";
TEXT[ greek ] = "Help";
TEXT[ dutch ] = "Help";
- TEXT[ french ] = "Help";
+ TEXT[ french ] = "Aide";
TEXT[ finnish ] = "Help";
TEXT[ danish ] = "Help";
- TEXT[ chinese_simplified ] = "Help";
- TEXT[ chinese_traditional ] = "Help";
+ TEXT[ chinese_simplified ] = "帮助";
+ TEXT[ chinese_traditional ] = "說明";
TEXT[ arabic ] = "Help";
TEXT[ catalan ] = "Help";
};
@@ -462,22 +462,22 @@ String SV_SHORTCUT_CONTEXTHELP
TEXT[ english_us ] = "Context Help";
TEXT[ portuguese ] = "Context Help";
TEXT[ russian ] = "Context Help";
- TEXT[ spanish ] = "Context Help";
- TEXT[ italian ] = "Context Help";
- TEXT[ swedish ] = "Context Help";
+ TEXT[ spanish ] = "Ayuda contextual";
+ TEXT[ italian ] = "Guida contestuale";
+ TEXT[ swedish ] = "Sammanhangsrelaterad hjlp";
TEXT[ polish ] = "Context Help";
TEXT[ portuguese_brazilian ] = "Context Help";
- TEXT[ japanese ] = "Context Help";
- TEXT[ korean ] = "Context Help";
+ TEXT[ japanese ] = "状況依存ヘルプ";
+ TEXT[ korean ] = "문맥 도움말";
TEXT[ turkish ] = "Context Help";
TEXT[ thai ] = "Context Help";
TEXT[ greek ] = "Context Help";
TEXT[ dutch ] = "Context Help";
- TEXT[ french ] = "Context Help";
+ TEXT[ french ] = "Aide contextuelle";
TEXT[ finnish ] = "Context Help";
TEXT[ danish ] = "Context Help";
- TEXT[ chinese_simplified ] = "Context Help";
- TEXT[ chinese_traditional ] = "Context Help";
+ TEXT[ chinese_simplified ] = "上下文帮助";
+ TEXT[ chinese_traditional ] = "上下文說明";
TEXT[ arabic ] = "Context Help";
TEXT[ catalan ] = "Context Help";
};
@@ -489,22 +489,22 @@ String SV_SHORTCUT_ACTIVEHELP
TEXT[ english_us ] = "Extended Tips";
TEXT[ portuguese ] = "Extended Tips";
TEXT[ russian ] = "Extended Tips";
- TEXT[ spanish ] = "Extended Tips";
- TEXT[ italian ] = "Extended Tips";
- TEXT[ swedish ] = "Extended Tips";
+ TEXT[ spanish ] = "Ayuda activa";
+ TEXT[ italian ] = "Guida attiva";
+ TEXT[ swedish ] = "Aktiv hjlp";
TEXT[ polish ] = "Extended Tips";
TEXT[ portuguese_brazilian ] = "Extended Tips";
- TEXT[ japanese ] = "Extended Tips";
- TEXT[ korean ] = "Extended Tips";
+ TEXT[ japanese ] = "詳細ヒント";
+ TEXT[ korean ] = "설명";
TEXT[ turkish ] = "Extended Tips";
TEXT[ thai ] = "Extended Tips";
TEXT[ greek ] = "Extended Tips";
TEXT[ dutch ] = "Extended Tips";
- TEXT[ french ] = "Extended Tips";
+ TEXT[ french ] = "Infoballon";
TEXT[ finnish ] = "Extended Tips";
TEXT[ danish ] = "Extended Tips";
- TEXT[ chinese_simplified ] = "Extended Tips";
- TEXT[ chinese_traditional ] = "Extended Tips";
+ TEXT[ chinese_simplified ] = "说明文";
+ TEXT[ chinese_traditional ] = "描述文";
TEXT[ arabic ] = "Extended Tips";
TEXT[ catalan ] = "Extended Tips";
};
@@ -516,22 +516,22 @@ String SV_SHORTCUT_DOCKUNDOCK
TEXT[ english_us ] = "Dock/Undock Windows";
TEXT[ portuguese ] = "Dock/Undock Windows";
TEXT[ russian ] = "Dock/Undock Windows";
- TEXT[ spanish ] = "Dock/Undock Windows";
- TEXT[ italian ] = "Dock/Undock Windows";
- TEXT[ swedish ] = "Dock/Undock Windows";
+ TEXT[ spanish ] = "Acoplar / desprender ventanas";
+ TEXT[ italian ] = "Ancora/sgancia finestra";
+ TEXT[ swedish ] = "Frankring av fnster p/av";
TEXT[ polish ] = "Dock/Undock Windows";
TEXT[ portuguese_brazilian ] = "Dock/Undock Windows";
- TEXT[ japanese ] = "Dock/Undock Windows";
- TEXT[ korean ] = "Dock/Undock Windows";
+ TEXT[ japanese ] = "ウィンドウの結合/切り離し";
+ TEXT[ korean ] = "창을 고정/분리";
TEXT[ turkish ] = "Dock/Undock Windows";
TEXT[ thai ] = "Dock/Undock Windows";
TEXT[ greek ] = "Dock/Undock Windows";
TEXT[ dutch ] = "Dock/Undock Windows";
- TEXT[ french ] = "Dock/Undock Windows";
+ TEXT[ french ] = "Ancrer/dtacher les fentres";
TEXT[ finnish ] = "Dock/Undock Windows";
TEXT[ danish ] = "Dock/Undock Windows";
- TEXT[ chinese_simplified ] = "Dock/Undock Windows";
- TEXT[ chinese_traditional ] = "Dock/Undock Windows";
+ TEXT[ chinese_simplified ] = "对接/松开视窗";
+ TEXT[ chinese_traditional ] = "固定/解除固定視窗";
TEXT[ arabic ] = "Dock/Undock Windows";
TEXT[ catalan ] = "Dock/Undock Windows";
};
@@ -543,22 +543,22 @@ String SV_SHORTCUT_NEXTSUBWINDOW
TEXT[ english_us ] = "To Next Toolbar/Window";
TEXT[ portuguese ] = "To Next Toolbar/Window";
TEXT[ russian ] = "To Next Toolbar/Window";
- TEXT[ spanish ] = "To Next Toolbar/Window";
- TEXT[ italian ] = "To Next Toolbar/Window";
- TEXT[ swedish ] = "To Next Toolbar/Window";
+ TEXT[ spanish ] = "Ir a la siguiente ventana / barra de smbolos";
+ TEXT[ italian ] = "Alla finestra/barra dei simboli seguente";
+ TEXT[ swedish ] = "Till nsta symbollist/fnster";
TEXT[ polish ] = "To Next Toolbar/Window";
TEXT[ portuguese_brazilian ] = "To Next Toolbar/Window";
- TEXT[ japanese ] = "To Next Toolbar/Window";
- TEXT[ korean ] = "To Next Toolbar/Window";
+ TEXT[ japanese ] = "次のツールバー/ウィンドウへ";
+ TEXT[ korean ] = "다음 도구 모음/창으로";
TEXT[ turkish ] = "To Next Toolbar/Window";
TEXT[ thai ] = "To Next Toolbar/Window";
TEXT[ greek ] = "To Next Toolbar/Window";
TEXT[ dutch ] = "To Next Toolbar/Window";
- TEXT[ french ] = "To Next Toolbar/Window";
+ TEXT[ french ] = "Aller la barre d'outils/fentre suivante";
TEXT[ finnish ] = "To Next Toolbar/Window";
TEXT[ danish ] = "To Next Toolbar/Window";
- TEXT[ chinese_simplified ] = "To Next Toolbar/Window";
- TEXT[ chinese_traditional ] = "To Next Toolbar/Window";
+ TEXT[ chinese_simplified ] = "到下一个图标栏/视窗";
+ TEXT[ chinese_traditional ] = "至下一個工具列/視窗";
TEXT[ arabic ] = "To Next Toolbar/Window";
TEXT[ catalan ] = "To Next Toolbar/Window";
};
@@ -570,22 +570,22 @@ String SV_SHORTCUT_PREVSUBWINDOW
TEXT[ english_us ] = "To Previous Toolbar/Window";
TEXT[ portuguese ] = "To Previous Toolbar/Window";
TEXT[ russian ] = "To Previous Toolbar/Window";
- TEXT[ spanish ] = "To Previous Toolbar/Window";
- TEXT[ italian ] = "To Previous Toolbar/Window";
- TEXT[ swedish ] = "To Previous Toolbar/Window";
+ TEXT[ spanish ] = "Ir a la ventana / barra de smbolos previa ";
+ TEXT[ italian ] = "Alla finestra/barra dei simboli precedente";
+ TEXT[ swedish ] = "Till fregende symbollist/fnster";
TEXT[ polish ] = "To Previous Toolbar/Window";
TEXT[ portuguese_brazilian ] = "To Previous Toolbar/Window";
- TEXT[ japanese ] = "To Previous Toolbar/Window";
- TEXT[ korean ] = "To Previous Toolbar/Window";
+ TEXT[ japanese ] = "前のツールバー/ウィンドウへ";
+ TEXT[ korean ] = "이전 도구 모음/창으로";
TEXT[ turkish ] = "To Previous Toolbar/Window";
TEXT[ thai ] = "To Previous Toolbar/Window";
TEXT[ greek ] = "To Previous Toolbar/Window";
TEXT[ dutch ] = "To Previous Toolbar/Window";
- TEXT[ french ] = "To Previous Toolbar/Window";
+ TEXT[ french ] = "Aller la barre d'outils/fentre prcdente";
TEXT[ finnish ] = "To Previous Toolbar/Window";
TEXT[ danish ] = "To Previous Toolbar/Window";
- TEXT[ chinese_simplified ] = "To Previous Toolbar/Window";
- TEXT[ chinese_traditional ] = "To Previous Toolbar/Window";
+ TEXT[ chinese_simplified ] = "到上一个图标栏/视窗";
+ TEXT[ chinese_traditional ] = "至上一個工具列/視窗";
TEXT[ arabic ] = "To Previous Toolbar/Window";
TEXT[ catalan ] = "To Previous Toolbar/Window";
};
@@ -597,22 +597,22 @@ String SV_SHORTCUT_TODOCUMENT
TEXT[ english_us ] = "To Document";
TEXT[ portuguese ] = "To Document";
TEXT[ russian ] = "To Document";
- TEXT[ spanish ] = "To Document";
- TEXT[ italian ] = "To Document";
- TEXT[ swedish ] = "To Document";
+ TEXT[ spanish ] = "Al documento";
+ TEXT[ italian ] = "Al documento";
+ TEXT[ swedish ] = "Till dokument";
TEXT[ polish ] = "To Document";
TEXT[ portuguese_brazilian ] = "To Document";
- TEXT[ japanese ] = "To Document";
- TEXT[ korean ] = "To Document";
+ TEXT[ japanese ] = "ドキュメントへ";
+ TEXT[ korean ] = "문서로";
TEXT[ turkish ] = "To Document";
TEXT[ thai ] = "To Document";
TEXT[ greek ] = "To Document";
TEXT[ dutch ] = "To Document";
- TEXT[ french ] = "To Document";
+ TEXT[ french ] = "Aller au document";
TEXT[ finnish ] = "To Document";
TEXT[ danish ] = "To Document";
- TEXT[ chinese_simplified ] = "To Document";
- TEXT[ chinese_traditional ] = "To Document";
+ TEXT[ chinese_simplified ] = "转到文档";
+ TEXT[ chinese_traditional ] = "至文件";
TEXT[ arabic ] = "To Document";
TEXT[ catalan ] = "To Document";
};
@@ -624,22 +624,27 @@ String SV_SHORTCUT_MENUBAR
TEXT[ english_us ] = "To Menu Bar";
TEXT[ portuguese ] = "To Menu Bar";
TEXT[ russian ] = "To Menu Bar";
- TEXT[ spanish ] = "To Menu Bar";
- TEXT[ italian ] = "To Menu Bar";
- TEXT[ swedish ] = "To Menu Bar";
+ TEXT[ spanish ] = "A la barra de men";
+ TEXT[ italian ] = "Alla barra dei menu";
+ TEXT[ swedish ] = "Till menylist";
TEXT[ polish ] = "To Menu Bar";
TEXT[ portuguese_brazilian ] = "To Menu Bar";
- TEXT[ japanese ] = "To Menu Bar";
- TEXT[ korean ] = "To Menu Bar";
+ TEXT[ japanese ] = "メニューバーへ";
+ TEXT[ korean ] = "메뉴 표시줄로";
TEXT[ turkish ] = "To Menu Bar";
TEXT[ thai ] = "To Menu Bar";
TEXT[ greek ] = "To Menu Bar";
TEXT[ dutch ] = "To Menu Bar";
- TEXT[ french ] = "To Menu Bar";
+ TEXT[ french ] = "Aller la barre de menu";
TEXT[ finnish ] = "To Menu Bar";
TEXT[ danish ] = "To Menu Bar";
- TEXT[ chinese_simplified ] = "To Menu Bar";
- TEXT[ chinese_traditional ] = "To Menu Bar";
+ TEXT[ chinese_simplified ] = "转到菜单栏";
+ TEXT[ chinese_traditional ] = "至功能表列";
TEXT[ arabic ] = "To Menu Bar";
TEXT[ catalan ] = "To Menu Bar";
};
+
+
+
+
+
diff --git a/vcl/source/src/menu.src b/vcl/source/src/menu.src
index 73020d19b05c..6e8ea6c8c641 100644
--- a/vcl/source/src/menu.src
+++ b/vcl/source/src/menu.src
@@ -2,9 +2,9 @@
*
* $RCSfile: menu.src,v $
*
- * $Revision: 1.20 $
+ * $Revision: 1.21 $
*
- * last change: $Author: rt $ $Date: 2001-11-16 22:04:42 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -85,8 +85,9 @@ String SV_RESID_STRING_NOSELECTIONPOSSIBLE
Text[ chinese_traditional ] = "<無法選擇>";
Text[ arabic ] = "< >";
Text[ turkish ] = "<Seim yaplamaz>";
- Text[ catalan ] = "<Ninguna seleccin posible>";
+ Text[ catalan ] = "<Cap selecci possible>";
Text[ finnish ] = "<Valinta ei mahdollinen >";
+ Text[ thai ] = "<การเลือกที่ไม่สามารถเป็นไปได้>";
};
Menu SV_RESID_MENU_EDIT
@@ -113,12 +114,13 @@ Menu SV_RESID_MENU_EDIT
Text[ chinese_simplified ] = "撤消命令(~U)";
Text[ chinese_traditional ] = "復原(~U)";
Text[ greek ] = "~";
- Text[ korean ] = "실행취소(~U)";
+ Text[ korean ] = "실행 취소(~U)";
Text[ arabic ] = "";
Text[ turkish ] = "Geri al";
Text[ language_user1 ] = " ";
- Text[ catalan ] = "~Deshacer";
- Text[ finnish ] = "~Peruuta";
+ Text[ catalan ] = "~Desfs";
+ Text[ finnish ] = "~Kumoa";
+ Text[ thai ] = "เ~ลิกทำ";
};
MenuItem { Separator = TRUE ; };
MenuItem
@@ -130,7 +132,7 @@ Menu SV_RESID_MENU_EDIT
Text [ italian ] = "~Taglia" ;
Text [ portuguese_brazilian ] = "Co~rtar" ;
Text [ portuguese ] = "Co~rtar" ;
- Text [ finnish ] = "L~eikkaa" ;
+ Text [ finnish ] = "~Leikkaa" ;
Text [ danish ] = "~Klip" ;
Text [ french ] = "~Couper" ;
Text [ swedish ] = "~Klipp ut" ;
@@ -147,7 +149,8 @@ Menu SV_RESID_MENU_EDIT
Text[ arabic ] = "";
Text[ turkish ] = "~Kes";
Text[ language_user1 ] = " ";
- Text[ catalan ] = "C~ortar";
+ Text[ catalan ] = "~Retalla";
+ Text[ thai ] = "ตั~ด";
};
MenuItem
{
@@ -158,7 +161,7 @@ Menu SV_RESID_MENU_EDIT
Text [ italian ] = "~Copia" ;
Text [ portuguese_brazilian ] = "~Copiar" ;
Text [ portuguese ] = "~Copiar" ;
- Text [ finnish ] = "~Kopioi" ;
+ Text [ finnish ] = "K~opioi" ;
Text [ danish ] = "K~opier" ;
Text [ french ] = "Co~pier" ;
Text [ swedish ] = "K~opiera" ;
@@ -167,7 +170,7 @@ Menu SV_RESID_MENU_EDIT
Text [ english_us ] = "~Copy" ;
Text[ russian ] = "~";
Text[ polish ] = "Kopiuj";
- Text[ japanese ] = "コピー(~C)";
+ Text[ japanese ] = "コピー(~C)";
Text[ chinese_simplified ] = "复制(~C)";
Text[ chinese_traditional ] = "複製(~C)";
Text[ greek ] = "~";
@@ -175,7 +178,8 @@ Menu SV_RESID_MENU_EDIT
Text[ arabic ] = "";
Text[ turkish ] = "K~opyala";
Text[ language_user1 ] = " ";
- Text[ catalan ] = "~Copiar";
+ Text[ catalan ] = "~Copia";
+ Text[ thai ] = "~คัดลอก";
};
MenuItem
{
@@ -186,24 +190,25 @@ Menu SV_RESID_MENU_EDIT
Text [ italian ] = "~Incolla" ;
Text [ portuguese_brazilian ] = "~Colar" ;
Text [ portuguese ] = "Co~lar" ;
- Text [ finnish ] = "L~iit?" ;
+ Text [ finnish ] = "Lii~t" ;
Text [ danish ] = "~Indst" ;
Text [ french ] = "C~oller" ;
Text [ swedish ] = "K~listra in" ;
Text [ dutch ] = "~Plakken" ;
Text [ spanish ] = "~Pegar" ;
Text [ english_us ] = "~Paste" ;
- Text[ russian ] = "~";
+ Text[ russian ] = "~";
Text[ polish ] = "W~staw";
Text[ japanese ] = "貼り付け(~P)";
- Text[ chinese_simplified ] = "插入(~P)";
- Text[ chinese_traditional ] = "插入(~P)";
+ Text[ chinese_simplified ] = "粘贴(~P)";
+ Text[ chinese_traditional ] = "貼上(~P)";
Text[ greek ] = "~";
Text[ korean ] = "붙여넣기(~P)";
Text[ arabic ] = "";
Text[ turkish ] = "~Yaptr";
Text[ language_user1 ] = " ";
- Text[ catalan ] = "~Pegar";
+ Text[ catalan ] = "Engan~xa";
+ Text[ thai ] = "~วาง";
};
MenuItem
{
@@ -219,7 +224,7 @@ Menu SV_RESID_MENU_EDIT
Text [ french ] = "~Supprimer" ;
Text [ swedish ] = "~Radera" ;
Text [ dutch ] = "~Wissen" ;
- Text [ spanish ] = "~Eliminar" ;
+ Text [ spanish ] = "~Borrar" ;
Text [ english_us ] = "~Delete" ;
Text[ russian ] = "~";
Text[ polish ] = "Usu";
@@ -231,7 +236,8 @@ Menu SV_RESID_MENU_EDIT
Text[ arabic ] = "";
Text[ turkish ] = "~Sil";
Text[ language_user1 ] = " ";
- Text[ catalan ] = "~Eliminar";
+ Text[ catalan ] = "~Suprimeix";
+ Text[ thai ] = "~ลบ";
};
MenuItem { Separator = TRUE ; };
MenuItem
@@ -243,7 +249,7 @@ Menu SV_RESID_MENU_EDIT
Text [ italian ] = "Seleziona tutto" ;
Text [ portuguese_brazilian ] = "Selecionar ~Tudo" ;
Text [ portuguese ] = "Seleccionar ~tudo" ;
- Text [ finnish ] = "Valitse ~kaikki" ;
+ Text [ finnish ] = "~Valitse kaikki" ;
Text [ danish ] = "~Marker alt" ;
Text [ french ] = "~Slectionner tout" ;
Text [ swedish ] = "Markera ~allt" ;
@@ -260,7 +266,8 @@ Menu SV_RESID_MENU_EDIT
Text[ arabic ] = " ";
Text[ turkish ] = "Tmn se";
Text[ language_user1 ] = " ";
- Text[ catalan ] = "Seleccionar ~todo";
+ Text[ catalan ] = "Selecciona-ho ~tot";
+ Text[ thai ] = "เลือก~ทั้งหมด";
};
MenuItem { Separator = TRUE ; };
MenuItem
@@ -277,7 +284,7 @@ Menu SV_RESID_MENU_EDIT
TEXT[ dutch ] = "~Speciaal teken invoegen...";
TEXT[ spanish ] = "Insertar ~smbolo...";
TEXT[ english_us ] = "~Special Character...";
- TEXT[ russian ] = "~ ...";
+ TEXT[ russian ] = "...";
TEXT[ polish ] = "Wstaw znaki specjalne...";
TEXT[ japanese ] = "記号と特殊文字の挿入(~S)...";
@@ -288,8 +295,9 @@ Menu SV_RESID_MENU_EDIT
TEXT[ arabic ] = " ";
TEXT[ turkish ] = "zel karakter ekle...";
TEXT[ language_user1 ] = " ";
- TEXT[ catalan ] = "Insertar ~smbolo...";
- TEXT[ finnish ] = "~Erikoismerkki...";
+ TEXT[ catalan ] = "Insereix ~smbol...";
+ TEXT[ finnish ] = "Merkk~i...";
+ TEXT[ thai ] = "ตัวอักขระ~พิเศษ...";
};
};
};
@@ -303,3 +311,7 @@ Menu SV_RESID_MENU_EDIT
+
+
+
+
diff --git a/vcl/source/src/stdtext.src b/vcl/source/src/stdtext.src
index abb86ed482fc..a4916067832d 100644
--- a/vcl/source/src/stdtext.src
+++ b/vcl/source/src/stdtext.src
@@ -2,9 +2,9 @@
*
* $RCSfile: stdtext.src,v $
*
- * $Revision: 1.37 $
+ * $Revision: 1.38 $
*
- * last change: $Author: pl $ $Date: 2002-12-06 10:22:43 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:18 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -102,18 +102,18 @@ String SV_STDTEXT_DONTHINTAGAIN
Text[ russian ] = "Do not show this information again.";
Text[ greek ] = "Do not show this information again.";
Text[ dutch ] = "Do not show this information again.";
- Text[ french ] = "Do not show this information again.";
- Text[ spanish ] = "Do not show this information again.";
+ Text[ french ] = "Ne plus afficher cette information";
+ Text[ spanish ] = "No volver a mostrar esta advertencia.";
Text[ finnish ] = "Do not show this information again.";
- Text[ italian ] = "Do not show this information again.";
+ Text[ italian ] = "Non mostrare pi questo avviso.";
Text[ danish ] = "Do not show this information again.";
- Text[ swedish ] = "Do not show this information again.";
+ Text[ swedish ] = "Visa inte den hr informationen mer.";
Text[ polish ] = "Do not show this information again.";
Text[ portuguese_brazilian ] = "Do not show this information again.";
- Text[ japanese ] = "Do not show this information again.";
- Text[ korean ] = "Do not show this information again.";
- Text[ chinese_simplified ] = "Do not show this information again.";
- Text[ chinese_traditional ] = "Do not show this information again.";
+ Text[ japanese ] = "今後この情報を表示しない。";
+ Text[ korean ] = "이 정보를 다시 표시하지 않음";
+ Text[ chinese_simplified ] = "下次不再显示这个提示。";
+ Text[ chinese_traditional ] = "不再顯示這項資訊。";
Text[ turkish ] = "Do not show this information again.";
Text[ arabic ] = "Do not show this information again.";
Text[ catalan ] = "Do not show this information again.";
@@ -129,18 +129,18 @@ String SV_STDTEXT_DONTASKAGAIN
Text[ russian ] = "Do not show this question again.";
Text[ greek ] = "Do not show this question again.";
Text[ dutch ] = "Do not show this question again.";
- Text[ french ] = "Do not show this question again.";
- Text[ spanish ] = "Do not show this question again.";
+ Text[ french ] = "Ne plus afficher cette question";
+ Text[ spanish ] = "No volver a mostrar esta pregunta.";
Text[ finnish ] = "Do not show this question again.";
- Text[ italian ] = "Do not show this question again.";
+ Text[ italian ] = "Non mostrare pi questa domanda.";
Text[ danish ] = "Do not show this question again.";
- Text[ swedish ] = "Do not show this question again.";
+ Text[ swedish ] = "Visa inte den hr frgan mer.";
Text[ polish ] = "Do not show this question again.";
Text[ portuguese_brazilian ] = "Do not show this question again.";
- Text[ japanese ] = "Do not show this question again.";
- Text[ korean ] = "Do not show this question again.";
- Text[ chinese_simplified ] = "Do not show this question again.";
- Text[ chinese_traditional ] = "Do not show this question again.";
+ Text[ japanese ] = "今後この質問を表示しない。";
+ Text[ korean ] = "이 질문을 다시 표시하지 않음";
+ Text[ chinese_simplified ] = "下次不再显示这个提问。";
+ Text[ chinese_traditional ] = "不再顯示這個問題。";
Text[ turkish ] = "Do not show this question again.";
Text[ arabic ] = "Do not show this question again.";
Text[ catalan ] = "Do not show this question again.";
@@ -150,23 +150,23 @@ String SV_STDTEXT_DONTASKAGAIN
String SV_STDTEXT_DONTWARNAGAIN
{
Text = "Diese Warnung nicht mehr anzeigen.";
- Text [English] = "Do not warn me again.";
+ Text[ English] = "Do not warn me again.";
Text[ english_us ] = "Do not show warning again.";
Text[ portuguese ] = "No mostrar mais esta observao.";
Text[ russian ] = " .";
Text[ greek ] = " .";
Text[ dutch ] = "Deze waarschuwing niet meer weergeven.";
- Text[ french ] = "Ne plus afficher cet avertissement.";
+ Text[ french ] = "Ne plus afficher cet avertissement";
Text[ spanish ] = "No mostrar ms esta advertencia.";
Text[ italian ] = "Non mostrare pi questo avviso.";
Text[ danish ] = "Vis ikke denne henvisning igen.";
- Text[ swedish ] = "Visa inte den hr informationen mer.";
+ Text[ swedish ] = "Visa inte den hr varningen mer.";
Text[ polish ] = "Nie wywietlaj wicej ostrzeenia.";
Text[ portuguese_brazilian ] = "Do not warn me again.";
- Text[ japanese ] = "今後この指示はもう表示しない。";
- Text[ korean ] = "이 메시지를 더 이상 표시하지 않습니다.";
- Text[ chinese_simplified ] = "不再显示这个提示。";
- Text[ chinese_traditional ] = "不要再顯示這個提示。";
+ Text[ japanese ] = "今後この警告は表示しない。";
+ Text[ korean ] = "이 경고를 다시 표시하지 않음";
+ Text[ chinese_simplified ] = "下次不再显示这个警告。";
+ Text[ chinese_traditional ] = "不再顯示這個警告。";
Text[ turkish ] = "Do not warn me again.";
Text[ arabic ] = "Do not warn me again.";
Text[ catalan ] = "No tornis a mostrar l'advertiment.";
@@ -176,8 +176,8 @@ String SV_STDTEXT_DONTWARNAGAIN
String SV_ACCESSERROR_WRONG_VERSION
{
- Text = "Falsche Version";
- Text [English] = "Wrong version";
+ Text = "Falsche Java Access Bridge";
+ Text[ english ] = "Wrong Java Access Bridge";
Text[ english_us ] = "Wrong Version";
Text[ portuguese ] = "Wrong version";
Text[ russian ] = "Wrong version";
@@ -201,37 +201,52 @@ String SV_ACCESSERROR_WRONG_VERSION
Text[ thai ] = "Wrong version";
};
-String SV_ACCESSERROR_WRONG_VERSION_MSG
+String SV_ACCESSERROR_BRIDGE_MSG
{
- Text = "%PRODUCTNAME %PRODUCTVERSION bentigt eine Java Access Bridge 1.03 oder hher. Bitte installieren Sie die aktuellste Java Access Bridge. Klicken Sie '%IGNORE' um %PRODUCTNAME %PRODUCTVERSION ohne Untersttzung der Zugnglichkeit zu starten, oder klicken Sie '%CANCEL'.";
- Text [English] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ english_us ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text = "%PRODUCTNAME %PRODUCTVERSION bentigt eine Java Access Bridge 1.0.3 oder hhere Version, um Zugnglichkeit zu untersttzen.";
+ Text[ english ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.0.3 or later version to support accessibility.";
+ Text[ english_us ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.0.3 or later version to support accessibility.";
Text[ portuguese ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ russian ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ greek ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ dutch ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ french ] = "%PRODUCTNAME %PRODUCTVERSION requiert Java Access Bridge 1.03 ou plus. Veuillez installer la version la plus rcente de Java Access Bridge. Cliquez sur \"Ignorer\" pour dmarrer %PRODUCTNAME %PRODUCTVERSION sans support d'accessibilit, ou sur \"Annuler\".";
Text[ spanish ] = "%PRODUCTNAME %PRODUCTVERSION requiere la versin de Java Access Bridge 1.03 o posterior. Instale la ltima versin de Java Access Bridge. Pulse \"Ignorar\" para iniciar %PRODUCTNAME %PRODUCTVERSION sin el soporte de accesibilidad o pulse \"Cancelar\".";
- Text[ finnish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ finnish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
Text[ italian ] = "%PRODUCTNAME %PRODUCTVERSION richiede una versione di Java Access Bridge 1.03 o pi recente. Installate l'ultima versione di Java Access Bridge. Cliccate su \"Ignora\" per avviare %PRODUCTNAME %PRODUCTVERSION senza il supporto di accessibilit, altrimenti cliccate su \"Annulla\".";
- Text[ danish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ danish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
Text[ swedish ] = "%PRODUCTNAME %PRODUCTVERSION krver en Java Access Bridge 1.03 eller senare. Installera den senaste Java Access Bridge. Klicka p \"Ignorera\" fr att starta %PRODUCTNAME %PRODUCTVERSION utan tillgnglighetsstd eller klicka p \"Avbryt\".";
- Text[ polish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ polish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
Text[ portuguese_brazilian ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ japanese ] = "%PRODUCTNAME %PRODUCTVERSION には、Java Access Bridge 1.03 以降のバージョンが必要です。最新版の Java Access Bridge をインストールしてください。アクセシビリティの支援なしで %PRODUCTNAME %PRODUCTVERSION を起動させるには、[無視する]ボタンをクリックします。または[キャンセル]ボタンをクリックします。";
Text[ korean ] = "%PRODUCTNAME %PRODUCTVERSION 은(는) Java Access Bridge 1.03 이상의 버전을 필요로 합니다. 최신 버전의 Java Access Bridge를 설치해주십시오. 액세스빌리티 기능 지원이 없이 %PRODUCTNAME %PRODUCTVERSION을 시작하시려면 무시 버튼 또는 취소 버튼을 클릭해주십시오.";
Text[ chinese_simplified ] = "%PRODUCTNAME %PRODUCTVERSION 需要一个“Java Access Bridge 1.03”或之上的版本。点击“忽略”,省去辅助功能支持。而直接开始安装 %PRODUCTNAME %PRODUCTVERSION 。或者点击“取消”,中断安装过程。";
Text[ chinese_traditional ] = "%PRODUCTNAME %PRODUCTVERSION 需要一個[Java Access Bridge 1.03]或之上的版本。請安裝一個最新的[Java Access Bridge]版本。按一下「忽略」,省去協助工具支援,而直接啓動安裝 %PRODUCTNAME %PRODUCTVERSION 。或者按下「取消」,中斷安裝過程。";
- Text[ turkish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ arabic ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ catalan ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ thai ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ turkish ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+ Text[ arabic ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+ Text[ catalan ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+ Text[ thai ] = "%PRODUCTNAME %PRODUCTVERSION requires a Java Access Bridge 1.03 or later version. Please install the latest Java Access Bridge. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+};
+
+String SV_ACCESSERROR_OK_CANCEL_MSG
+{
+ Text = "Klicken Sie '%OK', um %PRODUCTNAME %PRODUCTVERSION ohne Untersttzung der Zugnglichkeit zu starten, oder klicken Sie '%CANCEL' um %PRODUCTNAME %PRODUCTVERSION zu beenden.";
+ Text[ english ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ english_us ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ french ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ spanish ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ italian ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ swedish ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ japanese ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ korean ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ chinese_simplified ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
+ Text[ chinese_traditional ] = "Click '%OK' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL' to exit %PRODUCTNAME %PRODUCTVERSION.";
};
String SV_ACCESSERROR_MISSING_BRIDGE
{
Text = "Keine Java Access Bridge";
- Text [English] = "No Java Access Bridge";
+ Text[ english ] = "No Java Access Bridge";
Text[ english_us ] = "No Java Access Bridge";
Text[ portuguese ] = "No Java Access Bridge";
Text[ russian ] = "No Java Access Bridge";
@@ -255,37 +270,10 @@ String SV_ACCESSERROR_MISSING_BRIDGE
Text[ thai ] = "No Java Access Bridge";
};
-String SV_ACCESSERROR_MISSING_BRIDGE_MSG
-{
- Text = "Es wurde keine Java Access Bridge gefunden. Bitte installieren Sie eine Java Access Bridge. Klicken Sie '%IGNORE' um %PRODUCTNAME %PRODUCTVERSION ohne Untersttzung der Zugnglichkeit zu starten, oder klicken Sie '%CANCEL'.";
- Text [English] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ english_us ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ portuguese ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ russian ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ greek ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ dutch ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ french ] = "Java Access Bridge n'a pas pu tre dtect sur le systme. Veuillez installer une version Java Access Bridge. Cliquez sur \"Ignorer\" pour dmarrer %PRODUCTNAME %PRODUCTVERSION sans support d'accessibilit, ou sur \"Annuler\".";
- Text[ spanish ] = "Java Access Bridge no se encuentra en el sistema. Instale una versin de Java Access Bridge. Pulse \"Ignorar\" para iniciar %PRODUCTNAME %PRODUCTVERSION sin el soporte de accesibilidad o pulse \"Cancelar\".";
- Text[ finnish ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ italian ] = "Non avete installato Java Access Bridge sul vostro sistema. L'installazione necessaria. Cliccate su \"Ignora\" per avviare %PRODUCTNAME %PRODUCTVERSION senza il supporto di accessibilit, altrimenti cliccate su \"Annulla\".";
- Text[ danish ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ swedish ] = "Ingen Java Access Bridge hittades i ditt system. Installera en Java Access Bridge. Klicka p \"Ignorera\" fr att starta %PRODUCTNAME %PRODUCTVERSION utan tillgnglighetsstd eller klicka p \"Avbryt\".";
- Text[ polish ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ portuguese_brazilian ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ japanese ] = "お使いのシステムに Java Access Bridge は見つかりませんでした。Java Access Bridge をインストールしてください。アクセシビリティの支援なしで %PRODUCTNAME %PRODUCTVERSION を起動させるには、[無視する]ボタンをクリックします。または[キャンセル]ボタンをクリックします。";
- Text[ korean ] = "시스템에서 Java Access Bridge를 찾을 수 없었습니다. Java Access Bridge를 설치해주십시오. 액세스빌리티 기능 지원이 없는 %PRODUCTNAME %PRODUCTVERSION을 시작하시려면 무시 버튼 또는 취소 버튼을 클릭해주십시오.";
- Text[ chinese_simplified ] = "在系统内没有找到“Java Access Bridge”。请安装一个“Java Access Bridge”。点击“忽略”,省去辅助功能支持,而直接开始安装 %PRODUCTNAME %PRODUCTVERSION 。或者点击“取消”,中断安装过程。";
- Text[ chinese_traditional ] = "在系統内沒有找到[Java Access Bridge]。請安裝一個[Java Access Bridge]。按一下「忽略」,省去協助工具支援,而直接啓動安裝 %PRODUCTNAME %PRODUCTVERSION 。或者按下「取消」,中斷安裝過程。";
- Text[ turkish ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ arabic ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ catalan ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ thai ] = "No Java Access Bridge was found on your system. Please install a Java Access Bridge. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
-};
-
String SV_ACCESSERROR_FAULTY_JAVA
{
Text = "Fehlerhafte Java Installation";
- Text [English] = "Faulty Java installation";
+ Text[ english ] = "Faulty Java installation";
Text[ english_us ] = "Faulty Java Installation";
Text[ portuguese ] = "Faulty Java installation";
Text[ russian ] = "Faulty Java installation";
@@ -300,7 +288,7 @@ String SV_ACCESSERROR_FAULTY_JAVA
Text[ polish ] = "Faulty Java installation";
Text[ portuguese_brazilian ] = "Faulty Java installation";
Text[ japanese ] = "Java は正常にインストールされていません";
- Text[ korean ] = "자바가 올바르게 설치되지 않았습니다.";
+ Text[ korean ] = "Java가 올바르게 설치되지 않았습니다.";
Text[ chinese_simplified ] = "错误的 Java 安装";
Text[ chinese_traditional ] = "錯誤的 Java 安裝";
Text[ turkish ] = "Faulty Java installation";
@@ -309,37 +297,37 @@ String SV_ACCESSERROR_FAULTY_JAVA
Text[ thai ] = "Faulty Java installation";
};
-String SV_ACCESSERROR_FAULTY_JAVA_MSG
+String SV_ACCESSERROR_JAVA_MSG
{
- Text = "%PRODUCTNAME %PRODUCTVERSION hat auf Ihrem System eine fehlerhafte Java Installation gefunden Bitte installieren Sie Java neu, oder fhren Sie eine Reparatur durch. Klicken Sie '%IGNORE' um %PRODUCTNAME %PRODUCTVERSION ohne Untersttzung der Zugnglichkeit zu starten, oder klicken Sie '%CANCEL'.";
- Text [English] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ english_us ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text = "%PRODUCTNAME %PRODUCTVERSION bentigt Java 1.4.0_02 oder hhere Version, um Zugnglichkeit zu untersttzen.";
+ Text[ english ] = "%PRODUCTNAME %PRODUCTVERSION requires Java 1.4.0_02 or later version to support accessibility.";
+ Text[ english_us ] = "%PRODUCTNAME %PRODUCTVERSION requires Java 1.4.0_02 or later version to support accessibility.";
Text[ portuguese ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ russian ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ greek ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ dutch ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ french ] = "%PRODUCTNAME %PRODUCTVERSION a dtect une installation Java dfectueuse sur le systme. Veuillez rinstaller Java ou excuter une rparation. Cliquez sur \"Ignorer\" pour dmarrer %PRODUCTNAME %PRODUCTVERSION sans support d'accessibilit, ou sur \"Annuler\".";
Text[ spanish ] = "%PRODUCTNAME %PRODUCTVERSION ha detectado una versin defectuosa de Java en el sistema. Vuelva a instalar Java o efecte una reparacin. Pulse \"Ignorar\" para iniciar %PRODUCTNAME %PRODUCTVERSION sin el soporte de accesibilidad o pulse \"Cancelar\". ";
- Text[ finnish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ finnish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
Text[ italian ] = "%PRODUCTNAME %PRODUCTVERSION ha rilevato un'installazione corrotta di Java sul vostro sistema. Installate nuovamente Java oppure avviate il programma di riparazione. Cliccate su \"Ignora\" per avviare %PRODUCTNAME %PRODUCTVERSION senza il supporto di accessibilit, altrimenti cliccate su \"Annulla\".";
- Text[ danish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ danish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
Text[ swedish ] = "%PRODUCTNAME %PRODUCTVERSION har hittat en felaktig Java-installation i ditt system. Installera om Java eller reparera din nuvarande Java-installation. Klicka p \"Ignorera\" fr att starta %PRODUCTNAME %PRODUCTVERSION utan tillgnglighetsstd eller klicka p \"Avbryt\".";
- Text[ polish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ polish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
Text[ portuguese_brazilian ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
Text[ japanese ] = "%PRODUCTNAME %PRODUCTVERSION がシステムに正常にインストールされなかった Java を検出しました。Java をインストールしなおすか、セットアッププログラムで修復を行うかしてください。アクセシビリティの支援なしで %PRODUCTNAME %PRODUCTVERSION を起動させるには、[無視する]ボタンをクリックします。または[キャンセル]ボタンをクリックします。";
Text[ korean ] = "%PRODUCTNAME %PRODUCTVERSION 은(는) 오류가 있는 Java 설치를 발견했습니다. Java를 새로 설치하거나 복구를 실행해주십시오. 액세스빌리티 기능 지원이 없이 %PRODUCTNAME %PRODUCTVERSION을 시작하시려면 무시 버튼 또는 취소 버튼을 클릭해주십시오.";
Text[ chinese_simplified ] = "%PRODUCTNAME %PRODUCTVERSION 发现在系统内有一个错误的 Java 版本。请重新安装 Java 或启动修复安装程序。点击“忽略”,省去辅助功能支持,而直接开始安装 %PRODUCTNAME %PRODUCTVERSION 。或者点击“取消”,中断安装过程。";
Text[ chinese_traditional ] = "%PRODUCTNAME %PRODUCTVERSION 發現在系統内有一個錯誤的 Java 版本。請重新安裝 Java 或啓動修復安裝程式。按一下「忽略」,省去協助工具支援,而直接啓動安裝 %PRODUCTNAME %PRODUCTVERSION 。或者按下「取消」,中斷安裝過程。";
- Text[ turkish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ arabic ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ catalan ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ thai ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text[ turkish ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+ Text[ arabic ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+ Text[ catalan ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
+ Text[ thai ] = "%PRODUCTNAME %PRODUCTVERSION detected a faulty Java installation on your system. Please repair or renew your Java installation. Click \"Ignore\" to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click \"Cancel\".";
};
String SV_ACCESSERROR_MISSING_JAVA
{
Text = "Fehlende Java Installation";
- Text [English] = "No Java Installation";
+ Text[ english ] = "No Java Installation";
Text[ english_us ] = "No Java Installation";
Text[ portuguese ] = "No Java Installation";
Text[ russian ] = "No Java Installation";
@@ -354,7 +342,7 @@ String SV_ACCESSERROR_MISSING_JAVA
Text[ polish ] = "No Java Installation";
Text[ portuguese_brazilian ] = "No Java Installation";
Text[ japanese ] = "Java はインストールされていません";
- Text[ korean ] = "자바가 설치되지 않았습니다.";
+ Text[ korean ] = "Java가 설치되지 않았습니다.";
Text[ chinese_simplified ] = "没有安装 Java";
Text[ chinese_traditional ] = "沒有安裝好 Java";
Text[ turkish ] = "No Java Installation";
@@ -363,29 +351,51 @@ String SV_ACCESSERROR_MISSING_JAVA
Text[ thai ] = "No Java Installation";
};
-String SV_ACCESSERROR_MISSING_JAVA_MSG
+String SV_ACCESSERROR_JAVA_NOT_CONFIGURED
{
- Text = "Es wurde keine Java Installation gefunden. Bitte installieren Sie eine Java Version. Klicken Sie '%IGNORE' um %PRODUCTNAME %PRODUCTVERSION ohne Untersttzung der Zugnglichkeit zu starten, oder klicken Sie '%CANCEL' um den Start zu beenden.";
- Text [English] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ english_us ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ portuguese ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ russian ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ greek ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ dutch ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ french ] = "Aucune installation Java n'a pu tre dtecte sur le systme. Veuillez installer une version de Java. Cliquez sur \"Ignorer\" pour dmarrer %PRODUCTNAME %PRODUCTVERSION sans support d'accessibilit, ou sur \"Annuler\".";
- Text[ spanish ] = "No se encontr ninguna instalacin de Java en el sistema. Instale una versin de Java. Pulse en \"Ignorar\" para iniciar %PRODUCTNAME %PRODUCTVERSION sin el soporte de accesibilidad o pulse en \"Cancelar\". ";
- Text[ finnish ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ italian ] = "Non avete installato Java sul vostro sistema. Installate una versione di Java. Cliccate su \"Ignora\" per avviare %PRODUCTNAME %PRODUCTVERSION senza il supporto di accessibilit, altrimenti cliccate su \"Annulla\".";
- Text[ danish ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ swedish ] = "Ingen Java-installation hittades i ditt system. Installera en version av Java. Klicka p \"Ignorera\" fr att starta %PRODUCTNAME %PRODUCTVERSION utan tillgnglighetsstd eller klicka p \"Avbryt\".";
- Text[ polish ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ portuguese_brazilian ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ japanese ] = "お使いのシステムに Java はインストールされていません。Java のバージョンをインストールしてください。アクセシビリティの支援なしで %PRODUCTNAME %PRODUCTVERSION を起動させるには、[無視する]ボタンをクリックしてください。または[キャンセル]ボタンをクリックしてください。";
- Text[ korean ] = "사용자 시스템에 Java가 설치되지 않았습니다. Java를 설치해주십시오. 액세스빌리티 기능 지원이 없이 %PRODUCTNAME %PRODUCTVERSION을 시작하시려면 무시 버튼 또는 취소 버튼을 클릭해주십시오.";
- Text[ chinese_simplified ] = "在系统内没有找到一个 Java 版本。请安装一个 Java 版本。点击“忽略”,省去辅助功能支持,而直接开始安装 %PRODUCTNAME %PRODUCTVERSION 。或者点击“取消”,中断安装过程。";
- Text[ chinese_traditional ] = "在系統内沒有找到一個 Java 版本。 請安裝一個 Java 版本。按一下「忽略」,省去協助工具支援,而直接啓動安裝 %PRODUCTNAME %PRODUCTVERSION 。或者按下「取消」,中斷安裝過程。";
- Text[ turkish ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ arabic ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ catalan ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
- Text[ thai ] = "No Java installation was found on your system. Please install a version of Java. Click '%IGNORE' to start %PRODUCTNAME %PRODUCTVERSION without accessibility support, or click '%CANCEL'.";
+ Text = "Fehlende Java-Konfiguration";
+ Text[ english ] = "Missing Java Configuration";
+ Text[ english_us ] = "Missing Java Configuration";
+ Text[ french ] = "Missing Java Configuration";
+ Text[ spanish ] = "Missing Java Configuration";
+ Text[ italian ] = "Missing Java Configuration";
+ Text[ swedish ] = "Missing Java Configuration";
+ Text[ japanese ] = "Missing Java Configuration";
+ Text[ korean ] = "Missing Java Configuration";
+ Text[ chinese_simplified ] = "Missing Java Configuration";
+ Text[ chinese_traditional ] = "Missing Java Configuration";
};
+
+String SV_ACCESSERROR_JAVA_DISABLED
+{
+ Text = "Java deaktiviert";
+ Text[ english ] = "Java Disabled";
+ Text[ english_us ] = "Java Disabled";
+ Text[ french ] = "Java Disabled";
+ Text[ spanish ] = "Java Disabled";
+ Text[ italian ] = "Java Disabled";
+ Text[ swedish ] = "Java Disabled";
+ Text[ japanese ] = "Java Disabled";
+ Text[ korean ] = "Java Disabled";
+ Text[ chinese_simplified ] = "Java Disabled";
+ Text[ chinese_traditional ] = "Java Disabled";
+};
+
+String SV_ACCESSERROR_TURNAROUND_MSG
+{
+ Text = "Die Java Access Bridge konnte nicht gestartet werden.";
+ Text[ english ] = "The Java Access Bridge could not be started.";
+ Text[ english_us ] = "The Java Access Bridge could not be started.";
+ Text[ french ] = "The Java Access Bridge could not be started.";
+ Text[ spanish ] = "The Java Access Bridge could not be started.";
+ Text[ italian ] = "The Java Access Bridge could not be started.";
+ Text[ swedish ] = "The Java Access Bridge could not be started.";
+ Text[ japanese ] = "The Java Access Bridge could not be started.";
+ Text[ korean ] = "The Java Access Bridge could not be started.";
+ Text[ chinese_simplified ] = "The Java Access Bridge could not be started.";
+ Text[ chinese_traditional ] = "The Java Access Bridge could not be started.";
+};
+
+
+
+
diff --git a/vcl/source/src/units.src b/vcl/source/src/units.src
index 0aa3898a501c..219e7381a7b0 100644
--- a/vcl/source/src/units.src
+++ b/vcl/source/src/units.src
@@ -2,9 +2,9 @@
*
* $RCSfile: units.src,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: rt $ $Date: 2002-12-05 14:29:53 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:18 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -239,7 +239,7 @@ ItemList [ language_user1 ] =
{
< "mm" ; FUNIT_MM ; > ;
< "cm" ; FUNIT_CM ; > ;
- < "S_population" ; FUNIT_M ; > ;
+ < "m" ; FUNIT_M ; > ;
< "km" ; FUNIT_KM ; > ;
< "twips" ; FUNIT_TWIP ; > ;
< "twip" ; FUNIT_TWIP ; > ;
@@ -260,7 +260,7 @@ ItemList [ language_user1 ] =
{
< "mm" ; FUNIT_MM ; > ;
< "cm" ; FUNIT_CM ; > ;
- < "pobl_xito" ; FUNIT_M ; > ;
+ < "m" ; FUNIT_M ; > ;
< "km" ; FUNIT_KM ; > ;
< "twips" ; FUNIT_TWIP ; > ;
< "twip" ; FUNIT_TWIP ; > ;
@@ -302,12 +302,12 @@ ItemList [ language_user1 ] =
{
< "mm" ; FUNIT_MM ; > ;
< "cm" ; FUNIT_CM ; > ;
- < "Successi popolazione" ; FUNIT_M ; > ;
+ < "m" ; FUNIT_M ; > ;
< "km" ; FUNIT_KM ; > ;
< "twips" ; FUNIT_TWIP ; > ;
< "twip" ; FUNIT_TWIP ; > ;
< "pt" ; FUNIT_POINT ; > ;
- < "PI.GRECO" ; FUNIT_PICA ; > ;
+ < "pi" ; FUNIT_PICA ; > ;
< "\"" ; FUNIT_INCH ; > ;
< "in" ; FUNIT_INCH ; > ;
< "inch" ; FUNIT_INCH ; > ;
@@ -405,23 +405,23 @@ ItemList [ language_user1 ] =
};
ItemList [ japanese ] =
{
- < "mm" ; FUNIT_MM ; > ;
- < "cm" ; FUNIT_CM ; > ;
- < "m" ; FUNIT_M ; > ;
- < "km" ; FUNIT_KM ; > ;
- < "twips" ; FUNIT_TWIP ; > ;
+ < "ミリ" ; FUNIT_MM ; > ;
+ < "センチ" ; FUNIT_CM ; > ;
+ < "メートル" ; FUNIT_M ; > ;
+ < "キロメートル" ; FUNIT_KM ; > ;
< "twip" ; FUNIT_TWIP ; > ;
- < "pt" ; FUNIT_POINT ; > ;
- < "pi" ; FUNIT_PICA ; > ;
+ < "twip" ; FUNIT_TWIP ; > ;
+ < "ポイント" ; FUNIT_POINT ; > ;
+ < "ピクセル" ; FUNIT_PICA ; > ;
< "\"" ; FUNIT_INCH ; > ;
< "in" ; FUNIT_INCH ; > ;
- < "inch" ; FUNIT_INCH ; > ;
+ < "インチ" ; FUNIT_INCH ; > ;
< "'" ; FUNIT_FOOT ; > ;
< "ft" ; FUNIT_FOOT ; > ;
- < "foot" ; FUNIT_FOOT ; > ;
- < "feet" ; FUNIT_FOOT ; > ;
- < "miles" ; FUNIT_MILE ; > ;
- < "mile" ; FUNIT_MILE ; > ;
+ < "フィート" ; FUNIT_FOOT ; > ;
+ < "フィート" ; FUNIT_FOOT ; > ;
+ < "マイル" ; FUNIT_MILE ; > ;
+ < "マイル" ; FUNIT_MILE ; > ;
< "%" ; FUNIT_PERCENT ; > ;
};
ItemList [ korean ] =
@@ -433,7 +433,7 @@ ItemList [ language_user1 ] =
< "twips" ; FUNIT_TWIP ; > ;
< "twip" ; FUNIT_TWIP ; > ;
< "pt" ; FUNIT_POINT ; > ;
- < "파이" ; FUNIT_PICA ; > ;
+ < "pi" ; FUNIT_PICA ; > ;
< "\"" ; FUNIT_INCH ; > ;
< "in" ; FUNIT_INCH ; > ;
< "inch" ; FUNIT_INCH ; > ;
@@ -468,23 +468,23 @@ ItemList [ language_user1 ] =
};
ItemList [ chinese_traditional ] =
{
- < "mm" ; FUNIT_MM ; > ;
- < "cm" ; FUNIT_CM ; > ;
- < "m" ; FUNIT_M ; > ;
- < "km" ; FUNIT_KM ; > ;
- < "twips" ; FUNIT_TWIP ; > ;
+ < "公厘" ; FUNIT_MM ; > ;
+ < "公分" ; FUNIT_CM ; > ;
+ < "公尺" ; FUNIT_M ; > ;
+ < "公里" ; FUNIT_KM ; > ;
+ < "twip" ; FUNIT_TWIP ; > ;
< "twip" ; FUNIT_TWIP ; > ;
< "pt" ; FUNIT_POINT ; > ;
< "pi" ; FUNIT_PICA ; > ;
< "\"" ; FUNIT_INCH ; > ;
< "in" ; FUNIT_INCH ; > ;
- < "inch" ; FUNIT_INCH ; > ;
+ < "英吋" ; FUNIT_INCH ; > ;
< "'" ; FUNIT_FOOT ; > ;
- < "ft" ; FUNIT_FOOT ; > ;
- < "foot" ; FUNIT_FOOT ; > ;
- < "feet" ; FUNIT_FOOT ; > ;
- < "miles" ; FUNIT_MILE ; > ;
- < "mile" ; FUNIT_MILE ; > ;
+ < "英尺" ; FUNIT_FOOT ; > ;
+ < "英尺" ; FUNIT_FOOT ; > ;
+ < "英尺" ; FUNIT_FOOT ; > ;
+ < "英里" ; FUNIT_MILE ; > ;
+ < "英里" ; FUNIT_MILE ; > ;
< "%" ; FUNIT_PERCENT ; > ;
};
ItemList [ turkish ] =
@@ -573,3 +573,8 @@ ItemList [ language_user1 ] =
};
};
+
+
+
+
+
diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index 16eb0e5e1739..e0539abdb27b 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: brdwin.cxx,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: ssa $ $Date: 2002-06-27 16:17:20 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -1090,6 +1090,8 @@ void ImplSmallBorderWindowView::DrawWindow( USHORT nDrawFlags, OutputDevice*, co
nStyle |= FRAME_DRAW_DOUBLEIN;
if ( nBorderStyle & WINDOW_BORDER_MONO )
nStyle |= FRAME_DRAW_MONO;
+ if ( nBorderStyle & WINDOW_BORDER_MENU )
+ nStyle |= FRAME_DRAW_MENU;
DecorationView aDecoView( mpOutDev );
Point aTmpPoint;
@@ -3213,7 +3215,7 @@ void ImplBorderWindow::ImplInit( Window* pParent,
{
// Alle WindowBits entfernen, die wir nicht haben wollen
WinBits nOrgStyle = nStyle;
- WinBits nTestStyle = (WB_MOVEABLE | WB_SIZEABLE | WB_ROLLABLE | WB_PINABLE | WB_CLOSEABLE | WB_STANDALONE | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_SYSTEMFLOATWIN);
+ WinBits nTestStyle = (WB_MOVEABLE | WB_SIZEABLE | WB_ROLLABLE | WB_PINABLE | WB_CLOSEABLE | WB_STANDALONE | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_SYSTEMFLOATWIN | WB_INTROWIN | WB_NOSHADOW);
if ( nTypeStyle & BORDERWINDOW_STYLE_APP )
nTestStyle |= WB_APP;
nStyle &= nTestStyle;
diff --git a/vcl/source/window/cursor.cxx b/vcl/source/window/cursor.cxx
index aa4718e02682..25d998fc52a0 100644
--- a/vcl/source/window/cursor.cxx
+++ b/vcl/source/window/cursor.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: cursor.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: ssa $ $Date: 2001-11-26 17:12:38 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -99,6 +99,7 @@ struct ImplCursorData
Size maPixSize; // Pixel-Size
long mnPixSlant; // Pixel-Slant
short mnOrientation; // Pixel-Orientation
+ unsigned char mnDirection; // indicates writing direction
USHORT mnStyle; // Cursor-Style
BOOL mbCurVisible; // Ist Cursor aktuell sichtbar
Window* mpWindow; // Zugeordnetes Windows
@@ -116,10 +117,13 @@ static void ImplCursorInvert( ImplCursorData* pData )
nInvertStyle = INVERT_50;
else
nInvertStyle = 0;
+
Rectangle aRect( pData->maPixPos, pData->maPixSize );
- if ( pData->mnOrientation || pData->mnPixSlant )
+ if ( pData->mnDirection || pData->mnOrientation || pData->mnPixSlant )
{
Polygon aPoly( aRect );
+ aPoly[1].X() += 1; // include the right border
+ aPoly[2].X() += 1;
if ( pData->mnPixSlant )
{
Point aPoint = aPoly.GetPoint( 0 );
@@ -130,6 +134,41 @@ static void ImplCursorInvert( ImplCursorData* pData )
aPoint.X() += pData->mnPixSlant;
aPoly.SetPoint( aPoint, 1 );
}
+
+ // apply direction flag after slant to use the correct shape
+ if ( pData->mnDirection )
+ {
+ Point pAry[7];
+ int delta = 3*aRect.getWidth()+1;
+ if( pData->mnDirection == CURSOR_DIRECTION_LTR )
+ {
+ // left-to-right
+ pAry[0] = aPoly.GetPoint( 0 );
+ pAry[1] = aPoly.GetPoint( 1 );
+ pAry[2] = pAry[1];
+ pAry[2].X() += delta;
+ pAry[3] = pAry[1];
+ pAry[3].Y() += delta;
+ pAry[4] = aPoly.GetPoint( 2 );
+ pAry[5] = aPoly.GetPoint( 3 );
+ pAry[6] = aPoly.GetPoint( 4 );
+ }
+ else if( pData->mnDirection == CURSOR_DIRECTION_RTL )
+ {
+ // right-to-left
+ pAry[0] = aPoly.GetPoint( 0 );
+ pAry[1] = aPoly.GetPoint( 1 );
+ pAry[2] = aPoly.GetPoint( 2 );
+ pAry[3] = aPoly.GetPoint( 3 );
+ pAry[4] = pAry[0];
+ pAry[4].Y() += delta;
+ pAry[5] = pAry[0];
+ pAry[5].X() -= delta;
+ pAry[6] = aPoly.GetPoint( 4 );
+ }
+ aPoly = Polygon( 7, pAry);
+ }
+
if ( pData->mnOrientation )
aPoly.Rotate( pData->maPixRotOff, pData->mnOrientation );
pWindow->Invert( aPoly, nInvertStyle );
@@ -150,6 +189,7 @@ void Cursor::ImplDraw()
mpData->maPixSize = pWindow->LogicToPixel( maSize );
mpData->mnPixSlant = pWindow->LogicToPixel( Size( mnSlant, 0 ) ).Width();
mpData->mnOrientation = mnOrientation;
+ mpData->mnDirection = mnDirection;
long nOffsetY = pWindow->LogicToPixel( Size( 0, mnOffsetY ) ).Height();
// Position um den Offset korrigieren
@@ -280,6 +320,7 @@ Cursor::Cursor()
mnSlant = 0;
mnOffsetY = 0;
mnOrientation = 0;
+ mnDirection = 0;
mnStyle = 0;
mbVisible = FALSE;
}
@@ -294,6 +335,7 @@ Cursor::Cursor( const Cursor& rCursor ) :
mpWindow = NULL;
mnSlant = rCursor.mnSlant;
mnOrientation = rCursor.mnOrientation;
+ mnDirection = rCursor.mnDirection;
mnStyle = 0;
mbVisible = rCursor.mbVisible;
}
@@ -434,12 +476,24 @@ void Cursor::SetOrientation( short nNewOrientation )
// -----------------------------------------------------------------------
+void Cursor::SetDirection( unsigned char nNewDirection )
+{
+ if ( mnDirection != nNewDirection )
+ {
+ mnDirection = nNewDirection;
+ ImplNew();
+ }
+}
+
+// -----------------------------------------------------------------------
+
Cursor& Cursor::operator=( const Cursor& rCursor )
{
maPos = rCursor.maPos;
maSize = rCursor.maSize;
mnSlant = rCursor.mnSlant;
mnOrientation = rCursor.mnOrientation;
+ mnDirection = rCursor.mnDirection;
mbVisible = rCursor.mbVisible;
ImplNew();
@@ -454,6 +508,7 @@ BOOL Cursor::operator==( const Cursor& rCursor ) const
(maSize == rCursor.maSize) &&
(mnSlant == rCursor.mnSlant) &&
(mnOrientation == rCursor.mnOrientation) &&
+ (mnDirection == rCursor.mnDirection) &&
(mbVisible == rCursor.mbVisible) )
return TRUE;
else
diff --git a/vcl/source/window/decoview.cxx b/vcl/source/window/decoview.cxx
index 37b532df5fa0..f404effcccb6 100644
--- a/vcl/source/window/decoview.cxx
+++ b/vcl/source/window/decoview.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: decoview.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: cd $ $Date: 2003-01-09 12:01:32 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -551,27 +551,37 @@ static void ImplDrawSymbol( OutputDevice* pDev, const Rectangle& rRect,
break;
case SYMBOL_CHECKMARK:
{
- Point aPos1( rRect.Left(), rRect.Bottom() - rRect.GetHeight() / 3 );
- Point aPos2( rRect.Left() + rRect.GetWidth()/3, rRect.Bottom() );
- Point aPos3( rRect.TopRight() );
+ // #106953# never mirror checkmarks
+ BOOL bRTL = pDev->ImplHasMirroredGraphics() && pDev->IsRTLEnabled();
+ Point aPos1( bRTL ? rRect.Right() : rRect.Left(),
+ rRect.Bottom() - rRect.GetHeight() / 3 );
+ Point aPos2( bRTL ? rRect.Right() - rRect.GetWidth()/3 : rRect.Left() + rRect.GetWidth()/3,
+ rRect.Bottom() );
+ Point aPos3( bRTL ? rRect.TopLeft() : rRect.TopRight() );
Size aRectSize( 1, 2 );
long nStepsY = aPos2.Y()-aPos1.Y();
long nX = aPos1.X();
long nY = aPos1.Y();
for ( long n = 0; n <= nStepsY; n++ )
{
+ if( bRTL )
+ nX--;
pDev->DrawRect( Rectangle( Point( nX, nY++ ), aRectSize ) );
- nX++;
+ if( !bRTL )
+ nX++;
}
nStepsY = aPos2.Y()-aPos3.Y();
nX = aPos2.X();
nY = aPos2.Y();
for ( n = 0; n <= nStepsY; n++ )
{
+ if( bRTL )
+ if ( --nX < rRect.Left() )
+ break;
pDev->DrawRect( Rectangle( Point( nX, nY-- ), aRectSize ) );
- nX++;
- if ( nX > rRect.Right() )
- break;
+ if( !bRTL )
+ if ( ++nX > rRect.Right() )
+ break;
}
}
break;
@@ -862,6 +872,10 @@ static void ImplDrawDPILineRect( OutputDevice* pDev, Rectangle& rRect,
static void ImplDrawFrame( OutputDevice* pDev, Rectangle& rRect,
const StyleSettings& rStyleSettings, USHORT nStyle )
{
+ // mask menu style
+ BOOL bMenuStyle = nStyle & FRAME_DRAW_MENU;
+ nStyle &= ~FRAME_DRAW_MENU;
+
if ( (rStyleSettings.GetOptions() & STYLE_OPTION_MONO) ||
(pDev->GetOutDevType() == OUTDEV_PRINTER) )
nStyle |= FRAME_DRAW_MONO;
@@ -962,6 +976,8 @@ static void ImplDrawFrame( OutputDevice* pDev, Rectangle& rRect,
else
{
pDev->ImplDraw2ColorFrame( rRect,
+ bMenuStyle ?
+ rStyleSettings.GetMenuBorderColor() :
rStyleSettings.GetLightBorderColor(),
rStyleSettings.GetDarkShadowColor() );
}
@@ -979,9 +995,11 @@ static void ImplDrawFrame( OutputDevice* pDev, Rectangle& rRect,
}
else
{
- pDev->ImplDraw2ColorFrame( rRect,
- rStyleSettings.GetLightColor(),
- rStyleSettings.GetShadowColor() );
+ // flat menues have no shadow border
+ if( !bMenuStyle || !rStyleSettings.GetUseFlatMenues() )
+ pDev->ImplDraw2ColorFrame( rRect,
+ rStyleSettings.GetLightColor(),
+ rStyleSettings.GetShadowColor() );
}
rRect.Left()++;
diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx
index 02a3297f8ad7..9b5c523d2db1 100644
--- a/vcl/source/window/dialog.cxx
+++ b/vcl/source/window/dialog.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dialog.cxx,v $
*
- * $Revision: 1.24 $
+ * $Revision: 1.25 $
*
- * last change: $Author: pl $ $Date: 2002-12-10 16:50:31 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -138,6 +138,9 @@ static ByteString ImplGetDialogText( Dialog* pDialog )
static BOOL ImplIsMnemonicCtrl( Window* pWindow )
{
+ if( ! pWindow->GetSettings().GetStyleSettings().GetAutoMnemonic() )
+ return FALSE;
+
if ( (pWindow->GetType() == WINDOW_RADIOBUTTON) ||
(pWindow->GetType() == WINDOW_CHECKBOX) ||
(pWindow->GetType() == WINDOW_TRISTATEBOX) ||
@@ -193,7 +196,7 @@ void ImplWindowAutoMnemonic( Window* pWindow )
if ( (pParent->GetStyle() & (WB_DIALOGCONTROL | WB_NODIALOGCONTROL)) == WB_DIALOGCONTROL )
{
- pGetChild = pWindow->GetWindow( WINDOW_FIRSTCHILD );
+ pGetChild = pParent->GetWindow( WINDOW_FIRSTCHILD );
while ( pGetChild )
{
pChild = pGetChild->ImplGetWindow();
@@ -531,7 +534,7 @@ void Dialog::StateChanged( StateChangedType nType )
if ( nType == STATE_CHANGE_INITSHOW )
{
- if ( Application::IsAutoMnemonicEnabled() )
+ if ( GetSettings().GetStyleSettings().GetAutoMnemonic() )
ImplWindowAutoMnemonic( this );
//if ( IsDefaultPos() && !mbFrame )
@@ -695,9 +698,14 @@ short Dialog::Execute()
ImplDelData aDelData;
ImplAddDel( &aDelData );
pSVData->maAppData.mnModalMode++;
+ //DBG_ASSERT( mpDialogParent, "Dialog::Execute() - no Parent: cannot set modal count!" );
+ if( mpDialogParent )
+ mpDialogParent->ImplIncModalCount(); // #106303# support frame based modal count
while ( !aDelData.IsDelete() && mbInExecute )
Application::Yield();
pSVData->maAppData.mnModalMode--;
+ if( mpDialogParent )
+ mpDialogParent->ImplDecModalCount(); // #106303# support frame based modal count
if ( !aDelData.IsDelete() )
ImplRemoveDel( &aDelData );
#ifdef DBG_UTIL
diff --git a/vcl/source/window/dndevdis.cxx b/vcl/source/window/dndevdis.cxx
index 1e779ac0eb19..21dd58b8719e 100644
--- a/vcl/source/window/dndevdis.cxx
+++ b/vcl/source/window/dndevdis.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dndevdis.cxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: obr $ $Date: 2002-04-30 15:45:40 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:21 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -105,6 +105,10 @@ void SAL_CALL DNDEventDispatcher::drop( const DropTargetDropEvent& dtde )
// find the window that is toplevel for this coordinates
OClearableGuard aSolarGuard( Application::GetSolarMutex() );
+
+ // because those coordinates come from outside, they must be mirrored if RTL layout is active
+ if( Application::GetSettings().GetLayoutRTL() )
+ m_pTopWindow->ImplMirrorFramePos( location );
Window * pChildWindow = m_pTopWindow->ImplFindWindow( location );
if( NULL == pChildWindow )
@@ -113,6 +117,9 @@ void SAL_CALL DNDEventDispatcher::drop( const DropTargetDropEvent& dtde )
while( pChildWindow->ImplGetClientWindow() )
pChildWindow = pChildWindow->ImplGetClientWindow();
+ if( pChildWindow->ImplHasMirroredGraphics() && !pChildWindow->IsRTLEnabled() )
+ pChildWindow->ImplReMirror( location );
+
aSolarGuard.clear();
// handle the case that drop is in an other vcl window than the last dragOver
@@ -135,7 +142,6 @@ void SAL_CALL DNDEventDispatcher::drop( const DropTargetDropEvent& dtde )
if( nListeners == 0 ) {
OSL_TRACE( "rejecting drop due to missing listeners." );
dtde.Context->rejectDrop();
- dtde.Context->dropComplete(sal_False);
}
// this is a drop -> no further drag overs
@@ -155,6 +161,10 @@ void SAL_CALL DNDEventDispatcher::dragEnter( const DropTargetDragEnterEvent& dtd
// find the window that is toplevel for this coordinates
OClearableGuard aSolarGuard( Application::GetSolarMutex() );
+
+ // because those coordinates come from outside, they must be mirrored if RTL layout is active
+ if( Application::GetSettings().GetLayoutRTL() )
+ m_pTopWindow->ImplMirrorFramePos( location );
Window * pChildWindow = m_pTopWindow->ImplFindWindow( location );
if( NULL == pChildWindow )
@@ -163,6 +173,9 @@ void SAL_CALL DNDEventDispatcher::dragEnter( const DropTargetDragEnterEvent& dtd
while( pChildWindow->ImplGetClientWindow() )
pChildWindow = pChildWindow->ImplGetClientWindow();
+ if( pChildWindow->ImplHasMirroredGraphics() && !pChildWindow->IsRTLEnabled() )
+ pChildWindow->ImplReMirror( location );
+
aSolarGuard.clear();
// assume pointer write operation to be atomic
@@ -211,6 +224,10 @@ void SAL_CALL DNDEventDispatcher::dragOver( const DropTargetDragEvent& dtde )
// find the window that is toplevel for this coordinates
OClearableGuard aSolarGuard( Application::GetSolarMutex() );
+
+ // because those coordinates come from outside, they must be mirrored if RTL layout is active
+ if( Application::GetSettings().GetLayoutRTL() )
+ m_pTopWindow->ImplMirrorFramePos( location );
Window * pChildWindow = m_pTopWindow->ImplFindWindow( location );
if( NULL == pChildWindow )
@@ -219,6 +236,9 @@ void SAL_CALL DNDEventDispatcher::dragOver( const DropTargetDragEvent& dtde )
while( pChildWindow->ImplGetClientWindow() )
pChildWindow = pChildWindow->ImplGetClientWindow();
+ if( pChildWindow->ImplHasMirroredGraphics() && !pChildWindow->IsRTLEnabled() )
+ pChildWindow->ImplReMirror( location );
+
aSolarGuard.clear();
if( pChildWindow != m_pCurrentWindow )
@@ -262,6 +282,10 @@ void SAL_CALL DNDEventDispatcher::dropActionChanged( const DropTargetDragEvent&
// find the window that is toplevel for this coordinates
OClearableGuard aSolarGuard( Application::GetSolarMutex() );
+
+ // because those coordinates come from outside, they must be mirrored if RTL layout is active
+ if( Application::GetSettings().GetLayoutRTL() )
+ m_pTopWindow->ImplMirrorFramePos( location );
Window * pChildWindow = m_pTopWindow->ImplFindWindow( location );
if( NULL == pChildWindow )
@@ -270,6 +294,9 @@ void SAL_CALL DNDEventDispatcher::dropActionChanged( const DropTargetDragEvent&
while( pChildWindow->ImplGetClientWindow() )
pChildWindow = pChildWindow->ImplGetClientWindow();
+ if( pChildWindow->ImplHasMirroredGraphics() && !pChildWindow->IsRTLEnabled() )
+ pChildWindow->ImplReMirror( location );
+
aSolarGuard.clear();
if( pChildWindow != m_pCurrentWindow )
@@ -313,6 +340,10 @@ void SAL_CALL DNDEventDispatcher::dragGestureRecognized( const DragGestureEvent&
// find the window that is toplevel for this coordinates
OClearableGuard aSolarGuard( Application::GetSolarMutex() );
+
+ // because those coordinates come from outside, they must be mirrored if RTL layout is active
+ if( Application::GetSettings().GetLayoutRTL() )
+ m_pTopWindow->ImplMirrorFramePos( origin );
Window * pChildWindow = m_pTopWindow->ImplFindWindow( origin );
if( NULL == pChildWindow )
@@ -321,6 +352,9 @@ void SAL_CALL DNDEventDispatcher::dragGestureRecognized( const DragGestureEvent&
while( pChildWindow->ImplGetClientWindow() )
pChildWindow = pChildWindow->ImplGetClientWindow();
+ if( pChildWindow->ImplHasMirroredGraphics() && !pChildWindow->IsRTLEnabled() )
+ pChildWindow->ImplReMirror( origin );
+
aSolarGuard.clear();
fireDragGestureEvent( pChildWindow, dge.DragSource, dge.Event, origin, dge.DragAction );
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
index 3f4c00c6f6c5..954982e166ce 100644
--- a/vcl/source/window/dockwin.cxx
+++ b/vcl/source/window/dockwin.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dockwin.cxx,v $
*
- * $Revision: 1.12 $
+ * $Revision: 1.13 $
*
- * last change: $Author: pl $ $Date: 2002-12-11 17:44:54 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:21 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -654,11 +654,8 @@ long DockingWindow::Notify( NotifyEvent& rNEvt )
else if( rNEvt.GetType() == EVENT_KEYINPUT )
{
const KeyCode& rKey = rNEvt.GetKeyEvent()->GetKeyCode();
- if( rKey.GetCode() == KEY_F4 && rKey.GetModifier()
-#ifdef WNT
- && !rKey.IsMod2() // avoid Alt-F4 on Windows
-#endif
- )
+ if( rKey.GetCode() == KEY_F10 && rKey.GetModifier() &&
+ rKey.IsShift() && rKey.IsMod1() )
{
SetFloatingMode( !IsFloatingMode() );
return TRUE;
diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx
index 2b1597462498..5732e9b90df7 100644
--- a/vcl/source/window/floatwin.cxx
+++ b/vcl/source/window/floatwin.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: floatwin.cxx,v $
*
- * $Revision: 1.24 $
+ * $Revision: 1.25 $
*
- * last change: $Author: ssa $ $Date: 2002-12-09 11:07:25 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:22 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -388,7 +388,7 @@ Point FloatingWindow::ImplCalcPos( Window* pWindow,
if( ( (nArrangeAry[nArrangeIndex] == FLOATWIN_POPUPMODE_DOWN) ||
(nArrangeAry[nArrangeIndex] == FLOATWIN_POPUPMODE_RIGHT) )
&& ( nFlags & FLOATWIN_POPUPMODE_ALLMOUSEBUTTONCLOSE ) )
- aPos.X() += 1;
+ aPos.X() += 2;
// Evt. noch anpassen
if ( bBreak && !(nFlags & FLOATWIN_POPUPMODE_NOAUTOARRANGE) )
@@ -448,21 +448,28 @@ Point FloatingWindow::ImplCalcPos( Window* pWindow,
FloatingWindow* FloatingWindow::ImplFloatHitTest( Window* pReference, const Point& rPos, USHORT& rHitTest )
{
- // compare coordinates in absolute screen coordinates
FloatingWindow* pWin = this;
- Point aAbsolute( pReference->OutputToAbsoluteScreenPixel(
- pReference->ScreenToOutputPixel(rPos) ) );
- if( pReference->ImplHasMirroredGraphics() && !pReference->IsRTLEnabled() )
+ Point aAbsolute( rPos );
+
+ // compare coordinates in absolute screen coordinates
+ if( pReference->ImplHasMirroredGraphics() )
{
- // --- RTL --- re-mirror back to get device coordiantes
- pReference->ImplReMirror( aAbsolute );
+ if(!pReference->IsRTLEnabled() )
+ // --- RTL --- re-mirror back to get device coordiantes
+ pReference->ImplReMirror( aAbsolute );
+
+ Rectangle aRect( pReference->ScreenToOutputPixel(aAbsolute), Size(1,1) ) ;
+ aRect = pReference->ImplOutputToUnmirroredAbsoluteScreenPixel( aRect );
+ aAbsolute = aRect.TopLeft();
}
+ else
+ aAbsolute = Point( pReference->OutputToAbsoluteScreenPixel(
+ pReference->ScreenToOutputPixel(rPos) ) );
do
{
- //Rectangle devRect( OutputToAbsoluteScreenPixel( ScreenToOutputPixel(pWin->GetPosPixel()) ), pWin->GetSizePixel() ) ;
- Rectangle devRect( pWin->GetWindowExtentsRelative( NULL ) );
+ Rectangle devRect( pWin->ImplOutputToUnmirroredAbsoluteScreenPixel( Rectangle( pWin->ScreenToOutputPixel(pWin->GetPosPixel()), pWin->GetSizePixel()) ) ) ;
if ( devRect.IsInside( aAbsolute ) )
{
rHitTest = IMPL_FLOATWIN_HITTEST_WINDOW;
diff --git a/vcl/source/window/introwin.cxx b/vcl/source/window/introwin.cxx
new file mode 100644
index 000000000000..9a248117aab6
--- /dev/null
+++ b/vcl/source/window/introwin.cxx
@@ -0,0 +1,132 @@
+/*************************************************************************
+ *
+ * $RCSfile: introwin.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:22 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define _SV_INTROWIN_CXX
+
+#ifndef REMOTE_APPSERVER
+#ifndef _SV_SVSYS_HXX
+#include <svsys.h>
+#endif
+#ifndef _SV_SALFRAME_HXX
+#include <salframe.hxx>
+#endif
+#else
+#include <rmwindow.hxx>
+#endif
+
+#ifndef _DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _SV_RC_H
+#include <rc.h>
+#endif
+#ifndef _SV_SVDATA_HXX
+#include <svdata.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <svapp.hxx>
+#endif
+#ifndef _SV_BRDWIN_HXX
+#include <brdwin.hxx>
+#endif
+#ifndef _SV_WINDOW_H
+#include <window.h>
+#endif
+#ifndef _SV_WRKWIN_HXX
+#include <wrkwin.hxx>
+#endif
+#ifndef _SV_OPENGL_HXX
+#include <opengl.hxx>
+#endif
+
+#include <introwin.hxx>
+
+#pragma hdrstop
+
+
+// =======================================================================
+
+void IntroWindow::ImplInitData()
+{
+ ImplSVData* pSVData = ImplGetSVData();
+ pSVData->mpIntroWindow = this;
+}
+
+// -----------------------------------------------------------------------
+
+IntroWindow::IntroWindow( ) :
+ WorkWindow( WINDOW_INTROWINDOW )
+{
+ ImplInitData();
+ WorkWindow::ImplInit( 0, WB_INTROWIN, NULL );
+}
+
+// -----------------------------------------------------------------------
+
+IntroWindow::~IntroWindow()
+{
+ ImplSVData* pSVData = ImplGetSVData();
+ if ( pSVData->mpIntroWindow == this )
+ pSVData->mpIntroWindow = NULL;
+}
+
+
diff --git a/vcl/source/window/makefile.mk b/vcl/source/window/makefile.mk
index 1cc1498a676c..8bee810368c8 100644
--- a/vcl/source/window/makefile.mk
+++ b/vcl/source/window/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.9 $
+# $Revision: 1.10 $
#
-# last change: $Author: obr $ $Date: 2002-11-21 08:18:50 $
+# last change: $Author: hr $ $Date: 2003-03-27 17:58:22 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -105,6 +105,7 @@ SLOFILES= $(SLO)$/accel.obj \
$(SLO)$/window2.obj \
$(SLO)$/winproc.obj \
$(SLO)$/wrkwin.obj \
+ $(SLO)$/introwin.obj \
$(SLO)$/scrwnd.obj \
$(SLO)$/dndevdis.obj \
$(SLO)$/dndlcon.obj \
@@ -117,6 +118,7 @@ EXCEPTIONSFILES= \
$(SLO)$/window.obj \
$(SLO)$/winproc.obj \
$(SLO)$/wrkwin.obj \
+ $(SLO)$/introwin.obj \
$(SLO)$/accel.obj \
$(SLO)$/cursor.obj \
$(SLO)$/dlgctrl.obj \
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index a164a6cde4af..6b8885c4e557 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: menu.cxx,v $
*
- * $Revision: 1.89 $
+ * $Revision: 1.90 $
*
- * last change: $Author: tbe $ $Date: 2002-12-12 18:04:56 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:22 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -1864,20 +1864,24 @@ Size Menu::ImplCalcSize( Window* pWin )
Size aMaxImgSz;
long nMaxTextWidth = 0;
long nMaxAccWidth = 0;
+ long nMinMenuItemHeight = nFontHeight;
- static long nMinMenuItemHeight = 16;
-
- for ( USHORT i = (USHORT)pItemList->Count(); i; )
+ const StyleSettings& rSettings = pWin->GetSettings().GetStyleSettings();
+ if ( rSettings.GetUseImagesInMenus() )
{
- MenuItemData* pData = pItemList->GetDataFromPos( --i );
- if ( ImplIsVisible( i ) && ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ))
+ nMinMenuItemHeight = 16;
+ for ( USHORT i = (USHORT)pItemList->Count(); i; )
{
- Size aImgSz = pData->aImage.GetSizePixel();
- if ( aImgSz.Height() > aMaxImgSz.Height() )
- aMaxImgSz.Height() = aImgSz.Height();
- if ( aImgSz.Height() > nMinMenuItemHeight )
- nMinMenuItemHeight = aImgSz.Height();
- break;
+ MenuItemData* pData = pItemList->GetDataFromPos( --i );
+ if ( ImplIsVisible( i ) && ( pData->eType == MENUITEM_IMAGE ) || ( pData->eType == MENUITEM_STRINGIMAGE ))
+ {
+ Size aImgSz = pData->aImage.GetSizePixel();
+ if ( aImgSz.Height() > aMaxImgSz.Height() )
+ aMaxImgSz.Height() = aImgSz.Height();
+ if ( aImgSz.Height() > nMinMenuItemHeight )
+ nMinMenuItemHeight = aImgSz.Height();
+ break;
+ }
}
}
@@ -1918,16 +1922,19 @@ Size Menu::ImplCalcSize( Window* pWin )
nMaxTextWidth = nTextWidth;
long nTextHeight = pWin->GetTextHeight();
- pData->aSz.Height() = std::max( std::max( nTextHeight, pData->aSz.Height() ), nMinMenuItemHeight );
-
// if ( nTextHeight > pData->aSz.Height() )
// pData->aSz.Height() = nTextHeight;
if ( bIsMenuBar )
{
+ if ( nTextHeight > pData->aSz.Height() )
+ pData->aSz.Height() = nTextHeight;
+
pData->aSz.Width() = nTextWidth + 4*nExtra;
aSz.Width() += pData->aSz.Width();
}
+ else
+ pData->aSz.Height() = std::max( std::max( nTextHeight, pData->aSz.Height() ), nMinMenuItemHeight );
}
// Accel
@@ -1961,11 +1968,12 @@ Size Menu::ImplCalcSize( Window* pWin )
if ( !bIsMenuBar )
{
+ USHORT gfxExtra = std::max( nExtra, 7L ); // #107710# increase space between checkmarks/images/text
nCheckPos = (USHORT)nExtra;
- nImagePos = (USHORT)(nCheckPos + nFontHeight/2 + nExtra );
+ nImagePos = (USHORT)(nCheckPos + nFontHeight/2 + gfxExtra );
nTextPos = (USHORT)(nImagePos+aMaxImgSz.Width());
if ( aMaxImgSz.Width() )
- nTextPos += (USHORT)nExtra;
+ nTextPos += gfxExtra;
aSz.Width() = nTextPos + nMaxTextWidth + nExtra + nMaxAccWidth;
aSz.Width() += 10*nExtra; // etwas mehr...
@@ -2016,6 +2024,8 @@ void Menu::ImplPaint( Window* pWin, USHORT nBorder, long nStartY, MenuItemData*
if ( aPos.Y() >= 0 )
{
long nTextOffsetY = ((pData->aSz.Height()-nFontHeight)/2);
+ if( bIsMenuBar )
+ nTextOffsetY += (aOutSz.Height()-pData->aSz.Height()) / 2;
USHORT nTextStyle = 0;
USHORT nSymbolStyle = 0;
USHORT nImageStyle = 0;
@@ -2034,12 +2044,12 @@ void Menu::ImplPaint( Window* pWin, USHORT nBorder, long nStartY, MenuItemData*
if ( !bLayout && !bIsMenuBar && ( pData->eType == MENUITEM_SEPARATOR ) )
{
aTmpPos.Y() = aPos.Y() + ((pData->aSz.Height()-2)/2);
- aTmpPos.X() = aPos.X() + 1;
+ aTmpPos.X() = aPos.X() + 2;
pWin->SetLineColor( rSettings.GetShadowColor() );
- pWin->DrawLine( aTmpPos, Point( aOutSz.Width() - 1, aTmpPos.Y() ) );
+ pWin->DrawLine( aTmpPos, Point( aOutSz.Width() - 3, aTmpPos.Y() ) );
aTmpPos.Y()++;
pWin->SetLineColor( rSettings.GetLightColor() );
- pWin->DrawLine( aTmpPos, Point( aOutSz.Width() - 1, aTmpPos.Y() ) );
+ pWin->DrawLine( aTmpPos, Point( aOutSz.Width() - 3, aTmpPos.Y() ) );
pWin->SetLineColor();
}
@@ -2512,6 +2522,7 @@ Window* MenuBar::ImplCreate( Window* pParent, Window* pWindow, MenuBar* pMenu )
pMenu->pWindow = pWindow;
((MenuBarWindow*)pWindow)->SetMenu( pMenu );
long nHeight = pMenu->ImplCalcSize( pWindow ).Height();
+ if( nHeight < 20 ) nHeight = 20; // leave enough space for closer
pWindow->SetPosSizePixel( 0, 0, 0, nHeight, WINDOW_POSSIZE_HEIGHT );
return pWindow;
}
@@ -2741,6 +2752,7 @@ USHORT PopupMenu::ImplExecute( Window* pW, const Rectangle& rRect, ULONG nPopupM
}
MenuFloatingWindow* pWin = new MenuFloatingWindow( this, pW, nStyle | WB_SYSTEMWINDOW );
+ pWin->SetBorderStyle( pWin->GetBorderStyle() | WINDOW_BORDER_MENU );
pWindow = pWin;
Size aSz = ImplCalcSize( pWin );
@@ -4169,7 +4181,10 @@ void MenuBarWindow::ImplCreatePopup( BOOL bPreSelectFirst )
// Im Vollbild-Modus hat die MenuBar ggf. die Hoehe 0:
// Nicht immer einfach die Window-Hoehe nehmen, weil ItemHeight < WindowHeight.
if ( GetSizePixel().Height() )
- aItemBottomRight.Y() += pData->aSz.Height();
+ {
+ // #107747# give menuitems the height of the menubar
+ aItemBottomRight.Y() += GetOutputSizePixel().Height()-1;
+ }
// ImplExecute ist doch nicht modal...
// #99071# do not grab the focus, otherwise it will be restored to the menubar
@@ -4355,7 +4370,8 @@ void MenuBarWindow::HighlightItem( USHORT nPos, BOOL bHighlight )
else
SetFillColor( GetSettings().GetStyleSettings().GetMenuBarColor() );
- DrawRect( Rectangle( Point( nX, 1 ), Size( pData->aSz.Width(), pData->aSz.Height()-2 ) ) );
+ // #107747# give menuitems the height of the menubar
+ DrawRect( Rectangle( Point( nX, 1 ), Size( pData->aSz.Width(), GetOutputSizePixel().Height()-2 ) ) );
pMenu->ImplPaint( this, 0, 0, pData, bHighlight );
}
return;
@@ -4376,7 +4392,8 @@ Rectangle MenuBarWindow::ImplGetItemRect( USHORT nPos )
if ( n == nPos )
{
if ( pData->eType != MENUITEM_SEPARATOR )
- aRect = Rectangle( Point( nX, 1 ), Size( pData->aSz.Width(), pData->aSz.Height()-2 ) );
+ // #107747# give menuitems the height of the menubar
+ aRect = Rectangle( Point( nX, 1 ), Size( pData->aSz.Width(), GetOutputSizePixel().Height()-2 ) );
break;
}
@@ -4681,6 +4698,7 @@ void MenuBarWindow::DataChanged( const DataChangedEvent& rDCEvt )
ImplInitMenuWindow( this, TRUE, TRUE );
// Falls sich der Font geaendert hat.
long nHeight = pMenu->ImplCalcSize( this ).Height();
+ if( nHeight < 20 ) nHeight = 20; // leave enough space for closer
SetPosSizePixel( 0, 0, 0, nHeight, WINDOW_POSSIZE_HEIGHT );
GetParent()->Resize();
Invalidate();
diff --git a/vcl/source/window/splitwin.cxx b/vcl/source/window/splitwin.cxx
index 184d556c054b..59b7ba919b2e 100644
--- a/vcl/source/window/splitwin.cxx
+++ b/vcl/source/window/splitwin.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: splitwin.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: pl $ $Date: 2002-08-28 09:13:50 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -415,7 +415,7 @@ static void ImplDeleteSet( ImplSplitSet* pSet )
if ( pSet->mpBitmap )
delete pSet->mpBitmap;
- delete pItems;
+ delete [] pItems;
delete pSet;
}
@@ -1476,6 +1476,73 @@ void SplitWindow::ImplSetWindowSize( long nDelta )
// -----------------------------------------------------------------------
+Size SplitWindow::CalcLayoutSizePixel( const Size& aNewSize )
+{
+ Size aSize( aNewSize );
+ long nSplitSize = mpMainSet->mnSplitSize-2;
+
+ if ( mbAutoHide || mbFadeOut )
+ nSplitSize += SPLITWIN_SPLITSIZEEX;
+
+ // Wenn Fenster sizeable ist, wird die groesse automatisch nach
+ // dem MainSet festgelegt, wenn kein relatives Fenster enthalten
+ // ist
+ if ( mnWinStyle & WB_SIZEABLE )
+ {
+ long nCurSize;
+ long nCalcSize = 0;
+ USHORT i;
+
+ for ( i = 0; i < mpMainSet->mnItems; i++ )
+ {
+ if ( mpMainSet->mpItems[i].mnBits & (SWIB_RELATIVESIZE | SWIB_PERCENTSIZE) )
+ break;
+ else
+ nCalcSize += mpMainSet->mpItems[i].mnSize;
+ }
+
+ if ( i == mpMainSet->mnItems )
+ {
+ long nDelta = 0;
+ Point aPos = GetPosPixel();
+
+ if ( mbHorz )
+ nCurSize = aNewSize.Height()-mnTopBorder-mnBottomBorder;
+ else
+ nCurSize = aNewSize.Width()-mnLeftBorder-mnRightBorder;
+ nCurSize -= nSplitSize;
+ nCurSize -= (mpMainSet->mnItems-1)*mpMainSet->mnSplitSize;
+
+ nDelta = nCalcSize-nCurSize;
+ if ( !nDelta )
+ return aSize;
+
+ if ( meAlign == WINDOWALIGN_TOP )
+ {
+ aSize.Height() += nDelta;
+ }
+ else if ( meAlign == WINDOWALIGN_BOTTOM )
+ {
+ aPos.Y() -= nDelta;
+ aSize.Height() += nDelta;
+ }
+ else if ( meAlign == WINDOWALIGN_LEFT )
+ {
+ aSize.Width() += nDelta;
+ }
+ else // meAlign == WINDOWALIGN_RIGHT
+ {
+ aPos.X() -= nDelta;
+ aSize.Width() += nDelta;
+ }
+ }
+ }
+
+ return aSize;
+}
+
+// -----------------------------------------------------------------------
+
void SplitWindow::ImplCalcLayout()
{
if ( !mbCalc || !mbRecalc || !mpMainSet->mpItems )
@@ -2641,7 +2708,7 @@ void SplitWindow::InsertItem( USHORT nId, Window* pWindow, long nSize,
memcpy( pNewItems, pSet->mpItems, sizeof( ImplSplitItem )*nPos );
if ( nPos < pSet->mnItems )
memcpy( pNewItems+nPos+1, pSet->mpItems+nPos, sizeof( ImplSplitItem )*(pSet->mnItems-nPos) );
- delete pSet->mpItems;
+ delete[] pSet->mpItems;
pSet->mpItems = pNewItems;
pSet->mnItems++;
pSet->mbCalcPix = TRUE;
@@ -2740,7 +2807,7 @@ void SplitWindow::MoveItem( USHORT nId, USHORT nNewPos, USHORT nNewSetId )
}
else
{
- delete pSet->mpItems;
+ delete[] pSet->mpItems;
pSet->mpItems = NULL;
}
ImplSplitItem* pNewItems = new ImplSplitItem[pNewSet->mnItems+1];
@@ -2751,7 +2818,7 @@ void SplitWindow::MoveItem( USHORT nId, USHORT nNewPos, USHORT nNewSetId )
memcpy( pNewItems+nNewPos+1, pNewSet->mpItems+nNewPos,
sizeof( ImplSplitItem )*(pNewSet->mnItems-nNewPos) );
}
- delete pNewSet->mpItems;
+ delete[] pNewSet->mpItems;
pNewSet->mpItems = pNewItems;
pNewSet->mnItems++;
pNewSet->mbCalcPix = TRUE;
@@ -2790,7 +2857,7 @@ void SplitWindow::RemoveItem( USHORT nId, BOOL bHide )
}
else
{
- delete pSet->mpItems;
+ delete[] pSet->mpItems;
pSet->mpItems = NULL;
}
diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx
index ec4b6306ac1b..d182c10bdb29 100644
--- a/vcl/source/window/status.cxx
+++ b/vcl/source/window/status.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: status.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: cd $ $Date: 2002-11-20 08:43:39 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -117,6 +117,7 @@ struct ImplStatusItem
ULONG mnHelpId;
void* mpUserData;
BOOL mbVisible;
+ XubString maAccessibleName;
};
DECLARE_LIST( ImplStatusItemList, ImplStatusItem* );
@@ -489,6 +490,9 @@ void StatusBar::ImplDrawItem( BOOL bOffScreen, USHORT nPos, BOOL bDrawText, BOOL
DecorationView aDecoView( this );
aDecoView.DrawFrame( aRect, nStyle );
}
+
+ if ( !ImplIsRecordLayout() )
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_DRAWITEM, (void*) pItem->mnId );
}
// -----------------------------------------------------------------------
@@ -904,6 +908,8 @@ void StatusBar::InsertItem( USHORT nItemId, ULONG nWidth,
mbFormat = TRUE;
if ( ImplIsItemUpdate() )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_ITEMADDED, (void*) nItemId );
}
// -----------------------------------------------------------------------
@@ -919,6 +925,8 @@ void StatusBar::RemoveItem( USHORT nItemId )
mbFormat = TRUE;
if ( ImplIsItemUpdate() )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_ITEMREMOVED, (void*) nItemId );
}
}
@@ -938,6 +946,8 @@ void StatusBar::ShowItem( USHORT nItemId )
mbFormat = TRUE;
if ( ImplIsItemUpdate() )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_SHOWITEM, (void*) nItemId );
}
}
}
@@ -958,6 +968,8 @@ void StatusBar::HideItem( USHORT nItemId )
mbFormat = TRUE;
if ( ImplIsItemUpdate() )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_HIDEITEM, (void*) nItemId );
}
}
}
@@ -983,6 +995,8 @@ void StatusBar::ShowItems()
mbVisibleItems = TRUE;
if ( !mbProgressMode )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_SHOWALLITEMS );
}
}
@@ -995,6 +1009,8 @@ void StatusBar::HideItems()
mbVisibleItems = FALSE;
if ( !mbProgressMode )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_HIDEALLITEMS );
}
}
@@ -1046,6 +1062,8 @@ void StatusBar::Clear()
mbFormat = TRUE;
if ( ImplIsItemUpdate() )
Invalidate();
+
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_ALLITEMSREMOVED );
}
// -----------------------------------------------------------------------
@@ -1469,3 +1487,36 @@ Size StatusBar::CalcWindowSizePixel() const
return Size( nCalcWidth, nCalcHeight );
}
+
+
+// -----------------------------------------------------------------------
+
+void StatusBar::SetAccessibleName( USHORT nItemId, const XubString& rName )
+{
+ USHORT nPos = GetItemPos( nItemId );
+
+ if ( nPos != STATUSBAR_ITEM_NOTFOUND )
+ {
+ ImplStatusItem* pItem = mpItemList->GetObject( nPos );
+
+ if ( pItem->maAccessibleName != rName )
+ {
+ pItem->maAccessibleName = rName;
+ ImplCallEventListeners( VCLEVENT_STATUSBAR_NAMECHANGED, (void*) pItem->mnId );
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+const XubString& StatusBar::GetAccessibleName( USHORT nItemId ) const
+{
+ USHORT nPos = GetItemPos( nItemId );
+
+ if ( nPos != STATUSBAR_ITEM_NOTFOUND )
+ return mpItemList->GetObject( nPos )->maAccessibleName;
+ else
+ return ImplGetSVEmptyStr();
+}
+
+// -----------------------------------------------------------------------
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 453192079c07..5482918e0f7d 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: toolbox.cxx,v $
*
- * $Revision: 1.57 $
+ * $Revision: 1.58 $
*
- * last change: $Author: ssa $ $Date: 2002-12-06 12:57:57 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -619,7 +619,6 @@ static void ImplCalcFloatSizes( ToolBox* pThis )
// min. Groesse berechnen
long nCalcSize = pThis->mnItemWidth;
- ImplToolItem* pItem;
std::vector< ImplToolItem >::const_iterator it;
it = pThis->mpData->m_aItems.begin();
@@ -1657,7 +1656,7 @@ ToolBox::~ToolBox()
// FloatSizeAry gegebenenfalls loeschen
if ( mpFloatSizeAry )
- delete mpFloatSizeAry;
+ delete[] mpFloatSizeAry;
// Wenn keine ToolBox-Referenzen mehr auf die Listen bestehen, dann
// Listen mit wegloeschen
@@ -2076,7 +2075,7 @@ void ToolBox::ImplFormat( BOOL bResize )
// FloatSizeAry gegebenenfalls loeschen
if ( mpFloatSizeAry )
{
- delete mpFloatSizeAry;
+ delete[] mpFloatSizeAry;
mpFloatSizeAry = NULL;
}
@@ -3548,6 +3547,8 @@ void ToolBox::MouseMove( const MouseEvent& rMEvt )
Window *pWin = Application::GetFocusWindow();
if( pWin && pWin->mbToolBox && pWin != this )
bDrawHotSpot = FALSE;
+ else if( !HasFocus() && HasChildPathFocus() ) // focus is in our childwindow: no highlight
+ bDrawHotSpot = FALSE;
/*
else
if( pWin && !pWin->mbToolBox )
@@ -3714,7 +3715,7 @@ void ToolBox::MouseMove( const MouseEvent& rMEvt )
}
// only clear highlight when focus is not in toolbar
- if ( bClearHigh && mnHighItemId && !HasFocus() )
+ if ( bClearHigh && mnHighItemId && !HasChildPathFocus() )
{
USHORT nClearPos = GetItemPos( mnHighItemId );
if ( nClearPos != TOOLBOX_ITEM_NOTFOUND )
@@ -4757,7 +4758,15 @@ BOOL ToolBox::ImplActivateItem( KeyCode aKeyCode )
mbDummy2_KeyEvt = TRUE;
Activate();
Click();
+
+ // #107776# we might be destroyed in the selecthandler
+ ImplDelData aDelData;
+ ImplAddDel( &aDelData );
Select();
+ if ( aDelData.IsDelete() )
+ return bRet;
+ ImplRemoveDel( &aDelData );
+
Deactivate();
mbDummy2_KeyEvt = FALSE;
mnMouseModifier = 0;
@@ -4831,6 +4840,11 @@ void ToolBox::KeyInput( const KeyEvent& rKEvt )
USHORT nCode = aKeyCode.GetCode();
BOOL bParentIsDialog = ( ( ImplGetParent()->GetStyle() & (WB_DIALOGCONTROL | WB_NODIALOGCONTROL) ) == WB_DIALOGCONTROL );
BOOL bForwardKey = FALSE;
+
+ // #107776# we might be destroyed in the keyhandler
+ ImplDelData aDelData;
+ ImplAddDel( &aDelData );
+
switch ( nCode )
{
case KEY_UP:
@@ -4981,13 +4995,26 @@ void ToolBox::KeyInput( const KeyEvent& rKEvt )
{
// do nothing to avoid key presses going into the document
// while the toolbox has the focus
- // just forward function and special keys
+ // just forward function and special keys and combinations with Alt-key
USHORT aKeyGroup = aKeyCode.GetGroup();
- if( aKeyGroup == KEYGROUP_FKEYS || aKeyGroup == KEYGROUP_MISC )
+ if( aKeyGroup == KEYGROUP_FKEYS || aKeyGroup == KEYGROUP_MISC || aKeyCode.IsMod2() )
bForwardKey = TRUE;
}
}
+ if ( aDelData.IsDelete() )
+ return;
+ ImplRemoveDel( &aDelData );
+
+ // #107251# move focus away if this toolbox was disabled during keyinput
+ if( HasFocus() && mbInputDisabled && (ImplGetParent()->GetStyle() & (WB_DIALOGCONTROL | WB_NODIALOGCONTROL) ) == WB_DIALOGCONTROL)
+ {
+ USHORT n = 0;
+ Window *pFocusControl = ImplGetParent()->ImplGetDlgWindow( n, DLGWINDOW_FIRST );
+ if ( pFocusControl && pFocusControl != this )
+ pFocusControl->ImplControlFocus( GETFOCUS_INIT );
+ }
+
mnKeyModifier = 0;
if( bForwardKey )
@@ -5260,7 +5287,11 @@ void ToolBox::ImplShowFocus()
{
ImplToolItem* pItem = ImplGetItem( mnHighItemId );
if( pItem->mpWindow )
- DrawSelectionBackground( pItem->maRect, 2, FALSE, TRUE, pItem->mpWindow ? TRUE : FALSE );
+ {
+ Window *pWin = pItem->mpWindow->mpBorderWindow ? pItem->mpWindow->mpBorderWindow : pItem->mpWindow;
+ pWin->mbDrawSelectionBackground = TRUE;
+ pWin->Invalidate( 0 );
+ }
}
}
@@ -5273,14 +5304,9 @@ void ToolBox::ImplHideFocus()
ImplToolItem* pItem = ImplGetItem( mnHighItemId );
if( pItem->mpWindow )
{
- Rectangle aRect( pItem->maRect );
- // increase rect a little to get rid of selection border
- // see DrawSelectionBackground(...)
- aRect.nLeft -= 1;
- aRect.nTop -= 1;
- aRect.nRight += 1;
- aRect.nBottom += 1;
- Invalidate( aRect, 0);
+ Window *pWin = pItem->mpWindow->mpBorderWindow ? pItem->mpWindow->mpBorderWindow : pItem->mpWindow;
+ pWin->mbDrawSelectionBackground = FALSE;
+ pWin->Invalidate( 0 );
}
}
}
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index c2111b545db2..e97b3b94d127 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: window.cxx,v $
*
- * $Revision: 1.166 $
+ * $Revision: 1.167 $
*
- * last change: $Author: ssa $ $Date: 2002-12-13 09:55:57 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -208,6 +208,7 @@
#include <unowrap.hxx>
#include <dndlcon.hxx>
#include <dndevdis.hxx>
+#include <impbmpconv.hxx>
#ifndef _UNOTOOLS_CONFIGNODE_HXX_
#include <unotools/confignode.hxx>
@@ -399,44 +400,51 @@ void Window::ImplUpdateGlobalSettings( AllSettings& rSettings, BOOL bCallHdl )
// to avoid UI scaling due to large fonts
StyleSettings aStyleSettings = rSettings.GetStyleSettings();
- Font aFont = aStyleSettings.GetAppFont();
- aFont.SetHeight( 8 );
+ // #107886# allow scaling of the UI if the menu font is
+ // slightly larger/smaller than the 8pt default
+ int defFontheight = 8;
+ Font aFont = aStyleSettings.GetMenuFont();
+ if( abs(aFont.GetHeight() - defFontheight) == 1 )
+ defFontheight = aFont.GetHeight();
+
+ aFont = aStyleSettings.GetAppFont();
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetAppFont( aFont );
//aFont = aStyleSettings.GetHelpFont();
- //aFont.SetHeight( 8 );
+ //aFont.SetHeight( defFontheight );
//aStyleSettings.SetHelpFont( aFont );
aFont = aStyleSettings.GetTitleFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetTitleFont( aFont );
aFont = aStyleSettings.GetFloatTitleFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetFloatTitleFont( aFont );
//aFont = aStyleSettings.GetMenuFont();
- //aFont.SetHeight( 8 );
+ //aFont.SetHeight( defFontheight );
//aStyleSettings.SetMenuFont( aFont );
aFont = aStyleSettings.GetToolFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetToolFont( aFont );
aFont = aStyleSettings.GetLabelFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetLabelFont( aFont );
aFont = aStyleSettings.GetInfoFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetInfoFont( aFont );
aFont = aStyleSettings.GetRadioCheckFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetRadioCheckFont( aFont );
aFont = aStyleSettings.GetPushButtonFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetPushButtonFont( aFont );
aFont = aStyleSettings.GetFieldFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetFieldFont( aFont );
aFont = aStyleSettings.GetIconFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetIconFont( aFont );
aFont = aStyleSettings.GetGroupFont();
- aFont.SetHeight( 8 );
+ aFont.SetHeight( defFontheight );
aStyleSettings.SetGroupFont( aFont );
rSettings.SetStyleSettings( aStyleSettings );
@@ -458,8 +466,8 @@ void Window::ImplUpdateGlobalSettings( AllSettings& rSettings, BOOL bCallHdl )
}
if( bAutoHCMode )
{
- if( rSettings.GetStyleSettings().GetFaceColor().GetLuminance() < 8 ||
- rSettings.GetStyleSettings().GetWindowColor().GetLuminance() < 8 )
+ if( rSettings.GetStyleSettings().GetFaceColor().IsDark()
+ || rSettings.GetStyleSettings().GetWindowColor().IsDark() )
{
StyleSettings aStyleSettings = rSettings.GetStyleSettings();
aStyleSettings.SetHighContrastMode( TRUE );
@@ -652,7 +660,7 @@ void Window::ImplInitData( WindowType nType )
mbCreatedWithToolkit = FALSE;
mbSuppressAccessibilityEvents = FALSE; // TRUE: do not send any accessibility events
mbEnableRTL = TRUE; // TRUE: this outdev will be mirrored if RTL window layout (UI mirroring) is globally active
-
+ mbDrawSelectionBackground = FALSE; // TRUE: draws transparent window background to indicate (toolbox) selection
#ifdef REMOTE_APPSERVER
mpRmEvents = NULL;
@@ -742,6 +750,11 @@ void Window::ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::
else if( mbFloatWin )
nFrameStyle |= SAL_FRAME_STYLE_TOOLWINDOW;
+ if( nStyle & WB_INTROWIN )
+ nFrameStyle |= SAL_FRAME_STYLE_INTRO;
+
+ if( nStyle & WB_NOSHADOW )
+ nFrameStyle |= SAL_FRAME_STYLE_NOSHADOW;
SalFrame* pParentFrame = NULL;
if ( pParent )
@@ -805,6 +818,7 @@ void Window::ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::
mpFrameData->mnFirstMouseY = -1;
mpFrameData->mnLastMouseWinX = -1;
mpFrameData->mnLastMouseWinY = -1;
+ mpFrameData->mnModalMode = 0;
mpFrameData->mnMouseDownTime = 0;
mpFrameData->mnClickCount = 0;
mpFrameData->mnFirstMouseCode = 0;
@@ -899,25 +913,6 @@ void Window::ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::
// the correct size before we display the window
if ( nStyle & (WB_MOVEABLE | WB_SIZEABLE | WB_APP) )
mpFrame->GetClientSize( mnOutWidth, mnOutHeight );
-
-#ifndef REMOTE_APPSERVER
- if( Application::GetSettings().GetMiscSettings().GetEnableATToolSupport() )
- {
- // instanciate access bridge service
- if( !pSVData->mxAccessBridge.is() )
- {
- if( !ImplInitAccessBridge() )
- {
- AllSettings aSettings = Application::GetSettings();
- MiscSettings aMisc = aSettings.GetMiscSettings();
- aMisc.SetEnableATToolSupport( FALSE );
- aSettings.SetMiscSettings( aMisc );
- Application::SetSettings( aSettings );
- }
- }
- }
-#endif
-
}
else
{
@@ -2332,6 +2327,7 @@ void Window::ImplCallPaint( const Region* pRegion, USHORT nPaintFlags )
nPaintFlags = mnPaintFlags & ~(IMPL_PAINT_PAINT);
Region* pChildRegion = NULL;
+ Rectangle aSelectionRect;
if ( mnPaintFlags & IMPL_PAINT_PAINT )
{
Region* pWinChildClipRegion = ImplGetWinChildClipRegion();
@@ -2392,6 +2388,10 @@ void Window::ImplCallPaint( const Region* pRegion, USHORT nPaintFlags )
Erase();
}
+ // #98943# trigger drawing of toolbox selection after all childern are painted
+ if( mbDrawSelectionBackground )
+ aSelectionRect = aPaintRect;
+
Paint( aPaintRect );
if ( mpWinData )
@@ -2427,6 +2427,10 @@ void Window::ImplCallPaint( const Region* pRegion, USHORT nPaintFlags )
*/
InvertTracking( *(mpWinData->mpTrackRect), mpWinData->mnTrackFlags );
+ // #98943# draw toolbox selection
+ if( !aSelectionRect.IsEmpty() )
+ DrawSelectionBackground( aSelectionRect, 2, FALSE, TRUE, FALSE );
+
if ( pChildRegion )
delete pChildRegion;
}
@@ -3221,7 +3225,7 @@ void Window::ImplPosSizeWindow( long nX, long nY,
if( mpParent && !mpParent->mbFrame && mpParent->ImplHasMirroredGraphics() && !mpParent->IsRTLEnabled() )
{
// --- RTL --- (re-mirror at parent window)
- nX = mpParent->mnOutWidth - mnOutWidth - 1 - nX;
+ nX = mpParent->mnOutWidth - mnOutWidth - nX;
}
}
}
@@ -3557,6 +3561,8 @@ void Window::ImplToTop( USHORT nFlags )
nSysFlags = SAL_FRAME_TOTOP_RESTOREWHENMIN;
if ( nFlags & TOTOP_FOREGROUNDTASK )
nSysFlags = SAL_FRAME_TOTOP_FOREGROUNDTASK;
+ if ( nFlags & TOTOP_GRABFOCUSONLY )
+ nSysFlags = SAL_FRAME_TOTOP_GRABFOCUS_ONLY;
mpFrame->ToTop( nSysFlags );
}
#else
@@ -3878,7 +3884,6 @@ void Window::ImplCallFocusChangeActivate( Window* pNewOverlapWindow,
}
// -----------------------------------------------------------------------
-
void Window::ImplGrabFocus( USHORT nFlags )
{
// Es soll immer das Client-Fenster den Focus bekommen. Falls
@@ -3886,6 +3891,7 @@ void Window::ImplGrabFocus( USHORT nFlags )
// muessten wir bei allen GrabFocus()-Aufrufen in VCL dafuer
// sorgen, das es an der Stelle gemacht wird. Dies wuerde
// beispielsweise bei ToTop() der Fall sein.
+
if ( mpClientWindow )
{
// Wegen nicht ganz durchdachtem Konzept muessen wir hier
@@ -3987,7 +3993,7 @@ void Window::ImplGrabFocus( USHORT nFlags )
// nicht auf ein anderes Fenster setzen darf
//DBG_WARNING( "Window::GrabFocus() - Frame doesn't have the focus" );
#ifndef REMOTE_APPSERVER
- mpFrame->ToTop( SAL_FRAME_TOTOP_GRABFOCUS );
+ mpFrame->ToTop( SAL_FRAME_TOTOP_GRABFOCUS | SAL_FRAME_TOTOP_GRABFOCUS_ONLY );
#else
mpFrame->ToTop(0);
#endif
@@ -4214,7 +4220,7 @@ void Window::ImplNewInputContext()
else
aSize.Height() = (12*pFocusWin->mnDPIY)/72;
}
- pFontEntry = pFocusWin->mpFontCache->Get( pFocusWin->mpFontList, rFont, aSize );
+ pFontEntry = pFocusWin->mpFontCache->Get( pFocusWin->mpFontList, rFont, aSize, pFocusWin->mpOutDevData ? pFocusWin->mpOutDevData->mpFirstFontSubstEntry : NULL );
if ( pFontEntry )
aNewContext.mpFont = &pFontEntry->maFontSelData;
}
@@ -4919,6 +4925,18 @@ void Window::ImplNotifyKeyMouseEventListeners( NotifyEvent& rNEvt )
if ( mbCompoundControl || ( rNEvt.GetWindow() == this ) )
ImplCallEventListeners( VCLEVENT_WINDOW_KEYUP, (void*)rNEvt.GetKeyEvent() );
}
+
+ // #106721# check if we're part of a compound control and notify
+ Window *pParent = ImplGetParent();
+ while( pParent )
+ {
+ if( pParent->IsCompoundControl() )
+ {
+ pParent->ImplNotifyKeyMouseEventListeners( rNEvt );
+ break;
+ }
+ pParent = pParent->ImplGetParent();
+ }
}
// -----------------------------------------------------------------------
@@ -5074,18 +5092,36 @@ void Window::CallEventListeners( ULONG nEvent, void* pData )
{
VclWindowEvent aEvent( this, nEvent, pData );
+ ImplDelData aDelData;
+ ImplAddDel( &aDelData );
+
ImplSVData* pSVData = ImplGetSVData();
pSVData->mpApp->ImplCallEventListeners( &aEvent );
+ if ( aDelData.IsDelete() )
+ return;
+
if ( !maEventListeners.empty() )
maEventListeners.Call( &aEvent );
+ if ( aDelData.IsDelete() )
+ return;
+
+ ImplRemoveDel( &aDelData );
+
Window* pWindow = this;
while ( pWindow )
{
+ pWindow->ImplAddDel( &aDelData );
+
if ( !pWindow->maChildEventListeners.empty() )
pWindow->maChildEventListeners.Call( &aEvent );
+ if ( aDelData.IsDelete() )
+ return;
+
+ pWindow->ImplRemoveDel( &aDelData );
+
pWindow = pWindow->GetParent();
}
}
@@ -6072,6 +6108,42 @@ void Window::Show( BOOL bVisible, USHORT nFlags )
mpBorderWindow->Show( TRUE, nFlags );
else if ( mbFrame )
{
+ ImplSVData* pSVData = ImplGetSVData();
+ // #106431#, hide SplashScreen
+ if( pSVData->mpIntroWindow && !ImplIsWindowOrChild( pSVData->mpIntroWindow ) )
+ pSVData->mpIntroWindow->Hide();
+
+#ifndef REMOTE_APPSERVER
+ // HACK: this code belongs IMHO at the end of InitVCL, but because there is no
+ // configuration service available at this time, we need to delay it until the
+ // first (accessible) window is shown ..
+ if( ImplIsAccessibleNativeFrame() )
+ {
+ ImplSVData* pSVData = ImplGetSVData();
+
+ if( Application::GetSettings().GetMiscSettings().GetEnableATToolSupport() )
+ {
+ if( !pSVData->mxAccessBridge.is() )
+ {
+ // instanciate access bridge service
+ if( !ImplInitAccessBridge(true) )
+ {
+ AllSettings aSettings = Application::GetSettings();
+ MiscSettings aMisc = aSettings.GetMiscSettings();
+ aMisc.SetEnableATToolSupport( FALSE );
+ aSettings.SetMiscSettings( aMisc );
+ Application::SetSettings( aSettings );
+ }
+ // if the user chose to quit the app, do not show this frame ..
+ else if( pSVData->maAppData.mbAppQuit == TRUE )
+ {
+ return;
+ }
+ }
+ }
+ }
+#endif
+
//DBG_ASSERT( !mbSuppressAccessibilityEvents, "Window::Show() - Frame reactivated");
mbSuppressAccessibilityEvents = FALSE;
@@ -6159,19 +6231,19 @@ BOOL Window::ImplRegisterAccessibleNativeFrame()
ImplSVData* pSVData = ImplGetSVData();
// register proxy accessible for the new native frame window
- if(pSVData->mxAccessBridge.is())
+ if( pSVData->mxAccessBridge.is() )
{
const SystemEnvData * pEnvData = GetSystemData();
- if(pEnvData)
+ if( pEnvData )
{
Reference< XTopWindow > xTopWindow( ImplGetWindow()->GetComponentInterface(), UNO_QUERY );
- if(xTopWindow.is())
+ if( xTopWindow.is() )
{
#ifdef WNT
- pSVData->mxAccessBridge->registerAccessibleNativeFrame( makeAny((sal_uInt32) pEnvData->hWnd), GetAccessible(), xTopWindow);
+ pSVData->mxAccessBridge->registerAccessibleNativeFrame( makeAny((sal_Int32) pEnvData->hWnd), GetAccessible(), xTopWindow);
#else
- pSVData->mxAccessBridge->registerAccessibleNativeFrame( makeAny((sal_uInt32) pEnvData->aWindow), GetAccessible(), xTopWindow);
+ pSVData->mxAccessBridge->registerAccessibleNativeFrame( makeAny((sal_Int32) pEnvData->aWindow), GetAccessible(), xTopWindow);
#endif
bNativeFrameRegistered = TRUE;
mbSuppressAccessibilityEvents = FALSE; // allow accessibility events
@@ -6195,9 +6267,9 @@ void Window::ImplRevokeAccessibleNativeFrame()
if( pSVData->mxAccessBridge.is() )
{
#ifdef WNT
- pSVData->mxAccessBridge->revokeAccessibleNativeFrame(makeAny((sal_uInt32) pEnvData->hWnd));
+ pSVData->mxAccessBridge->revokeAccessibleNativeFrame(makeAny((sal_Int32) pEnvData->hWnd));
#else
- pSVData->mxAccessBridge->revokeAccessibleNativeFrame(makeAny((sal_uInt32) pEnvData->aWindow));
+ pSVData->mxAccessBridge->revokeAccessibleNativeFrame(makeAny((sal_Int32) pEnvData->aWindow));
#endif
}
}
@@ -6812,15 +6884,31 @@ Rectangle Window::ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle &rR
Rectangle Window::GetWindowExtentsRelative( Window *pRelativeWindow )
{
+ // with decoration
+ return ImplGetWindowExtentsRelative( pRelativeWindow, FALSE );
+}
+
+Rectangle Window::GetClientWindowExtentsRelative( Window *pRelativeWindow )
+{
+ // without decoration
+ return ImplGetWindowExtentsRelative( pRelativeWindow, TRUE );
+}
+
+// -----------------------------------------------------------------------
+
+Rectangle Window::ImplGetWindowExtentsRelative( Window *pRelativeWindow, BOOL bClientOnly )
+{
SalFrameGeometry g = mpFrame->GetGeometry();
// make sure we use the extent of our border window,
// otherwise we miss a few pixels
- Window *pWin = mpBorderWindow ? mpBorderWindow : this;
+ Window *pWin = (!bClientOnly && mpBorderWindow) ? mpBorderWindow : this;
+
Point aPos( pWin->OutputToScreenPixel( Point(0,0) ) );
aPos.X() += g.nX;
aPos.Y() += g.nY;
Size aSize ( pWin->GetSizePixel() );
- if( mbFrame || (mpBorderWindow && mpBorderWindow->mbFrame) )
+ // #104088# do not add decoration to the workwindow to be compatible to java accessibility api
+ if( !bClientOnly && (mbFrame || (mpBorderWindow && mpBorderWindow->mbFrame && GetType() != WINDOW_WORKWINDOW)) )
{
aPos.X() -= g.nLeftDecoration;
aPos.Y() -= g.nTopDecoration;
@@ -6828,7 +6916,11 @@ Rectangle Window::GetWindowExtentsRelative( Window *pRelativeWindow )
aSize.Height() += g.nTopDecoration + g.nBottomDecoration;
}
if( pRelativeWindow )
- aPos = pRelativeWindow->AbsoluteScreenToOutputPixel( aPos );
+ {
+ // #106399# express coordinates relative to borderwindow
+ Window *pRelWin = (!bClientOnly && pRelativeWindow->mpBorderWindow) ? pRelativeWindow->mpBorderWindow : pRelativeWindow;
+ aPos = pRelWin->AbsoluteScreenToOutputPixel( aPos );
+ }
return Rectangle( aPos, aSize );
}
@@ -7346,6 +7438,18 @@ void Window::SetText( const XubString& rStr )
mpFrame->SetTitle( rStr );
ImplCallEventListeners( VCLEVENT_WINDOW_FRAMETITLECHANGED, &oldTitle );
+
+ // #107247# needed for accessibility
+ // The VCLEVENT_WINDOW_FRAMETITLECHANGED is (mis)used to notify accessible name changes.
+ // Therefore a window, which is labeled by this window, must also notify an accessible
+ // name change.
+ if ( IsReallyVisible() )
+ {
+ Window* pWindow = GetLabelFor();
+ if ( pWindow && pWindow != this )
+ pWindow->ImplCallEventListeners( VCLEVENT_WINDOW_FRAMETITLECHANGED, &oldTitle );
+ }
+
StateChanged( STATE_CHANGE_TEXT );
}
@@ -7623,13 +7727,18 @@ void Window::ImplCallActivateListeners( Window *pOld )
if ( !pOld || !ImplIsChild( pOld ) )
{
ImplCallEventListeners( VCLEVENT_WINDOW_ACTIVATE, pOld );
- if( !GetParent() || !GetParent()->IsCompoundControl() )
- {
+ // #106298# revoke the change for 105369, because this change
+ // disabled the activate event for the parent,
+ // if the parent is a compound control
+ //if( !GetParent() || !GetParent()->IsCompoundControl() )
+ //{
// #100759#, avoid walking the wrong frame's hierarchy
// eg, undocked docking windows (ImplDockFloatWin)
- if ( ImplGetParent() && mpFrameWindow == ImplGetParent()->mpFrameWindow )
+ // #104714#, revert the changes for 100759 because it has a side effect when pOld is a dialog
+ // additionally the gallery is not dockable anymore, so 100759 canot occur
+ if ( ImplGetParent() ) /* && mpFrameWindow == ImplGetParent()->mpFrameWindow ) */
ImplGetParent()->ImplCallActivateListeners( pOld );
- }
+ //}
}
}
@@ -7728,12 +7837,16 @@ Reference< XDragSource > Window::GetDragSource()
aDragSourceAL[ 1 ] = makeAny( (sal_uInt32) pEnvData->hWnd );
aDropTargetAL[ 0 ] = makeAny( (sal_uInt32) pEnvData->hWnd );
#elif defined UNX
+ aDropTargetAL.realloc( 3 );
+ aDragSourceAL.realloc( 3 );
aDragSourceSN = OUString::createFromAscii( "com.sun.star.datatransfer.dnd.X11DragSource" );
aDropTargetSN = OUString::createFromAscii( "com.sun.star.datatransfer.dnd.X11DropTarget" );
aDragSourceAL[ 0 ] = makeAny( Application::GetDisplayConnection() );
+ aDragSourceAL[ 2 ] = makeAny( vcl::createBmpConverter() );
aDropTargetAL[ 0 ] = makeAny( Application::GetDisplayConnection() );
aDropTargetAL[ 1 ] = makeAny( pEnvData->aShellWindow );
+ aDropTargetAL[ 2 ] = makeAny( vcl::createBmpConverter() );
#endif
if( aDragSourceSN.getLength() )
mpFrameData->mxDragSource = Reference< XDragSource > ( xFactory->createInstanceWithArguments( aDragSourceSN, aDragSourceAL ), UNO_QUERY );
@@ -7814,9 +7927,10 @@ Reference< XClipboard > Window::GetClipboard()
if( xInit.is() )
{
- Sequence< Any > aArgumentList( 2 );
+ Sequence< Any > aArgumentList( 3 );
aArgumentList[ 0 ] = makeAny( Application::GetDisplayConnection() );
aArgumentList[ 1 ] = makeAny( OUString::createFromAscii( "CLIPBOARD" ) );
+ aArgumentList[ 2 ] = makeAny( vcl::createBmpConverter() );
xInit->initialize( aArgumentList );
}
@@ -7862,9 +7976,10 @@ Reference< XClipboard > Window::GetSelection()
if( xFactory.is() )
{
# ifdef UNX
- Sequence< Any > aArgumentList( 2 );
+ Sequence< Any > aArgumentList( 3 );
aArgumentList[ 0 ] = makeAny( Application::GetDisplayConnection() );
aArgumentList[ 1 ] = makeAny( OUString::createFromAscii( "PRIMARY" ) );
+ aArgumentList[ 2 ] = makeAny( vcl::createBmpConverter() );
mpFrameData->mxSelection = Reference< XClipboard >( xFactory->createInstanceWithArguments(
OUString::createFromAscii( "com.sun.star.datatransfer.clipboard.SystemClipboard" ), aArgumentList ), UNO_QUERY );
@@ -8050,15 +8165,21 @@ USHORT Window::GetAccessibleChildWindowCount()
pChild = pChild->mpNext;
}
- // Search also for SystemWindows.
- Window* pOverlap = GetWindow( WINDOW_OVERLAP );
- pOverlap = pOverlap->GetWindow( WINDOW_FIRSTOVERLAP );
- while ( pOverlap )
+ // #107176# ignore overlapwindows
+ // this only affects non-system floating windows
+ // which are either not accessible (like the HelpAgent) or should be changed to system windows anyway
+ /*
+ if( ImplIsOverlapWindow() )
{
- if( pOverlap->IsVisible() )
- nChildren++;
- pOverlap = pOverlap->GetWindow( WINDOW_NEXT );
+ Window* pOverlap = GetWindow( WINDOW_FIRSTOVERLAP );
+ while ( pOverlap )
+ {
+ if( pOverlap->IsVisible() )
+ nChildren++;
+ pOverlap = pOverlap->GetWindow( WINDOW_NEXT );
+ }
}
+ */
// report the menubarwindow as a child of THE workwindow
if( GetType() == WINDOW_BORDERWINDOW )
@@ -8131,19 +8252,24 @@ Window* Window::GetAccessibleChildWindow( USHORT n )
}
if ( !pChild )
{
- Window* pOverlap = GetWindow( WINDOW_OVERLAP );
- pOverlap = pOverlap->GetWindow( WINDOW_FIRSTOVERLAP );
- while ( !pChild && pOverlap )
+ // #107176# ignore overlapwindows
+ /*
+ if( ImplIsOverlapWindow() )
{
- if ( !nChildren && pOverlap->IsVisible() )
+ Window* pOverlap = GetWindow( WINDOW_FIRSTOVERLAP );
+ while ( !pChild && pOverlap )
{
- pChild = pOverlap;
- break;
+ if ( !nChildren && pOverlap->IsVisible() )
+ {
+ pChild = pOverlap;
+ break;
+ }
+ pOverlap = pOverlap->GetWindow( WINDOW_NEXT );
+ if( pOverlap && pOverlap->IsVisible() )
+ nChildren--;
}
- pOverlap = pOverlap->GetWindow( WINDOW_NEXT );
- if( pOverlap && pOverlap->IsVisible() )
- nChildren--;
}
+ */
}
if ( pChild && ( pChild->GetType() == WINDOW_BORDERWINDOW ) && ( pChild->GetChildCount() == 1 ) )
@@ -8401,6 +8527,16 @@ BOOL Window::IsAccessibilityEventsSuppressed( BOOL bTraverseParentPath )
}
}
+void Window::RecordLayoutData( vcl::ControlLayoutData* pLayout, const Rectangle& rRect )
+{
+ if( ! mpOutDevData )
+ ImplInitOutDevData();
+ mpOutDevData->mpRecordLayout = pLayout;
+ mpOutDevData->maRecordRect = rRect;
+ Paint( rRect );
+ mpOutDevData->mpRecordLayout = NULL;
+}
+
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
@@ -8441,6 +8577,9 @@ void Window::DrawSelectionBackground( const Rectangle& rRect, USHORT highlight,
extern void ImplRGBtoHSB( const Color& rColor, USHORT& nHue, USHORT& nSat, USHORT& nBri );
extern Color ImplHSBtoRGB( USHORT nHue, USHORT nSat, USHORT nBri );
+ if( rRect.IsEmpty() )
+ return;
+
// colors used for item highlighting
Color aSelectionBorderCol( GetSettings().GetStyleSettings().GetHighlightColor() );
Color aSelectionFillCol( aSelectionBorderCol );
@@ -8587,3 +8726,25 @@ BOOL Window::IsTopWindow() const
return xTopWindow.is() ? TRUE : FALSE;
}
+void Window::ImplMirrorFramePos( Point &pt ) const
+{
+ pt.X() = mpFrame->maGeometry.nWidth-1-pt.X();
+}
+
+// frame based modal counter (dialogs are not modal to the whole application anymore)
+BOOL Window::IsInModalMode() const
+{
+ return (mpFrameWindow->mpFrameData->mnModalMode != 0);
+}
+void Window::ImplIncModalCount()
+{
+ mpFrameWindow->mpFrameData->mnModalMode++;
+}
+void Window::ImplDecModalCount()
+{
+ mpFrameWindow->mpFrameData->mnModalMode--;
+}
+void Window::ImplNotifyIconifiedState( BOOL bIconified )
+{
+ mpFrameWindow->ImplCallEventListeners( bIconified ? VCLEVENT_WINDOW_ICONIFIED : VCLEVENT_WINDOW_RESTORED );
+}
diff --git a/vcl/source/window/window2.cxx b/vcl/source/window/window2.cxx
index 99baa3e9ae03..7619c2fa479b 100644
--- a/vcl/source/window/window2.cxx
+++ b/vcl/source/window/window2.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: window2.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: ssa $ $Date: 2002-12-03 14:36:25 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -110,11 +110,8 @@
#ifndef _SV_ACCESS_HXX
#include <access.hxx>
#endif
-#ifndef _SV_POLY_H
-#include <poly.h>
-#endif
-#ifndef _SV_POLY_HXX
-#include <poly.hxx>
+#ifndef _POLY_HXX
+#include <tools/poly.hxx>
#endif
#ifndef _SV_VIRDEV_HXX
#include <virdev.hxx>
@@ -550,7 +547,7 @@ void Window::Invert( const Polygon& rPoly, USHORT nFlags )
nSalFlags |= SAL_INVERT_HIGHLIGHT;
if ( nFlags & INVERT_50 )
nSalFlags |= SAL_INVERT_50;
- const SalPoint* pPtAry = (const SalPoint*)aPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aPoly.GetConstPointAry();
mpGraphics->Invert( nPoints, pPtAry, nSalFlags, this );
#else
ImplServerGraphics* pGraphics = ImplGetServerGraphics();
@@ -747,7 +744,7 @@ void Window::InvertTracking( const Polygon& rPoly, USHORT nFlags )
}
}
- const SalPoint* pPtAry = (const SalPoint*)aPoly.ImplGetConstPointAry();
+ const SalPoint* pPtAry = (const SalPoint*)aPoly.GetConstPointAry();
pGraphics->Invert( nPoints, pPtAry, SAL_INVERT_TRACKFRAME, this );
#else
ImplServerGraphics* pGraphics;
diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx
index 5ae8315fced6..c3754781e170 100644
--- a/vcl/source/window/winproc.cxx
+++ b/vcl/source/window/winproc.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: winproc.cxx,v $
*
- * $Revision: 1.76 $
+ * $Revision: 1.77 $
*
- * last change: $Author: ssa $ $Date: 2002-12-12 16:46:10 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -324,7 +324,9 @@ static BOOL ImplHandleMouseFloatMode( Window* pChild, const Point& rMousePos,
static void ImplHandleMouseHelpRequest( Window* pChild, const Point& rMousePos )
{
ImplSVData* pSVData = ImplGetSVData();
- if ( pChild != pSVData->maHelpData.mpHelpWin )
+ if ( !pSVData->maHelpData.mpHelpWin ||
+ !( pSVData->maHelpData.mpHelpWin->IsWindowOrChild( pChild ) ||
+ pChild->IsWindowOrChild( pSVData->maHelpData.mpHelpWin ) ) )
{
USHORT nHelpMode = 0;
if ( pSVData->maHelpData.mbQuickHelp )
@@ -511,7 +513,8 @@ long ImplHandleMouseEvent( Window* pWindow, USHORT nSVEvent, BOOL bMouseLeave,
#endif
// no mouse messages to disabled windows
- if ( !pChild->IsEnabled() || !pChild->IsInputEnabled() )
+ // #106845# if the window was disabed during capturing we have to pass the mouse events to release capturing
+ if ( pSVData->maWinData.mpCaptureWin != pChild && (!pChild->IsEnabled() || !pChild->IsInputEnabled()) )
{
ImplHandleMouseFloatMode( pChild, aMousePos, nCode, nSVEvent, bMouseLeave );
if ( nSVEvent == EVENT_MOUSEMOVE )
@@ -1626,7 +1629,10 @@ void ImplHandleResize( Window* pWindow, long nNewWidth, long nNewHeight )
pWindow->mpFrameData->mbNeedSysWindow = (nNewWidth < IMPL_MIN_NEEDSYSWIN) ||
(nNewHeight < IMPL_MIN_NEEDSYSWIN);
- pWindow->mpFrameData->mbMinimized = (nNewWidth <= 0) || (nNewHeight <= 0);
+ BOOL bMinimized = (nNewWidth <= 0) || (nNewHeight <= 0);
+ if( bMinimized != pWindow->mpFrameData->mbMinimized )
+ pWindow->mpFrameWindow->ImplNotifyIconifiedState( bMinimized );
+ pWindow->mpFrameData->mbMinimized = bMinimized;
}
// -----------------------------------------------------------------------
@@ -1709,7 +1715,7 @@ IMPL_LINK( Window, ImplAsyncFocusHdl, void*, EMPTYARG )
ImplSVData* pSVData = ImplGetSVData();
Window* pTopLevelWindow = mpFrameData->mpFocusWin->ImplGetFirstOverlapWindow();
if ( !pTopLevelWindow->IsInputEnabled() && pSVData->maWinData.mpLastExecuteDlg )
- pSVData->maWinData.mpLastExecuteDlg->ToTop( TOTOP_RESTOREWHENMIN );
+ pSVData->maWinData.mpLastExecuteDlg->ToTop( TOTOP_RESTOREWHENMIN | TOTOP_GRABFOCUSONLY);
else
pTopLevelWindow->GrabFocus();
}
diff --git a/vcl/source/window/wrkwin.cxx b/vcl/source/window/wrkwin.cxx
index ff5ce667ddfa..fe39754cfe0d 100644
--- a/vcl/source/window/wrkwin.cxx
+++ b/vcl/source/window/wrkwin.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: wrkwin.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: mba $ $Date: 2002-10-11 18:08:29 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -271,31 +271,6 @@ WorkWindow::~WorkWindow()
// -----------------------------------------------------------------------
-void WorkWindow::SetIcon( USHORT nIcon )
-{
- // Should be removed in the next top level update - now in SystemWindow
- mnIcon = nIcon;
- SystemWindow::SetIcon( nIcon );
-}
-
-// -----------------------------------------------------------------------
-
-void WorkWindow::SetWindowState( const ByteString& rStr )
-{
- // Should be removed in the next top level update - now in SystemWindow
- SystemWindow::SetWindowState( rStr );
-}
-
-// -----------------------------------------------------------------------
-
-ByteString WorkWindow::GetWindowState() const
-{
- // Should be removed in the next top level update - now in SystemWindow
- return SystemWindow::GetWindowState();
-}
-
-// -----------------------------------------------------------------------
-
void WorkWindow::ShowFullScreenMode( BOOL bFullScreenMode )
{
if ( !mbFullScreenMode == !bFullScreenMode )
diff --git a/vcl/test/makefile.mk b/vcl/test/makefile.mk
index 4739d9f1a443..238877f41a98 100644
--- a/vcl/test/makefile.mk
+++ b/vcl/test/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.2 $
+# $Revision: 1.3 $
#
-# last change: $Author: obr $ $Date: 2001-12-03 10:21:17 $
+# last change: $Author: hr $ $Date: 2003-03-27 17:58:29 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -76,7 +76,7 @@ OBJFILES= $(OBJ)$/dndtest.obj
APP1NOSAL= TRUE
APP1TARGET= $(TARGET)
-APP1OBJS= $(OBJ)$/dndtest.obj \
+APP1OBJS= $(OBJ)$/dnddem.obj \
$(OBJ)$/salmain.obj
APP1STDLIBS= $(CPPULIB) \
diff --git a/vcl/unx/inc/dtint.hxx b/vcl/unx/inc/dtint.hxx
index 2835a50f6a4a..493e416b4e58 100644
--- a/vcl/unx/inc/dtint.hxx
+++ b/vcl/unx/inc/dtint.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dtint.hxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: pl $ $Date: 2002-06-10 17:27:27 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -73,6 +73,7 @@
#include <tools/string.hxx>
#endif
#include <tools/color.hxx>
+#include <font.hxx>
class SalFrame;
class SalBitmap;
@@ -124,6 +125,9 @@ protected:
void GetSystemLook( const char* pCommand, AllSettings& rSettings );
bool StartSystemLookProcess( const char* pCommand );
+ Color parseColor( const ByteString& );
+ Font parseFont( const ByteString& );
+
public:
static DtIntegrator* CreateDtIntegrator( SalFrame* );
diff --git a/vcl/unx/inc/saldata.hxx b/vcl/unx/inc/saldata.hxx
index 831a308c4129..31b85770fb5c 100644
--- a/vcl/unx/inc/saldata.hxx
+++ b/vcl/unx/inc/saldata.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: saldata.hxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: svesik $ $Date: 2002-03-18 01:23:42 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:31 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -94,7 +94,7 @@ typedef SIG_FUNC_TYP *SIG_TYP;
DECLARE_LIST( SalDisplays, SalDisplay* )
-#if defined SCO || defined LINUX || defined NETBSD || defined AIX || defined HPUX || defined FREEBSD || defined IRIX
+#if defined SCO || defined LINUX || defined NETBSD || defined AIX || defined HPUX || defined FREEBSD
#include <pthread.h>
#else
typedef unsigned int pthread_t;
diff --git a/vcl/unx/inc/saldisp.hxx b/vcl/unx/inc/saldisp.hxx
index 6ba5f39ef32f..9deb3362224c 100644
--- a/vcl/unx/inc/saldisp.hxx
+++ b/vcl/unx/inc/saldisp.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: saldisp.hxx,v $
*
- * $Revision: 1.14 $
+ * $Revision: 1.15 $
*
- * last change: $Author: pl $ $Date: 2002-09-18 14:24:03 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:31 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -263,22 +263,24 @@ class SalXLib
timeval Timeout_;
ULONG nTimeoutMS_;
+ int pTimeoutFDS_[2];
+
int nStateOfYield_;
BOOL bWasXError_;
BOOL bIgnoreXErrors_;
+
int nFDs_;
- fd_set *pReadFDS_;
- fd_set *pExceptionFDS_;
+ fd_set aReadFDS_;
+ fd_set aExceptionFDS_;
YieldEntry *pYieldEntries_;
- void CheckTimeout();
-
public:
SalXLib();
~SalXLib();
void Init( int *pArgc, char *ppArgv[] );
void Yield( BOOL bWait );
+ void Wakeup();
void Insert( int fd, void* data,
YieldFunc pending,
@@ -294,6 +296,8 @@ public:
inline void StartTimer( ULONG nMS );
inline void StopTimer();
+
+ bool CheckTimeout( bool bExecuteTimers = true );
};
// -=-= SalXEvent =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -478,6 +482,7 @@ public:
ULONG GetImageDepths() const { return nImageDepths_; }
ULONG SupportsShm() const { return nSharedImages_; }
void DisableShm() { nSharedImages_ /= 2; } // = 0
+ void GetScreenFontResolution( long& rDPIX, long& rDPIY ) const;
BOOL MouseCaptured( const SalFrameData *pFrameData ) const
{ return pCapture_ == pFrameData; }
diff --git a/vcl/unx/inc/salframe.h b/vcl/unx/inc/salframe.h
index 0f760b428ccb..4792a62aa60f 100644
--- a/vcl/unx/inc/salframe.h
+++ b/vcl/unx/inc/salframe.h
@@ -2,9 +2,9 @@
*
* $RCSfile: salframe.h,v $
*
- * $Revision: 1.27 $
+ * $Revision: 1.28 $
*
- * last change: $Author: sb $ $Date: 2002-11-18 11:56:57 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:31 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -131,6 +131,8 @@ class SalFrameData
static Bool checkKeyReleaseForRepeat( Display*, XEvent*, XPointer pSalFrameData );
STDAPI( SalFrameData );
+ static SalFrame* s_pSaveYourselfFrame;
+
SalFrame *pNextFrame_; // pointer to next frame
SalFrame *pFrame_;
@@ -160,13 +162,14 @@ class SalFrameData
USHORT nKeyCode_; // last key code
USHORT nKeyState_; // last key state
int nCompose_; // compose state
+ bool mbKeyMenu;
+ bool mbSendExtKeyModChange;
+ USHORT mnExtKeyMod;
int nShowState_; // show state
- int nMaxWidth_; // client max width
- int nMaxHeight_; // client max height
int nWidth_; // client width
int nHeight_; // client height
- Rectangle aRestoreFullScreen_;
+ Rectangle maRestorePosSize;
ULONG nStyle_;
BOOL bAlwaysOnTop_;
BOOL bViewable_;
@@ -177,7 +180,8 @@ class SalFrameData
int nScreenSaversTimeout_;
Timer maResizeTimer;
- Rectangle maResizeBuffer;
+ bool mbMoved;
+ bool mbSized;
Rectangle maPaintRegion;
Timer maAlwaysOnTopRaiseTimer;
@@ -187,6 +191,8 @@ class SalFrameData
int mnDecorationFlags;
bool mbMaximizedVert;
bool mbMaximizedHorz;
+ bool mbShaded;
+ bool mbFullScreen;
// icon id
int mnIconID;
@@ -210,7 +216,7 @@ class SalFrameData
void Minimize();
void Maximize();
void Restore();
- void SetWindowGravity (int nGravity, const Point& rPosition) const;
+ void SetWindowGravity (int nGravity ) const;
void RestackChildren( XLIB_Window* pTopLevelWindows, int nTopLevelWindows );
void RestackChildren();
diff --git a/vcl/unx/inc/salgdi.h b/vcl/unx/inc/salgdi.h
index cb2bfcf221eb..3f2cddc451ce 100644
--- a/vcl/unx/inc/salgdi.h
+++ b/vcl/unx/inc/salgdi.h
@@ -2,9 +2,9 @@
*
* $RCSfile: salgdi.h,v $
*
- * $Revision: 1.21 $
+ * $Revision: 1.22 $
*
- * last change: $Author: pl $ $Date: 2002-11-14 15:57:28 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:32 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -244,7 +244,7 @@ protected:
void DrawServerAAFontString( const ServerFontLayout& );
bool DrawServerAAForcedString( const ServerFontLayout& );
- SalLayout* LayoutText( ImplLayoutArgs&, int nFallbackLevel );
+ SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel );
public:
SalGraphicsData();
~SalGraphicsData();
diff --git a/vcl/unx/inc/strhelper.hxx b/vcl/unx/inc/strhelper.hxx
new file mode 100644
index 000000000000..59aaf8e04ed8
--- /dev/null
+++ b/vcl/unx/inc/strhelper.hxx
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * $RCSfile: strhelper.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:32 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SV_STRHELPER_HXX
+#define _SV_STRHELPER_HXX
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+String GetCommandLineToken( int, const String& );
+// gets one token of a unix command line style string
+// doublequote, singlequote and singleleftquote protect their respective
+// contents
+
+int GetCommandLineTokenCount( const String& );
+// returns number of tokens (zero if empty or whitespace only)
+
+String WhitespaceToSpace( const String&, BOOL bProtect = TRUE );
+
+#endif
diff --git a/vcl/unx/inc/wmadaptor.hxx b/vcl/unx/inc/wmadaptor.hxx
index d925aa50ee1f..ffa1461f5ea4 100644
--- a/vcl/unx/inc/wmadaptor.hxx
+++ b/vcl/unx/inc/wmadaptor.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: wmadaptor.hxx,v $
*
- * $Revision: 1.15 $
+ * $Revision: 1.16 $
*
- * last change: $Author: pl $ $Date: 2002-06-10 17:27:27 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:32 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -101,6 +101,7 @@ public:
NET_WM_STATE_SKIP_TASKBAR,
NET_WM_STATE_STAYS_ON_TOP,
NET_WM_STATE_STICKY,
+ NET_WM_STATE_FULLSCREEN,
NET_WM_WINDOW_TYPE,
NET_WM_WINDOW_TYPE_DESKTOP,
NET_WM_WINDOW_TYPE_DIALOG,
@@ -108,6 +109,8 @@ public:
NET_WM_WINDOW_TYPE_MENU,
NET_WM_WINDOW_TYPE_NORMAL,
NET_WM_WINDOW_TYPE_TOOLBAR,
+ NET_WM_WINDOW_TYPE_SPLASH,
+ NET_WM_WINDOW_TYPE_UTILITY,
NET_NUMBER_OF_DESKTOPS,
NET_CURRENT_DESKTOP,
NET_WORKAREA,
@@ -165,7 +168,8 @@ public:
windowType_Normal,
windowType_ModalDialogue,
windowType_ModelessDialogue,
- windowType_OverrideRedirect
+ windowType_OverrideRedirect,
+ windowType_Splash
};
protected:
@@ -230,6 +234,20 @@ public:
* use maximizeFrame( pFrame, false, false )
*/
virtual void maximizeFrame( SalFrame* pFrame, bool bHorizontal = true, bool bVertical = true ) const;
+ /*
+ * start/stop fullscreen mode on a frame
+ */
+ virtual void showFullScreen( SalFrame* pFrame, bool bFullScreen ) const;
+
+ /*
+ * tells whether fullscreen mode is supported by WM
+ */
+ bool supportsFullScreen() const { return m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ] != 0; }
+
+ /*
+ * shade/unshade frame
+ */
+ virtual void shade( SalFrame* pFrame, bool bToShaded ) const;
/*
* set hints what decoration is needed;
@@ -238,6 +256,11 @@ public:
virtual void setFrameTypeAndDecoration( SalFrame* pFrame, WMWindowType eType, int nDecorationFlags, SalFrame* pTransientFrame = NULL ) const;
/*
+ * tells whether there is WM support for splash screens
+ */
+ bool supportsSplash() const { return m_aWMAtoms[ NET_WM_WINDOW_TYPE_SPLASH ] != 0; }
+
+ /*
* enables always on top or equivalent if possible
*/
virtual void enableAlwaysOnTop( SalFrame* pFrame, bool bEnable ) const;
@@ -248,6 +271,11 @@ public:
bool isAlwaysOnTopOK() const { return m_bEnableAlwaysOnTopWorks; }
/*
+ * handle WM messages (especially WM state changes)
+ */
+ virtual int handlePropertyNotify( SalFrame* pFrame, XPropertyEvent* pEvent ) const;
+
+ /*
* gets a WM atom
*/
Atom getAtom( WMAtom eAtom ) const
diff --git a/vcl/unx/inc/xfont.hxx b/vcl/unx/inc/xfont.hxx
index 1d866ce3aa51..0cb9f5a432a7 100644
--- a/vcl/unx/inc/xfont.hxx
+++ b/vcl/unx/inc/xfont.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: xfont.hxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: hdu $ $Date: 2002-10-29 13:15:24 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:33 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -185,7 +185,7 @@ SV_DECL_IMPL_REF( ExtendedFontStruct );
class X11FontLayout : public GenericSalLayout
{
public:
- X11FontLayout( ImplLayoutArgs&, ExtendedFontStruct& );
+ X11FontLayout( ExtendedFontStruct& );
virtual bool LayoutText( ImplLayoutArgs& );
virtual void DrawText( SalGraphics& ) const;
diff --git a/vcl/unx/source/app/i18n_im.cxx b/vcl/unx/source/app/i18n_im.cxx
index 2a83b171c748..d606d411500f 100644
--- a/vcl/unx/source/app/i18n_im.cxx
+++ b/vcl/unx/source/app/i18n_im.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: i18n_im.cxx,v $
*
- * $Revision: 1.18 $
+ * $Revision: 1.19 $
*
- * last change: $Author: svesik $ $Date: 2002-07-21 21:20:14 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:36 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -60,7 +60,6 @@
************************************************************************/
#include <stdio.h>
-#include <string.h>
#ifdef LINUX
#define __USE_XOPEN
#endif
@@ -88,7 +87,9 @@ using namespace vcl;
#ifndef _SAL_I18N_CALLBACK_HXX
#include "i18n_cb.hxx"
#endif
+#ifdef SOLARIS
extern "C" char * XSetIMValues(XIM im, ...);
+#endif
// ------------------------------------------------------------------------------------
//
diff --git a/vcl/unx/source/app/i18n_keysym.cxx b/vcl/unx/source/app/i18n_keysym.cxx
index e5185ddf78ac..106d78156510 100644
--- a/vcl/unx/source/app/i18n_keysym.cxx
+++ b/vcl/unx/source/app/i18n_keysym.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: i18n_keysym.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: vg $ $Date: 2001-05-18 15:04:24 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:36 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -360,25 +360,37 @@ const keymap_t* p_keymap[INITIAL_KEYMAPS] = {
sal_Unicode
KeysymToUnicode (KeySym nKeySym)
{
- unsigned char n_byte1 = (nKeySym & 0xff000000) >> 24;
- unsigned char n_byte2 = (nKeySym & 0x00ff0000) >> 16;
- unsigned char n_byte3 = (nKeySym & 0x0000ff00) >> 8;
- unsigned char n_byte4 = (nKeySym & 0x000000ff);
+ // keysym is already unicode
+ if ((nKeySym & 0xff000000) == 0x01000000)
+ {
+ // strip off group indicator and iso10646 plane
+ // FIXME can't handle chars from surrogate area.
+ if (! (nKeySym & 0x00ff0000) )
+ return (sal_Unicode)(nKeySym & 0x0000ffff);
+ }
+ // legacy keysyms, switch to appropriate codeset
+ else
+ {
+ unsigned char n_byte1 = (nKeySym & 0xff000000) >> 24;
+ unsigned char n_byte2 = (nKeySym & 0x00ff0000) >> 16;
+ unsigned char n_byte3 = (nKeySym & 0x0000ff00) >> 8;
+ unsigned char n_byte4 = (nKeySym & 0x000000ff);
- if (n_byte1 != 0)
- return 0;
- if (n_byte2 != 0)
- return 0;
+ if (n_byte1 != 0)
+ return 0;
+ if (n_byte2 != 0)
+ return 0;
- keymap_t const* p_map = NULL;
- if (n_byte3 < INITIAL_KEYMAPS)
- p_map = p_keymap[n_byte3];
- else
- if (n_byte3 == 255)
- p_map = &keymap255;
+ keymap_t const* p_map = NULL;
+ if (n_byte3 < INITIAL_KEYMAPS)
+ p_map = p_keymap[n_byte3];
+ else
+ if (n_byte3 == 255)
+ p_map = &keymap255;
- if ((p_map != NULL) && (n_byte4 >= p_map->first) && (n_byte4 <= p_map->last) )
- return p_map->map[n_byte4 - p_map->first];
+ if ((p_map != NULL) && (n_byte4 >= p_map->first) && (n_byte4 <= p_map->last) )
+ return p_map->map[n_byte4 - p_map->first];
+ }
return 0;
}
diff --git a/vcl/unx/source/app/saldata.cxx b/vcl/unx/source/app/saldata.cxx
index 2d84b31f8102..2dc16d334b51 100644
--- a/vcl/unx/source/app/saldata.cxx
+++ b/vcl/unx/source/app/saldata.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: saldata.cxx,v $
*
- * $Revision: 1.20 $
+ * $Revision: 1.21 $
*
- * last change: $Author: rt $ $Date: 2002-12-13 13:27:22 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:36 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -66,6 +66,10 @@
#endif
// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#include <unistd.h>
+#include <fcntl.h>
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -79,6 +83,11 @@
#ifdef AIX
#include <strings.h>
#endif
+#ifdef FREEBSD
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
+#endif
#ifndef _VOS_MUTEX_HXX
#include <vos/mutex.hxx>
@@ -149,9 +158,9 @@
#endif
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-static const struct timeval noyield = { 0, 0 };
-static const struct timeval yield = { 0, 10000 };
-static const struct fd_set ZeroFDS = { 0 };
+static const struct timeval noyield__ = { 0, 0 };
+static const struct timeval yield__ = { 0, 10000 };
+
static const char* XRequest[] = {
// see /usr/lib/X11/XErrorDB, /usr/openwin/lib/XErrorDB ...
NULL,
@@ -318,19 +327,28 @@ static int sal_XErrorHdl( Display *pDisplay, XErrorEvent *pEvent )
static int sal_XIOErrorHdl( Display *pDisplay )
{
+ /* #106197# hack: until a real shutdown procedure exists
+ * _exit ASAP
+ */
+ if( ImplGetSVData()->maAppData.mbAppQuit )
+ _exit(1);
+
SalData *pSalData = GetSalData();
SalDisplay *pSalDisplay = pSalData->GetDisplay( pDisplay );
- if ( pDisplay && pSalDisplay->IsDisplay() )
+ if ( pDisplay && pSalDisplay && pSalDisplay->IsDisplay() )
pSalData->GetLib()->Remove( ConnectionNumber( pDisplay ) );
oslSignalAction eToDo = osl_raiseSignal (OSL_SIGNAL_USER_X11SUBSYSTEMERROR, NULL);
- // einen XIOError kann man nicht ignorieren. Die Connection ist
- // zusammengebrochen, hier kann man nur noch halbwegs sinnvoll runterfahren
fprintf( stderr, "X IO Error\n" );
fflush( stdout );
fflush( stderr );
- exit(0);
+
+ /* #106197# the same reasons to use _exit instead of exit in salmain
+ * do apply here. Since there is nothing to be done after an XIO
+ * error we have to _exit immediately.
+ */
+ _exit(0);
return 0;
}
@@ -431,7 +449,6 @@ void SalData::Init( int *pArgc, char *ppArgv[] )
argv_ = ppArgv;
}
-
// -=-= SalXLib =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
SalXLib::SalXLib()
@@ -439,20 +456,56 @@ SalXLib::SalXLib()
Timeout_.tv_sec = 0;
Timeout_.tv_usec = 0;
nTimeoutMS_ = 0;
+
+ nFDs_ = 0;
+ FD_ZERO( &aReadFDS_ );
+ FD_ZERO( &aExceptionFDS_ );
+
+ pTimeoutFDS_[0] = pTimeoutFDS_[1] = -1;
+ if (pipe (pTimeoutFDS_) != -1)
+ {
+ // initialize 'wakeup' pipe.
+ int flags;
+
+ // set close-on-exec descriptor flag.
+ if ((flags = fcntl (pTimeoutFDS_[0], F_GETFD)) != 1)
+ {
+ flags |= FD_CLOEXEC;
+ fcntl (pTimeoutFDS_[0], F_SETFD, flags);
+ }
+ if ((flags = fcntl (pTimeoutFDS_[1], F_GETFD)) != 1)
+ {
+ flags |= FD_CLOEXEC;
+ fcntl (pTimeoutFDS_[1], F_SETFD, flags);
+ }
+
+ // set non-blocking I/O flag.
+ if ((flags = fcntl (pTimeoutFDS_[0], F_GETFL)) != 1)
+ {
+ flags |= O_NONBLOCK;
+ fcntl (pTimeoutFDS_[0], F_SETFL, flags);
+ }
+ if ((flags = fcntl (pTimeoutFDS_[1], F_GETFL)) != 1)
+ {
+ flags |= O_NONBLOCK;
+ fcntl (pTimeoutFDS_[1], F_SETFL, flags);
+ }
+
+ // insert [0] into read descriptor set.
+ FD_SET( pTimeoutFDS_[0], &aReadFDS_ );
+ nFDs_ = pTimeoutFDS_[0] + 1;
+ }
+
bWasXError_ = FALSE;
bIgnoreXErrors_ = !!getenv( "SAL_IGNOREXERRORS" );
nStateOfYield_ = 0;
- nFDs_ = 0;
- pReadFDS_ = new fd_set;
- pExceptionFDS_ = new fd_set;
- FD_ZERO( pReadFDS_ );
- FD_ZERO( pExceptionFDS_ );
}
SalXLib::~SalXLib()
{
- delete pReadFDS_;
- delete pExceptionFDS_;
+ // close 'wakeup' pipe.
+ close (pTimeoutFDS_[0]);
+ close (pTimeoutFDS_[1]);
// completetly disabled Bug Nr. #47319 -> segv while using xsuntransport=shmem
// #ifdef SAL_XT
@@ -609,6 +662,9 @@ void SalXLib::XError( Display *pDisplay, XErrorEvent *pEvent )
fflush( stdout );
fflush( stderr );
#endif
+ if( pDisplay != GetSalData()->GetDefDisp()->GetDisplay() )
+ return;
+
oslSignalAction eToDo = osl_raiseSignal (OSL_SIGNAL_USER_X11SUBSYSTEMERROR, NULL);
switch (eToDo)
{
@@ -629,8 +685,6 @@ void SalXLib::XError( Display *pDisplay, XErrorEvent *pEvent )
bWasXError_ = TRUE;
}
-#define MAX_NUM_DESCRIPTORS 128
-
struct YieldEntry
{
YieldEntry* next; // pointer to next entry
@@ -654,17 +708,17 @@ void SalXLib::Insert( int nFD, void* data,
YieldFunc queued,
YieldFunc handle )
{
- DBG_ASSERT( nFD, "can not insert stdin descriptor" )
- DBG_ASSERT( !yieldTable[nFD].fd, "SalXLib::Insert fd twice" )
+ DBG_ASSERT( nFD, "can not insert stdin descriptor" );
+ DBG_ASSERT( !yieldTable[nFD].fd, "SalXLib::Insert fd twice" );
- yieldTable[nFD].fd = nFD;
- yieldTable[nFD].data = data;
+ yieldTable[nFD].fd = nFD;
+ yieldTable[nFD].data = data;
yieldTable[nFD].pending = pending;
yieldTable[nFD].queued = queued;
yieldTable[nFD].handle = handle;
- FD_SET( nFD, pReadFDS_ );
- FD_SET( nFD, pExceptionFDS_ );
+ FD_SET( nFD, &aReadFDS_ );
+ FD_SET( nFD, &aExceptionFDS_ );
if( nFD >= nFDs_ )
nFDs_ = nFD + 1;
@@ -672,8 +726,8 @@ void SalXLib::Insert( int nFD, void* data,
void SalXLib::Remove( int nFD )
{
- FD_CLR( nFD, pReadFDS_ );
- FD_CLR( nFD, pExceptionFDS_ );
+ FD_CLR( nFD, &aReadFDS_ );
+ FD_CLR( nFD, &aExceptionFDS_ );
yieldTable[nFD].fd = 0;
@@ -686,58 +740,31 @@ void SalXLib::Remove( int nFD )
nFDs_ = nFD + 1;
}
}
-#if 0
-class YieldMutexReleaser
-{
- ULONG m_nYieldCount;
- SalYieldMutex* m_pSalInstYieldMutex;
-public:
- YieldMutexReleaser();
- ~YieldMutexReleaser();
-};
-
-YieldMutexReleaser::YieldMutexReleaser()
-{
- SalData *pSalData = GetSalData();
- m_pSalInstYieldMutex =
- pSalData->pFirstInstance_->maInstData.mpSalYieldMutex;
-
- ULONG i;
- if ( m_pSalInstYieldMutex->GetThreadId() ==
- NAMESPACE_VOS(OThread)::getCurrentIdentifier() )
- {
- m_nYieldCount = m_pSalInstYieldMutex->GetAcquireCount();
- for ( i = 0; i < m_nYieldCount; i++ )
- m_pSalInstYieldMutex->release();
- }
- else
- m_nYieldCount = 0;
-}
-
-YieldMutexReleaser::~YieldMutexReleaser()
-{
- // Yield-Semaphore wieder holen
- while ( m_nYieldCount )
- {
- m_pSalInstYieldMutex->acquire();
- m_nYieldCount--;
- }
-}
-#endif
-void SalXLib::CheckTimeout()
+bool SalXLib::CheckTimeout( bool bExecuteTimers )
{
- struct timeval aTimeOfDay;
+ bool bRet = false;
if( Timeout_.tv_sec ) // timer is started
{
- gettimeofday( &aTimeOfDay, NULL );
-
+ timeval aTimeOfDay;
+ gettimeofday( &aTimeOfDay, 0 );
if( aTimeOfDay >= Timeout_ )
{
- Timeout_ = aTimeOfDay + nTimeoutMS_;
- GetSalData()->Timeout();
+ bRet = true;
+ if( bExecuteTimers )
+ {
+ // timed out, notify.
+ Timeout_ = aTimeOfDay;
+ GetSalData()->Timeout();
+ if (aTimeOfDay == Timeout_)
+ {
+ // still timed out, auto restart.
+ Timeout_ += nTimeoutMS_;
+ }
+ }
}
}
+ return bRet;
}
void SalXLib::Yield( BOOL bWait )
@@ -747,21 +774,15 @@ void SalXLib::Yield( BOOL bWait )
if (p_prioritize_timer != NULL)
CheckTimeout();
- // check for events already queued
- fd_set ReadFDS;
- fd_set ExceptionFDS;
- int nFound = 0;
-
nStateOfYield_ = 0; // is not 0 if we are recursive called
- // first look for queued events
+ // first, check for already queued events.
for ( int nFD = 0; nFD < nFDs_; nFD++ )
{
YieldEntry* pEntry = &(yieldTable[nFD]);
if ( pEntry->fd )
{
DBG_ASSERT( nFD == pEntry->fd, "wrong fd in Yield()" );
-
if ( pEntry->HasPendingEvent() )
{
pEntry->HandleNextEvent();
@@ -776,26 +797,39 @@ void SalXLib::Yield( BOOL bWait )
}
}
- // next select with or without timeout according to bWait
+ // next, select with or without timeout according to bWait.
+ int nFDs = nFDs_;
+ fd_set ReadFDS = aReadFDS_;
+ fd_set ExceptionFDS = aExceptionFDS_;
+ int nFound = 0;
- ReadFDS = *pReadFDS_;
- ExceptionFDS = *pExceptionFDS_;
+ timeval Timeout = noyield__;
+ timeval *pTimeout = &Timeout;
- struct timeval Timeout = bWait ? yield : noyield;
+ if (bWait)
+ {
+ pTimeout = 0;
+ if (Timeout_.tv_sec) // Timer is started.
+ {
+ // determine remaining timeout.
+ gettimeofday (&Timeout, 0);
+ Timeout = Timeout_ - Timeout;
+ if (yield__ >= Timeout)
+ {
+ // guard against micro timeout.
+ Timeout = yield__;
+ }
+ pTimeout = &Timeout;
+ }
+ }
nStateOfYield_ = 1;
-
{
- // Yield-Semaphore freigeben
+ // release YieldMutex (and re-acquire at block end)
YieldMutexReleaser aReleaser;
- if( bWait )
+ if( !bWait )
osl_yieldThread();
-#if defined (HPUX) && defined (CMA_UX)
- nFound = select( nFDs_, (int*)&ReadFDS, (int*)NULL,
- (int*)&ExceptionFDS, &Timeout );
-#else
- nFound = select( nFDs_, &ReadFDS, NULL, &ExceptionFDS, &Timeout );
-#endif
+ nFound = select( nFDs, &ReadFDS, NULL, &ExceptionFDS, pTimeout );
}
if( nFound < 0 ) // error
{
@@ -814,7 +848,16 @@ void SalXLib::Yield( BOOL bWait )
if (p_prioritize_timer == NULL)
CheckTimeout();
- // handle events
+ // handle wakeup events.
+ if ((nFound > 0) && (FD_ISSET(pTimeoutFDS_[0], &ReadFDS)))
+ {
+ int buffer;
+ while (read (pTimeoutFDS_[0], &buffer, sizeof(buffer)) > 0)
+ continue;
+ nFound -= 1;
+ }
+
+ // handle other events.
if( nFound > 0 )
{
// now we are in the protected section !
@@ -828,8 +871,6 @@ void SalXLib::Yield( BOOL bWait )
if (nFound == 0)
{
nStateOfYield_ = 0;
- //if ( !pthread_equal (pthread_self(),
- // pSalData->GetMainThread()))
return;
}
@@ -864,3 +905,7 @@ void SalXLib::Yield( BOOL bWait )
nStateOfYield_ = 0;
}
+void SalXLib::Wakeup()
+{
+ write (pTimeoutFDS_[1], "", 1);
+}
diff --git a/vcl/unx/source/app/saldisp.cxx b/vcl/unx/source/app/saldisp.cxx
index f7727b278799..05bc175a533f 100644
--- a/vcl/unx/source/app/saldisp.cxx
+++ b/vcl/unx/source/app/saldisp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: saldisp.cxx,v $
*
- * $Revision: 1.38 $
+ * $Revision: 1.39 $
*
- * last change: $Author: pl $ $Date: 2002-10-11 13:36:15 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:37 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -221,7 +221,7 @@ extern "C" { int gethostname(char*,int); }
#include "vertcurs_mask.h"
#include "invert50.h"
-#if !(defined S390 || defined AIX)
+#if !(defined AIX)
#include <X11/extensions/XShm.h>
#endif
#include <X11/keysym.h>
@@ -956,156 +956,6 @@ void SalDisplay::Init( Colormap hXColmap, const XVisualInfo* pXVI )
if( getenv( "SAL_SYNCHRONIZE" ) )
XSynchronize( pDisp_, True );
- // - - - - - - - - - - Window Manager - - - - - - - - - - -
- const char *pWM = getenv( "SAL_WM" );
- if( pWM )
- sscanf( pWM, "%li", &eWindowManager_ );
- else if( XInternAtom( pDisp_, "_SGI_TELL_WM", True ) )
- eWindowManager_ = FourDwm;
- else if( XInternAtom( pDisp_, "KWM_RUNNING", True ) )
- eWindowManager_ = mwm; // naja, eigentlich kwm ...
- else if( XInternAtom( pDisp_, "_OL_WIN_ATTR", True ) )
- eWindowManager_ = olwm;
-
- // - - - - - - - - - - Properties - - - - - - - - - - - - -
- const char *pProperties = getenv( "SAL_PROPERTIES" );
- if( pProperties )
- sscanf( pProperties, "%li", &nProperties_ );
- else
- {
-#if defined DBG_UTIL || defined SUN || defined LINUX || defined FREEBSD
- nProperties_ |= PROPERTY_FEATURE_Maximize;
-#endif
- // Server Bugs & Properties
- if( GetServerVendor() == vendor_excursion )
- {
- nProperties_ |= PROPERTY_BUG_Stipple;
- nProperties_ |= PROPERTY_BUG_DrawLine;
- nProperties_ &= ~PROPERTY_SUPPORT_XSetClipMask;
- }
- else
- if( GetServerVendor() == vendor_attachmate )
- {
- nProperties_ |= PROPERTY_BUG_CopyPlane_RevertBWPixel;
- }
- else
- if( GetServerVendor() == vendor_ibm )
- {
- nProperties_ |= PROPERTY_BUG_XA_FAMILY_NAME_nil;
-
- if( otherwm == eWindowManager_ ) eWindowManager_ = mwm;
- }
- else
- if( GetServerVendor() == vendor_xfree )
- {
- nProperties_ |= PROPERTY_BUG_XCopyArea_GXxor;
-#ifdef ARM32 // ??? Server! nicht Client ???
- nProperties_ &= ~PROPERTY_SUPPORT_XSetClipMask;
-#endif
-#if defined LINUX || defined FREEBSD
- // otherwm and olwm are a kind of default, which are not detected
- // carefully. if we are running linux (i.e. not netbsd) on an xfree
- // display, fvwm is most probable the wm to choose, confusing with mwm
- // doesn't harm. #57791# start maximized if possible
- if( (otherwm == eWindowManager_)
- || (olwm == eWindowManager_ ))
- {
- eWindowManager_ = fvwm; // ???
- nProperties_ |= PROPERTY_FEATURE_Maximize;
- }
-#else
- if( otherwm == eWindowManager_ ) eWindowManager_ = winmgr;
-#endif
-#if defined SOLARIS && defined SPARC
- nProperties_ |= PROPERTY_BUG_Bitmap_Bit_Order;
- // solaris xlib seems to have problems with putting images
- // in correct bit order to xfree 8 bit displays
-#endif
- }
- else
- if( GetServerVendor() == vendor_sun )
- {
- // nicht alle! (bekannt: nur Sparc II CG3, CG6?)
- nProperties_ &= ~PROPERTY_SUPPORT_XSetClipMask;
-
- // trusted solaris doesn't allow to change properties on the
- // wm decoration window
- if (sal_IsTrustedSolaris (pDisp_))
- nProperties_ |= PROPERTY_FEATURE_TrustedSolaris;
-
- // Fehler im Sun-Solaris X86 Server !
- if (ImageByteOrder(GetDisplay()) == LSBFirst)
- {
- nProperties_ |= PROPERTY_BUG_Tile;
- nProperties_ |= PROPERTY_SUPPORT_3ButtonMouse;
- }
- else // MSBFirst Sun-Solaris Sparc Server
- {
- // XCopyPlane reverts black and white for 1bit bitmaps
- // only sun, only 8bit pseudocolor target
- if ( (pVisual_->GetDepth() == 8)
- && (pVisual_->GetClass() == PseudoColor))
- nProperties_ |= PROPERTY_BUG_CopyPlane_RevertBWPixel;
- // Fehler in Solaris 2.5.1
- if (VendorRelease ( GetDisplay() ) < 3600)
- nProperties_ |= PROPERTY_BUG_FillPolygon_Tile;
- }
-
- if( otherwm == eWindowManager_ )
- if( XInternAtom( pDisp_, "_MOTIF_WM_INFO", True ) )
- eWindowManager_ = dtwm;
- else
- eWindowManager_ = olwm;
- }
- else
- if( GetServerVendor() == vendor_sco )
- {
- if( otherwm == eWindowManager_ ) eWindowManager_ = pmwm;
- }
- else
- if( GetServerVendor() == vendor_sgi )
- {
- if( pVisual_->GetDepth() > 8 && pVisual_->GetDepth() <= 16 )
- nProperties_ |= PROPERTY_BUG_XCopyArea_GXxor;
- nProperties_ |= PROPERTY_SUPPORT_XSetClipMask;
-
- if( otherwm == eWindowManager_ ) eWindowManager_ = FourDwm;
- }
- else
- if( GetServerVendor() == vendor_hp )
- {
- if( otherwm == eWindowManager_ ) eWindowManager_ = dtwm;
- }
- else
- if( GetServerVendor() == vendor_hummingbird )
- {
- if (pVisual_->GetDepth() == 24)
- nProperties_ |= PROPERTY_BUG_CopyArea_OnlySmallSlices;
- }
-
- if( otherwm == eWindowManager_ )
- {
- if( !XInternAtom( pDisp_, "_MOTIF_WM_INFO", True ) )
- eWindowManager_ = olwm;
- // ???
- }
-
- if( winmgr == eWindowManager_ )
- {
- nProperties_ &= ~PROPERTY_SUPPORT_WM_SetPos;
- nProperties_ &= ~PROPERTY_SUPPORT_WM_Screen;
- nProperties_ |= PROPERTY_FEATURE_Maximize;
- }
- else if( dtwm == eWindowManager_ )
- {
- nProperties_ &= ~PROPERTY_SUPPORT_WM_ClientPos;
- }
- else if( pmwm == eWindowManager_ )
- {
- nProperties_ &= ~PROPERTY_SUPPORT_WM_ClientPos;
- }
- }
-
// - - - - - - - - - - Shared Images - - - - - - - - - - - -
#if defined _XSHM_H_ // && defined DBG_UTIL
// SharedMem wird nur noch ueber SalProperties enabled
@@ -1277,9 +1127,158 @@ void SalDisplay::Init( Colormap hXColmap, const XVisualInfo* pXVI )
// - - - - - - - - - - Keyboardmapping - - - - - - - - - - -
ModifierMapping();
+
+ m_pWMAdaptor = ::vcl_sal::WMAdaptor::createWMAdaptor( this );
+ // - - - - - - - - - - Window Manager - - - - - - - - - - -
+ const char *pWM = getenv( "SAL_WM" );
+ if( pWM )
+ sscanf( pWM, "%li", &eWindowManager_ );
+ else if( XInternAtom( pDisp_, "_SGI_TELL_WM", True ) )
+ eWindowManager_ = FourDwm;
+ else if( XInternAtom( pDisp_, "KWM_RUNNING", True ) )
+ eWindowManager_ = mwm; // naja, eigentlich kwm ...
+ else if( XInternAtom( pDisp_, "_OL_WIN_ATTR", True ) )
+ eWindowManager_ = olwm;
+ else if( m_pWMAdaptor->getWindowManagerName().EqualsAscii( "Dtwm" ) )
+ eWindowManager_ = dtwm;
+
+ // - - - - - - - - - - Properties - - - - - - - - - - - - -
+ const char *pProperties = getenv( "SAL_PROPERTIES" );
+ if( pProperties )
+ sscanf( pProperties, "%li", &nProperties_ );
+ else
+ {
+#if defined DBG_UTIL || defined SUN || defined LINUX || defined FREEBSD
+ nProperties_ |= PROPERTY_FEATURE_Maximize;
+#endif
+ // Server Bugs & Properties
+ if( GetServerVendor() == vendor_excursion )
+ {
+ nProperties_ |= PROPERTY_BUG_Stipple;
+ nProperties_ |= PROPERTY_BUG_DrawLine;
+ nProperties_ &= ~PROPERTY_SUPPORT_XSetClipMask;
+ }
+ else
+ if( GetServerVendor() == vendor_attachmate )
+ {
+ nProperties_ |= PROPERTY_BUG_CopyPlane_RevertBWPixel;
+ }
+ else
+ if( GetServerVendor() == vendor_ibm )
+ {
+ nProperties_ |= PROPERTY_BUG_XA_FAMILY_NAME_nil;
+
+ if( otherwm == eWindowManager_ ) eWindowManager_ = mwm;
+ }
+ else
+ if( GetServerVendor() == vendor_xfree )
+ {
+ nProperties_ |= PROPERTY_BUG_XCopyArea_GXxor;
+#ifdef ARM32 // ??? Server! nicht Client ???
+ nProperties_ &= ~PROPERTY_SUPPORT_XSetClipMask;
+#endif
+#if defined LINUX || defined FREEBSD
+ // otherwm and olwm are a kind of default, which are not detected
+ // carefully. if we are running linux (i.e. not netbsd) on an xfree
+ // display, fvwm is most probable the wm to choose, confusing with mwm
+ // doesn't harm. #57791# start maximized if possible
+ if( (otherwm == eWindowManager_)
+ || (olwm == eWindowManager_ ))
+ {
+ eWindowManager_ = fvwm; // ???
+ nProperties_ |= PROPERTY_FEATURE_Maximize;
+ }
+#else
+ if( otherwm == eWindowManager_ ) eWindowManager_ = winmgr;
+#endif
+#if defined SOLARIS && defined SPARC
+ nProperties_ |= PROPERTY_BUG_Bitmap_Bit_Order;
+ // solaris xlib seems to have problems with putting images
+ // in correct bit order to xfree 8 bit displays
+#endif
+ }
+ else
+ if( GetServerVendor() == vendor_sun )
+ {
+ // nicht alle! (bekannt: nur Sparc II CG3, CG6?)
+ nProperties_ &= ~PROPERTY_SUPPORT_XSetClipMask;
+
+ // trusted solaris doesn't allow to change properties on the
+ // wm decoration window
+ if (sal_IsTrustedSolaris (pDisp_))
+ nProperties_ |= PROPERTY_FEATURE_TrustedSolaris;
+
+ // Fehler im Sun-Solaris X86 Server !
+ if (ImageByteOrder(GetDisplay()) == LSBFirst)
+ {
+ nProperties_ |= PROPERTY_BUG_Tile;
+ nProperties_ |= PROPERTY_SUPPORT_3ButtonMouse;
+ }
+ else // MSBFirst Sun-Solaris Sparc Server
+ {
+ // XCopyPlane reverts black and white for 1bit bitmaps
+ // only sun, only 8bit pseudocolor target
+ if ( (pVisual_->GetDepth() == 8)
+ && (pVisual_->GetClass() == PseudoColor))
+ nProperties_ |= PROPERTY_BUG_CopyPlane_RevertBWPixel;
+ // Fehler in Solaris 2.5.1
+ if (VendorRelease ( GetDisplay() ) < 3600)
+ nProperties_ |= PROPERTY_BUG_FillPolygon_Tile;
+ }
+
+ if( otherwm == eWindowManager_ )
+ eWindowManager_ = olwm;
+ }
+ else
+ if( GetServerVendor() == vendor_sco )
+ {
+ if( otherwm == eWindowManager_ ) eWindowManager_ = pmwm;
+ }
+ else
+ if( GetServerVendor() == vendor_sgi )
+ {
+ if( pVisual_->GetDepth() > 8 && pVisual_->GetDepth() <= 16 )
+ nProperties_ |= PROPERTY_BUG_XCopyArea_GXxor;
+ nProperties_ |= PROPERTY_SUPPORT_XSetClipMask;
+
+ if( otherwm == eWindowManager_ ) eWindowManager_ = FourDwm;
+ }
+ else
+ if( GetServerVendor() == vendor_hp )
+ {
+ if( otherwm == eWindowManager_ ) eWindowManager_ = dtwm;
+ }
+ else
+ if( GetServerVendor() == vendor_hummingbird )
+ {
+ if (pVisual_->GetDepth() == 24)
+ nProperties_ |= PROPERTY_BUG_CopyArea_OnlySmallSlices;
+ }
+
+ if( otherwm == eWindowManager_ )
+ {
+ if( !XInternAtom( pDisp_, "_MOTIF_WM_INFO", True ) )
+ eWindowManager_ = olwm;
+ // ???
+ }
+
+ if( winmgr == eWindowManager_ )
+ {
+ nProperties_ &= ~PROPERTY_SUPPORT_WM_SetPos;
+ nProperties_ &= ~PROPERTY_SUPPORT_WM_Screen;
+ nProperties_ |= PROPERTY_FEATURE_Maximize;
+ }
+ else if( dtwm == eWindowManager_ )
+ {
+ nProperties_ &= ~PROPERTY_SUPPORT_WM_ClientPos;
+ }
+ else if( pmwm == eWindowManager_ )
+ {
+ nProperties_ &= ~PROPERTY_SUPPORT_WM_ClientPos;
+ }
+ }
}
- m_pWMAdaptor = ::vcl_sal::WMAdaptor::createWMAdaptor( this );
#ifdef DBG_UTIL
PrintInfo();
#endif
@@ -2499,6 +2498,9 @@ void SalDisplay::SendEvent( Atom aEvent,
pEventQueue_->pNext_ = NULL;
}
+ // Notify SalXLib::Yield() of a pending event.
+ pXLib_->Wakeup();
+
osl_releaseMutex( hEventGuard_ );
}
else
@@ -2632,9 +2634,9 @@ long SalDisplay::Dispatch( XEvent *pEvent )
pFrame->maFrameData.Call( SALEVENT_SETTINGSCHANGED, NULL );
pFrame = pFrame->maFrameData.GetNextFrame();
}
+ return 0;
}
- return 0;
-
+ break;
case MappingNotify:
if( MappingKeyboard == pEvent->xmapping.request )
XRefreshKeyboardMapping( &pEvent->xmapping );
@@ -2942,6 +2944,27 @@ void SalDisplay::PrintInfo() const
}
}
+void SalDisplay::GetScreenFontResolution( long& rDPIX, long& rDPIY ) const
+{
+ int nThreshold;
+
+ if (aSize_.Height() <= 600)
+ nThreshold = 96;
+ else if (aSize_.Height() <= 768)
+ nThreshold = 108;
+ else
+ nThreshold = 120;
+
+ rDPIX = aResolution_.A();
+ rDPIY = aResolution_.B();
+
+ if( rDPIY < nThreshold )
+ {
+ rDPIX = Divide( rDPIX * nThreshold, rDPIY );
+ rDPIY = nThreshold;
+ }
+}
+
// -=-= SalVisual -=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
SalVisual::SalVisual( const XVisualInfo* pXVI )
diff --git a/vcl/unx/source/app/salinst.cxx b/vcl/unx/source/app/salinst.cxx
index fe12c5ebe18b..fa9659a9a88b 100644
--- a/vcl/unx/source/app/salinst.cxx
+++ b/vcl/unx/source/app/salinst.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salinst.cxx,v $
*
- * $Revision: 1.13 $
+ * $Revision: 1.14 $
*
- * last change: $Author: mhu $ $Date: 2003-02-11 11:30:24 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:37 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
diff --git a/vcl/unx/source/app/salsys.cxx b/vcl/unx/source/app/salsys.cxx
index 67feda9374c8..5ecbd7775d26 100644
--- a/vcl/unx/source/app/salsys.cxx
+++ b/vcl/unx/source/app/salsys.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salsys.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: pl $ $Date: 2002-10-31 15:14:38 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:38 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -69,6 +69,7 @@
#include <dtint.hxx>
#include <msgbox.hxx>
#include <button.hxx>
+#include <svdata.hxx>
// -----------------------------------------------------------------------
@@ -131,6 +132,10 @@ int ImplShowNativeDialog( const String& rTitle, const String& rMessage, const st
{
int nRet = -1;
+ ImplSVData* pSVData = ImplGetSVData();
+ if( pSVData->mpIntroWindow )
+ pSVData->mpIntroWindow->Hide();
+
DtIntegrator* pIntegrator = DtIntegrator::CreateDtIntegrator( NULL );
if( pIntegrator->GetDtType() == DtGNOME )
{
diff --git a/vcl/unx/source/app/saltimer.cxx b/vcl/unx/source/app/saltimer.cxx
index 3cfc398130d8..95a0e0d36095 100644
--- a/vcl/unx/source/app/saltimer.cxx
+++ b/vcl/unx/source/app/saltimer.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: saltimer.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: mhu $ $Date: 2003-02-10 20:40:27 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:38 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
diff --git a/vcl/unx/source/app/soicon.cxx b/vcl/unx/source/app/soicon.cxx
index 84737c47baa1..5b2a323a1dd8 100644
--- a/vcl/unx/source/app/soicon.cxx
+++ b/vcl/unx/source/app/soicon.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: soicon.cxx,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: ssa $ $Date: 2002-07-01 08:23:34 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:40 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -102,8 +102,6 @@
#include <tools/stream.hxx>
#include <tools/string.hxx>
-#include "soicons.inc"
-
using namespace psp;
typedef struct {
@@ -112,52 +110,6 @@ typedef struct {
Pixmap mPixmap[4], mMask[4]; // caches
} SOICON;
-static SOICON soicons[] = {
- {1, _001_star_butterfly_l_xpm, _001_star_butterfly_m_xpm, _001_star_butterfly_s_xpm, _001_star_butterfly_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {2, _002_text_document_l_xpm, _002_text_document_m_xpm, _002_text_document_s_xpm, _002_text_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {3, _003_text_template_l_xpm, _003_text_template_m_xpm, _003_text_template_s_xpm, _003_text_template_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {4, _004_spreadsheet_document_l_xpm, _004_spreadsheet_document_m_xpm, _004_spreadsheet_document_s_xpm, _004_spreadsheet_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {5, _005_spreadsheet_template_l_xpm, _005_spreadsheet_template_m_xpm, _005_spreadsheet_template_s_xpm, _005_spreadsheet_template_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {6, _006_drawing_document_l_xpm, _006_drawing_document_m_xpm, _006_drawing_document_s_xpm, _006_drawing_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {7, _007_drawing_template_l_xpm, _007_drawing_template_m_xpm, _007_drawing_template_s_xpm, _007_drawing_template_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {8, _008_presentation_document_l_xpm, _008_presentation_document_m_xpm, _008_presentation_document_s_xpm, _008_presentation_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {9, _009_presentation_template_l_xpm, _009_presentation_template_m_xpm, _009_presentation_template_s_xpm, _009_presentation_template_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {10, _010_presentation_compressed_l_xpm, _010_presentation_compressed_m_xpm, _010_presentation_compressed_s_xpm, _010_presentation_compressed_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {11, _011_global_document_l_xpm, _011_global_document_m_xpm, _011_global_document_s_xpm, _011_global_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {12, _012_html_document_l_xpm, _012_html_document_m_xpm, _012_html_document_s_xpm, _012_html_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {13, _013_chart_document_l_xpm, _013_chart_document_m_xpm, _013_chart_document_s_xpm, _013_chart_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {14, _014_database_document_l_xpm, _014_database_document_m_xpm, _014_database_document_s_xpm, _014_database_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {15, _015_math_document_l_xpm, _015_math_document_m_xpm, _015_math_document_s_xpm, _015_math_document_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {16, _016_template_l_xpm, _016_template_m_xpm, _016_template_s_xpm, _016_template_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {17, _017_macrolibrary_l_xpm, _017_macrolibrary_m_xpm, _017_macrolibrary_s_xpm, _017_macrolibrary_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {100, _100_player_l_xpm, _100_player_m_xpm, _100_player_s_xpm, _100_player_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {500, _500_setup_l_xpm, _500_setup_m_xpm, _500_setup_s_xpm, _500_setup_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {501, _501_printeradmin_l_xpm, _501_printeradmin_m_xpm, _501_printeradmin_s_xpm, _501_printeradmin_t_xpm,
- 0, 0, 0, 0, 0, 0, 0, 0},
- {0, NULL, NULL, NULL,
- 0, 0, 0, 0, 0, 0, 0, 0}
- };
-
-
static void ConvertXpm( SalDisplay* pDisplay, char *xpm[], Pixmap& aPixmap, Pixmap& aMask, int nSize )
{
int nWidth, nHeight, nColors, nCharsPerPixel;
@@ -288,35 +240,26 @@ BOOL SelectAppIconPixmap( SalDisplay *pDisplay, USHORT nIcon, USHORT iconSize,
if( nIcon == 0 ) // 0 means default icon which is icon #1 actually
nIcon = 1;
- SOICON *pIcon = soicons;
- while( pIcon->id )
- {
- if( pIcon->id == nIcon )
- break;
- pIcon++;
- }
+ SOICON *pIcon = NULL;
- if( !pIcon->id || pIcon->id == 1 ) // overwrite default icon
- {
- // call custom function to read icon
- char customIconFn[256];
+ // call custom function to read icon
+ char customIconFn[256];
- sprintf( customIconFn, "%s%d", VCL_CUSTOM_ICON_BASE, nIcon );
- static void* pAppHdl = dlopen( NULL, RTLD_LAZY );
- if ( ( pCustomIcon = ( VCL_CUSTOM_ICON_FN* ) dlsym( pAppHdl, customIconFn ) )
- != NULL )
- {
- pIcon = new SOICON[2]; // 2nd entry is terminator
- memset( pIcon, 0, 2*sizeof( SOICON ) );
- pIcon->id = nIcon;
- pCustomIcon( pIcon->xpmdata[0], pIcon->xpmdata[1], pIcon->xpmdata[2], pIcon->xpmdata[3] );
- }
+ sprintf( customIconFn, "%s%d", VCL_CUSTOM_ICON_BASE, nIcon );
+ static void* pAppHdl = dlopen( NULL, RTLD_LAZY );
+ if ( ( pCustomIcon = ( VCL_CUSTOM_ICON_FN* ) dlsym( pAppHdl, customIconFn ) )
+ != NULL )
+ {
+ pIcon = new SOICON[2]; // 2nd entry is terminator
+ memset( pIcon, 0, 2*sizeof( SOICON ) );
+ pIcon->id = nIcon;
+ pCustomIcon( pIcon->xpmdata[0], pIcon->xpmdata[1], pIcon->xpmdata[2], pIcon->xpmdata[3] );
}
-
- DBG_ASSERT( pIcon->id, "SelectAppIconPixmap: Icon not found!");
-
- if( !pIcon->id )
+ else
+ {
+ DBG_ERROR( "SelectAppIconPixmap: Icon not found!");
return FALSE;
+ }
// search optimal size
int i, maxSize = 0, iIcon=-1;
diff --git a/vcl/unx/source/app/wmadaptor.cxx b/vcl/unx/source/app/wmadaptor.cxx
index c4bc2c02bf5a..7f4341c7ea02 100644
--- a/vcl/unx/source/app/wmadaptor.cxx
+++ b/vcl/unx/source/app/wmadaptor.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: wmadaptor.cxx,v $
*
- * $Revision: 1.37 $
+ * $Revision: 1.38 $
*
- * last change: $Author: pl $ $Date: 2002-09-18 16:28:36 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:42 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -111,9 +111,12 @@ public:
virtual void setWMName( SalFrame* pFrame, const String& rWMName ) const;
virtual void maximizeFrame( SalFrame* pFrame, bool bHorizontal = true, bool bVertical = true ) const;
+ virtual void shade( SalFrame* pFrame, bool bToShaded ) const;
virtual void setFrameTypeAndDecoration( SalFrame* pFrame, WMWindowType eType, int nDecorationFlags, SalFrame* pTransientFrame = NULL ) const;
virtual bool supportsICCCMPos() const;
virtual void enableAlwaysOnTop( SalFrame* pFrame, bool bEnable ) const;
+ virtual int handlePropertyNotify( SalFrame* pFrame, XPropertyEvent* pEvent ) const;
+ virtual void showFullScreen( SalFrame* pFrame, bool bFullScreen ) const;
};
class GnomeWMAdaptor : public WMAdaptor
@@ -128,7 +131,9 @@ public:
virtual ~GnomeWMAdaptor();
virtual void maximizeFrame( SalFrame* pFrame, bool bHorizontal = true, bool bVertical = true ) const;
+ virtual void shade( SalFrame* pFrame, bool bToShaded ) const;
virtual void enableAlwaysOnTop( SalFrame* pFrame, bool bEnable ) const;
+ virtual int handlePropertyNotify( SalFrame* pFrame, XPropertyEvent* pEvent ) const;
};
}
@@ -152,6 +157,8 @@ static const WMAdaptorProtocol aProtocolTab[] =
{ "_NET_NUMBER_OF_DESKTOPS", WMAdaptor::NET_NUMBER_OF_DESKTOPS },
{ "_NET_WM_ICON_NAME", WMAdaptor::NET_WM_ICON_NAME },
{ "_NET_WM_STATE", WMAdaptor::NET_WM_STATE },
+ { "_NET_WM_STATE_ABOVE", WMAdaptor::NET_WM_STATE_STAYS_ON_TOP },
+ { "_NET_WM_STATE_FULLSCREEN", WMAdaptor::NET_WM_STATE_FULLSCREEN },
{ "_NET_WM_STATE_MAXIMIZED_HORIZ", WMAdaptor::NET_WM_STATE_MAXIMIZED_HORZ }, // common bug in e.g. older kwin and sawfish implementations
{ "_NET_WM_STATE_MAXIMIZED_HORZ", WMAdaptor::NET_WM_STATE_MAXIMIZED_HORZ },
{ "_NET_WM_STATE_MAXIMIZED_VERT", WMAdaptor::NET_WM_STATE_MAXIMIZED_VERT },
@@ -167,7 +174,10 @@ static const WMAdaptorProtocol aProtocolTab[] =
{ "_NET_WM_WINDOW_TYPE_DOCK", WMAdaptor::NET_WM_WINDOW_TYPE_DOCK },
{ "_NET_WM_WINDOW_TYPE_MENU", WMAdaptor::NET_WM_WINDOW_TYPE_MENU },
{ "_NET_WM_WINDOW_TYPE_NORMAL", WMAdaptor::NET_WM_WINDOW_TYPE_NORMAL },
+ { "_NET_WM_WINDOW_TYPE_SPLASH", WMAdaptor::NET_WM_WINDOW_TYPE_SPLASH },
+ { "_NET_WM_WINDOW_TYPE_SPLASHSCREEN", WMAdaptor::NET_WM_WINDOW_TYPE_SPLASH }, // bug in Metacity 2.4.1
{ "_NET_WM_WINDOW_TYPE_TOOLBAR", WMAdaptor::NET_WM_WINDOW_TYPE_TOOLBAR },
+ { "_NET_WM_WINDOW_TYPE_UTILITY", WMAdaptor::NET_WM_WINDOW_TYPE_UTILITY },
{ "_NET_WORKAREA", WMAdaptor::NET_WORKAREA },
{ "_WIN_APP_STATE", WMAdaptor::WIN_APP_STATE },
{ "_WIN_CLIENT_LIST", WMAdaptor::WIN_CLIENT_LIST },
@@ -887,6 +897,9 @@ void WMAdaptor::setWMName( SalFrame* pFrame, const String& rWMName ) const
{
ByteString aTitle( rWMName, osl_getThreadTextEncoding() );
+ if( ! rWMName.Len() && m_aWMName.EqualsAscii( "Dtwm" ) )
+ aTitle = " ";
+
::rtl::OString aWMLocale;
rtl_Locale* pLocale = NULL;
osl_getProcessLocale( &pLocale );
@@ -995,7 +1008,7 @@ void NetWMAdaptor::setNetWMState( SalFrame* pFrame ) const
{
if( m_aWMAtoms[ NET_WM_STATE ] )
{
- Atom aStateAtoms[ 5 ];
+ Atom aStateAtoms[ 10 ];
int nStateAtoms = 0;
// set NET_WM_STATE_MODAL
@@ -1017,7 +1030,12 @@ void NetWMAdaptor::setNetWMState( SalFrame* pFrame ) const
&& m_aWMAtoms[ NET_WM_STATE_MAXIMIZED_HORZ ] )
aStateAtoms[ nStateAtoms++ ] = m_aWMAtoms[ NET_WM_STATE_MAXIMIZED_HORZ ];
if( pFrame->maFrameData.bAlwaysOnTop_ && m_aWMAtoms[ NET_WM_STATE_STAYS_ON_TOP ] )
- aStateAtoms[nStateAtoms++ ] = m_aWMAtoms[ NET_WM_STATE_STAYS_ON_TOP ];
+ aStateAtoms[ nStateAtoms++ ] = m_aWMAtoms[ NET_WM_STATE_STAYS_ON_TOP ];
+ if( pFrame->maFrameData.mbShaded && m_aWMAtoms[ NET_WM_STATE_SHADED ] )
+ aStateAtoms[ nStateAtoms++ ] = m_aWMAtoms[ NET_WM_STATE_SHADED ];
+ if( pFrame->maFrameData.mbFullScreen && m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ] )
+ aStateAtoms[ nStateAtoms++ ] = m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ];
+
if( nStateAtoms )
{
XChangeProperty( m_pDisplay,
@@ -1030,6 +1048,10 @@ void NetWMAdaptor::setNetWMState( SalFrame* pFrame ) const
nStateAtoms
);
}
+ else
+ XDeleteProperty( m_pDisplay,
+ pFrame->maFrameData.GetShellWindow(),
+ m_aWMAtoms[ NET_WM_STATE ] );
if( pFrame->maFrameData.mbMaximizedHorz
&& pFrame->maFrameData.mbMaximizedVert
&& ! ( pFrame->maFrameData.nStyle_ & SAL_FRAME_STYLE_SIZEABLE ) )
@@ -1129,6 +1151,8 @@ void GnomeWMAdaptor::setGnomeWMState( SalFrame* pFrame ) const
nWinWMState |= 1 << 2;
if( pFrame->maFrameData.mbMaximizedHorz )
nWinWMState |= 1 << 3;
+ if( pFrame->maFrameData.mbShaded )
+ nWinWMState |= 1 << 5;
XChangeProperty( m_pDisplay,
pFrame->maFrameData.GetShellWindow(),
@@ -1324,9 +1348,13 @@ void NetWMAdaptor::setFrameTypeAndDecoration( SalFrame* pFrame, WMWindowType eTy
WMAtom eWMType;
switch( eType )
{
+ case windowType_ModelessDialogue:
case windowType_ModalDialogue:
eWMType = NET_WM_WINDOW_TYPE_DIALOG;
break;
+ case windowType_Splash:
+ eWMType = m_aWMAtoms[ NET_WM_WINDOW_TYPE_SPLASH ] ? NET_WM_WINDOW_TYPE_SPLASH : NET_WM_WINDOW_TYPE_NORMAL;
+ break;
default:
eWMType = NET_WM_WINDOW_TYPE_NORMAL;
break;
@@ -1387,27 +1415,27 @@ void WMAdaptor::maximizeFrame( SalFrame* pFrame, bool bHorizontal, bool bVertica
{
aTarget.SetSize(
Size(
- pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() ?
- rGeom.nWidth : pFrame->maFrameData.aRestoreFullScreen_.GetWidth(),
+ pFrame->maFrameData.maRestorePosSize.IsEmpty() ?
+ rGeom.nWidth : pFrame->maFrameData.maRestorePosSize.GetWidth(),
aTarget.GetHeight()
)
);
aTarget.Left() =
- pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() ?
- rGeom.nX : pFrame->maFrameData.aRestoreFullScreen_.Left();
+ pFrame->maFrameData.maRestorePosSize.IsEmpty() ?
+ rGeom.nX : pFrame->maFrameData.maRestorePosSize.Left();
}
else if( ! bVertical )
{
aTarget.SetSize(
Size(
aTarget.GetWidth(),
- pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() ?
- rGeom.nHeight : pFrame->maFrameData.aRestoreFullScreen_.GetHeight()
+ pFrame->maFrameData.maRestorePosSize.IsEmpty() ?
+ rGeom.nHeight : pFrame->maFrameData.maRestorePosSize.GetHeight()
)
);
aTarget.Top() =
- pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() ?
- rGeom.nY : pFrame->maFrameData.aRestoreFullScreen_.Top();
+ pFrame->maFrameData.maRestorePosSize.IsEmpty() ?
+ rGeom.nY : pFrame->maFrameData.maRestorePosSize.Top();
}
delete pFrame->maFrameData.pFreeGraphics_;
pFrame->maFrameData.pFreeGraphics_ = NULL;
@@ -1432,8 +1460,8 @@ void WMAdaptor::maximizeFrame( SalFrame* pFrame, bool bHorizontal, bool bVertica
}
}
- if( pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() )
- pFrame->maFrameData.aRestoreFullScreen_ = aRestore;
+ if( pFrame->maFrameData.maRestorePosSize.IsEmpty() )
+ pFrame->maFrameData.maRestorePosSize = aRestore;
pFrame->maFrameData.SetPosSize( aTarget );
pFrame->maFrameData.nWidth_ = aTarget.GetWidth();
@@ -1452,8 +1480,8 @@ void WMAdaptor::maximizeFrame( SalFrame* pFrame, bool bHorizontal, bool bVertica
delete pFrame->maFrameData.pFreeGraphics_;
pFrame->maFrameData.pFreeGraphics_ = NULL;
- pFrame->maFrameData.SetPosSize( pFrame->maFrameData.aRestoreFullScreen_ );
- pFrame->maFrameData.aRestoreFullScreen_ = Rectangle();
+ pFrame->maFrameData.SetPosSize( pFrame->maFrameData.maRestorePosSize );
+ pFrame->maFrameData.maRestorePosSize = Rectangle();
pFrame->maFrameData.nWidth_ = rGeom.nWidth;
pFrame->maFrameData.nHeight_ = rGeom.nHeight;
if( m_aWMName.EqualsAscii( "Dtwm" ) && pFrame->maFrameData.bMapped_ )
@@ -1519,11 +1547,11 @@ void NetWMAdaptor::maximizeFrame( SalFrame* pFrame, bool bHorizontal, bool bVert
setNetWMState( pFrame );
}
if( !bHorizontal && !bVertical )
- pFrame->maFrameData.aRestoreFullScreen_ = Rectangle();
- else if( pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() )
+ pFrame->maFrameData.maRestorePosSize = Rectangle();
+ else if( pFrame->maFrameData.maRestorePosSize.IsEmpty() )
{
const SalFrameGeometry& rGeom( pFrame->GetUnmirroredGeometry() );
- pFrame->maFrameData.aRestoreFullScreen_ =
+ pFrame->maFrameData.maRestorePosSize =
Rectangle( Point( rGeom.nX, rGeom.nY ), Size( rGeom.nWidth, rGeom.nHeight ) );
}
}
@@ -1569,16 +1597,15 @@ void GnomeWMAdaptor::maximizeFrame( SalFrame* pFrame, bool bHorizontal, bool bVe
);
}
else
- {
- // window not mapped yet, set _NET_WM_STATE directly
+ // window not mapped yet, set _WIN_STATE directly
setGnomeWMState( pFrame );
- }
+
if( !bHorizontal && !bVertical )
- pFrame->maFrameData.aRestoreFullScreen_ = Rectangle();
- else if( pFrame->maFrameData.aRestoreFullScreen_.IsEmpty() )
+ pFrame->maFrameData.maRestorePosSize = Rectangle();
+ else if( pFrame->maFrameData.maRestorePosSize.IsEmpty() )
{
const SalFrameGeometry& rGeom( pFrame->GetUnmirroredGeometry() );
- pFrame->maFrameData.aRestoreFullScreen_ =
+ pFrame->maFrameData.maRestorePosSize =
Rectangle( Point( rGeom.nX, rGeom.nY ), Size( rGeom.nWidth, rGeom.nHeight ) );
}
}
@@ -1716,3 +1743,268 @@ void WMAdaptor::changeReferenceFrame( SalFrame* pFrame, SalFrame* pReferenceFram
aTransient );
}
}
+
+/*
+ * WMAdaptor::handlePropertyNotify
+ */
+int WMAdaptor::handlePropertyNotify( SalFrame* pFrame, XPropertyEvent* pEvent ) const
+{
+ return 0;
+}
+
+/*
+ * NetWMAdaptor::handlePropertyNotify
+ */
+int NetWMAdaptor::handlePropertyNotify( SalFrame* pFrame, XPropertyEvent* pEvent ) const
+{
+ int nHandled = 1;
+ if( pEvent->atom == m_aWMAtoms[ NET_WM_STATE ] )
+ {
+ pFrame->maFrameData.mbMaximizedHorz = pFrame->maFrameData.mbMaximizedVert = false;
+ pFrame->maFrameData.mbShaded = false;
+
+ if( pEvent->state == PropertyNewValue )
+ {
+ Atom nType, *pStates;
+ int nFormat;
+ unsigned long nItems, nBytesLeft;
+ unsigned char* pData;
+ long nOffset = 0;
+ do
+ {
+ XGetWindowProperty( m_pDisplay,
+ pEvent->window,
+ m_aWMAtoms[ NET_WM_STATE ],
+ nOffset, 64,
+ False,
+ XA_ATOM,
+ &nType,
+ &nFormat,
+ &nItems, &nBytesLeft,
+ &pData );
+ if( pData )
+ {
+ if( nType == XA_ATOM && nFormat == 32 && nItems > 0 )
+ {
+ pStates = (Atom*)pData;
+ for( unsigned long i = 0; i < nItems; i++ )
+ {
+ if( pStates[i] == m_aWMAtoms[ NET_WM_STATE_MAXIMIZED_VERT ] && m_aWMAtoms[ NET_WM_STATE_MAXIMIZED_VERT ] )
+ pFrame->maFrameData.mbMaximizedVert = true;
+ else if( pStates[i] == m_aWMAtoms[ NET_WM_STATE_MAXIMIZED_HORZ ] && m_aWMAtoms[ NET_WM_STATE_MAXIMIZED_HORZ ] )
+ pFrame->maFrameData.mbMaximizedHorz = true;
+ else if( pStates[i] == m_aWMAtoms[ NET_WM_STATE_SHADED ] && m_aWMAtoms[ NET_WM_STATE_SHADED ] )
+ pFrame->maFrameData.mbShaded = true;
+ }
+ }
+ XFree( pData );
+ }
+ } while( nBytesLeft > 0 );
+ }
+
+ if( ! (pFrame->maFrameData.mbMaximizedHorz || pFrame->maFrameData.mbMaximizedVert ) )
+ pFrame->maFrameData.maRestorePosSize = Rectangle();
+ else
+ {
+ const SalFrameGeometry& rGeom = pFrame->GetUnmirroredGeometry();
+ // the current geometry may already be changed by the corresponding
+ // ConfigureNotify, but this cannot be helped
+ pFrame->maFrameData.maRestorePosSize =
+ Rectangle( Point( rGeom.nX, rGeom.nY ),
+ Size( rGeom.nWidth, rGeom.nHeight ) );
+ }
+ }
+ else
+ nHandled = 0;
+
+ return nHandled;
+}
+
+/*
+ * GnomeWMAdaptor::handlePropertyNotify
+ */
+int GnomeWMAdaptor::handlePropertyNotify( SalFrame* pFrame, XPropertyEvent* pEvent ) const
+{
+ int nHandled = 1;
+ if( pEvent->atom == m_aWMAtoms[ WIN_STATE ] )
+ {
+ pFrame->maFrameData.mbMaximizedHorz = pFrame->maFrameData.mbMaximizedVert = false;
+ pFrame->maFrameData.mbShaded = false;
+
+ if( pEvent->state == PropertyNewValue )
+ {
+ Atom nType;
+ int nFormat;
+ unsigned long nItems, nBytesLeft;
+ unsigned char* pData;
+ XGetWindowProperty( m_pDisplay,
+ pEvent->window,
+ m_aWMAtoms[ WIN_STATE ],
+ 0, 1,
+ False,
+ XA_CARDINAL,
+ &nType,
+ &nFormat,
+ &nItems, &nBytesLeft,
+ &pData );
+ if( pData )
+ {
+ if( nType == XA_CARDINAL && nFormat == 32 && nItems == 1 )
+ {
+ sal_uInt32 nWinState = *(sal_uInt32*)pData;
+ if( nWinState & (1<<2) )
+ pFrame->maFrameData.mbMaximizedVert = true;
+ if( nWinState & (1<<3) )
+ pFrame->maFrameData.mbMaximizedHorz = true;
+ if( nWinState & (1<<5) )
+ pFrame->maFrameData.mbShaded = true;
+ }
+ XFree( pData );
+ }
+ }
+
+ if( ! (pFrame->maFrameData.mbMaximizedHorz || pFrame->maFrameData.mbMaximizedVert ) )
+ pFrame->maFrameData.maRestorePosSize = Rectangle();
+ else
+ {
+ const SalFrameGeometry& rGeom = pFrame->GetUnmirroredGeometry();
+ // the current geometry may already be changed by the corresponding
+ // ConfigureNotify, but this cannot be helped
+ pFrame->maFrameData.maRestorePosSize =
+ Rectangle( Point( rGeom.nX, rGeom.nY ),
+ Size( rGeom.nWidth, rGeom.nHeight ) );
+ }
+ }
+ else
+ nHandled = 0;
+
+ return nHandled;
+}
+
+/*
+ * WMAdaptor::shade
+ */
+void WMAdaptor::shade( SalFrame* pFrame, bool bToShaded ) const
+{
+}
+
+/*
+ * NetWMAdaptor::shade
+ */
+void NetWMAdaptor::shade( SalFrame* pFrame, bool bToShaded ) const
+{
+ if( m_aWMAtoms[ NET_WM_STATE ]
+ && m_aWMAtoms[ NET_WM_STATE_SHADED ]
+ && ( pFrame->maFrameData.nStyle_ & ~SAL_FRAME_STYLE_DEFAULT )
+ )
+ {
+ pFrame->maFrameData.mbShaded = bToShaded;
+ if( pFrame->maFrameData.bMapped_ )
+ {
+ // window already mapped, send WM a message
+ XEvent aEvent;
+ aEvent.type = ClientMessage;
+ aEvent.xclient.display = m_pDisplay;
+ aEvent.xclient.window = pFrame->maFrameData.GetShellWindow();
+ aEvent.xclient.message_type = m_aWMAtoms[ NET_WM_STATE ];
+ aEvent.xclient.format = 32;
+ aEvent.xclient.data.l[0] = bToShaded ? 1 : 0;
+ aEvent.xclient.data.l[1] = m_aWMAtoms[ NET_WM_STATE_SHADED ];
+ aEvent.xclient.data.l[2] = 0;
+ aEvent.xclient.data.l[3] = 0;
+ aEvent.xclient.data.l[4] = 0;
+ XSendEvent( m_pDisplay,
+ m_pSalDisplay->GetRootWindow(),
+ False,
+ SubstructureNotifyMask | SubstructureRedirectMask,
+ &aEvent
+ );
+ }
+ else
+ {
+ // window not mapped yet, set _NET_WM_STATE directly
+ setNetWMState( pFrame );
+ }
+ }
+}
+
+/*
+ * GnomeWMAdaptor::shade
+ */
+void GnomeWMAdaptor::shade( SalFrame* pFrame, bool bToShaded ) const
+{
+ if( m_aWMAtoms[ WIN_STATE ] )
+ {
+ pFrame->maFrameData.mbShaded = bToShaded;
+ if( pFrame->maFrameData.bMapped_ )
+ {
+ // window already mapped, send WM a message
+ XEvent aEvent;
+ aEvent.type = ClientMessage;
+ aEvent.xclient.display = m_pDisplay;
+ aEvent.xclient.window = pFrame->maFrameData.GetShellWindow();
+ aEvent.xclient.message_type = m_aWMAtoms[ WIN_STATE ];
+ aEvent.xclient.format = 32;
+ aEvent.xclient.data.l[0] = (1<<5);
+ aEvent.xclient.data.l[1] = bToShaded ? (1<<5) : 0;
+ aEvent.xclient.data.l[2] = 0;
+ aEvent.xclient.data.l[3] = 0;
+ aEvent.xclient.data.l[4] = 0;
+ XSendEvent( m_pDisplay,
+ m_pSalDisplay->GetRootWindow(),
+ False,
+ SubstructureNotifyMask | SubstructureRedirectMask,
+ &aEvent
+ );
+ }
+ else
+ setGnomeWMState( pFrame );
+ }
+}
+
+/*
+ * WMAdaptor::showFullScreen
+ */
+void WMAdaptor::showFullScreen( SalFrame* pFrame, bool bFullScreen ) const
+{
+ pFrame->maFrameData.mbFullScreen = bFullScreen;
+ maximizeFrame( pFrame, bFullScreen, bFullScreen );
+}
+
+/*
+ * NetWMAdaptor::showFullScreen
+ */
+void NetWMAdaptor::showFullScreen( SalFrame* pFrame, bool bFullScreen ) const
+{
+ if( m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ] )
+ {
+ pFrame->maFrameData.mbFullScreen = bFullScreen;
+ if( pFrame->maFrameData.bMapped_ )
+ {
+ // window already mapped, send WM a message
+ XEvent aEvent;
+ aEvent.type = ClientMessage;
+ aEvent.xclient.display = m_pDisplay;
+ aEvent.xclient.window = pFrame->maFrameData.GetShellWindow();
+ aEvent.xclient.message_type = m_aWMAtoms[ NET_WM_STATE ];
+ aEvent.xclient.format = 32;
+ aEvent.xclient.data.l[0] = bFullScreen ? 1 : 0;
+ aEvent.xclient.data.l[1] = m_aWMAtoms[ NET_WM_STATE_FULLSCREEN ];
+ aEvent.xclient.data.l[2] = 0;
+ aEvent.xclient.data.l[3] = 0;
+ aEvent.xclient.data.l[4] = 0;
+ XSendEvent( m_pDisplay,
+ m_pSalDisplay->GetRootWindow(),
+ False,
+ SubstructureNotifyMask | SubstructureRedirectMask,
+ &aEvent
+ );
+ }
+ else
+ {
+ // window not mapped yet, set _NET_WM_STATE directly
+ setNetWMState( pFrame );
+ }
+ }
+ else WMAdaptor::showFullScreen( pFrame, bFullScreen );
+}
diff --git a/vcl/unx/source/gdi/dtint.cxx b/vcl/unx/source/gdi/dtint.cxx
index f0e8aab52970..df1a7020178b 100644
--- a/vcl/unx/source/gdi/dtint.cxx
+++ b/vcl/unx/source/gdi/dtint.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dtint.cxx,v $
*
- * $Revision: 1.13 $
+ * $Revision: 1.14 $
*
- * last change: $Author: pl $ $Date: 2002-10-14 15:48:06 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:49 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -184,7 +184,7 @@ void DtIntegrator::GetSystemLook( AllSettings& rSettings )
{
}
-static Color parseColor( const ByteString& rLine )
+Color DtIntegrator::parseColor( const ByteString& rLine )
{
Color aColor;
@@ -214,7 +214,7 @@ static Color parseColor( const ByteString& rLine )
return aColor;
}
-static Font parseFont( const ByteString& rLine )
+Font DtIntegrator::parseFont( const ByteString& rLine )
{
Font aFont;
@@ -228,9 +228,17 @@ static Font parseFont( const ByteString& rLine )
ByteString aToken = rLine.GetToken( 1, ',', nIndex );
if( aToken.Len() )
{
- int nHeight = aToken.ToInt32();
- if( nHeight > 5 )
- aFont.SetHeight( nHeight );
+ int nPixelHeight = aToken.ToInt32();
+ long nDPIX, nDPIY;
+ long nDispDPIY = mpSalDisplay->GetResolution().B();
+ mpSalDisplay->GetScreenFontResolution( nDPIX, nDPIY );
+ int nHeight = nPixelHeight * nDispDPIY / nDPIY;
+ // allow for rounding in back conversion (at SetFont)
+ while( (nHeight * nDPIY / nDispDPIY) > nPixelHeight )
+ nHeight--;
+ while( (nHeight * nDPIY / nDispDPIY) < nPixelHeight )
+ nHeight++;
+ aFont.SetHeight( nHeight );
}
while( nIndex != STRING_NOTFOUND )
{
@@ -573,6 +581,14 @@ void DtIntegrator::GetSystemLook( const char* pCommand, AllSettings& rSettings )
aStyleSettings.SetGroupFont( aFont );
}
break;
+ case ToolbarIconSize:
+ if( aLine.EqualsIgnoreCaseAscii( "large" ) )
+ aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_LARGE );
+ else if( aLine.EqualsIgnoreCaseAscii( "small" ) )
+ aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_SMALL );
+ else
+ aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_UNKNOWN );
+ break;
#ifdef DEBUG
default:
fprintf( stderr, "don't understand \"%d=%s\"\n", aToken, aLine.GetBuffer() );
diff --git a/vcl/unx/source/gdi/dtsetenum.hxx b/vcl/unx/source/gdi/dtsetenum.hxx
index d200c165830d..2ccb5b89fa71 100644
--- a/vcl/unx/source/gdi/dtsetenum.hxx
+++ b/vcl/unx/source/gdi/dtsetenum.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dtsetenum.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: pl $ $Date: 2002-06-10 17:27:28 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:49 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -171,7 +171,10 @@ enum DtSetEnum
RadioButtonStyle,
CheckBoxStyle,
PushButtonStyle,
- TabControlStyle
+ TabControlStyle,
+ /* toolbar style */
+ ToolbarIconSize
+
};
#endif // _VCL_DTSETENUM_HXX
diff --git a/vcl/unx/source/gdi/gcach_xpeer.cxx b/vcl/unx/source/gdi/gcach_xpeer.cxx
index 621003348daf..cfc3816ade4f 100644
--- a/vcl/unx/source/gdi/gcach_xpeer.cxx
+++ b/vcl/unx/source/gdi/gcach_xpeer.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: gcach_xpeer.cxx,v $
*
- * $Revision: 1.27 $
+ * $Revision: 1.28 $
*
- * last change: $Author: hdu $ $Date: 2002-12-05 17:46:02 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:49 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -68,8 +68,6 @@ using namespace rtl;
#include <stdio.h>
#include <stdlib.h>
-#include <dlfcn.h>
-
// ---------------------------------------------------------------------------
static int nRenderVersion = 0x00;
@@ -139,7 +137,6 @@ void X11GlyphPeer::SetDisplay( Display* _pDisplay, Visual* _pVisual )
// we don't want to install system libraries ourselves
// => load them dynamically when they are there
#ifdef MACOSX
- // [ed] 7/22/02 Use osl loading on OS X.
OUString xrenderLibraryName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.dylib" ));
#else
OUString xrenderLibraryName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.so.1" ));
@@ -147,7 +144,7 @@ void X11GlyphPeer::SetDisplay( Display* _pDisplay, Visual* _pVisual )
oslModule pRenderLib=osl_loadModule(xrenderLibraryName.pData, SAL_LOADMODULE_DEFAULT);
if( !pRenderLib ) {
fprintf( stderr, "Display can do XRender, but no %s installed.\n"
- "Please install for improved display performance\n", xrenderLibraryName.pData );
+ "Please install for improved display performance\n", xrenderLibraryName.getStr() );
return;
}
@@ -192,10 +189,17 @@ void X11GlyphPeer::SetDisplay( Display* _pDisplay, Visual* _pVisual )
if( !pFunc ) return;
pXRenderFreeGlyphs = (void(*)(Display*,GlyphSet,Glyph*,int))pFunc;
+#ifdef MACOSX
+ OUString compStringFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCompositeString16"));
+ pFunc=osl_getSymbol(pRenderLib, compStringFuncName.pData);
+ if( !pFunc ) return;
+ pXRenderCompositeString16 = (void(*)(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned short*,int))pFunc;
+#else // MACOSX
OUString compStringFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCompositeString32"));
pFunc=osl_getSymbol(pRenderLib, compStringFuncName.pData);
if( !pFunc ) return;
pXRenderCompositeString32 = (void(*)(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned*,int))pFunc;
+#endif // MACOSX
OUString creatPicFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCreatePicture"));
pFunc=osl_getSymbol(pRenderLib, creatPicFuncName.pData);
diff --git a/vcl/unx/source/gdi/salgdi.cxx b/vcl/unx/source/gdi/salgdi.cxx
index 93931aab03e9..f69edf97585b 100644
--- a/vcl/unx/source/gdi/salgdi.cxx
+++ b/vcl/unx/source/gdi/salgdi.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salgdi.cxx,v $
*
- * $Revision: 1.22 $
+ * $Revision: 1.23 $
*
- * last change: $Author: pl $ $Date: 2002-11-13 20:24:05 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:51 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -125,7 +125,7 @@ inline SalPolyLine::SalPolyLine( ULONG nPoints, const SalPoint *p )
}
inline SalPolyLine::~SalPolyLine()
-{ if( pFirst_ != Points_ ) delete pFirst_; }
+{ if( pFirst_ != Points_ ) delete [] pFirst_; }
#undef STATIC_POINTS
// -=-= SalGraphicsData =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -522,34 +522,8 @@ void SalGraphics::GetScreenFontResolution( long &rDPIX, long &rDPIY ) // const
if (maGraphicsData.m_pPrinterGfx != NULL)
maGraphicsData.m_pPrinterGfx->GetScreenFontResolution (rDPIX, rDPIY);
else
- {
-#endif
-
- SalDisplay *pDisplay = _GetDisplay();
-
- const Size aSize = pDisplay->GetScreenSize();
- int nThreshold;
-
- if (aSize.Height() <= 600)
- nThreshold = 96;
- else
- if (aSize.Height() <= 768)
- nThreshold = 108;
- else
- nThreshold = 120;
-
- rDPIX = pDisplay->GetResolution().A();
- rDPIY = pDisplay->GetResolution().B();
-
- if( rDPIY < nThreshold )
- {
- rDPIX = Divide( rDPIX * nThreshold, rDPIY );
- rDPIY = nThreshold;
- }
-
-#ifndef _USE_PRINT_EXTENSION_
- }
#endif
+ _GetDisplay()->GetScreenFontResolution( rDPIX, rDPIY );
}
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -1174,6 +1148,13 @@ void SalGraphics::DrawPolyPolygon( ULONG nPoly,
sal_Bool SalGraphics::DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice* )
{
+#ifndef _USE_PRINT_EXTENSION_
+ if (maGraphicsData.m_pPrinterGfx != NULL)
+ {
+ maGraphicsData.m_pPrinterGfx->DrawPolyLineBezier (nPoints, (Point*)pPtAry, pFlgAry);
+ return sal_True;
+ }
+#endif
return sal_False;
}
@@ -1181,6 +1162,13 @@ sal_Bool SalGraphics::DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry,
sal_Bool SalGraphics::DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice* )
{
+#ifndef _USE_PRINT_EXTENSION_
+ if (maGraphicsData.m_pPrinterGfx != NULL)
+ {
+ maGraphicsData.m_pPrinterGfx->DrawPolygonBezier (nPoints, (Point*)pPtAry, pFlgAry);
+ return sal_True;
+ }
+#endif
return sal_False;
}
@@ -1189,6 +1177,14 @@ sal_Bool SalGraphics::DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry,
sal_Bool SalGraphics::DrawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
const SalPoint* const* pPtAry, const BYTE* const* pFlgAry, const OutputDevice* )
{
+#ifndef _USE_PRINT_EXTENSION_
+ // Point must be equal to SalPoint! see vcl/inc/salgtype.hxx
+ if (maGraphicsData.m_pPrinterGfx != NULL)
+ {
+ maGraphicsData.m_pPrinterGfx->DrawPolyPolygonBezier (nPoly, pPoints, (Point**)pPtAry, (BYTE**)pFlgAry);
+ return sal_True;
+ }
+#endif
return sal_False;
}
@@ -1220,7 +1216,14 @@ void SalGraphics::Invert( ULONG nPoints,
else
pGC = maGraphicsData.GetInvertGC();
- maGraphicsData.DrawLines ( nPoints, Points, pGC );
+ if( SAL_INVERT_TRACKFRAME & nFlags )
+ maGraphicsData.DrawLines ( nPoints, Points, pGC );
+ else
+ XFillPolygon( _GetXDisplay(),
+ _GetDrawable(),
+ pGC,
+ &Points[0], nPoints,
+ Complex, CoordModeOrigin );
#ifndef _USE_PRINT_EXTENSION_
}
diff --git a/vcl/unx/source/gdi/salgdi3.cxx b/vcl/unx/source/gdi/salgdi3.cxx
index 3ebc1270973d..0f666fb448d5 100644
--- a/vcl/unx/source/gdi/salgdi3.cxx
+++ b/vcl/unx/source/gdi/salgdi3.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salgdi3.cxx,v $
*
- * $Revision: 1.98 $
+ * $Revision: 1.99 $
*
- * last change: $Author: hdu $ $Date: 2002-12-12 18:11:25 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:51 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -125,6 +125,7 @@
#include <psprint/printergfx.hxx>
#include <psprint/fontmanager.hxx>
#include <psprint/jobdata.hxx>
+#include <psprint/printerinfomanager.hxx>
#include <svapp.hxx>
#endif
@@ -1173,27 +1174,36 @@ void SalGraphicsData::DrawServerSimpleFontString( const ServerFontLayout& rSalLa
// TODO: move into psp project
class PspFontLayout : public GenericSalLayout
{
-private:
- ::psp::PrinterGfx& mrPrinterGfx;
public:
- PspFontLayout( ImplLayoutArgs&, ::psp::PrinterGfx& );
+ PspFontLayout( ::psp::PrinterGfx& );
virtual bool LayoutText( ImplLayoutArgs& );
+ virtual void InitFont() const;
virtual void DrawText( SalGraphics& ) const;
+private:
+ ::psp::PrinterGfx& mrPrinterGfx;
+ int mnFontID;
+ int mnFontHeight;
+ int mnFontWidth;
+ bool mbVertical;
};
//--------------------------------------------------------------------------
-PspFontLayout::PspFontLayout( ImplLayoutArgs& rArgs, ::psp::PrinterGfx& rGfx )
-: GenericSalLayout( rArgs ),
- mrPrinterGfx( rGfx )
+PspFontLayout::PspFontLayout( ::psp::PrinterGfx& rGfx )
+: mrPrinterGfx( rGfx )
{
- LayoutText( rArgs );
+ mnFontID = mrPrinterGfx.GetFontID();
+ mnFontHeight = mrPrinterGfx.GetFontHeight();
+ mnFontWidth = mrPrinterGfx.GetFontWidth();
+ mbVertical = false;
}
//--------------------------------------------------------------------------
bool PspFontLayout::LayoutText( ImplLayoutArgs& rArgs )
{
+ mbVertical = ((rArgs.mnFlags & SAL_LAYOUT_VERTICAL) != 0);
+
long nUnitsPerPixel = 1;
long nWidth = 0;
int nOldGlyphId = -1;
@@ -1235,18 +1245,14 @@ bool PspFontLayout::LayoutText( ImplLayoutArgs& rArgs )
SetOrientation( mrPrinterGfx.GetFontAngle() );
SetUnitsPerPixel( nUnitsPerPixel );
- if( rArgs.mpDXArray )
- ApplyDXArray( rArgs.mpDXArray );
- else if( rArgs.mnLayoutWidth )
- Justify( rArgs.mnLayoutWidth );
- return (nOldGlyphId >= 0);
+ return (nWidth >= 0);
}
//--------------------------------------------------------------------------
void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx )
{
- const int nMaxGlyphs = 160;
+ const int nMaxGlyphs = 200;
long aGlyphAry[ nMaxGlyphs ];
long aWidthAry[ nMaxGlyphs ];
sal_Int32 aIdxAry [ nMaxGlyphs ];
@@ -1275,6 +1281,14 @@ void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx )
//--------------------------------------------------------------------------
+void PspFontLayout::InitFont() const
+{
+ mrPrinterGfx.SetFont( mnFontID, mnFontHeight, mnFontWidth,
+ mnOrientation, mbVertical );
+}
+
+//--------------------------------------------------------------------------
+
void PspFontLayout::DrawText( SalGraphics& ) const
{
DrawPrinterLayout( *this, mrPrinterGfx );
@@ -1780,6 +1794,23 @@ void SalGraphics::GetDevFontList( ImplDevFontList *pList )
// ----------------------------------------------------------------------------
+void SalGraphics::GetDevFontSubstList( OutputDevice* pOutDev )
+{
+#ifndef _USE_PRINT_EXTENSION_
+ if( maGraphicsData.m_pPrinterGfx != NULL )
+ {
+ const psp::PrinterInfo& rInfo = psp::PrinterInfoManager::get().getPrinterInfo( maGraphicsData.m_pJobData->m_aPrinterName );
+ if( rInfo.m_bPerformFontSubstitution )
+ {
+ for( std::hash_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator it = rInfo.m_aFontSubstitutes.begin(); it != rInfo.m_aFontSubstitutes.end(); ++it )
+ pOutDev->ImplAddDevFontSubstitute( it->first, it->second, FONT_SUBSTITUTE_ALWAYS );
+ }
+ }
+#endif
+}
+
+// ----------------------------------------------------------------------------
+
inline long
sal_DivideNeg( long n1, long n2 )
{
@@ -1932,7 +1963,7 @@ ULONG SalGraphics::GetFontCodeRanges( sal_uInt32* pCodePairs ) const
// ---------------------------------------------------------------------------
-BOOL SalGraphics::GetGlyphBoundRect( long nGlyphIndex, bool /*bIsGlyphIndex*/, Rectangle& rRect, const OutputDevice* )
+BOOL SalGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect, const OutputDevice* )
{
int nLevel = nGlyphIndex >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
@@ -1950,7 +1981,7 @@ BOOL SalGraphics::GetGlyphBoundRect( long nGlyphIndex, bool /*bIsGlyphIndex*/, R
// ---------------------------------------------------------------------------
-BOOL SalGraphics::GetGlyphOutline( long nGlyphIndex, bool /*bIsGlyphIndex*/, PolyPolygon& rPolyPoly, const OutputDevice* )
+BOOL SalGraphics::GetGlyphOutline( long nGlyphIndex, PolyPolygon& rPolyPoly, const OutputDevice* )
{
int nLevel = nGlyphIndex >> GF_FONTSHIFT;
if( nLevel >= MAX_FALLBACK )
@@ -1969,7 +2000,7 @@ BOOL SalGraphics::GetGlyphOutline( long nGlyphIndex, bool /*bIsGlyphIndex*/, Pol
//--------------------------------------------------------------------------
-SalLayout* SalGraphicsData::LayoutText( ImplLayoutArgs& rArgs, int nFallbackLevel )
+SalLayout* SalGraphicsData::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
{
#if !defined(_USE_PRINT_EXTENSION_)
// workaround for printers not handling glyph indexing for non-TT fonts
@@ -1985,27 +2016,24 @@ SalLayout* SalGraphicsData::LayoutText( ImplLayoutArgs& rArgs, int nFallbackLeve
if( mpServerFont[ nFallbackLevel ]
&& !(rArgs.mnFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING) )
- {
- // layout in selected font
- pLayout = new ServerFontLayout( rArgs, *mpServerFont[ nFallbackLevel ] );
- }
+ pLayout = new ServerFontLayout( *mpServerFont[ nFallbackLevel ] );
#if !defined(_USE_PRINT_EXTENSION_)
else if( m_pPrinterGfx != NULL )
- {
- pLayout = new PspFontLayout( rArgs, *m_pPrinterGfx );
- }
+ pLayout = new PspFontLayout( *m_pPrinterGfx );
#endif // !defined(_USE_PRINT_EXTENSION_)
else if( mXFont[ nFallbackLevel ] )
- pLayout = new X11FontLayout( rArgs, *mXFont[ nFallbackLevel ] );
+ pLayout = new X11FontLayout( *mXFont[ nFallbackLevel ] );
+ else
+ pLayout = NULL;
return pLayout;
}
//--------------------------------------------------------------------------
-SalLayout* SalGraphics::LayoutText( ImplLayoutArgs& rArgs, int nFallbackLevel )
+SalLayout* SalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
{
- SalLayout* pSalLayout = maGraphicsData.LayoutText( rArgs, nFallbackLevel );
+ SalLayout* pSalLayout = maGraphicsData.GetTextLayout( rArgs, nFallbackLevel );
return pSalLayout;
}
diff --git a/vcl/unx/source/gdi/salprnpsp.cxx b/vcl/unx/source/gdi/salprnpsp.cxx
index 0aebb907b8e2..cbcf2b18aac3 100644
--- a/vcl/unx/source/gdi/salprnpsp.cxx
+++ b/vcl/unx/source/gdi/salprnpsp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salprnpsp.cxx,v $
*
- * $Revision: 1.22 $
+ * $Revision: 1.23 $
*
- * last change: $Author: pl $ $Date: 2002-11-20 12:42:01 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:52 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -74,6 +74,7 @@
#include <salunx.h>
#include <unistd.h>
#include <sys/wait.h>
+#include <sys/stat.h>
#ifndef _SV_JOBSET_H
#include <jobset.h>
@@ -136,7 +137,7 @@ static String getPdfDir( const PrinterInfo& rInfo )
sal_Int32 nPos = 0;
aDir = aToken.getToken( 1, '=', nPos );
if( ! aDir.Len() )
- aDir = String( ByteString( getenv( "HOME" ) ), gsl_getSystemTextEncoding() );
+ aDir = String( ByteString( getenv( "HOME" ) ), osl_getThreadTextEncoding() );
break;
}
}
@@ -234,7 +235,6 @@ static void copyJobDataToJobSetup( ImplJobSetup* pJobSetup, JobData& rData )
}
}
-
// copy input slot
const PPDKey* pKey;
const PPDValue* pValue;
@@ -274,26 +274,25 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma
{
bool bSuccess = false;
- rtl_TextEncoding aEncoding = gsl_getSystemTextEncoding();
+ rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
ByteString aCmdLine( rCommandLine, aEncoding );
ByteString aFilename( rFilename, aEncoding );
- ByteString aPSFilename( aFilename );
- aPSFilename.Append( ".ps" );
-
- BOOL bPS = link( aFilename.GetBuffer(), aPSFilename.GetBuffer() ) ? FALSE : TRUE;
- const ByteString& rUseFilename( bPS ? aPSFilename : aFilename );
bool bPipe = aCmdLine.Search( "(TMP)" ) != STRING_NOTFOUND ? false : true;
// setup command line for exec
if( ! bPipe )
- while( aCmdLine.SearchAndReplace( "(TMP)", rUseFilename ) != STRING_NOTFOUND )
+ while( aCmdLine.SearchAndReplace( "(TMP)", aFilename ) != STRING_NOTFOUND )
;
#ifdef DEBUG
fprintf( stderr, "%s commandline: \"%s\"\n",
bPipe ? "piping to" : "executing",
aCmdLine.GetBuffer() );
+ struct stat aStat;
+ if( stat( aFilename.GetBuffer(), &aStat ) )
+ fprintf( stderr, "stat( %s ) failed\n", aFilename.GetBuffer() );
+ fprintf( stderr, "Tmp file %s has modes: %o\n", aFilename.GetBuffer(), aStat.st_mode );
#endif
const char* argv[4];
if( ! ( argv[ 0 ] = getenv( "SHELL" ) ) )
@@ -345,14 +344,13 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma
// clean up the mess
unlink( aFilename.GetBuffer() );
- if( bPS )
- unlink( aPSFilename.GetBuffer() );
+
return bSuccess;
}
static bool sendAFax( const String& rFaxNumber, const String& rFileName, const String& rCommand )
{
- rtl_TextEncoding aEncoding = gsl_getSystemTextEncoding();
+ rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
String aFaxNumber( rFaxNumber );
String aCmdLine( rCommand );
if( ! aFaxNumber.Len() )
@@ -886,9 +884,9 @@ SalPrinter::~SalPrinter()
// -----------------------------------------------------------------------
-static inline String getTmpName()
+static String getTmpName()
{
- char tmpNam[ L_tmpnam ];
+ char tmpNam[ L_tmpnam + 4 ];
#if defined( FREEBSD ) || defined (IRIX)
mkstemp ( tmpNam );
#elif defined( MACOSX )
@@ -896,12 +894,17 @@ static inline String getTmpName()
char *tempFileName;
tempFileName = macxp_tempnam( NULL, NULL );
strncpy( tmpNam, tempFileName, L_tmpnam );
+ strcat( tmpNam, ".ps" );
free( tempFileName );
}
#else
- tmpnam_r( tmpNam );
+ do
+ {
+ tmpnam_r( tmpNam );
+ strcat( tmpNam, ".ps" );
+ } while( ! access( tmpNam, F_OK ) );
#endif
- return String( ByteString( tmpNam ), gsl_getSystemTextEncoding() );
+ return String( ByteString( tmpNam ), osl_getThreadTextEncoding() );
}
BOOL SalPrinter::StartJob(
@@ -926,6 +929,7 @@ BOOL SalPrinter::StartJob(
maPrinterData.m_aJobData.m_nCopies = maPrinterData.m_nCopies;
// check wether this printer is configured as fax
+ int nMode = 0;
const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( maPrinterData.m_aJobData.m_aPrinterName ) );
sal_Int32 nIndex = 0;
while( nIndex != -1 )
@@ -935,6 +939,7 @@ BOOL SalPrinter::StartJob(
{
maPrinterData.m_bFax = true;
maPrinterData.m_aTmpFile = getTmpName();
+ nMode = S_IRUSR | S_IWUSR;
::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash >::const_iterator it;
it = pJobSetup->maValueMap.find( ::rtl::OUString::createFromAscii( "FAX#" ) );
@@ -950,6 +955,8 @@ BOOL SalPrinter::StartJob(
{
maPrinterData.m_bPdf = true;
maPrinterData.m_aTmpFile = getTmpName();
+ nMode = S_IRUSR | S_IWUSR;
+
if( ! maPrinterData.m_aFileName.Len() )
{
maPrinterData.m_aFileName = getPdfDir( rInfo );
@@ -961,7 +968,7 @@ BOOL SalPrinter::StartJob(
}
}
maPrinterData.m_aPrinterGfx.Init( maPrinterData.m_aJobData );
- return maPrinterData.m_aPrintJob.StartJob( maPrinterData.m_aTmpFile.Len() ? maPrinterData.m_aTmpFile : maPrinterData.m_aFileName, rJobName, rAppName, maPrinterData.m_aJobData ) ? TRUE : FALSE;
+ return maPrinterData.m_aPrintJob.StartJob( maPrinterData.m_aTmpFile.Len() ? maPrinterData.m_aTmpFile : maPrinterData.m_aFileName, nMode, rJobName, rAppName, maPrinterData.m_aJobData, &maPrinterData.m_aPrinterGfx ) ? TRUE : FALSE;
}
// -----------------------------------------------------------------------
@@ -1025,7 +1032,6 @@ SalGraphics* SalPrinter::StartPage( ImplJobSetup* pJobSetup, BOOL bNewJobData )
BOOL SalPrinter::EndPage()
{
- maPrinterData.m_aPrinterGfx.OnEndPage();
sal_Bool bResult = maPrinterData.m_aPrintJob.EndPage();
maPrinterData.m_aPrinterGfx.Clear();
return bResult ? TRUE : FALSE;
diff --git a/vcl/unx/source/gdi/salvd.cxx b/vcl/unx/source/gdi/salvd.cxx
index 0ad6d0f15c7c..03bc4acacdff 100644
--- a/vcl/unx/source/gdi/salvd.cxx
+++ b/vcl/unx/source/gdi/salvd.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salvd.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: pl $ $Date: 2002-06-18 11:27:16 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:52 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -138,7 +138,8 @@ BOOL SalVirDevData::Init( SalDisplay *pDisplay,
USHORT nBitCount )
{
pDisplay_ = pDisplay;
- pGraphics_ = new SalGraphics();
+ pGraphics_ = new SalGraphicsLayout();
+ pGraphics_->SetLayout( 0 ); // by default no! mirroring for VirtualDevices, can be enabled with EnableRTL()
nDX_ = nDX;
nDY_ = nDY;
nDepth_ = nBitCount;
diff --git a/vcl/unx/source/gdi/xfont.cxx b/vcl/unx/source/gdi/xfont.cxx
index 9005de22251b..0414c4209e7a 100644
--- a/vcl/unx/source/gdi/xfont.cxx
+++ b/vcl/unx/source/gdi/xfont.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: xfont.cxx,v $
*
- * $Revision: 1.24 $
+ * $Revision: 1.25 $
*
- * last change: $Author: hdu $ $Date: 2002-12-13 15:18:11 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:58:53 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -650,12 +650,9 @@ GetVerticalClass( sal_Unicode nChar )
// =======================================================================
-X11FontLayout::X11FontLayout( ImplLayoutArgs& rArgs, ExtendedFontStruct& rFont )
-: GenericSalLayout( rArgs ),
- mrFont( rFont )
-{
- LayoutText( rArgs );
-}
+X11FontLayout::X11FontLayout( ExtendedFontStruct& rFont )
+: mrFont( rFont )
+{}
// -----------------------------------------------------------------------
@@ -691,11 +688,6 @@ bool X11FontLayout::LayoutText( ImplLayoutArgs& rArgs )
aNewPos.X() += nGlyphWidth;
}
- if( rArgs.mpDXArray )
- ApplyDXArray( rArgs.mpDXArray );
- else if( rArgs.mnLayoutWidth )
- Justify( rArgs.mnLayoutWidth );
-
return (nGlyphCount > 0);
}
diff --git a/vcl/unx/source/window/salframe.cxx b/vcl/unx/source/window/salframe.cxx
index 5a727f2ad6bb..25ef9563346a 100644
--- a/vcl/unx/source/window/salframe.cxx
+++ b/vcl/unx/source/window/salframe.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salframe.cxx,v $
*
- * $Revision: 1.153 $
+ * $Revision: 1.154 $
*
- * last change: $Author: ssa $ $Date: 2002-11-26 17:27:03 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:05 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -185,12 +185,12 @@ using namespace vcl;
#define _GetPaintRegion() maFrameData.GetPaintRegion()
#define _IsMapped() maFrameData.bMapped_
-static XLIB_Window hPresentationWindow = None;
+static XLIB_Window hPresentationWindow = None, hPresFocusWindow = None;
static ::std::list< XLIB_Window > aPresentationReparentList;
-static SalFrame* pIntroBitmap = NULL;
-static bool bWasIntroBitmap = false;
static int nVisibleFloats = 0;
+SalFrame* SalFrameData::s_pSaveYourselfFrame = NULL;
+
// -=-= C++ statics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
static long sal_CallbackDummy( void*, SalFrame*, USHORT, const void* )
@@ -224,6 +224,8 @@ static void doReparentPresentationDialogues( SalDisplay* pDisplay )
x, y );
aPresentationReparentList.pop_front();
}
+ if( hPresFocusWindow )
+ XSetInputFocus( pDisplay->GetDisplay(), hPresFocusWindow, PointerRoot, CurrentTime );
XSync( pDisplay->GetDisplay(), False );
pDisplay->GetXLib()->SetIgnoreXErrors( bIgnore );
}
@@ -337,7 +339,13 @@ void SalGraphicsData::Init( SalFrame *pFrame )
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
bool SalFrameData::IsOverrideRedirect() const
-{ return ! ( nStyle_ & ~SAL_FRAME_STYLE_DEFAULT ); }
+{
+ return
+ ((nStyle_ & SAL_FRAME_STYLE_INTRO) && !pDisplay_->getWMAdaptor()->supportsSplash())
+ ||
+ (!( nStyle_ & ~SAL_FRAME_STYLE_DEFAULT ) && !pDisplay_->getWMAdaptor()->supportsFullScreen())
+ ;
+}
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -447,7 +455,7 @@ void SalFrameData::Init( ULONG nSalFrameStyle, SystemParentData* pParentData )
SalFrame* pFrame = pNextFrame_;
while( pFrame &&
( pFrame->maFrameData.mpParent
- || pFrame->maFrameData.IsOverrideRedirect()
+ || pFrame->maFrameData.mbFullScreen
|| ! ( pFrame->maFrameData.nStyle_ & SAL_FRAME_STYLE_SIZEABLE )
|| ! pFrame->GetUnmirroredGeometry().nWidth
|| ! pFrame->GetUnmirroredGeometry().nHeight
@@ -477,7 +485,7 @@ void SalFrameData::Init( ULONG nSalFrameStyle, SystemParentData* pParentData )
}
}
}
- Attributes.win_gravity = NorthWestGravity;
+ Attributes.win_gravity = StaticGravity;
nAttrMask |= CWWinGravity;
if( mpParent )
{
@@ -519,6 +527,8 @@ void SalFrameData::Init( ULONG nSalFrameStyle, SystemParentData* pParentData )
pFrame_->maGeometry.nWidth = w;
pFrame_->maGeometry.nHeight = h;
+ XSync( GetXDisplay(), False );
+
if( ! pParentData && ! (nSalFrameStyle & (SAL_FRAME_STYLE_FLOAT|SAL_FRAME_STYLE_CHILD)) )
{
XSetWMHints( GetXDisplay(), mhWindow, &Hints );
@@ -526,8 +536,13 @@ void SalFrameData::Init( ULONG nSalFrameStyle, SystemParentData* pParentData )
Atom a[4];
int n = 0;
a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_DELETE_WINDOW );
- a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_SAVE_YOURSELF );
- XSetWMProtocols( GetXDisplay(), mhWindow, a, n );
+ if( ! s_pSaveYourselfFrame && ! mpParent)
+ {
+ // at all times have only one frame with SaveYourself
+ a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_SAVE_YOURSELF );
+ s_pSaveYourselfFrame = pFrame_;
+ }
+ XSetWMProtocols( GetXDisplay(), GetShellWindow(), a, n );
XClassHint* pClass = XAllocClassHint();
pClass->res_name = getFrameResName();
@@ -535,6 +550,14 @@ void SalFrameData::Init( ULONG nSalFrameStyle, SystemParentData* pParentData )
XSetClassHint( GetXDisplay(), GetShellWindow(), pClass );
XFree( pClass );
+ XSizeHints* pHints = XAllocSizeHints();
+ pHints->flags = PWinGravity;
+ pHints->win_gravity = GetDisplay()->getWMAdaptor()->getPositionWinGravity();
+ XSetWMNormalHints( GetXDisplay(),
+ GetShellWindow(),
+ pHints );
+ XFree (pHints);
+
// set client leader
XLIB_Window aLeader = GetDisplay()->GetDrawable();
XChangeProperty( GetXDisplay(),
@@ -546,37 +569,43 @@ void SalFrameData::Init( ULONG nSalFrameStyle, SystemParentData* pParentData )
(unsigned char*)&aLeader,
1
);
- }
-
- XSync( GetXDisplay(), False );
-
- int nDecoFlags = WMAdaptor::decoration_All;
- if( ( nStyle_ & (SAL_FRAME_STYLE_MOVEABLE | SAL_FRAME_STYLE_SIZEABLE | SAL_FRAME_STYLE_CLOSEABLE ) != (SAL_FRAME_STYLE_MOVEABLE | SAL_FRAME_STYLE_SIZEABLE | SAL_FRAME_STYLE_CLOSEABLE) )
- || ( nStyle_ & SAL_FRAME_STYLE_TOOLWINDOW )
- )
- {
- nDecoFlags = WMAdaptor::decoration_Border;
- if( ! mpParent )
- nDecoFlags |= WMAdaptor::decoration_MinimizeBtn;
- if( nStyle_ & SAL_FRAME_STYLE_CLOSEABLE )
- nDecoFlags |= WMAdaptor::decoration_CloseBtn;
- if( nStyle_ & SAL_FRAME_STYLE_SIZEABLE )
+#define DECOFLAGS (SAL_FRAME_STYLE_MOVEABLE | SAL_FRAME_STYLE_SIZEABLE | SAL_FRAME_STYLE_CLOSEABLE)
+ int nDecoFlags = WMAdaptor::decoration_All;
+ if( (nStyle_ & DECOFLAGS ) != DECOFLAGS || (nStyle_ & SAL_FRAME_STYLE_TOOLWINDOW) )
{
- nDecoFlags |= WMAdaptor::decoration_Resize;
- if( ! nStyle_ & SAL_FRAME_STYLE_TOOLWINDOW )
- nDecoFlags |= WMAdaptor::decoration_MaximizeBtn;
+ if( nStyle_ & (SAL_FRAME_STYLE_MOVEABLE | SAL_FRAME_STYLE_SIZEABLE | SAL_FRAME_STYLE_CLOSEABLE ) )
+ // if any decoration, then show a border
+ nDecoFlags = WMAdaptor::decoration_Border;
+ else
+ nDecoFlags = 0;
+
+ if( ! mpParent && (nStyle_ & DECOFLAGS) )
+ // don't add a min button if window should be decorationless
+ nDecoFlags |= WMAdaptor::decoration_MinimizeBtn;
+ if( nStyle_ & SAL_FRAME_STYLE_CLOSEABLE )
+ nDecoFlags |= WMAdaptor::decoration_CloseBtn;
+ if( nStyle_ & SAL_FRAME_STYLE_SIZEABLE )
+ {
+ nDecoFlags |= WMAdaptor::decoration_Resize;
+ if( ! nStyle_ & SAL_FRAME_STYLE_TOOLWINDOW )
+ nDecoFlags |= WMAdaptor::decoration_MaximizeBtn;
+ }
+ if( nStyle_ & SAL_FRAME_STYLE_MOVEABLE )
+ nDecoFlags |= WMAdaptor::decoration_Title;
}
- if( nStyle_ & SAL_FRAME_STYLE_MOVEABLE )
- nDecoFlags |= WMAdaptor::decoration_Title;
- }
- GetDisplay()->getWMAdaptor()->
- setFrameTypeAndDecoration( pFrame_,
- (mpParent && hPresentationWindow == None) ?
- WMAdaptor::windowType_ModelessDialogue
- : WMAdaptor::windowType_Normal,
- nDecoFlags,
- hPresentationWindow ? NULL : mpParent );
+ WMAdaptor::WMWindowType eType = WMAdaptor::windowType_Normal;
+ if( nStyle_ & SAL_FRAME_STYLE_INTRO )
+ eType = WMAdaptor::windowType_Splash;
+ if( mpParent && hPresentationWindow == None )
+ eType = WMAdaptor::windowType_ModelessDialogue;
+
+ GetDisplay()->getWMAdaptor()->
+ setFrameTypeAndDecoration( pFrame_,
+ eType,
+ nDecoFlags,
+ hPresentationWindow ? NULL : mpParent );
+ }
if( nStyle_ & SAL_FRAME_STYLE_DEFAULT )
pDisplay_->getWMAdaptor()->maximizeFrame( pFrame_, true, true );
@@ -615,10 +644,11 @@ inline SalFrameData::SalFrameData( SalFrame *pFrame )
nKeyCode_ = 0;
nKeyState_ = 0;
nCompose_ = -1;
+ mbKeyMenu = false;
+ mbSendExtKeyModChange = false;
+ mnExtKeyMod = 0;
nShowState_ = SHOWSTATE_UNKNOWN;
- nMaxWidth_ = 0;
- nMaxHeight_ = 0;
nWidth_ = 0;
nHeight_ = 0;
nStyle_ = 0;
@@ -651,6 +681,10 @@ inline SalFrameData::SalFrameData( SalFrame *pFrame )
mnDecorationFlags = WMAdaptor::decoration_All;
mbMaximizedVert = false;
mbMaximizedHorz = false;
+ mbShaded = false;
+ mbFullScreen = false;
+ mbMoved = false;
+ mbSized = false;
mnIconID = 0; // ICON_DEFAULT
}
@@ -677,9 +711,6 @@ inline SalFrameData::~SalFrameData()
doReparentPresentationDialogues( GetDisplay() );
}
- if( pIntroBitmap == pFrame_ )
- pIntroBitmap = NULL;
-
NotifyDeleteData ();
if( pGraphics_ )
@@ -718,6 +749,23 @@ inline SalFrameData::~SalFrameData()
&& pSalData->pFirstFrame_ == pStatusFrame
&& pSalData->pFirstFrame_->maFrameData.GetNextFrame() == NULL )
::vcl::I18NStatus::free();
+
+ if( pFrame_ == s_pSaveYourselfFrame )
+ {
+ // pass on SaveYourself
+ SalFrame* pFrame = pSalData->pFirstFrame_;
+ while( pFrame && ( ( pFrame->maFrameData.nStyle_ & (SAL_FRAME_STYLE_FLOAT|SAL_FRAME_STYLE_CHILD) ) || pFrame->maFrameData.mpParent ) )
+ pFrame->maFrameData.GetNextFrame();
+ s_pSaveYourselfFrame = pFrame;
+ if( pFrame )
+ {
+ Atom a[4];
+ int n = 0;
+ a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_DELETE_WINDOW );
+ a[n++] = pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_SAVE_YOURSELF );
+ XSetWMProtocols( GetXDisplay(), pFrame->maFrameData.GetShellWindow(), a, n );
+ }
+ }
}
SalFrame::~SalFrame()
@@ -923,19 +971,17 @@ void SalFrame::Show( BOOL bVisible, BOOL /*bNoActivate*/ )
if( bVisible )
{
maFrameData.mbInShow = TRUE;
- if( ! bWasIntroBitmap && maFrameData.IsOverrideRedirect() )
+ if( ! (maFrameData.nStyle_ & SAL_FRAME_STYLE_INTRO) )
{
- const Size& rScreenSize( maFrameData.pDisplay_->GetScreenSize() );
- if( (int)maGeometry.nWidth < rScreenSize.Width()-30 ||
- (int)maGeometry.nHeight < rScreenSize.Height()-30 )
+ SalFrame* pFrame = GetSalData()->pFirstFrame_;
+ while( pFrame )
{
- bWasIntroBitmap = true;
- pIntroBitmap = this;
+ // look for intro bit map; if present, hide it
+ if( pFrame->maFrameData.nStyle_ & SAL_FRAME_STYLE_INTRO )
+ pFrame->Show( FALSE );
+ pFrame = pFrame->maFrameData.pNextFrame_;
}
}
- // look for intro bit map; if present, hide it
- if( pIntroBitmap && pIntroBitmap != this )
- pIntroBitmap->Show( FALSE );
/*
* #95097#
@@ -954,6 +1000,8 @@ void SalFrame::Show( BOOL bVisible, BOOL /*bNoActivate*/ )
{
_GetDisplay()->getWMAdaptor()->changeReferenceFrame( this, maFrameData.mpParent );
}
+
+ // actually map the window
if( maFrameData.GetWindow() != maFrameData.GetShellWindow() )
{
XMapWindow( _GetXDisplay(), maFrameData.GetShellWindow() );
@@ -1082,12 +1130,16 @@ void SalFrame::ToTop( USHORT nFlags )
XMapWindow( _GetXDisplay(), maFrameData.GetWindow() );
}
- XRaiseWindow( _GetXDisplay(), maFrameData.GetShellWindow() );
- for( ::std::list< SalFrame* >::const_iterator it = maFrameData.maChildren.begin();
- it != maFrameData.maChildren.end(); ++it )
- (*it)->ToTop( nFlags & ~SAL_FRAME_TOTOP_GRABFOCUS );
+ if( ! (nFlags & SAL_FRAME_TOTOP_GRABFOCUS_ONLY) )
+ {
+ XRaiseWindow( _GetXDisplay(), maFrameData.GetShellWindow() );
+ for( ::std::list< SalFrame* >::const_iterator it = maFrameData.maChildren.begin();
+ it != maFrameData.maChildren.end(); ++it )
+ (*it)->ToTop( nFlags & ~SAL_FRAME_TOTOP_GRABFOCUS );
+ }
- if( ( nFlags & SAL_FRAME_TOTOP_GRABFOCUS ) && maFrameData.bMapped_ )
+ if( ( ( nFlags & SAL_FRAME_TOTOP_GRABFOCUS ) || ( nFlags & SAL_FRAME_TOTOP_GRABFOCUS_ONLY ) )
+ && maFrameData.bMapped_ )
XSetInputFocus( _GetXDisplay(), maFrameData.GetShellWindow(), RevertToParent, CurrentTime );
}
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -1120,16 +1172,14 @@ void SalFrame::GetClientSize( long &rWidth, long &rHeight )
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-void SalFrameData::SetWindowGravity (int nGravity, const Point& rPosition) const
+void SalFrameData::SetWindowGravity (int nGravity) const
{
XSizeHints* pHint = XAllocSizeHints();
long nFlag;
XGetWMNormalHints (GetXDisplay(), GetShellWindow(), pHint, &nFlag);
- pHint->flags |= PWinGravity | PPosition;
+ pHint->flags |= PWinGravity;
pHint->win_gravity = nGravity;
- pHint->x = rPosition.X();
- pHint->y = rPosition.Y();
XSetWMNormalHints (GetXDisplay(), GetShellWindow(), pHint);
XSync (GetXDisplay(), False);
@@ -1216,10 +1266,6 @@ void SalFrameData::Center( )
}
Point aPoint(nX, nY);
- const WMAdaptor *pWM = GetDisplay()->getWMAdaptor();
- int nGravity = pWM->getPositionWinGravity();
-
- SetWindowGravity (nGravity, aPoint);
SetPosSize( Rectangle( aPoint, Size( pFrame_->maGeometry.nWidth, pFrame_->maGeometry.nHeight ) ) );
}
@@ -1322,6 +1368,7 @@ SalFrame::SetWindowState( const SalFrameState *pState )
const Size& rScreenSize( maFrameData.pDisplay_->GetScreenSize() );
const WMAdaptor *pWM = _GetDisplay()->getWMAdaptor();
int nGravity = pWM->getPositionWinGravity();
+
bool bAdjusted = false;
if( pState->mnMask & ( SAL_FRAMESTATE_MASK_HEIGHT | SAL_FRAMESTATE_MASK_WIDTH )
&& aPosSize.GetWidth() <= rScreenSize.Width()
@@ -1375,7 +1422,9 @@ SalFrame::SetWindowState( const SalFrameState *pState )
}
// demand correct positioning from the WM
- maFrameData.SetWindowGravity (nGravity, Point(aPosSize.getX(), aPosSize.getY()));
+ if( bAdjusted )
+ maFrameData.SetWindowGravity ( nGravity );
+
// resize with new args
if (pWM->supportsICCCMPos())
{
@@ -1395,8 +1444,18 @@ SalFrame::SetWindowState( const SalFrameState *pState )
if (pState->mnState & SAL_FRAMESTATE_MAXIMIZED)
{
maFrameData.nShowState_ = SHOWSTATE_NORMAL;
- maFrameData.Maximize();
+ if( ! (pState->mnMask & (SAL_FRAMESTATE_MAXIMIZED_HORZ|SAL_FRAMESTATE_MAXIMIZED_VERT) ) )
+ maFrameData.Maximize();
+ else
+ {
+ bool bHorz = (pState->mnState & SAL_FRAMESTATE_MAXIMIZED_HORZ) ? true : false;
+ bool bVert = (pState->mnState & SAL_FRAMESTATE_MAXIMIZED_VERT) ? true : false;
+ _GetDisplay()->getWMAdaptor()->maximizeFrame( this, bHorz, bVert );
+ }
}
+ else if( maFrameData.mbMaximizedHorz || maFrameData.mbMaximizedVert )
+ _GetDisplay()->getWMAdaptor()->maximizeFrame( this, false, false );
+
if (pState->mnState & SAL_FRAMESTATE_MINIMIZED)
{
if (maFrameData.nShowState_ == SHOWSTATE_UNKNOWN)
@@ -1409,9 +1468,7 @@ SalFrame::SetWindowState( const SalFrameState *pState )
maFrameData.Restore();
}
if (pState->mnState & SAL_FRAMESTATE_ROLLUP)
- {
- /* not implemented */
- }
+ _GetDisplay()->getWMAdaptor()->shade( this, true );
}
}
@@ -1424,15 +1481,21 @@ BOOL SalFrame::GetWindowState( SalFrameState* pState )
pState->mnState = SAL_FRAMESTATE_NORMAL;
Rectangle aPosSize;
- if (! maFrameData.aRestoreFullScreen_.IsEmpty() )
+ if (! maFrameData.maRestorePosSize.IsEmpty() )
{
- aPosSize = maFrameData.aRestoreFullScreen_;
+ aPosSize = maFrameData.maRestorePosSize;
pState->mnState |= SAL_FRAMESTATE_MAXIMIZED;
}
else
{
maFrameData.GetPosSize( aPosSize );
}
+ if( maFrameData.mbMaximizedHorz )
+ pState->mnState |= SAL_FRAMESTATE_MAXIMIZED_HORZ;
+ if( maFrameData.mbMaximizedVert )
+ pState->mnState |= SAL_FRAMESTATE_MAXIMIZED_VERT;
+ if( maFrameData.mbShaded )
+ pState->mnState |= SAL_FRAMESTATE_ROLLUP;
pState->mnX = aPosSize.Left();
pState->mnY = aPosSize.Top();
@@ -1454,8 +1517,7 @@ SalFrame::SnapShot()
// make sure the frame has been reparented and all paint timer have been
// expired
maFrameData.maResizeTimer.Stop();
- if ( maFrameData.maResizeBuffer.GetWidth() != 0
- || maFrameData.maResizeBuffer.GetHeight() != 0)
+ if ( maFrameData.mbMoved || maFrameData.mbSized )
{
maFrameData.HandleResizeTimer (&maFrameData.maResizeTimer);
}
@@ -1502,12 +1564,8 @@ void SalFrameData::GetPosSize( Rectangle &rPosSize )
{
if( pFrame_->maGeometry.nWidth < 1 || pFrame_->maGeometry.nHeight < 1 )
{
- long w = nMaxWidth_
- ? nMaxWidth_
- : pDisplay_->GetScreenSize().Width() - pFrame_->maGeometry.nLeftDecoration - pFrame_->maGeometry.nRightDecoration;
- long h = nMaxHeight_
- ? nMaxHeight_
- : pDisplay_->GetScreenSize().Height() - pFrame_->maGeometry.nTopDecoration - pFrame_->maGeometry.nBottomDecoration;
+ long w = pDisplay_->GetScreenSize().Width() - pFrame_->maGeometry.nLeftDecoration - pFrame_->maGeometry.nRightDecoration;
+ long h = pDisplay_->GetScreenSize().Height() - pFrame_->maGeometry.nTopDecoration - pFrame_->maGeometry.nBottomDecoration;
rPosSize = Rectangle( Point( pFrame_->maGeometry.nX, pFrame_->maGeometry.nY ), Size( w, h ) );
}
@@ -1567,13 +1625,7 @@ void SalFrameData::SetPosSize( const Rectangle &rPosSize )
values.width = rPosSize.GetWidth();
values.height = rPosSize.GetHeight();
- if ( !values.width
- || !values.height
- || ( pFrame_->maGeometry.nX == rPosSize.Left()
- && pFrame_->maGeometry.nY == rPosSize.Top()
- && (int)pFrame_->maGeometry.nWidth == rPosSize.GetWidth()
- && (int)pFrame_->maGeometry.nHeight == rPosSize.GetHeight() )
- )
+ if( !values.width || !values.height )
return;
if( mpParent )
@@ -1606,9 +1658,13 @@ void SalFrameData::SetPosSize( const Rectangle &rPosSize )
values.y -= pFrame_->maGeometry.nTopDecoration;
}
- if( ! ( nStyle_ & SAL_FRAME_STYLE_SIZEABLE )
- && ! ( nStyle_ & SAL_FRAME_STYLE_CHILD )
- && ! ( nStyle_ & SAL_FRAME_STYLE_FLOAT ) )
+ if( ( ! ( nStyle_ & SAL_FRAME_STYLE_CHILD )
+ && ! ( nStyle_ & SAL_FRAME_STYLE_FLOAT ) )
+ && ( nShowState_ == SHOWSTATE_UNKNOWN ||
+ nShowState_ == SHOWSTATE_HIDDEN ||
+ ! ( nStyle_ & SAL_FRAME_STYLE_SIZEABLE )
+ )
+ )
{
XSizeHints* pHints = XAllocSizeHints();
long nSupplied = 0;
@@ -1617,16 +1673,27 @@ void SalFrameData::SetPosSize( const Rectangle &rPosSize )
pHints,
&nSupplied
);
- pHints->min_width = rPosSize.GetWidth();
- pHints->min_height = rPosSize.GetHeight();
- pHints->max_width = rPosSize.GetWidth();
- pHints->max_height = rPosSize.GetHeight();
- pHints->flags |= PMinSize | PMaxSize;
+ if( ! ( nStyle_ & SAL_FRAME_STYLE_SIZEABLE ) )
+ {
+ pHints->min_width = rPosSize.GetWidth();
+ pHints->min_height = rPosSize.GetHeight();
+ pHints->max_width = rPosSize.GetWidth();
+ pHints->max_height = rPosSize.GetHeight();
+ pHints->flags |= PMinSize | PMaxSize;
+ }
+ if( nShowState_ == SHOWSTATE_UNKNOWN || nShowState_ == SHOWSTATE_HIDDEN )
+ {
+ pHints->flags |= PPosition | PWinGravity;
+ pHints->x = values.x;
+ pHints->y = values.y;
+ pHints->win_gravity = pDisplay_->getWMAdaptor()->getPositionWinGravity();
+ }
XSetWMNormalHints( GetXDisplay(),
GetShellWindow(),
pHints );
XFree( pHints );
}
+
XMoveResizeWindow( GetXDisplay(), GetShellWindow(), values.x, values.y, values.width, values.height );
if( GetShellWindow() != GetWindow() )
XMoveResizeWindow( GetXDisplay(), GetWindow(), 0, 0, values.width, values.height );
@@ -1650,9 +1717,9 @@ void SalFrameData::SetPosSize( const Rectangle &rPosSize )
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void SalFrameData::Minimize()
{
- if( SHOWSTATE_UNKNOWN == nShowState_ )
+ if( SHOWSTATE_UNKNOWN == nShowState_ || SHOWSTATE_HIDDEN == nShowState_ )
{
- stderr0( "SalFrameData::Minimize SHOWSTATE_UNKNOWN\n" );
+ stderr0( "SalFrameData::Minimize on withdrawn window\n" );
return;
}
@@ -1677,9 +1744,9 @@ void SalFrameData::Maximize()
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void SalFrameData::Restore()
{
- if( SHOWSTATE_UNKNOWN == nShowState_ )
+ if( SHOWSTATE_UNKNOWN == nShowState_ || SHOWSTATE_HIDDEN == nShowState_ )
{
- stderr0( "SalFrameData::Restore SHOWSTATE_UNKNOWN\n" );
+ stderr0( "SalFrameData::Restore on withdrawn window\n" );
return;
}
@@ -1696,9 +1763,10 @@ void SalFrameData::Restore()
void SalFrame::ShowFullScreen( BOOL bFullScreen )
{
- if( maFrameData.aRestoreFullScreen_.IsEmpty() == !bFullScreen )
+ if( maFrameData.mbFullScreen == (bool)bFullScreen )
return;
- maFrameData.pDisplay_->getWMAdaptor()->maximizeFrame( this, bFullScreen, bFullScreen );
+
+ maFrameData.pDisplay_->getWMAdaptor()->showFullScreen( this, bFullScreen );
if( maFrameData.IsOverrideRedirect()
&& WMSupportsFWS( maFrameData.GetXDisplay(), maFrameData.GetDisplay()->GetRootWindow()) )
{
@@ -1787,9 +1855,17 @@ void SalFrame::StartPresentation( BOOL bStart )
if( ! bStart && hPresentationWindow != None )
doReparentPresentationDialogues( _GetDisplay() );
- hPresentationWindow = bStart ? maFrameData.GetWindow() : None;
+ hPresentationWindow = (bStart && maFrameData.IsOverrideRedirect() ) ? maFrameData.GetWindow() : None;
if( bStart || maFrameData.nScreenSaversTimeout_ )
{
+ if( hPresentationWindow )
+ {
+ /* #i10559# workaround for WindowMaker: try to restore
+ * current focus after presentation window is gone
+ */
+ int revert_to = 0;
+ XGetInputFocus( _GetXDisplay(), &hPresFocusWindow, &revert_to );
+ }
int timeout, interval, prefer_blanking, allow_exposures;
XGetScreenSaver( _GetXDisplay(),
&timeout,
@@ -1926,7 +2002,9 @@ BOOL SalFrame::PostEvent( void *pData )
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void SalFrame::SetTitle( const XubString& rTitle )
{
- _GetDisplay()->getWMAdaptor()->setWMName( this, rTitle );
+ if( ! ( (maFrameData.nStyle_ & SAL_FRAME_STYLE_CHILD ) ||
+ (maFrameData.nStyle_ & SAL_FRAME_STYLE_FLOAT ) ) )
+ _GetDisplay()->getWMAdaptor()->setWMName( this, rTitle );
}
// -----------------------------------------------------------------------
@@ -2227,6 +2305,12 @@ long SalFrameData::HandleMouseEvent( XEvent *pEvent )
// because XUngrabPointer does not produce errors if pointer
// is not grabbed
XUngrabPointer( GetXDisplay(), CurrentTime );
+ ImplSVData* pSVData = ImplGetSVData();
+ if ( pSVData->maWinData.mpFirstFloat )
+ {
+ if ( !(pSVData->maWinData.mpFirstFloat->GetPopupModeFlags() & FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE) )
+ pSVData->maWinData.mpFirstFloat->EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL | FLOATWIN_POPUPMODEEND_CLOSEALL );
+ }
}
}
@@ -2391,8 +2475,6 @@ long SalFrameData::HandleKeyEvent( XKeyEvent *pEvent )
USHORT nKeyCode;
USHORT nModCode = 0;
char aDummy;
- static USHORT nLastModKeyCode = 0;
- static BOOL bWaitForModKeyRelease = FALSE;
if( pEvent->state & ShiftMask )
nModCode |= KEY_SHIFT;
@@ -2412,98 +2494,86 @@ long SalFrameData::HandleKeyEvent( XKeyEvent *pEvent )
{
SalKeyModEvent aModEvt;
aModEvt.mnModKeyCode = 0;
+ if( pEvent->type == XLIB_KeyPress && mnExtKeyMod == 0 )
+ mbSendExtKeyModChange = true;
+ else if( pEvent->type == KeyRelease && mbSendExtKeyModChange )
+ {
+ aModEvt.mnModKeyCode = mnExtKeyMod;
+ mnExtKeyMod = 0;
+ }
// pressing just the ctrl key leads to a keysym of XK_Control but
// the event state does not contain ControlMask. In the release
// event its the other way round: it does contain the Control mask.
- // The modifier mode therefor has to be adapted manually.
- if (pEvent->type == KeyRelease)
- {
- if ( (nKeySym == XK_Control_L) || (nKeySym == XK_Control_R) )
- nModCode &= ~KEY_MOD1;
- if ( (nKeySym == XK_Shift_L) || (nKeySym == XK_Shift_R) )
- nModCode &= ~KEY_SHIFT;
- if ( (nKeySym == XK_Alt_L) || (nKeySym == XK_Alt_R) )
- nModCode &= ~(KEY_MOD2|KEY_CONTROLMOD);
- }
- else
- {
- if ( (nKeySym == XK_Control_L) || (nKeySym == XK_Control_R) )
- nModCode |= KEY_MOD1;
- if ( (nKeySym == XK_Shift_L) || (nKeySym == XK_Shift_R) )
- nModCode |= KEY_SHIFT;
- if ( (nKeySym == XK_Alt_L) || (nKeySym == XK_Alt_R) )
- nModCode |= KEY_MOD2;
+ // The modifier mode therefore has to be adapted manually.
+ USHORT nExtModMask = 0;
+ USHORT nModMask = 0;
+ switch( nKeySym )
+ {
+ case XK_Control_L:
+ nExtModMask = MODKEY_LMOD1;
+ nModMask = KEY_MOD1;
+ break;
+ case XK_Control_R:
+ nExtModMask = MODKEY_RMOD1;
+ nModMask = KEY_MOD1;
+ break;
+ case XK_Alt_L:
+ nExtModMask = MODKEY_LMOD2;
+ nModMask = KEY_MOD2 | (pEvent->type==KeyRelease ? KEY_CONTROLMOD : 0);
+ break;
+ case XK_Alt_R:
+ nExtModMask = MODKEY_RMOD2;
+ nModMask = KEY_MOD2 | (pEvent->type==KeyRelease ? KEY_CONTROLMOD : 0);
+ break;
+ case XK_Shift_L:
+ nExtModMask = MODKEY_LSHIFT;
+ nModMask = KEY_SHIFT;
+ break;
+ case XK_Shift_R:
+ nExtModMask = MODKEY_RSHIFT;
+ nModMask = KEY_SHIFT;
+ break;
}
-
- // #105224# extended modkey event to distinguish right/left modifiers
- static USHORT tmpCode = 0;
if( pEvent->type == KeyRelease )
{
- if ( nKeySym == XK_Control_L )
- tmpCode &= ~MODKEY_LMOD1;
- if ( nKeySym == XK_Control_R )
- tmpCode &= ~MODKEY_RMOD1;
- if ( nKeySym == XK_Alt_L )
- tmpCode &= ~MODKEY_LMOD2;
- if ( nKeySym == XK_Alt_R )
- tmpCode &= ~MODKEY_RMOD2;
- if ( nKeySym == XK_Shift_L )
- tmpCode &= ~MODKEY_LSHIFT;
- if ( nKeySym == XK_Shift_R )
- tmpCode &= ~MODKEY_RSHIFT;
+ nModCode &= ~nModMask;
+ mnExtKeyMod &= ~nExtModMask;
}
else
{
- if ( nKeySym == XK_Control_L )
- tmpCode |= MODKEY_LMOD1;
- if ( nKeySym == XK_Control_R )
- tmpCode |= MODKEY_RMOD1;
- if ( nKeySym == XK_Alt_L )
- tmpCode |= MODKEY_LMOD2;
- if ( nKeySym == XK_Alt_R )
- tmpCode |= MODKEY_RMOD2;
- if ( nKeySym == XK_Shift_L )
- tmpCode |= MODKEY_LSHIFT;
- if ( nKeySym == XK_Shift_R )
- tmpCode |= MODKEY_RSHIFT;
+ nModCode |= nModMask;
+ mnExtKeyMod |= nExtModMask;
}
- if( tmpCode < nLastModKeyCode )
- {
- aModEvt.mnModKeyCode = nLastModKeyCode;
- nLastModKeyCode = 0;
- bWaitForModKeyRelease = true;
- }
- else
- {
- if( !bWaitForModKeyRelease )
- nLastModKeyCode = tmpCode;
- }
-
- if( !tmpCode )
- bWaitForModKeyRelease = false;
-
aModEvt.mnCode = nModCode;
aModEvt.mnTime = pEvent->time;
int nRet = Call( SALEVENT_KEYMODCHANGE, &aModEvt );
+ // emulate KEY_MENU
if ( ( (nKeySym == XK_Alt_L) || (nKeySym == XK_Alt_R) ) &&
( (nModCode & ~(KEY_CONTROLMOD|KEY_MOD2)) == 0 ) )
{
- // simulate KEY_MENU
- aKeyEvt.mnCode = KEY_MENU | nModCode;
- aKeyEvt.mnRepeat = 0;
- aKeyEvt.mnTime = pEvent->time;
- aKeyEvt.mnCharCode = 0;
- nRet = Call( pEvent->type == KeyRelease ? SALEVENT_KEYUP : SALEVENT_KEYINPUT, &aKeyEvt );
+ if( pEvent->type == XLIB_KeyPress )
+ mbKeyMenu = true;
+ else if( mbKeyMenu )
+ {
+ // simulate KEY_MENU
+ aKeyEvt.mnCode = KEY_MENU | nModCode;
+ aKeyEvt.mnRepeat = 0;
+ aKeyEvt.mnTime = pEvent->time;
+ aKeyEvt.mnCharCode = 0;
+ nRet = Call( SALEVENT_KEYINPUT, &aKeyEvt );
+ nRet = Call( SALEVENT_KEYUP, &aKeyEvt );
+ }
}
+ else
+ mbKeyMenu = false;
return nRet;
}
- nLastModKeyCode = 0; // make sure no modkey messages are sent if they belong to a hotkey (see above)
- bWaitForModKeyRelease = TRUE;
+ mbSendExtKeyModChange = mbKeyMenu = false;
// try to figure out the vcl code for the keysym
nKeyCode = pDisplay_->GetKeyCode( nKeySym, &aDummy );
@@ -2699,6 +2769,8 @@ long SalFrameData::HandleFocusEvent( XFocusChangeEvent *pEvent )
else
{
mbInputFocus = False;
+ mbSendExtKeyModChange = mbKeyMenu = false;
+ mnExtKeyMod = 0;
return Call( SALEVENT_LOSEFOCUS, 0 );
}
}
@@ -2729,8 +2801,8 @@ long SalFrameData::HandleExposeEvent( XEvent *pEvent )
nCount = pEvent->xgraphicsexpose.count;
}
- if( IsOverrideRedirect() && ! aRestoreFullScreen_.IsEmpty()
- && aPresentationReparentList.begin() == aPresentationReparentList.end() )
+ if( IsOverrideRedirect() && mbFullScreen &&
+ aPresentationReparentList.begin() == aPresentationReparentList.end() )
// we are in fullscreen mode -> override redirect
// focus is possibly lost, so reget it
XSetInputFocus( GetXDisplay(), GetShellWindow(), RevertToNone, CurrentTime );
@@ -2865,39 +2937,16 @@ long SalFrameData::HandleSizeEvent( XConfigureEvent *pEvent )
// check size hints in first time SalFrame::Show
if( SHOWSTATE_UNKNOWN == nShowState_ && bMapped_ )
- {
nShowState_ = SHOWSTATE_NORMAL;
- XSizeHints* pHints = XAllocSizeHints ();
- long nSuppliedFlags;
- if( XGetWMNormalHints( pEvent->display,
- pEvent->window,
- pHints,
- &nSuppliedFlags ) )
- {
- if( pHints->flags & PMaxSize ) // supplied
- {
- nMaxWidth_ = pHints->max_width;
- nMaxHeight_ = pHints->max_height;
- DBG_ASSERT( nMaxWidth_ && nMaxHeight_, "!MaxWidth^!MaxHeight" )
- }
- pHints->flags = pHints->flags | PWinGravity;
- pHints->win_gravity = pDisplay_->getWMAdaptor()->getPositionWinGravity();
- XSetWMNormalHints( pEvent->display,
- GetShellWindow(),
- pHints );
- XSync( pEvent->display, False );
- }
-
- XFree (pHints);
- }
-
nWidth_ = pEvent->width;
nHeight_ = pEvent->height;
- if( maResizeBuffer.IsEmpty() )
- maResizeBuffer = Rectangle( Point( pFrame_->maGeometry.nX, pFrame_->maGeometry.nY ),
- Size( pFrame_->maGeometry.nWidth, pFrame_->maGeometry.nHeight ) );
+ if( !mbMoved )
+ mbMoved = ( pEvent->x != pFrame_->maGeometry.nX || pEvent->y != pFrame_->maGeometry.nY );
+ if( !mbSized )
+ mbSized = ( pEvent->width != pFrame_->maGeometry.nWidth || pEvent->height != pFrame_->maGeometry.nHeight );
+
maResizeTimer.Start();
pFrame_->maGeometry.nX = pEvent->x;
@@ -2917,27 +2966,18 @@ IMPL_LINK( SalFrameData, HandleAlwaysOnTopRaise, void*, pDummy )
IMPL_LINK( SalFrameData, HandleResizeTimer, void*, pDummy )
{
- bool bMoved = false;
- bool bSized = false;
- if( maResizeBuffer.Left() != pFrame_->maGeometry.nX ||
- maResizeBuffer.Top() != pFrame_->maGeometry.nY )
- bMoved = true;
- if( maResizeBuffer.GetWidth() != (int)pFrame_->maGeometry.nWidth ||
- maResizeBuffer.GetHeight() != (int)pFrame_->maGeometry.nHeight )
- bSized = true;
-
- maResizeBuffer = Rectangle();
-
// update children's position
RestackChildren();
- if( bSized && ! bMoved )
+ if( mbSized && ! mbMoved )
Call ( SALEVENT_RESIZE, NULL );
- else if( bMoved && ! bSized )
+ else if( mbMoved && ! mbSized )
Call ( SALEVENT_MOVE, NULL );
- else if( bMoved && bSized )
+ else if( mbMoved && mbSized )
Call ( SALEVENT_MOVERESIZE, NULL );
+ mbMoved = mbSized = false;
+
SalPaintEvent aPEvt;
aPEvt.mnBoundX = maPaintRegion.Left();
@@ -2984,6 +3024,11 @@ long SalFrameData::HandleReparentEvent( XReparentEvent *pEvent )
&hDummy,
&Children,
&nChildren );
+ /* #107048# this sometimes happens if a Show(TRUE) is
+ * immediately followed by Show(FALSE) (which is braindead anyway)
+ */
+ if( hDummy == hWM_Parent )
+ hDummy = hRoot;
if( hDummy != hRoot )
{
hWM_Parent = hDummy;
@@ -3098,28 +3143,6 @@ long SalFrameData::HandleReparentEvent( XReparentEvent *pEvent )
bool bResized = w != pFrame_->maGeometry.nWidth || h != pFrame_->maGeometry.nHeight;
pFrame_->maGeometry.nWidth = w;
pFrame_->maGeometry.nHeight = h;
- XSizeHints* pHints = XAllocSizeHints();
- long nSuppliedFlags;
- if( XGetWMNormalHints( pEvent->display,
- GetShellWindow(),
- pHints,
- &nSuppliedFlags ) )
- {
- if( pHints->flags & PMaxSize ) // supplied
- {
- nMaxWidth_ = pHints->max_width;
- nMaxHeight_ = pHints->max_height;
- DBG_ASSERT( nMaxWidth_ && nMaxHeight_, "!MaxWidth^!MaxHeight" )
- }
- pHints->flags = pHints->flags | PWinGravity;
- pHints->win_gravity = pDisplay_->getWMAdaptor()->getPositionWinGravity();
- XSetWMNormalHints( pEvent->display,
- GetShellWindow(),
- pHints );
- XSync( pEvent->display, False );
- }
-
- XFree (pHints);
// limit width and height if we are too large: #47757
// olwm and fvwm need this, it doesnt harm the rest
@@ -3231,10 +3254,7 @@ long SalFrameData::HandleClientMessage( XClientMessageEvent *pEvent )
}
else if( (Atom)pEvent->data.l[0] == rWMAdaptor.getAtom( WMAdaptor::WM_SAVE_YOURSELF ) )
{
- SalFrame* pLast = GetSalData()->pFirstFrame_;
- while( pLast->maFrameData.pNextFrame_ )
- pLast = pLast->maFrameData.pNextFrame_;
- if( pLast == pFrame_ )
+ if( pFrame_ == s_pSaveYourselfFrame && ! rWMAdaptor.getWindowManagerName().EqualsAscii( "Dtwm" ) )
{
ByteString aExec( SessionManagerClient::getExecName(), osl_getThreadTextEncoding() );
char* argv[2];
@@ -3245,8 +3265,17 @@ long SalFrameData::HandleClientMessage( XClientMessageEvent *pEvent )
#endif
XSetCommand( GetXDisplay(), GetShellWindow(), argv, 2 );
}
- else
- XDeleteProperty( GetXDisplay(), GetShellWindow(), rWMAdaptor.getAtom( WMAdaptor::WM_COMMAND ) );
+ else // can only happen in race between WM and window closing
+ XChangeProperty( GetXDisplay(), GetShellWindow(), rWMAdaptor.getAtom( WMAdaptor::WM_COMMAND ), XA_STRING, 8, PropModeReplace, (unsigned char*)"", 0 );
+
+ if( rWMAdaptor.getWindowManagerName().EqualsAscii( "Dtwm" ) )
+ {
+#ifdef DEBUG
+ fprintf( stderr, "sending ShutDown message\n" );
+#endif
+ Application::EnableDialogCancel( TRUE );
+ ShutDown();
+ }
}
}
return 0;
@@ -3357,10 +3386,7 @@ long SalFrameData::Dispatch( XEvent *pEvent )
maPaintRegion.Union( Rectangle( Point( 0, 0 ), Size( pFrame_->maGeometry.nWidth, pFrame_->maGeometry.nHeight ) ) );
if( ! maResizeTimer.IsActive() )
{
- maResizeBuffer = Rectangle( Point( pFrame_->maGeometry.nX,
- pFrame_->maGeometry.nY ),
- Size( pFrame_->maGeometry.nWidth,
- pFrame_->maGeometry.nHeight ) );
+ mbSized = mbMoved = true;
maResizeTimer.Start();
}
}
@@ -3447,7 +3473,7 @@ long SalFrameData::Dispatch( XEvent *pEvent )
if( pEvent->xproperty.atom == pDisplay_->getWMAdaptor()->getAtom( WMAdaptor::WM_STATE ) )
nRet = HandleStateEvent( &pEvent->xproperty );
else
- nRet = 1;
+ nRet = pDisplay_->getWMAdaptor()->handlePropertyNotify( pFrame_, &pEvent->xproperty );
break;
}
diff --git a/vcl/util/defs/wntmsci8 b/vcl/util/defs/wntmsci8
index afba0c0b8bc3..784066b7294e 100644
--- a/vcl/util/defs/wntmsci8
+++ b/vcl/util/defs/wntmsci8
@@ -5380,3502 +5380,3 @@ WIN_Rectangle@20
??_C@_0CB@CLKCKGPP@com?4sun?4star?4beans?4PropertyState@
?getCppuType@@YAABVType@uno@star@sun@com@@PBW4PropertyState@beans@345@@Z
?s_pType_com_sun_star_beans_PropertyState@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBW4PropertyState@beans@456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?GetAntialiasingMinPixelHeight@StyleSettings@@QBEKXZ
-?GetDisplayOptions@StyleSettings@@QBEKXZ
-?GetStyle@Window@@QBE_JXZ
-??0?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??1?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??G@YA?AVPoint@@ABV0@0@Z
-??H@YA?AVPoint@@ABV0@0@Z
-?GetEnableATToolSupport@MiscSettings@@QBEEXZ
-?GetLayoutRTL@AllSettings@@QBEEXZ
-?SetEnableATToolSupport@MiscSettings@@QAEXE@Z
-?equalsIgnoreAsciiCaseAscii@OUString@rtl@@QBEEPBD@Z
-??0?$_List_base@VLink@@V?$allocator@VLink@@@std@@@std@@QAE@ABV?$allocator@VLink@@@1@@Z
-??0?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@std@@QAE@ABU01@@Z
-??0?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@std@@QAE@PAU?$_List_node@VLink@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@VLink@@@std@@U12@V?$allocator@U?$_List_node@VLink@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_List_node@VLink@@@std@@@1@PAU?$_List_node@VLink@@@1@@Z
-??0?$allocator@U?$_List_node@VLink@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@VLink@@@std@@@std@@QAE@ABV?$allocator@VLink@@@1@@Z
-??0?$allocator@VLink@@@std@@QAE@XZ
-??0?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE@ABV?$allocator@VLink@@@1@@Z
-??0VclEventListeners@@QAE@XZ
-??0VclSimpleEvent@@QAE@K@Z
-??0VclWindowEvent@@QAE@PAVWindow@@KPAX@Z
-??0_List_iterator_base@std@@QAE@PAU_List_node_base@1@@Z
-??1?$_List_base@VLink@@V?$allocator@VLink@@@std@@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@VLink@@@std@@U12@V?$allocator@U?$_List_node@VLink@@@std@@@2@@std@@QAE@XZ
-??1?$allocator@U?$_List_node@VLink@@@std@@@std@@QAE@XZ
-??1?$allocator@VLink@@@std@@QAE@XZ
-??1?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE@XZ
-??4KeyCode@@QAEAAV0@ABV0@@Z
-??4String@@QAEAAV0@ABVOUString@rtl@@@Z
-??9_List_iterator_base@std@@QBE_NABU01@@Z
-??D?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@std@@QBEAAVLink@@XZ
-??E?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@std@@QAEAAU01@XZ
-??_7VclSimpleEvent@@6B@
-??_7VclWindowEvent@@6B@
-?AddEventListener@Application@@SAXABVLink@@@Z
-?AddKeyListener@Application@@SAXABVLink@@@Z
-?CallAccel@Application@@SAEABVKeyCode@@G@Z
-?GetActiveTopWindow@Application@@SAPAVWindow@@XZ
-?GetAutoMnemonic@StyleSettings@@QBEEXZ
-?GetTopWindow@Application@@SAPAVWindow@@J@Z
-?GetTopWindowCount@Application@@SAJXZ
-?HandleKey@Application@@SAEKPAVWindow@@PAVKeyEvent@@@Z
-?IsAccessibilityEnabled@Application@@SAEXZ
-?PostKeyEvent@Application@@SAXKPAVWindow@@PAVKeyEvent@@@Z
-?RemoveEventListener@Application@@SAXABVLink@@@Z
-?RemoveKeyListener@Application@@SAXABVLink@@@Z
-?SetAutoMnemonic@StyleSettings@@QAEXE@Z
-?_Construct@std@@YAXPAVLink@@ABV2@@Z
-?_Destroy@std@@YAXPAVLink@@@Z
-?_M_create_node@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@IAEPAU?$_List_node@VLink@@@2@ABVLink@@@Z
-?_M_incr@_List_iterator_base@std@@QAEXXZ
-?allocate@?$allocator@U?$_List_node@VLink@@@std@@@std@@QBEPAU?$_List_node@VLink@@@2@IPBX@Z
-?begin@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@2@XZ
-?clear@?$_List_base@VLink@@V?$allocator@VLink@@@std@@@std@@QAEXXZ
-?deallocate@?$allocator@U?$_List_node@VLink@@@std@@@std@@QBEXPAU?$_List_node@VLink@@@2@I@Z
-?empty@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QBE_NXZ
-?end@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@2@XZ
-?erase@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@2@U32@@Z
-?insert@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@2@U32@ABVLink@@@Z
-?push_back@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAEXABVLink@@@Z
-?remove@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAEXABVLink@@@Z
-??0?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??0?$Reference@VXComponent@lang@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@QAE@ABV01234@@Z
-??0?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@QAE@PAVXCurrentContext@1234@@Z
-??0?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??0?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$_List_base@VString@@V?$allocator@VString@@@std@@@std@@QAE@ABV?$allocator@VString@@@1@@Z
-??0?$_List_iterator@VString@@U?$_Nonconst_traits@VString@@@std@@@std@@QAE@PAU?$_List_node@VString@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@VString@@@std@@U12@V?$allocator@U?$_List_node@VString@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_List_node@VString@@@std@@@1@PAU?$_List_node@VString@@@1@@Z
-??0?$allocator@U?$_List_node@VString@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@VString@@@std@@@std@@QAE@ABV?$allocator@VString@@@1@@Z
-??0?$allocator@VString@@@std@@QAE@XZ
-??0?$list@VString@@V?$allocator@VString@@@std@@@std@@QAE@ABV?$allocator@VString@@@1@@Z
-??0AccessBridgeCurrentContext@@QAE@ABV?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@@Z
-??0ContextLayer@uno@star@sun@com@@QAE@ABV?$Reference@VXCurrentContext@uno@star@sun@com@@@1234@@Z
-??0XCurrentContext@uno@star@sun@com@@QAE@XZ
-??1?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??1?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??1?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??1?$_List_base@VString@@V?$allocator@VString@@@std@@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@VString@@@std@@U12@V?$allocator@U?$_List_node@VString@@@std@@@2@@std@@QAE@XZ
-??1?$allocator@U?$_List_node@VString@@@std@@@std@@QAE@XZ
-??1?$allocator@VString@@@std@@QAE@XZ
-??1?$list@VString@@V?$allocator@VString@@@std@@@std@@QAE@XZ
-??1AccessBridgeCurrentContext@@UAE@XZ
-??1ContextLayer@uno@star@sun@com@@QAE@XZ
-??1DeploymentException@uno@star@sun@com@@QAE@XZ
-??1JavaInitializationException@java@star@sun@com@@QAE@XZ
-??3@YAXPAX0@Z
-??4?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAAAAV01234@ABV01234@@Z
-??C?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@QBAPAVXCurrentContext@1234@XZ
-??_7AccessBridgeCurrentContext@@6BOWeakObject@cppu@@@
-??_7AccessBridgeCurrentContext@@6BXCurrentContext@uno@star@sun@com@@@
-??_7AccessBridgeCurrentContext@@6BXTypeProvider@lang@star@sun@com@@@
-??_C@_04NPFLBBPL@msci?$AA@
-??_C@_0CA@JIGCNJJM@com?4sun?4star?4lang?4XTypeProvider?$AA@
-??_C@_0CB@FOAAJKKE@com?4sun?4star?4uno?4XCurrentContext@
-??_C@_0CJ@MNCACNCN@drafts?4com?4sun?4star?4awt?4XExtende@
-??_C@_0EB@HGABDKAI@drafts?4com?4sun?4star?4accessibilit@
-??_GAccessBridgeCurrentContext@@UAEPAXI@Z
-??_R0?AVJavaInitializationException@java@star@sun@com@@@8
-?_Construct@std@@YAXPAVString@@ABV2@@Z
-?_Destroy@std@@YAXPAVString@@@Z
-?_M_create_node@?$list@VString@@V?$allocator@VString@@@std@@@std@@IAEPAU?$_List_node@VString@@@2@ABVString@@@Z
-?allocate@?$allocator@U?$_List_node@VString@@@std@@@std@@QBEPAU?$_List_node@VString@@@2@IPBX@Z
-?clear@?$_List_base@VString@@V?$allocator@VString@@@std@@@std@@QAEXXZ
-?compareTo@OUString@rtl@@QBEJABV12@J@Z
-?cpp_acquire@uno@star@sun@com@@YAXPAX@Z
-?cpp_release@uno@star@sun@com@@YAXPAX@Z
-?deallocate@?$allocator@U?$_List_node@VString@@@std@@@std@@QBEXPAU?$_List_node@VString@@@2@I@Z
-?end@?$list@VString@@V?$allocator@VString@@@std@@@std@@QAE?AU?$_List_iterator@VString@@U?$_Nonconst_traits@VString@@@std@@@2@XZ
-?equalsAscii@OUString@rtl@@QBEEPBD@Z
-?get@?$Reference@VXCurrentContext@uno@star@sun@com@@@uno@star@sun@com@@QBAPAVXCurrentContext@2345@XZ
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@2345@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXCurrentContext@uno@star@sun@com@@@2345@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@2345@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXTypeProvider@lang@star@sun@com@@@2345@@Z
-?getCurrentContext@uno@star@sun@com@@YA?AV?$Reference@VXCurrentContext@uno@star@sun@com@@@1234@XZ
-?getValueByName@AccessBridgeCurrentContext@@UAA?AVAny@uno@star@sun@com@@ABVOUString@rtl@@@Z
-?insert@?$list@VString@@V?$allocator@VString@@@std@@@std@@QAE?AU?$_List_iterator@VString@@U?$_Nonconst_traits@VString@@@std@@@2@U32@ABVString@@@Z
-?iquery@?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@CAPAVXAccessibleTopWindowMap@bridge@accessibility@345drafts@@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXComponent@lang@star@sun@com@@@uno@star@sun@com@@CAPAVXComponent@lang@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@uno@star@sun@com@@CAPAVXExtendedToolkit@awt@345drafts@@PAVXInterface@2345@@Z
-?iquery@BaseReference@uno@star@sun@com@@KAPAVXInterface@2345@PAV62345@ABVType@2345@@Z
-?makeAny@uno@star@sun@com@@YA?AVAny@1234@ABV?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@1234@@Z
-?push_back@?$list@VString@@V?$allocator@VString@@@std@@@std@@QAEXABVString@@@Z
-?s_pType_com_sun_star_lang_XTypeProvider@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXTypeProvider@lang@star@sun@com@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?s_pType_com_sun_star_uno_XCurrentContext@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXCurrentContext@uno@star@sun@com@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?s_pType_drafts_com_sun_star_accessibility_bridge_XAccessibleTopWindowMap@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?s_pType_drafts_com_sun_star_awt_XExtendedToolkit@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?set@?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAAEPAVXAccessibleTopWindowMap@bridge@accessibility@345drafts@@@Z
-??1VclEventListeners@@QAE@XZ
-??_GVclEventListeners@@QAEPAXI@Z
-?GetDisplayInfo@System@@SA_NAAUDisplayInfo@1@@Z
-?queryInterface@cppu@@YA?AVAny@uno@star@sun@com@@ABVType@3456@PAVXEventListener@lang@456@PAVXDragGestureListener@dnd@datatransfer@456@PAVXDragSourceListener@dnd@datatransfer@456@PAVXDropTargetListener@dnd@datatransfer@456@@Z
-?NotifyAccessibleStateEventGlobally@unohelper@vcl@@YAXABUAccessibleEventObject@accessibility@star@sun@com@drafts@@@Z
-?cpp_queryInterface@uno@star@sun@com@@YAPAXPAXPAU_typelib_TypeDescriptionReference@@@Z
-??0TextDataObject@unohelper@vcl@@QAE@ABVString@@@Z
-??1TextDataObject@unohelper@vcl@@UAE@XZ
-??_7TextDataObject@unohelper@vcl@@6BOWeakObject@cppu@@@
-??_7TextDataObject@unohelper@vcl@@6BXTransferable@datatransfer@star@sun@com@@@
-??_GTextDataObject@unohelper@vcl@@UAEPAXI@Z
-?GetString@TextDataObject@unohelper@vcl@@QAEAAVString@@XZ
-?acquire@TextDataObject@unohelper@vcl@@UAAXXZ
-?acquire@TextDataObject@unohelper@vcl@@W3AAXXZ
-?getTransferData@TextDataObject@unohelper@vcl@@UAA?AVAny@uno@star@sun@com@@ABUDataFlavor@datatransfer@678@@Z
-?getTransferDataFlavors@TextDataObject@unohelper@vcl@@UAA?AV?$Sequence@UDataFlavor@datatransfer@star@sun@com@@@uno@star@sun@com@@XZ
-?isDataFlavorSupported@TextDataObject@unohelper@vcl@@UAAEABUDataFlavor@datatransfer@star@sun@com@@@Z
-?queryInterface@TextDataObject@unohelper@vcl@@UAA?AVAny@uno@star@sun@com@@ABVType@5678@@Z
-?queryInterface@TextDataObject@unohelper@vcl@@W3AA?AVAny@uno@star@sun@com@@ABVType@5678@@Z
-?release@TextDataObject@unohelper@vcl@@UAAXXZ
-?release@TextDataObject@unohelper@vcl@@W3AAXXZ
-??0?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@std@@QAE@PAU?$_List_node@VLink@@@1@@Z
-??0?$allocator@VLink@@@std@@QAE@ABV?$allocator@U?$_List_node@VLink@@@std@@@1@@Z
-??0?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAE@ABV01@@Z
-??D?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@std@@QBEABVLink@@XZ
-??E?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@std@@QAEAAU01@XZ
-??E?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@std@@QAE?AU01@H@Z
-?Call@VclEventListeners@@QBEXPAVVclSimpleEvent@@@Z
-?CreateType@VclMenuEvent@@SAPAXXZ
-?CreateType@VclSimpleEvent@@SAPAXXZ
-?CreateType@VclWindowEvent@@SAPAXXZ
-?IsA@VclMenuEvent@@UBEEP6APAXXZ@Z
-?IsA@VclSimpleEvent@@UBEEP6APAXXZ@Z
-?IsA@VclWindowEvent@@UBEEP6APAXXZ@Z
-?IsOf@VclMenuEvent@@SAEP6APAXXZ@Z
-?IsOf@VclSimpleEvent@@SAEP6APAXXZ@Z
-?IsOf@VclWindowEvent@@SAEP6APAXXZ@Z
-?Process@VclEventListeners@@QBEEPAVVclSimpleEvent@@@Z
-?StaticType@VclMenuEvent@@SAP6APAXXZXZ
-?StaticType@VclSimpleEvent@@SAP6APAXXZXZ
-?StaticType@VclWindowEvent@@SAP6APAXXZXZ
-?Type@VclMenuEvent@@UBEP6APAXXZXZ
-?Type@VclSimpleEvent@@UBEP6APAXXZXZ
-?Type@VclWindowEvent@@UBEP6APAXXZXZ
-?_M_insert_dispatch@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAEXU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@2@U?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@2@1ABU__false_type@2@@Z
-?begin@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QBE?AU?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@2@XZ
-?end@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QBE?AU?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@2@XZ
-?get_allocator@?$_List_base@VLink@@V?$allocator@VLink@@@std@@@std@@QBE?AV?$allocator@VLink@@@2@XZ
-?insert@?$list@VLink@@V?$allocator@VLink@@@std@@@std@@QAEXU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@std@@@2@U?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@std@@@2@1@Z
-?CompareString@I18nHelper@vcl@@QBEJABVString@@0@Z
-?GetDate@I18nHelper@vcl@@QBE?AVString@@ABVDate@@@Z
-?GetNum@I18nHelper@vcl@@QBE?AVString@@JGEE@Z
-?GetColorTransformedBitmap@Bitmap@@QBE?AV1@W4BmpColorMode@@@Z
-?GetBitmap@AlphaMask@@QBE?AVBitmap@@XZ
-?GetColorTransformedBitmapEx@BitmapEx@@QBE?AV1@W4BmpColorMode@@@Z
-??0ImpGfxLink@@QAE@XZ
-??1ImpGfxLink@@QAE@XZ
-??4ImpGfxLink@@QAEAAU0@ABU0@@Z
-??_GImpGfxLink@@QAEPAXI@Z
-?GetPrefMapMode@GfxLink@@QBEABVMapMode@@XZ
-?GetPrefSize@GfxLink@@QBEABVSize@@XZ
-?SetPrefMapMode@GfxLink@@QAEXABVMapMode@@@Z
-?SetPrefSize@GfxLink@@QAEXABVSize@@@Z
-?GetBitmap@Graphic@@QBE?AVBitmap@@PBVSize@@@Z
-?GetBitmapEx@Graphic@@QBE?AVBitmapEx@@PBVSize@@@Z
-?ClearCaches@Image@@QAEXXZ
-?GetBitmap@Image@@QBE?AVBitmap@@XZ
-?GetColorTransformArrays@Image@@SAXW4ImageColorTransform@@AAPAVColor@@1AAK@Z
-?GetColorTransformedImage@Image@@QBE?AV1@W4ImageColorTransform@@@Z
-?GetColorTransformedImageList@ImageList@@QBE?AV1@W4ImageColorTransform@@@Z
-?GetMaskBitmap@Image@@QBE?AVBitmap@@XZ
-?GetMaskColor@Image@@QBE?AVColor@@XZ
-?HasMaskBitmap@Image@@QBEEXZ
-?HasMaskColor@Image@@QBEEXZ
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@PAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@1@PAV?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@1@@Z
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@ABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@1@@Z
-??0?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@1@I@Z
-??0?$allocator@PAX@std@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@1@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@QAE@XZ
-??0?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAE@XZ
-??0?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@IABUOUStringHash@rtl@@ABU?$equal_to@VOUString@rtl@@@1@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@1@@Z
-??0?$pair@$$CBVOUString@rtl@@V12@@std@@QAE@ABU01@@Z
-??0?$pair@$$CBVOUString@rtl@@V12@@std@@QAE@ABVOUString@rtl@@0@Z
-??1?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@2@@std@@QAE@XZ
-??1?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@QAE@XZ
-??1?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAE@XZ
-??1?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@XZ
-??1?$pair@$$CBVOUString@rtl@@V12@@std@@QAE@XZ
-??4?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAEAAV01@ABV01@@Z
-??4?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAEAAV01@ABV01@@Z
-??8std@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@0@0@Z
-??8std@@YA_NABU?$pair@$$CBVOUString@rtl@@V12@@0@0@Z
-??8std@@YA_NABV?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@0@0@Z
-??9std@@YA_NABU?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@0@0@Z
-??A?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAEAAVOUString@rtl@@ABV23@@Z
-??C?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBEPBU?$pair@$$CBVOUString@rtl@@V12@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBEABU?$pair@$$CBVOUString@rtl@@V12@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBEAAU?$pair@$$CBVOUString@rtl@@V12@@1@XZ
-??E?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@QBEABVOUString@rtl@@ABU?$pair@$$CBVOUString@rtl@@V12@@1@@Z
-??R?$equal_to@VOUString@rtl@@@std@@QBE_NABVOUString@rtl@@0@Z
-??R?$less@I@std@@QBE_NABI0@Z
-??_G?$pair@$$CBVOUString@rtl@@V12@@std@@QAEPAXI@Z
-?_Construct@std@@YAXPAU?$pair@$$CBVOUString@rtl@@V12@@1@ABU21@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBVOUString@rtl@@V12@@1@@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEIABU?$pair@$$CBVOUString@rtl@@V12@@2@@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEIABU?$pair@$$CBVOUString@rtl@@V12@@2@I@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEIABVOUString@rtl@@@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEIABVOUString@rtl@@I@Z
-?_M_copy_from@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@AAEXABV12@@Z
-?_M_delete_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@AAEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@Z
-?_M_equal@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@SA_NABV12@0@Z
-?_M_equal@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@SA_NABV12@0@Z
-?_M_find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@ABVOUString@rtl@@@Z
-?_M_get_bucket@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEPBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@I@Z
-?_M_initialize_buckets@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@AAEXI@Z
-?_M_insert@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAEAAU?$pair@$$CBVOUString@rtl@@V12@@2@ABU32@@Z
-?_M_new_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@AAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@ABU?$pair@$$CBVOUString@rtl@@V12@@2@@Z
-?_M_next_size@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@ABEII@Z
-?_M_skip_to_next@?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@XZ
-?__advance@std@@YAXAAPBIHABUrandom_access_iterator_tag@1@@Z
-?__distance@std@@YAHABQBI0ABUrandom_access_iterator_tag@1@@Z
-?__less@std@@YA?AU?$less@I@1@PAI@Z
-?__lower_bound@std@@YAPBIPBI0ABIU?$less@I@1@PAH@Z
-?advance@std@@YAXAAPBIH@Z
-?allocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@std@@QBEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@IPBX@Z
-?begin@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@XZ
-?begin@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@XZ
-?bucket_count@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBEIXZ
-?clear@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAEXXZ
-?deallocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@std@@QBEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@I@Z
-?distance@std@@YAHABQBI0@Z
-?end@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@XZ
-?end@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@XZ
-?find@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@ABVOUString@rtl@@@Z
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBI@Z
-?resize@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAEXI@Z
-?GetLength@Line@@QBENXZ
-?Intersection@Line@@QBEEABVRectangle@@AAV1@@Z
-??0MetaLayoutModeAction@@QAE@ABV0@@Z
-??0MetaLayoutModeAction@@QAE@K@Z
-??0MetaLayoutModeAction@@QAE@XZ
-??1MetaLayoutModeAction@@UAE@XZ
-??_7MetaLayoutModeAction@@6B@
-??_GMetaLayoutModeAction@@UAEPAXI@Z
-?Clone@MetaLayoutModeAction@@UAEPAVMetaAction@@XZ
-?Execute@MetaLayoutModeAction@@UAEXPAVOutputDevice@@@Z
-??4FontCharMap@@QAEAAV0@ABV0@@Z
-?GetPixelOffset@OutputDevice@@QBE?AVSize@@XZ
-?SetPixelOffset@OutputDevice@@QAEXABVSize@@@Z
-?IsRTLEnabled@OutputDevice@@QBEEXZ
-??0?$_STLP_alloc_proxy@PAVPolyPolygon@@V1@V?$allocator@VPolyPolygon@@@std@@@std@@QAE@ABV?$allocator@VPolyPolygon@@@1@PAVPolyPolygon@@@Z
-??0?$_STLP_alloc_proxy@PAVRectangle@@V1@V?$allocator@VRectangle@@@std@@@std@@QAE@ABV?$allocator@VRectangle@@@1@PAVRectangle@@@Z
-??0?$_Vector_base@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAE@ABV?$allocator@VPolyPolygon@@@1@@Z
-??0?$_Vector_base@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAE@ABV?$allocator@VRectangle@@@1@@Z
-??0?$allocator@VPolyPolygon@@@std@@QAE@ABV01@@Z
-??0?$allocator@VPolyPolygon@@@std@@QAE@XZ
-??0?$allocator@VRectangle@@@std@@QAE@ABV01@@Z
-??0?$allocator@VRectangle@@@std@@QAE@XZ
-??0?$auto_ptr@VVirtualDevice@@@std@@QAE@PAVVirtualDevice@@@Z
-??0?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAE@ABV?$allocator@VPolyPolygon@@@1@@Z
-??0?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAE@ABV?$allocator@VRectangle@@@1@@Z
-??0CharMapCacheItem@?9??GetFontCharMap@OutputDevice@@QBEEAAVFontCharMap@@@Z@QAE@XZ
-??1?$_STLP_alloc_proxy@PAVPolyPolygon@@V1@V?$allocator@VPolyPolygon@@@std@@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAVRectangle@@V1@V?$allocator@VRectangle@@@std@@@std@@QAE@XZ
-??1?$_Vector_base@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAE@XZ
-??1?$_Vector_base@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAE@XZ
-??1?$allocator@VPolyPolygon@@@std@@QAE@XZ
-??1?$allocator@VRectangle@@@std@@QAE@XZ
-??1?$auto_ptr@VVirtualDevice@@@std@@QAE@XZ
-??1?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAE@XZ
-??1?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAE@XZ
-??1CharMapCacheItem@?9??GetFontCharMap@OutputDevice@@QBEEAAVFontCharMap@@@Z@QAE@XZ
-??C?$auto_ptr@VVirtualDevice@@@std@@QBEPAVVirtualDevice@@XZ
-??YRectangle@@QAEAAV0@ABVPoint@@@Z
-??ZPoint@@QAEAAV0@ABV0@@Z
-?DrawCtrlText@OutputDevice@@QAEXABVPoint@@ABVString@@GGGPAV?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@PAV3@@Z
-?DrawText@OutputDevice@@QAEXABVPoint@@ABVString@@GGPAV?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@PAV3@@Z
-?DrawText@OutputDevice@@QAEXABVRectangle@@ABVString@@GPAV?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@PAV3@@Z
-?GetCaretPositions@OutputDevice@@QBE_NABVString@@PAJGG1JE@Z
-?GetGlyphBoundRects@OutputDevice@@QAEEABVPoint@@ABVString@@HHHAAV?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@@Z
-?GetHighContrastMode@StyleSettings@@QBEEXZ
-?GetTextBoundRect@OutputDevice@@QBEEAAVRectangle@@ABVString@@GGG@Z
-?GetTextBreak@OutputDevice@@QBEGABVString@@JGGJE@Z
-?GetTextOutline@OutputDevice@@QBEEAAVPolyPolygon@@ABVString@@GGGE@Z
-?GetTextOutlines@OutputDevice@@QBEEAAV?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@ABVString@@GGGE@Z
-?HasGlyphs@OutputDevice@@QBEGABVFont@@ABVString@@GG@Z
-?SetLayoutMode@OutputDevice@@QAEXK@Z
-?_Construct@std@@YAXPAVPolyPolygon@@ABV2@@Z
-?_Construct@std@@YAXPAVRectangle@@ABV2@@Z
-?_Destroy@std@@YAXPAVPolyPolygon@@0@Z
-?_Destroy@std@@YAXPAVPolyPolygon@@@Z
-?_Destroy@std@@YAXPAVRectangle@@0@Z
-?_Destroy@std@@YAXPAVRectangle@@@Z
-?_M_clear@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@IAEXXZ
-?_M_clear@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@IAEXXZ
-?_M_insert_overflow@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@IAEXPAVPolyPolygon@@ABV3@ABU__false_type@2@I_N@Z
-?_M_insert_overflow@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@IAEXPAVRectangle@@ABV3@ABU__false_type@2@I_N@Z
-?_M_set@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@IAEXPAVPolyPolygon@@00@Z
-?_M_set@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@IAEXPAVRectangle@@00@Z
-?__copy@std@@YAPAVPolyPolygon@@PAV2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy@std@@YAPAVRectangle@@PAV2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_ptrs@std@@YAPAVPolyPolygon@@PAV2@00ABU__false_type@1@@Z
-?__copy_ptrs@std@@YAPAVRectangle@@PAV2@00ABU__false_type@1@@Z
-?__destroy@std@@YAXPAVPolyPolygon@@00@Z
-?__destroy@std@@YAXPAVRectangle@@00@Z
-?__destroy_aux@std@@YAXPAVPolyPolygon@@0ABU__false_type@1@@Z
-?__destroy_aux@std@@YAXPAVRectangle@@0ABU__false_type@1@@Z
-?__set@__ptr_base@std@@QAEXPAX@Z
-?__uninitialized_copy@std@@YAPAVPolyPolygon@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_copy@std@@YAPAVRectangle@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_fill_n@std@@YAPAVPolyPolygon@@PAV2@IABV2@ABU__false_type@1@@Z
-?__uninitialized_fill_n@std@@YAPAVRectangle@@PAV2@IABV2@ABU__false_type@1@@Z
-?allocate@?$allocator@VPolyPolygon@@@std@@QBEPAVPolyPolygon@@IPBX@Z
-?allocate@?$allocator@VRectangle@@@std@@QBEPAVRectangle@@IPBX@Z
-?begin@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAEPAVPolyPolygon@@XZ
-?begin@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAEPAVRectangle@@XZ
-?begin@?$vector@VString@@V?$allocator@VString@@@std@@@std@@QBEPBVString@@XZ
-?clear@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAEXXZ
-?clear@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAEXXZ
-?deallocate@?$allocator@VPolyPolygon@@@std@@QBEXPAVPolyPolygon@@I@Z
-?deallocate@?$allocator@VRectangle@@@std@@QBEXPAVRectangle@@I@Z
-?distance_type@std@@YAPAHPBVPolyPolygon@@@Z
-?distance_type@std@@YAPAHPBVRectangle@@@Z
-?end@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAEPAVPolyPolygon@@XZ
-?end@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAEPAVRectangle@@XZ
-?end@?$vector@VString@@V?$allocator@VString@@@std@@@std@@QBEPBVString@@XZ
-?erase@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAEPAVPolyPolygon@@PAV3@0@Z
-?erase@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAEPAVRectangle@@PAV3@0@Z
-?get@?$auto_ptr@VVirtualDevice@@@std@@QBEPAVVirtualDevice@@XZ
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBVPolyPolygon@@@Z
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBVRectangle@@@Z
-?max@std@@YAABIABI0@Z
-?push_back@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAEXABVPolyPolygon@@@Z
-?push_back@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAEXABVRectangle@@@Z
-?size@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QBEIXZ
-?size@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QBEIXZ
-?size@?$vector@VString@@V?$allocator@VString@@@std@@@std@@QBEIXZ
-?value_type@std@@YAPAVPolyPolygon@@PBV2@@Z
-?value_type@std@@YAPAVRectangle@@PBV2@@Z
-??0?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@ABU?$less@G@1@ABV?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBGUSymbolEntry@@@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Const_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@U12@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@1@PAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@@Z
-??0?$_Vector_base@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@QAE@XZ
-??0?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@std@@QAE@XZ
-??0?$multimap@GUSymbolEntry@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@3@@std@@QAE@XZ
-??0?$pair@$$CBGUSymbolEntry@@@std@@QAE@ABGABUSymbolEntry@@@Z
-??0?$pair@$$CBGUSymbolEntry@@@std@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@1@0@Z
-??0?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@1@@Z
-??0StarSymbolToMSMultiFont@@QAE@XZ
-??1?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBGUSymbolEntry@@@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@U12@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAE@XZ
-??1?$_Vector_base@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@std@@QAE@XZ
-??1?$multimap@GUSymbolEntry@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@3@@std@@QAE@XZ
-??1?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAE@XZ
-??1StarSymbolToMSMultiFont@@UAE@XZ
-??9_Rb_tree_base_iterator@std@@QBE_NABU01@@Z
-??A?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAEAAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@I@Z
-??C?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QBEPAU?$pair@$$CBGUSymbolEntry@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Const_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QBEABU?$pair@$$CBGUSymbolEntry@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QBEAAU?$pair@$$CBGUSymbolEntry@@@1@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@QBEABGABU?$pair@$$CBGUSymbolEntry@@@1@@Z
-??R?$less@G@std@@QBE_NABG0@Z
-??_7StarSymbolToMSMultiFont@@6B@
-??_GStarSymbolToMSMultiFont@@UAEPAXI@Z
-?CreateStarSymbolToMSMultiFont@@YAPAVStarSymbolToMSMultiFont@@_N@Z
-?SymbolFontToString@@YAPBDH@Z
-?_Construct@std@@YAXPAU?$pair@$$CBGUSymbolEntry@@@1@ABU21@@Z
-?_Construct@std@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@ABU21@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBGUSymbolEntry@@@1@@Z
-?_Destroy@std@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@0@Z
-?_Destroy@std@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@@Z
-?_M_allocate_and_copy@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@IAEPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@IPAU32@0@Z
-?_M_clear@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@IAEXXZ
-?_M_create_node@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@ABU?$pair@$$CBGUSymbolEntry@@@2@@Z
-?_M_empty_initialize@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@AAEXXZ
-?_M_erase@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@Z
-?_M_find@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@ABG@Z
-?_M_insert@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBGUSymbolEntry@@@2@0@Z
-?_M_insert_overflow@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@IAEXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@ABU32@ABU__false_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@ABG@Z
-?_M_rightmost@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@XZ
-?_M_root@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@XZ
-?_M_set@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@IAEXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@00@Z
-?_M_upper_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@ABG@Z
-?_S_color@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@KAABGPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@Z
-?_S_left@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@PAU32@@Z
-?_S_value@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@KAAAU?$pair@$$CBGUSymbolEntry@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@Z
-?__destroy@std@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@00@Z
-?__destroy_aux@std@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@0ABU__false_type@1@@Z
-?__uninitialized_copy@std@@YAPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@PAU21@00ABU__false_type@1@@Z
-?__uninitialized_fill_n@std@@YAPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@PAU21@IABU21@ABU__false_type@1@@Z
-?aSymbolExtraTab2@@3PAUExtraTable@@A
-?aSymbolExtraTab@@3PAUExtraTable@@A
-?aSymbolNames@@3PAPBDA
-?aTNRExtraTab@@3PAUExtraTable@@A
-?aWingDingsExtraTab@@3PAUExtraTable@@A
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@IPBX@Z
-?allocate@?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@std@@QBEPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@IPBX@Z
-?begin@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAEPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@XZ
-?capacity@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QBEIXZ
-?clear@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAEXXZ
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@std@@@2@I@Z
-?deallocate@?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@std@@QBEXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@I@Z
-?end@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@XZ
-?end@?$multimap@GUSymbolEntry@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@XZ
-?equal_range@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@ABG@Z
-?equal_range@?$multimap@GUSymbolEntry@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@3@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@ABG@Z
-?find@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@ABG@Z
-?find@?$multimap@GUSymbolEntry@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@ABG@Z
-?insert@?$multimap@GUSymbolEntry@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@ABU?$pair@$$CBGUSymbolEntry@@@2@@Z
-?insert_equal@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@ABU?$pair@$$CBGUSymbolEntry@@@2@@Z
-?lower_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@ABG@Z
-?push_back@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAEXABU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@2@@Z
-?reserve@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QAEXI@Z
-?size@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@std@@@2@@std@@QBEIXZ
-?upper_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@std@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@2@ABG@Z
-?value_type@std@@YAPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@std@@@2@@std@@U12@@1@PBU21@@Z
-??0?$_STLP_alloc_proxy@PAVPoint@@V1@V?$allocator@VPoint@@@std@@@std@@QAE@ABV?$allocator@VPoint@@@1@PAVPoint@@@Z
-??0?$_Vector_base@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAE@ABV?$allocator@VPoint@@@1@@Z
-??0?$allocator@VPoint@@@std@@QAE@ABV01@@Z
-??0?$allocator@VPoint@@@std@@QAE@XZ
-??0?$back_insert_iterator@V?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@@std@@QAE@AAV?$vector@VPoint@@V?$allocator@VPoint@@@std@@@1@@Z
-??0?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAE@ABV?$allocator@VPoint@@@1@@Z
-??1?$_STLP_alloc_proxy@PAVPoint@@V1@V?$allocator@VPoint@@@std@@@std@@QAE@XZ
-??1?$_Vector_base@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAE@XZ
-??1?$allocator@VPoint@@@std@@QAE@XZ
-??1?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAE@XZ
-??4?$back_insert_iterator@V?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@@std@@QAEAAV01@ABVPoint@@@Z
-??D?$back_insert_iterator@V?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@@std@@QAEAAV01@XZ
-??E?$back_insert_iterator@V?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@@std@@QAEAAV01@H@Z
-?AdaptiveSubdivide@Polygon@@QBEXAAV1@N@Z
-?HasFlags@Polygon@@QBEEXZ
-?Read@Polygon@@QAEXAAVSvStream@@@Z
-?Write@Polygon@@QBEXAAVSvStream@@@Z
-?_Construct@std@@YAXPAVPoint@@ABV2@@Z
-?_Destroy@std@@YAXPAVPoint@@0@Z
-?_Destroy@std@@YAXPAVPoint@@@Z
-?_IsOKToMemCpy@std@@YA?AU?$_OKToMemCpy@VPoint@@V1@@1@PAVPoint@@0@Z
-?_M_allocate_and_copy@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@IAEPAVPoint@@IPAV3@0@Z
-?_M_clear@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@IAEXXZ
-?_M_insert_overflow@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@IAEXPAVPoint@@ABV3@ABU__false_type@2@I_N@Z
-?_M_set@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@IAEXPAVPoint@@00@Z
-?_Ret@?$_BothPtrType@PAVPoint@@PAV1@@std@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@VPoint@@V1@@std@@SA?AU__false_type@2@XZ
-?__copy@std@@YAPAVPoint@@PAV2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_aux@std@@YAPAVPoint@@PAV2@00ABU__true_type@1@@Z
-?__copy_ptrs@std@@YAPAVPoint@@PAV2@00ABU__false_type@1@@Z
-?__destroy@std@@YAXPAVPoint@@00@Z
-?__destroy_aux@std@@YAXPAVPoint@@0ABU__false_type@1@@Z
-?__uninitialized_copy@std@@YAPAVPoint@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_fill_n@std@@YAPAVPoint@@PAV2@IABV2@ABU__false_type@1@@Z
-?allocate@?$allocator@VPoint@@@std@@QBEPAVPoint@@IPBX@Z
-?begin@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAEPAVPoint@@XZ
-?capacity@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QBEIXZ
-?copy@std@@YAPAVPoint@@PAV2@00@Z
-?deallocate@?$allocator@VPoint@@@std@@QBEXPAVPoint@@I@Z
-?distance_type@std@@YAPAHPBVPoint@@@Z
-?end@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAEPAVPoint@@XZ
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBVPoint@@@Z
-?max@std@@YAABNABN0@Z
-?push_back@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAEXABVPoint@@@Z
-?reserve@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QAEXI@Z
-?size@?$vector@VPoint@@V?$allocator@VPoint@@@std@@@std@@QBEIXZ
-?value_type@std@@YAPAVPoint@@PBV2@@Z
-_real@3fd5555555555555
-_real@3fe5555555555555
-?Read@PolyPolygon@@QAEXAAVSvStream@@@Z
-?Write@PolyPolygon@@QBEXAAVSvStream@@@Z
-?mbNoOGL@OpenGL@@0EA
-??0?$Sequence@UPropertyValue@beans@star@sun@com@@@uno@star@sun@com@@QAE@J@Z
-??0?$Sequence@VOUString@rtl@@@uno@star@sun@com@@QAE@J@Z
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@PAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@1@PAV?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@1@@Z
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@ABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@ABU?$less@H@1@ABV?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@ABU?$less@H@1@ABV?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@ABU?$less@H@1@ABV?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@ABV01@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBHVOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@XZ
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@1@I@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAUFontNameAttr@FontSubstConfigItem@vcl@@U123@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@ABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@PAUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-??0?$_STLP_alloc_proxy@PAVString@@V1@V?$allocator@VString@@@std@@@std@@QAE@ABV?$allocator@VString@@@1@PAVString@@@Z
-??0?$_Vector_base@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@ABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@@Z
-??0?$_Vector_base@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@IABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@@Z
-??0?$_Vector_base@VString@@V?$allocator@VString@@@std@@@std@@QAE@ABV?$allocator@VString@@@1@@Z
-??0?$_Vector_base@VString@@V?$allocator@VString@@@std@@@std@@QAE@IABV?$allocator@VString@@@1@@Z
-??0?$allocator@PAX@std@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@1@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@QAE@XZ
-??0?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@QAE@XZ
-??0?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@QAE@XZ
-??0?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@QAE@ABV?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@std@@@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@QAE@XZ
-??0?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@QAE@ABV01@@Z
-??0?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@QAE@XZ
-??0?$allocator@VString@@@std@@QAE@ABV01@@Z
-??0?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QAE@ABV01@@Z
-??0?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QAE@XZ
-??0?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QAE@ABV01@@Z
-??0?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@IABUOUStringHash@rtl@@ABU?$equal_to@VOUString@rtl@@@1@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@1@@Z
-??0?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@XZ
-??0?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??0?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAE@ABV01@@Z
-??0?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAE@XZ
-??0?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@QAE@ABHABV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@1@@Z
-??0?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@QAE@ABU01@@Z
-??0?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@QAE@ABHABV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@1@@Z
-??0?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@QAE@ABU01@@Z
-??0?$pair@$$CBHVOUString@rtl@@@std@@QAE@ABHABVOUString@rtl@@@Z
-??0?$pair@$$CBHVOUString@rtl@@@std@@QAE@ABU01@@Z
-??0?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@QAE@ABU01@@Z
-??0?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@QAE@ABVOUString@rtl@@ABV?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@1@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@_N@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@1@AB_N@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@_N@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@1@AB_N@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@_N@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@1@AB_N@Z
-??0?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@ABV01@@Z
-??0?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@ABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@@Z
-??0?$vector@VString@@V?$allocator@VString@@@std@@@std@@QAE@ABV01@@Z
-??0?$vector@VString@@V?$allocator@VString@@@std@@@std@@QAE@ABV?$allocator@VString@@@1@@Z
-??0DefaultFontConfigItem@vcl@@AAE@XZ
-??0FontNameAttr@FontSubstConfigItem@vcl@@QAE@ABU012@@Z
-??0FontNameAttr@FontSubstConfigItem@vcl@@QAE@XZ
-??0FontSubstConfigItem@vcl@@AAE@XZ
-??0OString@rtl@@QAE@PBGJGK@Z
-??0SettingsConfigItem@vcl@@AAE@XZ
-??1?$Sequence@VOUString@rtl@@@uno@star@sun@com@@QAE@XZ
-??1?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBHVOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAUFontNameAttr@FontSubstConfigItem@vcl@@U123@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAVString@@V1@V?$allocator@VString@@@std@@@std@@QAE@XZ
-??1?$_Vector_base@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@XZ
-??1?$_Vector_base@VString@@V?$allocator@VString@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@QAE@XZ
-??1?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QAE@XZ
-??1?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE@XZ
-??1?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE@XZ
-??1?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAE@XZ
-??1?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@QAE@XZ
-??1?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@QAE@XZ
-??1?$pair@$$CBHVOUString@rtl@@@std@@QAE@XZ
-??1?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@QAE@XZ
-??1?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAE@XZ
-??1?$vector@VString@@V?$allocator@VString@@@std@@@std@@QAE@XZ
-??1DefaultFontConfigItem@vcl@@UAE@XZ
-??1FontNameAttr@FontSubstConfigItem@vcl@@QAE@XZ
-??1FontSubstConfigItem@vcl@@UAE@XZ
-??1SettingsConfigItem@vcl@@UAE@XZ
-??4?$vector@VString@@V?$allocator@VString@@@std@@@std@@QAEAAV01@ABV01@@Z
-??4FontNameAttr@FontSubstConfigItem@vcl@@QAEAAU012@ABU012@@Z
-??8_Rb_tree_base_iterator@std@@QBE_NABU01@@Z
-??8std@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@0@0@Z
-??8std@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@0@0@Z
-??8std@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@0@0@Z
-??9rtl@@YAEABVOUString@0@0@Z
-??9std@@YA_NABU?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@0@0@Z
-??A?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QAEAAV?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@1@ABVOUString@rtl@@@Z
-??A?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAEAAV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@1@ABH@Z
-??A?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAEAAV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@1@ABH@Z
-??A?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAEAAVOUString@rtl@@ABH@Z
-??C?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QBEPBU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@1@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBEPBU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@1@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBEPBU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@1@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBEPBU?$pair@$$CBHVOUString@rtl@@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QBEABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QBEAAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBEABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBEAAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBEABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBEAAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBEABU?$pair@$$CBHVOUString@rtl@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBEAAU?$pair@$$CBHVOUString@rtl@@@1@XZ
-??E?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@QBEABHABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@1@@Z
-??R?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@QBEABHABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@1@@Z
-??R?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@QBEABHABU?$pair@$$CBHVOUString@rtl@@@1@@Z
-??R?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@QBEABVOUString@rtl@@ABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@1@@Z
-??R?$less@H@std@@QBE_NABH0@Z
-??RStrictStringSort@@QAE_NABUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-??RWeakStringSort@@QAE_NABUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-??_7DefaultFontConfigItem@vcl@@6B@
-??_7FontSubstConfigItem@vcl@@6B@
-??_7SettingsConfigItem@vcl@@6B@
-??_G?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@QAEPAXI@Z
-??_G?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@QAEPAXI@Z
-??_G?$pair@$$CBHVOUString@rtl@@@std@@QAEPAXI@Z
-??_G?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@QAEPAXI@Z
-??_GDefaultFontConfigItem@vcl@@UAEPAXI@Z
-??_GFontNameAttr@FontSubstConfigItem@vcl@@QAEPAXI@Z
-??_GFontSubstConfigItem@vcl@@UAEPAXI@Z
-??_GSettingsConfigItem@vcl@@UAEPAXI@Z
-?Commit@DefaultFontConfigItem@vcl@@EAEXXZ
-?Commit@FontSubstConfigItem@vcl@@EAEXXZ
-?Commit@SettingsConfigItem@vcl@@EAEXXZ
-?Notify@DefaultFontConfigItem@vcl@@EAEXABV?$Sequence@VOUString@rtl@@@uno@star@sun@com@@@Z
-?Notify@FontSubstConfigItem@vcl@@EAEXABV?$Sequence@VOUString@rtl@@@uno@star@sun@com@@@Z
-?Notify@SettingsConfigItem@vcl@@EAEXABV?$Sequence@VOUString@rtl@@@uno@star@sun@com@@@Z
-?_Construct@std@@YAXPAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@1@ABU21@@Z
-?_Construct@std@@YAXPAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@1@ABU21@@Z
-?_Construct@std@@YAXPAU?$pair@$$CBHVOUString@rtl@@@1@ABU21@@Z
-?_Construct@std@@YAXPAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@1@ABU21@@Z
-?_Construct@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@ABU234@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@1@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@1@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBHVOUString@rtl@@@1@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@1@@Z
-?_Destroy@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?_Destroy@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?_Destroy@std@@YAXPAVString@@0@Z
-?_IsOKToMemCpy@std@@YA?AU?$_OKToMemCpy@UFontNameAttr@FontSubstConfigItem@vcl@@U123@@1@PAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?_M_allocate_and_copy@?$vector@VString@@V?$allocator@VString@@@std@@@std@@IAEPAVString@@IPBV3@0@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@ABEIABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@2@@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@ABEIABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@2@I@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@ABEIABVOUString@rtl@@@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@ABEIABVOUString@rtl@@I@Z
-?_M_clear@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@IAEXXZ
-?_M_clear@?$vector@VString@@V?$allocator@VString@@@std@@@std@@IAEXXZ
-?_M_clone_node@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@@Z
-?_M_copy@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@AAEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@0@Z
-?_M_create_node@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@2@@Z
-?_M_create_node@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@2@@Z
-?_M_create_node@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?_M_delete_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@AAEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@Z
-?_M_empty_initialize@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@AAEXXZ
-?_M_empty_initialize@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@AAEXXZ
-?_M_empty_initialize@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@AAEXXZ
-?_M_erase@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@Z
-?_M_erase@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@Z
-?_M_erase@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@Z
-?_M_find@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@ABH@Z
-?_M_find@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@ABH@Z
-?_M_find@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@ABH@Z
-?_M_find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@ABEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@ABVOUString@rtl@@@Z
-?_M_initialize_buckets@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@AAEXI@Z
-?_M_insert@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@2@0@Z
-?_M_insert@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@2@0@Z
-?_M_insert@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBHVOUString@rtl@@@2@0@Z
-?_M_insert@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAEAAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@2@ABU32@@Z
-?_M_insert_overflow@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@IAEXPAUFontNameAttr@FontSubstConfigItem@vcl@@ABU345@ABU__false_type@2@I_N@Z
-?_M_insert_overflow@?$vector@VString@@V?$allocator@VString@@@std@@@std@@IAEXPAVString@@ABV3@ABU__false_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@XZ
-?_M_leftmost@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@XZ
-?_M_leftmost@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@ABH@Z
-?_M_lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@ABH@Z
-?_M_lower_bound@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@ABH@Z
-?_M_new_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@AAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@ABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@2@@Z
-?_M_next_size@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@ABEII@Z
-?_M_rightmost@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@XZ
-?_M_rightmost@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@XZ
-?_M_rightmost@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@XZ
-?_M_root@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@XZ
-?_M_root@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@XZ
-?_M_root@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@XZ
-?_M_set@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@IAEXPAUFontNameAttr@FontSubstConfigItem@vcl@@00@Z
-?_M_set@?$vector@VString@@V?$allocator@VString@@@std@@@std@@IAEXPAVString@@00@Z
-?_M_skip_to_next@?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@XZ
-?_Ret@?$_BothPtrType@PAUFontNameAttr@FontSubstConfigItem@vcl@@PAU123@@std@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@UFontNameAttr@FontSubstConfigItem@vcl@@U123@@std@@SA?AU__false_type@2@XZ
-?_S_color@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@Z
-?_S_color@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@Z
-?_S_color@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAABHPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAABHPAU_Rb_tree_node_base@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAABHPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAABHPAU_Rb_tree_node_base@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAABHPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAABHPAU_Rb_tree_node_base@2@@Z
-?_S_left@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@PAU32@@Z
-?_S_left@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@PAU32@@Z
-?_S_left@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@@Z
-?_S_maximum@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@@Z
-?_S_maximum@_Rb_tree_node_base@std@@SAPAU12@PAU12@@Z
-?_S_minimum@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@@Z
-?_S_minimum@_Rb_tree_node_base@std@@SAPAU12@PAU12@@Z
-?_S_parent@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_value@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@KAAAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@Z
-?_S_value@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@KAAAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@Z
-?_S_value@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@KAAAU?$pair@$$CBHVOUString@rtl@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@Z
-?__adjust_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@HHU234@UStrictStringSort@@@Z
-?__advance@std@@YAXAAPBUFontNameAttr@FontSubstConfigItem@vcl@@HABUrandom_access_iterator_tag@1@@Z
-?__copy@std@@YAPAVString@@PBV2@0PAV2@ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_backward@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_backward_aux@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABU__true_type@1@@Z
-?__copy_backward_ptrs@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABU__false_type@1@@Z
-?__copy_ptrs@std@@YAPAVString@@PBV2@0PAV2@ABU__false_type@1@@Z
-?__default_constructed@std@@YA?AV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@1@PAV21@@Z
-?__default_constructed@std@@YA?AV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@1@PAV21@@Z
-?__default_constructed@std@@YA?AVOUString@rtl@@PAV23@@Z
-?__default_constructed_aux@std@@YA?AV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@1@PAV21@ABU__false_type@1@@Z
-?__default_constructed_aux@std@@YA?AV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@1@PAV21@ABU__false_type@1@@Z
-?__default_constructed_aux@std@@YA?AVOUString@rtl@@PAV23@ABU__false_type@1@@Z
-?__destroy@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00@Z
-?__destroy@std@@YAXPAVString@@00@Z
-?__destroy_aux@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0ABU__false_type@1@@Z
-?__destroy_aux@std@@YAXPAVString@@0ABU__false_type@1@@Z
-?__distance@std@@YAHABQBUFontNameAttr@FontSubstConfigItem@vcl@@0ABUrandom_access_iterator_tag@1@@Z
-?__final_insertion_sort@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?__insertion_sort@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?__introsort_loop@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00HUStrictStringSort@@@Z
-?__lg@std@@YAHH@Z
-?__linear_insert@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0U234@UStrictStringSort@@@Z
-?__lower_bound@std@@YAPBUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@0ABU234@UWeakStringSort@@PAH@Z
-?__make_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@0PAH@Z
-?__median@std@@YAABUFontNameAttr@FontSubstConfigItem@vcl@@ABU234@00UStrictStringSort@@@Z
-?__partial_sort@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@000UStrictStringSort@@@Z
-?__pop_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00U234@UStrictStringSort@@PAH@Z
-?__pop_heap_aux@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00UStrictStringSort@@@Z
-?__push_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@HHU234@UStrictStringSort@@@Z
-?__unguarded_insertion_sort@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?__unguarded_insertion_sort_aux@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00UStrictStringSort@@@Z
-?__unguarded_linear_insert@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@U234@UStrictStringSort@@@Z
-?__unguarded_partition@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@0U234@UStrictStringSort@@@Z
-?__uninitialized_copy@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABU__false_type@1@@Z
-?__uninitialized_copy@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@0PAU234@ABU__false_type@1@@Z
-?__uninitialized_copy@std@@YAPAVString@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_copy@std@@YAPAVString@@PBV2@0PAV2@ABU__false_type@1@@Z
-?__uninitialized_fill_n@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@IABU234@ABU__false_type@1@@Z
-?__uninitialized_fill_n@std@@YAPAVString@@PAV2@IABV2@ABU__false_type@1@@Z
-?advance@std@@YAXAAPBUFontNameAttr@FontSubstConfigItem@vcl@@H@Z
-?allocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@std@@QBEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@IPBX@Z
-?allocate@?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@QBEPAUFontNameAttr@FontSubstConfigItem@vcl@@IPBX@Z
-?allocate@?$allocator@VString@@@std@@QBEPAVString@@IPBX@Z
-?begin@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@XZ
-?begin@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@XZ
-?begin@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@XZ
-?begin@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@XZ
-?begin@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@XZ
-?begin@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@XZ
-?begin@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAEPAUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?begin@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QBEPBUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?bucket_count@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QBEIXZ
-?capacity@?$vector@VString@@V?$allocator@VString@@@std@@@std@@QBEIXZ
-?clear@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAEXXZ
-?clear@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAEXXZ
-?clear@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAEXXZ
-?clear@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QAEXXZ
-?clear@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAEXXZ
-?clear@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAEXXZ
-?copy_backward@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00@Z
-?deallocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@std@@@std@@QBEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@std@@@2@I@Z
-?deallocate@?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@QBEXPAUFontNameAttr@FontSubstConfigItem@vcl@@I@Z
-?deallocate@?$allocator@VString@@@std@@QBEXPAVString@@I@Z
-?distance@std@@YAHABQBUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?distance_type@std@@YAPAHPBUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?distance_type@std@@YAPAHPBVString@@@Z
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@XZ
-?end@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@XZ
-?end@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@XZ
-?end@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@XZ
-?end@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@XZ
-?end@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@XZ
-?end@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@XZ
-?end@?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@XZ
-?end@?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@XZ
-?end@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAEPAUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?end@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QBEPBUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?find@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@ABH@Z
-?find@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@ABH@Z
-?find@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@ABH@Z
-?find@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@4@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@ABH@Z
-?find@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@ABH@Z
-?find@?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@ABH@Z
-?get@DefaultFontConfigItem@vcl@@SAPAV12@XZ
-?get@FontSubstConfigItem@vcl@@SAPAV12@XZ
-?get@SettingsConfigItem@vcl@@SAPAV12@XZ
-?getArray@?$Sequence@UPropertyValue@beans@star@sun@com@@@uno@star@sun@com@@QAAPAUPropertyValue@beans@345@XZ
-?getArray@?$Sequence@VOUString@rtl@@@uno@star@sun@com@@QAAPAVOUString@rtl@@XZ
-?getConstArray@?$Sequence@VAny@uno@star@sun@com@@@uno@star@sun@com@@QBAPBVAny@2345@XZ
-?getConstArray@?$Sequence@VOUString@rtl@@@uno@star@sun@com@@QBAPBVOUString@rtl@@XZ
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Sequence@VOUString@rtl@@@2345@@Z
-?getDefaultFont@DefaultFontConfigItem@vcl@@QBEABVOUString@rtl@@HH@Z
-?getKeyType@DefaultFontConfigItem@vcl@@CAHABVOUString@rtl@@@Z
-?getLength@?$Sequence@VAny@uno@star@sun@com@@@uno@star@sun@com@@QBAJXZ
-?getLength@?$Sequence@VOUString@rtl@@@uno@star@sun@com@@QBAJXZ
-?getMapName@FontSubstConfigItem@vcl@@SAXABVString@@AAV3@1AAW4FontWeight@@AAW4FontWidth@@AAK@Z
-?getStr@OUString@rtl@@QBEPBGXZ
-?getSubstInfo@FontSubstConfigItem@vcl@@QBEPBUFontNameAttr@12@ABVString@@H@Z
-?getToken@OUString@rtl@@QBE?AV12@JGAAJ@Z
-?getUserInterfaceFont@DefaultFontConfigItem@vcl@@QBEABVOUString@rtl@@H@Z
-?getValue@Any@uno@star@sun@com@@QBAPBXXZ
-?getValue@SettingsConfigItem@vcl@@QBEABVOUString@rtl@@ABV34@0@Z
-?getValueTypeClass@Any@uno@star@sun@com@@QBA?AW4TypeClass@2345@XZ
-?getValues@DefaultFontConfigItem@vcl@@AAEXXZ
-?getValues@FontSubstConfigItem@vcl@@AAEXXZ
-?getValues@SettingsConfigItem@vcl@@AAEXXZ
-?get_allocator@?$_Rb_tree_base@U?$pair@$$CBHVOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBE?AV?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@XZ
-?get_allocator@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBE?AV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@XZ
-?get_allocator@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QBE?AV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@2@XZ
-?get_allocator@?$vector@VString@@V?$allocator@VString@@@std@@@std@@QBE?AV?$allocator@VString@@@2@XZ
-?insert@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@U32@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@2@@Z
-?insert@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@U32@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@2@@Z
-?insert@?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@U32@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@U32@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@_N@2@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@U32@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@_N@2@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@U32@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@_N@2@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?iter_swap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBVString@@@Z
-?key_comp@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBE?AU?$less@H@2@XZ
-?key_comp@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBE?AU?$less@H@2@XZ
-?key_comp@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBE?AU?$less@H@2@XZ
-?key_comp@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBE?AU?$less@H@2@XZ
-?key_comp@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBE?AU?$less@H@2@XZ
-?key_comp@?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QBE?AU?$less@H@2@XZ
-?lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@ABH@Z
-?lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@ABH@Z
-?lower_bound@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@ABH@Z
-?lower_bound@?$map@HV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@2@ABH@Z
-?lower_bound@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@2@ABH@Z
-?lower_bound@?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@std@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@2@ABH@Z
-?lower_bound@std@@YAPBUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@0ABU234@UWeakStringSort@@@Z
-?make_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?partial_sort@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00UStrictStringSort@@@Z
-?pop_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?push_back@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QAEXABUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?push_back@?$vector@VString@@V?$allocator@VString@@@std@@@std@@QAEXABVString@@@Z
-?realloc@?$Sequence@UPropertyValue@beans@star@sun@com@@@uno@star@sun@com@@QAAXJ@Z
-?resize@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@@std@@@2@@std@@QAEXI@Z
-?s_pType@?$Sequence@VOUString@rtl@@@uno@star@sun@com@@2PAU_typelib_TypeDescriptionReference@@A
-?setDefaultFont@DefaultFontConfigItem@vcl@@QAEXHHABVOUString@rtl@@@Z
-?setValue@SettingsConfigItem@vcl@@QAEXABVOUString@rtl@@00@Z
-?size@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@4@@std@@@std@@@2@@std@@QBEIXZ
-?size@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@@std@@@2@@std@@QBEIXZ
-?size@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@std@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@std@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@std@@@2@@std@@QBEIXZ
-?size@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@std@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@5@@std@@QBEIXZ
-?size@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@std@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@std@@@2@@std@@QBEIXZ
-?size@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@std@@@std@@QBEIXZ
-?sort@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?sort_heap@std@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?swap@std@@YAXAAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?value_type@std@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@@Z
-?value_type@std@@YAPAVString@@PBV2@@Z
-??0PDFWriter@vcl@@QAE@ABVOUString@rtl@@W4PDFVersion@01@W4Compression@01@@Z
-??1PDFWriter@vcl@@QAE@XZ
-?DrawArc@PDFWriter@vcl@@QAEXABVRectangle@@ABVPoint@@1@Z
-?DrawBitmap@PDFWriter@vcl@@QAEXABVPoint@@ABVBitmap@@@Z
-?DrawBitmap@PDFWriter@vcl@@QAEXABVPoint@@ABVSize@@01ABVBitmap@@@Z
-?DrawBitmap@PDFWriter@vcl@@QAEXABVPoint@@ABVSize@@ABVBitmap@@@Z
-?DrawBitmapEx@PDFWriter@vcl@@QAEXABVPoint@@ABVBitmapEx@@@Z
-?DrawBitmapEx@PDFWriter@vcl@@QAEXABVPoint@@ABVSize@@01ABVBitmapEx@@@Z
-?DrawBitmapEx@PDFWriter@vcl@@QAEXABVPoint@@ABVSize@@ABVBitmapEx@@@Z
-?DrawChord@PDFWriter@vcl@@QAEXABVRectangle@@ABVPoint@@1@Z
-?DrawEllipse@PDFWriter@vcl@@QAEXABVRectangle@@@Z
-?DrawGradient@PDFWriter@vcl@@QAEXABVPolyPolygon@@ABVGradient@@@Z
-?DrawGradient@PDFWriter@vcl@@QAEXABVRectangle@@ABVGradient@@@Z
-?DrawHatch@PDFWriter@vcl@@QAEXABVPolyPolygon@@ABVHatch@@@Z
-?DrawJPGBitmap@PDFWriter@vcl@@QAEXAAVSvStream@@ABVSize@@ABVRectangle@@ABVBitmap@@@Z
-?DrawLine@PDFWriter@vcl@@QAEXABVPoint@@0@Z
-?DrawLine@PDFWriter@vcl@@QAEXABVPoint@@0ABVLineInfo@@@Z
-?DrawMask@PDFWriter@vcl@@QAEXABVPoint@@ABVBitmap@@ABVColor@@@Z
-?DrawMask@PDFWriter@vcl@@QAEXABVPoint@@ABVSize@@01ABVBitmap@@ABVColor@@@Z
-?DrawMask@PDFWriter@vcl@@QAEXABVPoint@@ABVSize@@ABVBitmap@@ABVColor@@@Z
-?DrawPie@PDFWriter@vcl@@QAEXABVRectangle@@ABVPoint@@1@Z
-?DrawPixel@PDFWriter@vcl@@QAEXABVPoint@@ABVColor@@@Z
-?DrawPixel@PDFWriter@vcl@@QAEXABVPolygon@@PBVColor@@@Z
-?DrawPolyLine@PDFWriter@vcl@@QAEXABVPolygon@@@Z
-?DrawPolyLine@PDFWriter@vcl@@QAEXABVPolygon@@ABVLineInfo@@@Z
-?DrawPolyPolygon@PDFWriter@vcl@@QAEXABVPolyPolygon@@@Z
-?DrawPolygon@PDFWriter@vcl@@QAEXABVPolygon@@@Z
-?DrawRect@PDFWriter@vcl@@QAEXABVRectangle@@@Z
-?DrawRect@PDFWriter@vcl@@QAEXABVRectangle@@KK@Z
-?DrawStretchText@PDFWriter@vcl@@QAEXABVPoint@@KABVString@@GG@Z
-?DrawText@PDFWriter@vcl@@QAEXABVPoint@@ABVString@@@Z
-?DrawText@PDFWriter@vcl@@QAEXABVRectangle@@ABVString@@G@Z
-?DrawTextArray@PDFWriter@vcl@@QAEXABVPoint@@ABVString@@PBJGG@Z
-?DrawTextLine@PDFWriter@vcl@@QAEXABVPoint@@JW4FontStrikeout@@W4FontUnderline@@E@Z
-?DrawTransparent@PDFWriter@vcl@@QAEXABVPolyPolygon@@G@Z
-?DrawWallpaper@PDFWriter@vcl@@QAEXABVRectangle@@ABVWallpaper@@@Z
-?Emit@PDFWriter@vcl@@QAE_NXZ
-?GetReferenceDevice@PDFWriter@vcl@@QAEPAVOutputDevice@@XZ
-?GetVersion@PDFWriter@vcl@@QBE?AW4PDFVersion@12@XZ
-?IntersectClipRegion@PDFWriter@vcl@@QAEXABVRectangle@@@Z
-?IntersectClipRegion@PDFWriter@vcl@@QAEXABVRegion@@@Z
-?MoveClipRegion@PDFWriter@vcl@@QAEXJJ@Z
-?NewPage@PDFWriter@vcl@@QAEJJJW4Orientation@12@@Z
-?Pop@PDFWriter@vcl@@QAEXXZ
-?Push@PDFWriter@vcl@@QAEXG@Z
-?SetAntialiasing@PDFWriter@vcl@@QAEXG@Z
-?SetClipRegion@PDFWriter@vcl@@QAEXABVRegion@@@Z
-?SetClipRegion@PDFWriter@vcl@@QAEXXZ
-?SetFillColor@PDFWriter@vcl@@QAEXABVColor@@@Z
-?SetFont@PDFWriter@vcl@@QAEXABVFont@@@Z
-?SetLayoutMode@PDFWriter@vcl@@QAEXK@Z
-?SetLineColor@PDFWriter@vcl@@QAEXABVColor@@@Z
-?SetMapMode@PDFWriter@vcl@@QAEXABVMapMode@@@Z
-?SetMapMode@PDFWriter@vcl@@QAEXXZ
-?SetTextAlign@PDFWriter@vcl@@QAEXW4TextAlign@@@Z
-?SetTextColor@PDFWriter@vcl@@QAEXABVColor@@@Z
-?SetTextFillColor@PDFWriter@vcl@@QAEXABVColor@@@Z
-?SetTextFillColor@PDFWriter@vcl@@QAEXXZ
-?SetTextLineColor@PDFWriter@vcl@@QAEXABVColor@@@Z
-?SetTextLineColor@PDFWriter@vcl@@QAEXXZ
-??0?$_List_base@HV?$allocator@H@std@@@std@@QAE@ABV?$allocator@H@1@@Z
-??0?$_List_iterator@HU?$_Const_traits@H@std@@@std@@QAE@ABU?$_List_iterator@HU?$_Nonconst_traits@H@std@@@1@@Z
-??0?$_List_iterator@HU?$_Const_traits@H@std@@@std@@QAE@XZ
-??0?$_List_iterator@HU?$_Nonconst_traits@H@std@@@std@@QAE@PAU?$_List_node@H@1@@Z
-??0?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE@ABU?$less@E@1@ABV?$allocator@U?$pair@$$CBEH@std@@@1@@Z
-??0?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE@ABU?$less@J@1@ABV?$allocator@U?$pair@$$CBJJ@std@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBEH@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBEH@std@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBJJ@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBJJ@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@H@std@@U12@V?$allocator@U?$_List_node@H@std@@@2@@std@@QAE@ABV?$allocator@U?$_List_node@H@std@@@1@PAU?$_List_node@H@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PA_K_KV?$allocator@_K@std@@@std@@QAE@ABV?$allocator@_K@1@PA_K@Z
-??0?$_Vector_base@_KV?$allocator@_K@std@@@std@@QAE@ABV?$allocator@_K@1@@Z
-??0?$allocator@H@std@@QAE@XZ
-??0?$allocator@U?$_List_node@H@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@H@std@@@std@@QAE@ABV?$allocator@H@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBEH@std@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBJJ@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBEH@std@@@std@@QAE@XZ
-??0?$allocator@U?$pair@$$CBJJ@std@@@std@@QAE@XZ
-??0?$allocator@_K@std@@QAE@ABV01@@Z
-??0?$allocator@_K@std@@QAE@XZ
-??0?$list@HV?$allocator@H@std@@@std@@QAE@ABV?$allocator@H@1@@Z
-??0?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE@XZ
-??0?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE@XZ
-??0?$pair@$$CBEH@std@@QAE@ABEABH@Z
-??0?$pair@$$CBEH@std@@QAE@ABU01@@Z
-??0?$pair@$$CBJJ@std@@QAE@ABJ0@Z
-??0?$pair@$$CBJJ@std@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@_N@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@1@AB_N@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@_N@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@1@AB_N@Z
-??0?$vector@_KV?$allocator@_K@std@@@std@@QAE@ABV?$allocator@_K@1@@Z
-??0AccessReleaser@@QAE@PAVBitmapReadAccess@@@Z
-??0FontSubsetInfo@@QAE@XZ
-??0GlyphItem@@QAE@HJABVPoint@@JH@Z
-??0GlyphItem@@QAE@XZ
-??0OString@rtl@@AAE@PAU_rtl_String@@PAVDO_NOT_ACQUIRE@01@@Z
-??0OStringBuffer@rtl@@QAE@ABV01@@Z
-??0OStringBuffer@rtl@@QAE@J@Z
-??0OStringBuffer@rtl@@QAE@XZ
-??0_List_iterator_base@std@@QAE@XZ
-??1?$_List_base@HV?$allocator@H@std@@@std@@QAE@XZ
-??1?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBEH@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBJJ@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@H@std@@U12@V?$allocator@U?$_List_node@H@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PA_K_KV?$allocator@_K@std@@@std@@QAE@XZ
-??1?$_Vector_base@_KV?$allocator@_K@std@@@std@@QAE@XZ
-??1?$allocator@H@std@@QAE@XZ
-??1?$allocator@U?$_List_node@H@std@@@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBEH@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBJJ@std@@@std@@QAE@XZ
-??1?$allocator@_K@std@@QAE@XZ
-??1?$list@HV?$allocator@H@std@@@std@@QAE@XZ
-??1?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE@XZ
-??1?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE@XZ
-??1?$vector@_KV?$allocator@_K@std@@@std@@QAE@XZ
-??1AccessReleaser@@QAE@XZ
-??1FontSubsetInfo@@QAE@XZ
-??1OStringBuffer@rtl@@QAE@XZ
-??4OStringBuffer@rtl@@QAEAAV01@ABV01@@Z
-??8_List_iterator_base@std@@QBE_NABU01@@Z
-??9Font@@QBEEABV0@@Z
-??9Region@@QBEEABV0@@Z
-??A?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAEAAHABE@Z
-??A?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAEAAJABJ@Z
-??A?$vector@_KV?$allocator@_K@std@@@std@@QAEAA_KI@Z
-??C?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@QBEPAU?$pair@$$CBJJ@1@XZ
-??D?$_List_iterator@HU?$_Const_traits@H@std@@@std@@QBEABHXZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@QBEAAU?$pair@$$CBEH@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@QBEAAU?$pair@$$CBJJ@1@XZ
-??E?$_List_iterator@HU?$_Const_traits@H@std@@@std@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBEH@std@@@std@@QBEABEABU?$pair@$$CBEH@1@@Z
-??R?$_Select1st@U?$pair@$$CBJJ@std@@@std@@QBEABJABU?$pair@$$CBJJ@1@@Z
-??R?$less@E@std@@QBE_NABE0@Z
-??R?$less@J@std@@QBE_NABJ0@Z
-??_GZCodec@@QAEPAXI@Z
-?GetBitCount@BitmapEx@@QBEGXZ
-?GetChecksum@AlphaMask@@QBEKXZ
-?GetDescent@FontMetric@@QBEJXZ
-?GetTransparentColor@BitmapEx@@QBEABVColor@@XZ
-?GetWidth@Font@@QBEJXZ
-?OUStringToOString@rtl@@YA?AVOString@1@ABVOUString@1@GK@Z
-?SetWidth@Font@@QAEXJ@Z
-?_Construct@std@@YAXPAHABH@Z
-?_Construct@std@@YAXPAU?$pair@$$CBEH@1@ABU21@@Z
-?_Construct@std@@YAXPAU?$pair@$$CBJJ@1@ABU21@@Z
-?_Construct@std@@YAXPA_KAB_K@Z
-?_Destroy@std@@YAXPAH@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBEH@1@@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBJJ@1@@Z
-?_Destroy@std@@YAXPA_K0@Z
-?_M_clear@?$vector@_KV?$allocator@_K@std@@@std@@IAEXXZ
-?_M_create_node@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@ABU?$pair@$$CBEH@2@@Z
-?_M_create_node@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@ABU?$pair@$$CBJJ@2@@Z
-?_M_create_node@?$list@HV?$allocator@H@std@@@std@@IAEPAU?$_List_node@H@2@ABH@Z
-?_M_decr@_List_iterator_base@std@@QAEXXZ
-?_M_empty_initialize@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@AAEXXZ
-?_M_empty_initialize@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@AAEXXZ
-?_M_erase@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@@Z
-?_M_erase@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@@Z
-?_M_insert@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBEH@2@0@Z
-?_M_insert@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBJJ@2@0@Z
-?_M_insert_overflow@?$vector@_KV?$allocator@_K@std@@@std@@IAEXPA_KAB_KABU__true_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@XZ
-?_M_leftmost@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@ABE@Z
-?_M_lower_bound@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@ABJ@Z
-?_M_rightmost@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@XZ
-?_M_rightmost@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@XZ
-?_M_root@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@XZ
-?_M_root@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@XZ
-?_M_set@?$vector@_KV?$allocator@_K@std@@@std@@IAEXPA_K00@Z
-?_S_color@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@@Z
-?_S_color@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@@Z
-?_S_key@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAABEPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@@Z
-?_S_key@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAABEPAU_Rb_tree_node_base@2@@Z
-?_S_key@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAABJPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@@Z
-?_S_key@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAABJPAU_Rb_tree_node_base@2@@Z
-?_S_left@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@PAU32@@Z
-?_S_left@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_right@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_value@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@KAAAU?$pair@$$CBEH@2@PAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@@Z
-?_S_value@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@KAAAU?$pair@$$CBJJ@2@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@@Z
-?__copy_trivial@std@@YAPAXPBX0PAX@Z
-?__default_constructed@std@@YAHPAH@Z
-?__default_constructed@std@@YAJPAJ@Z
-?__default_constructed_aux@std@@YAHPAHABU__true_type@1@@Z
-?__default_constructed_aux@std@@YAJPAJABU__true_type@1@@Z
-?__destroy@std@@YAXPA_K00@Z
-?__destroy_aux@std@@YAXPA_K0ABU__true_type@1@@Z
-?allocate@?$allocator@U?$_List_node@H@std@@@std@@QBEPAU?$_List_node@H@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@IPBX@Z
-?allocate@?$allocator@_K@std@@QBEPA_KIPBX@Z
-?append@OStringBuffer@rtl@@QAEAAV12@ABVOString@2@@Z
-?append@OStringBuffer@rtl@@QAEAAV12@D@Z
-?append@OStringBuffer@rtl@@QAEAAV12@JF@Z
-?append@OStringBuffer@rtl@@QAEAAV12@N@Z
-?append@OStringBuffer@rtl@@QAEAAV12@PBD@Z
-?append@OStringBuffer@rtl@@QAEAAV12@PBDJ@Z
-?append@OStringBuffer@rtl@@QAEAAV12@_JF@Z
-?begin@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@XZ
-?begin@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@XZ
-?begin@?$list@HV?$allocator@H@std@@@std@@QAE?AU?$_List_iterator@HU?$_Nonconst_traits@H@std@@@2@XZ
-?begin@?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@XZ
-?begin@?$vector@_KV?$allocator@_K@std@@@std@@QAEPA_KXZ
-?clear@?$_List_base@HV?$allocator@H@std@@@std@@QAEXXZ
-?clear@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAEXXZ
-?clear@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAEXXZ
-?deallocate@?$allocator@U?$_List_node@H@std@@@std@@QBEXPAU?$_List_node@H@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBEH@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBEH@std@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBJJ@std@@@2@I@Z
-?deallocate@?$allocator@_K@std@@QBEXPA_KI@Z
-?end@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@XZ
-?end@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@XZ
-?end@?$list@HV?$allocator@H@std@@@std@@QAE?AU?$_List_iterator@HU?$_Nonconst_traits@H@std@@@2@XZ
-?end@?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@XZ
-?end@?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@XZ
-?fill_n@std@@YAPA_KPA_KIAB_K@Z
-?getLength@OString@rtl@@QBEJXZ
-?getLength@OStringBuffer@rtl@@QAEJXZ
-?getStr@OStringBuffer@rtl@@QBEPBDXZ
-?insert@?$list@HV?$allocator@H@std@@@std@@QAE?AU?$_List_iterator@HU?$_Nonconst_traits@H@std@@@2@U32@ABH@Z
-?insert@?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@U32@ABU?$pair@$$CBEH@2@@Z
-?insert@?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@U32@ABU?$pair@$$CBJJ@2@@Z
-?insert_unique@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@U32@ABU?$pair@$$CBEH@2@@Z
-?insert_unique@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@std@@_N@2@ABU?$pair@$$CBEH@2@@Z
-?insert_unique@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@U32@ABU?$pair@$$CBJJ@2@@Z
-?insert_unique@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@std@@_N@2@ABU?$pair@$$CBJJ@2@@Z
-?iterator_category@std@@YA?AUbidirectional_iterator_tag@1@ABU_List_iterator_base@1@@Z
-?key_comp@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QBE?AU?$less@E@2@XZ
-?key_comp@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QBE?AU?$less@J@2@XZ
-?key_comp@?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QBE?AU?$less@E@2@XZ
-?key_comp@?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QBE?AU?$less@J@2@XZ
-?lower_bound@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@ABE@Z
-?lower_bound@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@ABJ@Z
-?lower_bound@?$map@EHU?$less@E@std@@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBEH@std@@U?$_Nonconst_traits@U?$pair@$$CBEH@std@@@2@@2@ABE@Z
-?lower_bound@?$map@JJU?$less@J@std@@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@std@@U?$_Nonconst_traits@U?$pair@$$CBJJ@std@@@2@@2@ABJ@Z
-?push_back@?$list@HV?$allocator@H@std@@@std@@QAEXABH@Z
-?push_back@?$vector@_KV?$allocator@_K@std@@@std@@QAEXAB_K@Z
-?setLength@OStringBuffer@rtl@@QAEXJ@Z
-?size@?$_Rb_tree@EU?$pair@$$CBEH@std@@U?$_Select1st@U?$pair@$$CBEH@std@@@2@U?$less@E@2@V?$allocator@U?$pair@$$CBEH@std@@@2@@std@@QBEIXZ
-?size@?$_Rb_tree@JU?$pair@$$CBJJ@std@@U?$_Select1st@U?$pair@$$CBJJ@std@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@std@@@2@@std@@QBEIXZ
-?size@?$vector@_KV?$allocator@_K@std@@@std@@QBEIXZ
-?valueOf@OString@rtl@@SA?AV12@_JF@Z
-?value_type@std@@YAPA_KPB_K@Z
-_real@3f1a36e2eb1c432d
-_real@3f5c9871032b0b50
-_real@3fa1111111111111
-_real@3fd1ac51114f0eaf
-_real@3fe1ac51114f0eaf
-_real@401921fb53c8d4f1
-_real@bfe45f306e2dc32d
-?IsClusterStart@GlyphItem@@QBE_NXZ
-?IsRTLGlyph@GlyphItem@@QBE_NXZ
-?back@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@std@@@std@@QAEAAVPolyPolygon@@XZ
-_real@3f5c987103b7c81b
-?KeyboardActivated@HelpEvent@@QBEEXZ
-??0ButtonDialog@@QAE@PAVWindow@@_J@Z
-??0DockingWindow@@QAE@PAVWindow@@_J@Z
-??0WindowStateData@@QAE@XZ
-?GetFloatStyle@DockingWindow@@QBE_JXZ
-?GetFloatingPos@DockingWindow@@QBE?AVPoint@@XZ
-?GetX@WindowStateData@@QBEJXZ
-?GetY@WindowStateData@@QBEJXZ
-?IsDockable@DockingWindow@@QBEEXZ
-?IsDocking@DockingWindow@@QBEEXZ
-?SetFloatStyle@DockingWindow@@QAEX_J@Z
-?SetMask@WindowStateData@@QAEXK@Z
-??0Dialog@@QAE@PAVWindow@@_J@Z
-??0ModalDialog@@QAE@PAVWindow@@_J@Z
-??0ModelessDialog@@QAE@PAVWindow@@_J@Z
-??1MnemonicGenerator@@QAE@XZ
-??0KeyEvent@@QAE@XZ
-??4KeyEvent@@QAEAAV0@ABV0@@Z
-?GetActivationKey@Window@@QBE?AVKeyEvent@@XZ
-?GetLabelFor@Window@@QBEPAV1@XZ
-?GetLabeledBy@Window@@QBEPAV1@XZ
-??0FloatingWindow@@QAE@PAVWindow@@_J@Z
-?SetDialogControlFlags@Window@@QAEXG@Z
-?getWidth@Rectangle@@QBEJXZ
-??0KeyEvent@@QAE@ABV0@@Z
-?GetAllModifier@KeyCode@@QBEGXZ
-?LogicalTextDirectionality@KeyEvent@@QBE?AV1@W4TextDirectionality@@@Z
-??0?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@ABV01234@@Z
-??0?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@ABU?$less@G@1@ABV?$allocator@U?$pair@$$CBGVRectangle@@@std@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBGVRectangle@@@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@ABV?$allocator@U?$pair@$$CBGVRectangle@@@std@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Const_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@1@@Z
-??0?$_STLP_alloc_proxy@PAJJV?$allocator@J@std@@@std@@QAE@ABV?$allocator@J@1@PAJ@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@1@@Z
-??0?$_Vector_base@GV?$allocator@G@std@@@std@@QAE@ABV?$allocator@G@1@@Z
-??0?$_Vector_base@JV?$allocator@J@std@@@std@@QAE@ABV?$allocator@J@1@@Z
-??0?$allocator@J@std@@QAE@ABV01@@Z
-??0?$allocator@J@std@@QAE@XZ
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBGVRectangle@@@std@@@1@@Z
-??0?$allocator@U?$pair@$$CBGVRectangle@@@std@@@std@@QAE@XZ
-??0?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAE@XZ
-??0?$pair@$$CBGVRectangle@@@std@@QAE@ABGABVRectangle@@@Z
-??0?$pair@$$CBGVRectangle@@@std@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@_N@std@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@1@AB_N@Z
-??0?$vector@GV?$allocator@G@std@@@std@@QAE@ABV?$allocator@G@1@@Z
-??0?$vector@JV?$allocator@J@std@@@std@@QAE@ABV?$allocator@J@1@@Z
-??0ControlLayoutData@vcl@@QAE@XZ
-??0DecoToolBox@@QAE@PAVWindow@@ABVResId@@@Z
-??0DecoToolBox@@QAE@PAVWindow@@_J@Z
-??0Menu@@QAE@XZ
-??0MenuLayoutData@vcl@@QAE@XZ
-??0VclMenuEvent@@QAE@PAVMenu@@KG@Z
-??1?$Reference@VXAccessibleContext@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??1?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBGVRectangle@@@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAJJV?$allocator@J@std@@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@2@@std@@QAE@XZ
-??1?$_Vector_base@GV?$allocator@G@std@@@std@@QAE@XZ
-??1?$_Vector_base@JV?$allocator@J@std@@@std@@QAE@XZ
-??1?$allocator@J@std@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@std@@QAE@XZ
-??1?$allocator@U?$pair@$$CBGVRectangle@@@std@@@std@@QAE@XZ
-??1?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAE@XZ
-??1?$vector@GV?$allocator@G@std@@@std@@QAE@XZ
-??1?$vector@JV?$allocator@J@std@@@std@@QAE@XZ
-??1DecoToolBox@@UAE@XZ
-??1MenuLayoutData@vcl@@QAE@XZ
-??4?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAAAAV01234@ABV01234@@Z
-??A?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAEAAVRectangle@@ABG@Z
-??A?$vector@GV?$allocator@G@std@@@std@@QAEAAGI@Z
-??A?$vector@JV?$allocator@J@std@@@std@@QAEAAJI@Z
-??C?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QBAPAVXAccessible@accessibility@234drafts@@XZ
-??C?$Reference@VXAccessibleContext@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QBAPAVXAccessibleContext@accessibility@234drafts@@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Const_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QBEPBU?$pair@$$CBGVRectangle@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Const_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QBEABU?$pair@$$CBGVRectangle@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QBEAAU?$pair@$$CBGVRectangle@@@1@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@std@@QBEABGABU?$pair@$$CBGVRectangle@@@1@@Z
-??_7DecoToolBox@@6B@
-??_7VclMenuEvent@@6B@
-??_GDecoToolBox@@UAEPAXI@Z
-??_GMenuLayoutData@vcl@@QAEPAXI@Z
-?AddEventListener@Menu@@QAEXABVLink@@@Z
-?ConvertPoint@Menu@@QBEEAAVPoint@@PAVWindow@@@Z
-?CreateAutoMnemonics@Menu@@QAEXXZ
-?DataChanged@DecoToolBox@@UAEXABVDataChangedEvent@@@Z
-?GetAccessible@Menu@@QAE?AV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@XZ
-?GetActivationKey@Menu@@QBE?AVKeyEvent@@G@Z
-?GetBoundingRectangle@Menu@@QBE?AVRectangle@@G@Z
-?GetCharacterBounds@Menu@@QBE?AVRectangle@@GJ@Z
-?GetDisplayItemId@Menu@@QBEGJ@Z
-?GetDisplayText@Menu@@QBE?AVString@@XZ
-?GetIndexForPoint@Menu@@QBEJABVPoint@@AAG@Z
-?GetItemImageAngle@Menu@@QBEJG@Z
-?GetItemImageMirrorMode@Menu@@QBEEG@Z
-?GetLineCount@Menu@@QBEJXZ
-?GetLineStartEnd@Menu@@QBE?AVPair@@J@Z
-?GetMenuBarColor@StyleSettings@@QBEABVColor@@XZ
-?GetTipHelpText@Menu@@QBEABVString@@G@Z
-?IsEnterWindow@MouseEvent@@QBEEXZ
-?IsInCleanUp@FloatingWindow@@QBEEXZ
-?IsItemPosVisible@Menu@@QBEEG@Z
-?IsItemVisible@Menu@@QBEEG@Z
-?IsMenuVisible@Menu@@QBEEXZ
-?RemoveEventListener@Menu@@QAEXABVLink@@@Z
-?Resize@DecoToolBox@@UAEXXZ
-?SelectItem@Menu@@QAEXG@Z
-?SetAccessible@Menu@@QAEXABV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@@Z
-?SetClickHdl@ToolBox@@QAEXABVLink@@@Z
-?SetHelpSettings@AllSettings@@QAEXABVHelpSettings@@@Z
-?SetImages@DecoToolBox@@QAEXXZ
-?SetItemImageAngle@Menu@@QAEXGJ@Z
-?SetItemImageMirrorMode@Menu@@QAEXGE@Z
-?SetPopupModeFlags@FloatingWindow@@QAEXK@Z
-?SetTipHelpText@Menu@@QAEXGABVString@@@Z
-?SetTipTimeout@HelpSettings@@QAEXK@Z
-?SetTransparentColor@BitmapEx@@QAEXABVColor@@@Z
-?_Construct@std@@YAXPAGABG@Z
-?_Construct@std@@YAXPAJABJ@Z
-?_Construct@std@@YAXPAU?$pair@$$CBGVRectangle@@@1@ABU21@@Z
-?_Destroy@std@@YAXPAG0@Z
-?_Destroy@std@@YAXPAJ0@Z
-?_Destroy@std@@YAXPAU?$pair@$$CBGVRectangle@@@1@@Z
-?_M_clear@?$vector@GV?$allocator@G@std@@@std@@IAEXXZ
-?_M_clear@?$vector@JV?$allocator@J@std@@@std@@IAEXXZ
-?_M_create_node@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?_M_empty_initialize@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@AAEXXZ
-?_M_erase@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@@Z
-?_M_find@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@ABG@Z
-?_M_insert@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBGVRectangle@@@2@0@Z
-?_M_insert_overflow@?$vector@GV?$allocator@G@std@@@std@@IAEXPAGABGABU__true_type@2@I_N@Z
-?_M_insert_overflow@?$vector@JV?$allocator@J@std@@@std@@IAEXPAJABJABU__true_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@ABG@Z
-?_M_rightmost@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@XZ
-?_M_root@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@XZ
-?_M_set@?$vector@GV?$allocator@G@std@@@std@@IAEXPAG00@Z
-?_M_set@?$vector@JV?$allocator@J@std@@@std@@IAEXPAJ00@Z
-?_S_color@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAABGPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@@Z
-?_S_key@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAABGPAU_Rb_tree_node_base@2@@Z
-?_S_left@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_value@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@KAAAU?$pair@$$CBGVRectangle@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@@Z
-?__default_constructed@std@@YA?AVRectangle@@PAV2@@Z
-?__default_constructed_aux@std@@YA?AVRectangle@@PAV2@ABU__false_type@1@@Z
-?__destroy@std@@YAXPAJ00@Z
-?__destroy_aux@std@@YAXPAJ0ABU__true_type@1@@Z
-?allocate@?$allocator@J@std@@QBEPAJIPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@std@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@IPBX@Z
-?begin@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@XZ
-?begin@?$vector@GV?$allocator@G@std@@@std@@QAEPAGXZ
-?begin@?$vector@JV?$allocator@J@std@@@std@@QAEPAJXZ
-?clear@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAEXXZ
-?clear@?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAEXXZ
-?deallocate@?$allocator@J@std@@QBEXPAJI@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@std@@@std@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@std@@@2@I@Z
-?end@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@XZ
-?end@?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@XZ
-?fill_n@std@@YAPAGPAGIABG@Z
-?fill_n@std@@YAPAJPAJIABJ@Z
-?find@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@ABG@Z
-?find@?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@ABG@Z
-?insert@?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@U32@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?insert_unique@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@U32@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?insert_unique@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@_N@2@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?key_comp@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QBE?AU?$less@G@2@XZ
-?key_comp@?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QBE?AU?$less@G@2@XZ
-?lower_bound@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@ABG@Z
-?lower_bound@?$map@GVRectangle@@U?$less@G@std@@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@3@@std@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@std@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@std@@@2@@2@ABG@Z
-?push_back@?$vector@GV?$allocator@G@std@@@std@@QAEXABG@Z
-?push_back@?$vector@JV?$allocator@J@std@@@std@@QAEXABJ@Z
-?set@?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAAEPAVXAccessible@accessibility@345drafts@@@Z
-?size@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@std@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@std@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@std@@@2@@std@@QBEIXZ
-?size@?$vector@GV?$allocator@G@std@@@std@@QBEIXZ
-?size@?$vector@JV?$allocator@J@std@@@std@@QBEIXZ
-?value_type@std@@YAPAJPBJ@Z
-??0MnemonicGenerator@@QAE@XZ
-?CreateMnemonic@MnemonicGenerator@@QAEEAAVString@@@Z
-?GetCharClass@MnemonicGenerator@@QAE?AV?$Reference@VXCharacterClassification@i18n@star@sun@com@@@uno@star@sun@com@@XZ
-?RegisterMnemonic@MnemonicGenerator@@QAEXABVString@@@Z
-??0ErrorBox@@QAE@PAVWindow@@_JABVString@@@Z
-??0MessBox@@QAE@PAVWindow@@_JABVString@@2@Z
-??0QueryBox@@QAE@PAVWindow@@_JABVString@@@Z
-??0WarningBox@@QAE@PAVWindow@@_JABVString@@@Z
-?GetModeImage@MessBox@@QBEABVImage@@W4BmpColorMode@@@Z
-?SetModeImage@MessBox@@QAEEABVImage@@W4BmpColorMode@@@Z
-?ShouldDeselect@SelectionEngine@@ABEEE@Z
-??0Splitter@@QAE@PAVWindow@@_J@Z
-?DataChanged@Splitter@@UAEXABVDataChangedEvent@@@Z
-?GetData@DataChangedEvent@@QBEPAXXZ
-?GetFocus@Splitter@@UAEXXZ
-?GetKeyboardStepSize@Splitter@@QBEJXZ
-?IsHorizontal@Splitter@@QBEEXZ
-?KeyInput@Splitter@@UAEXABVKeyEvent@@@Z
-?LoseFocus@Splitter@@UAEXXZ
-?Notify@Splitter@@UAEJAAVNotifyEvent@@@Z
-?Paint@Splitter@@UAEXABVRectangle@@@Z
-?SetKeyboardStepSize@Splitter@@QAEXJ@Z
-??0SplitWindow@@QAE@PAVWindow@@_J@Z
-?CalcWindowSizePixel@SplitWindow@@SA?AVSize@@ABV2@W4WindowAlign@@_JE@Z
-??0StatusBar@@QAE@PAVWindow@@_J@Z
-??0SystemChildWindow@@QAE@PAVWindow@@_J@Z
-?GetHeight@WindowStateData@@QBEJXZ
-?GetMask@WindowStateData@@QBEKXZ
-?GetState@WindowStateData@@QBEKXZ
-?GetTaskPaneList@SystemWindow@@QAEPAVTaskPaneList@@XZ
-?GetWidth@WindowStateData@@QBEJXZ
-?GetWindowState@SystemWindow@@QBE?AVByteString@@K@Z
-?GetWindowStateData@SystemWindow@@QBEXAAVWindowStateData@@@Z
-?PreNotify@SystemWindow@@UAEJAAVNotifyEvent@@@Z
-?SetHeight@WindowStateData@@QAEXJ@Z
-?SetIcon@SystemWindow@@QAEXG@Z
-?SetState@WindowStateData@@QAEXK@Z
-?SetWidth@WindowStateData@@QAEXJ@Z
-?SetWindowState@SystemWindow@@QAEXABVByteString@@@Z
-?SetWindowStateData@SystemWindow@@IAEXABVWindowStateData@@@Z
-?SetX@WindowStateData@@QAEXJ@Z
-?SetY@WindowStateData@@QAEXJ@Z
-??0TabDialog@@QAE@PAVWindow@@_J@Z
-??0TabPage@@QAE@PAVWindow@@_J@Z
-?CreateAccessible@TabPage@@UAE?AV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@XZ
-??0ToolBox@@QAE@PAVWindow@@_J@Z
-?GetFocus@ToolBox@@UAEXXZ
-?GetIntersection@Rectangle@@QBE?AV1@ABV1@@Z
-?KeyInput@ToolBox@@UAEXABVKeyEvent@@@Z
-?LoseFocus@ToolBox@@UAEXXZ
-?SetCustomizeMode@ToolBox@@QAEXE@Z
-?TriggerItem@ToolBox@@QAEXGEE@Z
-_real@3f91111111111111
-_real@4000000000000000
-_real@404e000000000000
-_real@4059000000000000
-?GetItemImageAngle@ToolBox@@QBEJG@Z
-?GetItemImageMirrorMode@ToolBox@@QBEEG@Z
-?GetItemPosRect@ToolBox@@QBE?AVRectangle@@G@Z
-?SetImageList@ToolBox@@QAEXABVImageList@@@Z
-?SetItemImageAngle@ToolBox@@QAEXGJ@Z
-?SetItemImageMirrorMode@ToolBox@@QAEXGE@Z
-??0?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXClipboard@clipboard@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXDragGestureListener@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXDragGestureRecognizer@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXDragSource@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXDropTarget@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXTopWindow@awt@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0Window@@QAE@PAV0@_J@Z
-??1?$Reference@VXTopWindow@awt@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??C?$Reference@VXAccessibleTopWindowMap@bridge@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QBAPAVXAccessibleTopWindowMap@bridge@accessibility@234drafts@@XZ
-??_C@_0BM@HMNJLJL@com?4sun?4star?4awt?4XTopWindow?$AA@
-??_C@_0CO@EKFMFGJP@drafts?4com?4sun?4star?4accessibilit@
-?AbsoluteScreenToOutputPixel@Window@@QBE?AVPoint@@ABV2@@Z
-?AddChildEventListener@Window@@QAEXABVLink@@@Z
-?AddEventListener@Window@@QAEXABVLink@@@Z
-?CallEventListeners@Window@@IAEXKPAX@Z
-?CreateAccessible@Window@@UAE?AV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@XZ
-?DrawSelectionBackground@Window@@QAEXABVRectangle@@GEEE@Z
-?GetAccessible@Window@@QAE?AV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@E@Z
-?GetAccessibleChildWindow@Window@@QAEPAV1@G@Z
-?GetAccessibleChildWindowCount@Window@@QAEGXZ
-?GetAccessibleDescription@Window@@QBE?AVString@@XZ
-?GetAccessibleName@Window@@QBE?AVString@@XZ
-?GetAccessibleParentWindow@Window@@QBEPAV1@XZ
-?GetAccessibleRole@Window@@QBEGXZ
-?GetCurrentModButtons@Window@@QAEKXZ
-?GetDisplayBackground@Window@@UBEABVWallpaper@@XZ
-?GetDisplayText@Window@@UBE?AVString@@XZ
-?GetPreferredKeyInputWindow@Window@@UAEPAV1@XZ
-?GetUseSystemUIFonts@StyleSettings@@QBEEXZ
-?GetWindow@Menu@@QBEPAVWindow@@XZ
-?GetWindowExtentsRelative@Window@@QAE?AVRectangle@@PAV1@@Z
-?GrabFocusToDocument@Window@@QAEXXZ
-?GrabsFocus@FloatingWindow@@QBEEXZ
-?IsAccessibilityEventsSuppressed@Window@@QAEEE@Z
-?IsLocked@Window@@QBEEE@Z
-?IsScrollable@Window@@QBEEXZ
-?IsTopWindow@Window@@QBEEXZ
-?OutputToAbsoluteScreenPixel@Window@@QBE?AVPoint@@ABV2@@Z
-?RemoveChildEventListener@Window@@QAEXABVLink@@@Z
-?RemoveEventListener@Window@@QAEXABVLink@@@Z
-?SetAccessible@Window@@QAEXV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@@Z
-?SetAccessibleDescription@Window@@QAEXABVString@@@Z
-?SetAccessibleName@Window@@QAEXABVString@@@Z
-?SetAccessibleRole@Window@@QAEXG@Z
-?SetExtendedStyle@Window@@QAEX_J@Z
-?SetStyle@Window@@QAEX_J@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@2345@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXTopWindow@awt@star@sun@com@@@2345@@Z
-?iquery@?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@CAPAVXAccessible@accessibility@345drafts@@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXClipboard@clipboard@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXClipboard@clipboard@datatransfer@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXDragGestureListener@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXDragGestureListener@dnd@datatransfer@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXDragGestureRecognizer@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXDragGestureRecognizer@dnd@datatransfer@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXDragSource@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXDragSource@dnd@datatransfer@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXDropTarget@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXDropTarget@dnd@datatransfer@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXTopWindow@awt@star@sun@com@@@uno@star@sun@com@@CAPAVXTopWindow@awt@345@PAVXInterface@2345@@Z
-?s_pType_com_sun_star_awt_XTopWindow@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXTopWindow@awt@star@sun@com@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?s_pType_drafts_com_sun_star_accessibility_XAccessible@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?SnapShot@Window@@QBE?AVBitmap@@E@Z
-?SetKeyboardActivated@HelpEvent@@QAEXE@Z
-?getHeight@Size@@QBEJXZ
-?getWidth@Size@@QBEJXZ
-??0WorkWindow@@QAE@PAVWindow@@ABVAny@uno@star@sun@com@@_J@Z
-??0WorkWindow@@QAE@PAVWindow@@_J@Z
-?Invalidate@OpenGL@@SAXE@Z
-?DecrementLockCount@Window@@QAEXXZ
-?IncrementLockCount@Window@@QAEXXZ
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXDropTargetDragContext@dnd@datatransfer@star@sun@com@@@2345@@Z
-??0?$Reference@VXDropTargetListener@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXDropTargetDropContext@dnd@datatransfer@star@sun@com@@@2345@@Z
-?iquery@?$Reference@VXDropTargetListener@dnd@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXDropTargetListener@dnd@datatransfer@345@PAVXInterface@2345@@Z
-??0?$Reference@VXAccessibleContext@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@XZ
-??0XAccessible@accessibility@star@sun@com@drafts@@QAE@XZ
-??0?$_STLP_alloc_proxy@PAPAVWindow@@PAV1@V?$allocator@PAVWindow@@@std@@@std@@QAE@ABV?$allocator@PAVWindow@@@1@PAPAVWindow@@@Z
-??0?$_Temporary_buffer@PAPAVWindow@@PAV1@@std@@QAE@PAPAVWindow@@0@Z
-??0?$_Vector_base@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAE@ABV?$allocator@PAVWindow@@@1@@Z
-??0?$allocator@PAVWindow@@@std@@QAE@ABV01@@Z
-??0?$allocator@PAVWindow@@@std@@QAE@XZ
-??0?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAE@ABV?$allocator@PAVWindow@@@1@@Z
-??0TaskPaneList@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAPAVWindow@@PAV1@V?$allocator@PAVWindow@@@std@@@std@@QAE@XZ
-??1?$_Temporary_buffer@PAPAVWindow@@PAV1@@std@@QAE@XZ
-??1?$_Vector_base@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAE@XZ
-??1?$allocator@PAVWindow@@@std@@QAE@XZ
-??1?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAE@XZ
-??1TaskPaneList@@QAE@XZ
-??RLTRSort@@QBE_NPBVWindow@@0@Z
-??RLTRSortBackward@@QBE_NPBVWindow@@0@Z
-?AddWindow@TaskPaneList@@QAEXPAVWindow@@@Z
-?FindNextFloat@TaskPaneList@@AAEPAVWindow@@PAV2@E@Z
-?FindNextPane@TaskPaneList@@AAEPAVWindow@@PAV2@E@Z
-?FindNextSplitter@TaskPaneList@@AAEPAVWindow@@PAV2@E@Z
-?GetFloatingWindow@DockingWindow@@QBEPAVFloatingWindow@@XZ
-?HandleKeyEvent@TaskPaneList@@QAEEVKeyEvent@@@Z
-?RemoveWindow@TaskPaneList@@QAEXPAVWindow@@@Z
-?_Construct@std@@YAXPAPAVWindow@@ABQAV2@@Z
-?_Destroy@std@@YAXPAPAVWindow@@0@Z
-?_Destroy@std@@YAXPAPAVWindow@@@Z
-?_IsOKToMemCpy@std@@YA?AU?$_OKToMemCpy@PAVWindow@@PAV1@@1@PAPAVWindow@@0@Z
-?_M_allocate_buffer@?$_Temporary_buffer@PAPAVWindow@@PAV1@@std@@AAEXXZ
-?_M_clear@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@IAEXXZ
-?_M_initialize_buffer@?$_Temporary_buffer@PAPAVWindow@@PAV1@@std@@AAEXABQAVWindow@@ABU__true_type@2@@Z
-?_M_insert_overflow@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@IAEXPAPAVWindow@@ABQAV3@ABU__true_type@2@I_N@Z
-?_M_set@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@IAEXPAPAVWindow@@00@Z
-?_Ret@?$_BothPtrType@PAPAVWindow@@PAPAV1@@std@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@PAVWindow@@PAV1@@std@@SA?AU__true_type@2@XZ
-?__advance@std@@YAXAAPAPAVWindow@@HABUrandom_access_iterator_tag@1@@Z
-?__chunk_insertion_sort@std@@YAXPAPAVWindow@@0HULTRSort@@@Z
-?__chunk_insertion_sort@std@@YAXPAPAVWindow@@0HULTRSortBackward@@@Z
-?__copy_aux@std@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_backward_aux@std@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_backward_ptrs@std@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_ptrs@std@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_trivial_backward@std@@YAPAXPBX0PAX@Z
-?__destroy@std@@YAXPAPAVWindow@@00@Z
-?__destroy_aux@std@@YAXPAPAVWindow@@0ABU__true_type@1@@Z
-?__distance@std@@YAHABQAPAVWindow@@0ABUrandom_access_iterator_tag@1@@Z
-?__find@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ABUrandom_access_iterator_tag@1@@Z
-?__gcd@std@@YAHHH@Z
-?__inplace_stable_sort@std@@YAXPAPAVWindow@@0ULTRSort@@@Z
-?__inplace_stable_sort@std@@YAXPAPAVWindow@@0ULTRSortBackward@@@Z
-?__insertion_sort@std@@YAXPAPAVWindow@@0ULTRSort@@@Z
-?__insertion_sort@std@@YAXPAPAVWindow@@0ULTRSortBackward@@@Z
-?__linear_insert@std@@YAXPAPAVWindow@@0PAV2@ULTRSort@@@Z
-?__linear_insert@std@@YAXPAPAVWindow@@0PAV2@ULTRSortBackward@@@Z
-?__lower_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@PAH@Z
-?__lower_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@PAH@Z
-?__merge_adaptive@std@@YAXPAPAVWindow@@00HH0HULTRSort@@@Z
-?__merge_adaptive@std@@YAXPAPAVWindow@@00HH0HULTRSortBackward@@@Z
-?__merge_backward@std@@YAPAPAVWindow@@PAPAV2@0000ULTRSort@@@Z
-?__merge_backward@std@@YAPAPAVWindow@@PAPAV2@0000ULTRSortBackward@@@Z
-?__merge_sort_loop@std@@YAXPAPAVWindow@@00HULTRSort@@@Z
-?__merge_sort_loop@std@@YAXPAPAVWindow@@00HULTRSortBackward@@@Z
-?__merge_sort_with_buffer@std@@YAXPAPAVWindow@@00PAHULTRSort@@@Z
-?__merge_sort_with_buffer@std@@YAXPAPAVWindow@@00PAHULTRSortBackward@@@Z
-?__merge_without_buffer@std@@YAXPAPAVWindow@@00HHULTRSort@@@Z
-?__merge_without_buffer@std@@YAXPAPAVWindow@@00HHULTRSortBackward@@@Z
-?__rotate@std@@YAPAPAVWindow@@PAPAV2@00PAH0@Z
-?__rotate@std@@YAPAPAVWindow@@PAPAV2@00PAHABUrandom_access_iterator_tag@1@@Z
-?__rotate_adaptive@std@@YAPAPAVWindow@@PAPAV2@00HH0H@Z
-?__stable_sort_adaptive@std@@YAXPAPAVWindow@@00HULTRSort@@@Z
-?__stable_sort_adaptive@std@@YAXPAPAVWindow@@00HULTRSortBackward@@@Z
-?__stable_sort_aux@std@@YAXPAPAVWindow@@00PAHULTRSort@@@Z
-?__stable_sort_aux@std@@YAXPAPAVWindow@@00PAHULTRSortBackward@@@Z
-?__unguarded_linear_insert@std@@YAXPAPAVWindow@@PAV2@ULTRSort@@@Z
-?__unguarded_linear_insert@std@@YAXPAPAVWindow@@PAV2@ULTRSortBackward@@@Z
-?__upper_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@PAH@Z
-?__upper_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@PAH@Z
-?advance@std@@YAXAAPAPAVWindow@@H@Z
-?allocate@?$allocator@PAVWindow@@@std@@QBEPAPAVWindow@@IPBX@Z
-?begin@?$_Temporary_buffer@PAPAVWindow@@PAV1@@std@@QAEPAPAVWindow@@XZ
-?begin@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAEPAPAVWindow@@XZ
-?copy@std@@YAPAPAVWindow@@PAPAV2@00@Z
-?copy_backward@std@@YAPAPAVWindow@@PAPAV2@00@Z
-?deallocate@?$allocator@PAVWindow@@@std@@QBEXPAPAVWindow@@I@Z
-?distance@std@@YAHABQAPAVWindow@@0@Z
-?distance_type@std@@YAPAHPBQAVWindow@@@Z
-?end@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAEPAPAVWindow@@XZ
-?erase@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAEPAPAVWindow@@PAPAV3@@Z
-?fill_n@std@@YAPAPAVWindow@@PAPAV2@IABQAV2@@Z
-?find@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@@Z
-?iter_swap@std@@YAXPAPAVWindow@@0@Z
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBQAVWindow@@@Z
-?lower_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@@Z
-?lower_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@@Z
-?merge@std@@YAPAPAVWindow@@PAPAV2@0000ULTRSort@@@Z
-?merge@std@@YAPAPAVWindow@@PAPAV2@0000ULTRSortBackward@@@Z
-?min@std@@YAABHABH0@Z
-?push_back@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QAEXABQAVWindow@@@Z
-?rotate@std@@YAPAPAVWindow@@PAPAV2@00@Z
-?size@?$_Temporary_buffer@PAPAVWindow@@PAV1@@std@@QBEHXZ
-?size@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@std@@@std@@QBEIXZ
-?stable_sort@std@@YAXPAPAVWindow@@0ULTRSort@@@Z
-?stable_sort@std@@YAXPAPAVWindow@@0ULTRSortBackward@@@Z
-?swap@std@@YAXAAPAVWindow@@0@Z
-?swap_ranges@std@@YAPAPAVWindow@@PAPAV2@00@Z
-?upper_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@@Z
-?upper_bound@std@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@@Z
-?value_type@std@@YAPAPAVWindow@@PBQAV2@@Z
-??0Button@@QAE@PAVWindow@@_J@Z
-??0CancelButton@@QAE@PAVWindow@@_J@Z
-??0CheckBox@@QAE@PAVWindow@@_J@Z
-??0HelpButton@@QAE@PAVWindow@@_J@Z
-??0ImageButton@@QAE@PAVWindow@@_J@Z
-??0ImageRadioButton@@QAE@PAVWindow@@_J@Z
-??0OKButton@@QAE@PAVWindow@@_J@Z
-??0PushButton@@QAE@PAVWindow@@_J@Z
-??0RadioButton@@QAE@PAVWindow@@_J@Z
-??0TriStateBox@@QAE@PAVWindow@@_J@Z
-?EnableImageDisplay@CheckBox@@QAEXE@Z
-?EnableImageDisplay@PushButton@@QAEXE@Z
-?EnableImageDisplay@RadioButton@@QAEXE@Z
-?EnableTextDisplay@CheckBox@@QAEXE@Z
-?EnableTextDisplay@PushButton@@QAEXE@Z
-?EnableTextDisplay@RadioButton@@QAEXE@Z
-?FillLayoutData@CheckBox@@MBEXXZ
-?FillLayoutData@PushButton@@MBEXXZ
-?FillLayoutData@RadioButton@@MBEXXZ
-?GetModeBitmap@PushButton@@QBE?AVBitmapEx@@W4BmpColorMode@@@Z
-?GetModeImage@PushButton@@QBEABVImage@@W4BmpColorMode@@@Z
-?GetModeImage@RadioButton@@QBEABVImage@@W4BmpColorMode@@@Z
-?GetPrevStyle@Window@@QBE_JXZ
-?IsImageDisplayEnabled@CheckBox@@QAEEXZ
-?IsImageDisplayEnabled@PushButton@@QAEEXZ
-?IsImageDisplayEnabled@RadioButton@@QAEEXZ
-?IsTextDisplayEnabled@CheckBox@@QAEEXZ
-?IsTextDisplayEnabled@PushButton@@QAEEXZ
-?IsTextDisplayEnabled@RadioButton@@QAEEXZ
-?SetModeBitmap@PushButton@@QAEEABVBitmapEx@@W4BmpColorMode@@@Z
-?SetModeImage@PushButton@@QAEEABVImage@@W4BmpColorMode@@@Z
-?SetModeImage@RadioButton@@QAEEABVImage@@W4BmpColorMode@@@Z
-??0Control@@QAE@PAVWindow@@_J@Z
-??1ControlLayoutData@vcl@@QAE@XZ
-??A?$vector@JV?$allocator@J@std@@@std@@QBEABJI@Z
-??A?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QAEAAVRectangle@@I@Z
-??A?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QBEABVRectangle@@I@Z
-??_GControlLayoutData@vcl@@QAEPAXI@Z
-?A@Pair@@QAEAAJXZ
-?AppendLayoutData@Control@@IBEXABV1@@Z
-?B@Pair@@QAEAAJXZ
-?FillLayoutData@Control@@MBEXXZ
-?GetCharacterBounds@Control@@QBE?AVRectangle@@J@Z
-?GetCharacterBounds@ControlLayoutData@vcl@@QBE?AVRectangle@@J@Z
-?GetDisplayText@Control@@UBE?AVString@@XZ
-?GetIndexForPoint@Control@@QBEJABVPoint@@@Z
-?GetIndexForPoint@ControlLayoutData@vcl@@QBEJABVPoint@@@Z
-?GetLineCount@Control@@QBEJXZ
-?GetLineCount@ControlLayoutData@vcl@@QBEJXZ
-?GetLineStartEnd@Control@@QBE?AVPair@@J@Z
-?GetLineStartEnd@ControlLayoutData@vcl@@QBE?AVPair@@J@Z
-?Resize@Control@@UAEXXZ
-?SetLayoutDataParent@Control@@QBEXPBV1@@Z
-?SetText@Control@@UAEXABVString@@@Z
-?StateChanged@Control@@UAEXG@Z
-?begin@?$vector@JV?$allocator@J@std@@@std@@QBEPBJXZ
-?begin@?$vector@VRectangle@@V?$allocator@VRectangle@@@std@@@std@@QBEPBVRectangle@@XZ
-??0ComboBox@@QAE@PAVWindow@@_J@Z
-?EnableRTL@OutputDevice@@QAEXE@Z
-?FillLayoutData@ComboBox@@MBEXXZ
-?GetDisplayBackground@ComboBox@@UBEABVWallpaper@@XZ
-?GetDisplayLineCount@ComboBox@@QBEGXZ
-?GetDropDownPosSizePixel@ComboBox@@QBE?AVRectangle@@XZ
-?GetTopEntry@ComboBox@@QBEGXZ
-?IsPopupModeCanceled@FloatingWindow@@QBEEXZ
-?SetTopEntry@ComboBox@@QAEXG@Z
-?ToggleDropDown@ComboBox@@QAEXXZ
-??0?$Reference@VXEventListener@lang@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXFlushableClipboard@clipboard@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@ABVBaseReference@1234@W4UnoReference_Query@1234@@Z
-??0?$Reference@VXTransferable@datatransfer@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??0Edit@@QAE@PAVWindow@@_J@Z
-??0EventObject@lang@star@sun@com@@QAE@XZ
-??1?$Reference@VXEventListener@lang@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??4?$Reference@VXTransferable@datatransfer@star@sun@com@@@uno@star@sun@com@@QAAAAV01234@ABV01234@@Z
-??7Selection@@QBEEXZ
-??C?$Reference@VXEventListener@lang@star@sun@com@@@uno@star@sun@com@@QBAPAVXEventListener@lang@234@XZ
-?FillLayoutData@Edit@@MBEXXZ
-?GetPreferredKeyInputWindow@Edit@@UAEPAVWindow@@XZ
-?IsMiddle@MouseEvent@@QBEEXZ
-?iquery@?$Reference@VXEventListener@lang@star@sun@com@@@uno@star@sun@com@@CAPAVXEventListener@lang@345@PAVXInterface@2345@@Z
-?iquery@?$Reference@VXFlushableClipboard@clipboard@datatransfer@star@sun@com@@@uno@star@sun@com@@CAPAVXFlushableClipboard@clipboard@datatransfer@345@PAVXInterface@2345@@Z
-?set@?$Reference@VXTransferable@datatransfer@star@sun@com@@@uno@star@sun@com@@QAAEPAVXTransferable@datatransfer@345@@Z
-??0CurrencyBox@@QAE@PAVWindow@@_J@Z
-??0CurrencyField@@QAE@PAVWindow@@_J@Z
-??0MetricBox@@QAE@PAVWindow@@_J@Z
-??0MetricField@@QAE@PAVWindow@@_J@Z
-??0NumericBox@@QAE@PAVWindow@@_J@Z
-??0NumericField@@QAE@PAVWindow@@_J@Z
-??0DateBox@@QAE@PAVWindow@@_J@Z
-??0DateField@@QAE@PAVWindow@@_J@Z
-??0PatternBox@@QAE@PAVWindow@@_J@Z
-??0PatternField@@QAE@PAVWindow@@_J@Z
-??0TimeBox@@QAE@PAVWindow@@_J@Z
-??0TimeField@@QAE@PAVWindow@@_J@Z
-?GetExtDateFormat@DateFormatter@@QBE?AW4ExtDateFieldFormat@@E@Z
-?SetExtDateFormat@DateFormatter@@QAEXW4ExtDateFieldFormat@@@Z
-?isLetterNumericType@CharClass@@SAEJ@Z
-?isLetterType@CharClass@@SAEJ@Z
-?isNumericType@CharClass@@SAEJ@Z
-??0FixedBorder@@QAE@PAVWindow@@_J@Z
-??0FixedBitmap@@QAE@PAVWindow@@_J@Z
-??0FixedImage@@QAE@PAVWindow@@_J@Z
-??0FixedLine@@QAE@PAVWindow@@_J@Z
-??0FixedText@@QAE@PAVWindow@@_J@Z
-?FillLayoutData@FixedLine@@MBEXXZ
-?FillLayoutData@FixedText@@MBEXXZ
-?GetModeBitmap@FixedBitmap@@QBEABVBitmap@@W4BmpColorMode@@@Z
-?GetModeImage@FixedImage@@QBEABVImage@@W4BmpColorMode@@@Z
-?SetModeBitmap@FixedBitmap@@QAEEABVBitmap@@W4BmpColorMode@@@Z
-?SetModeImage@FixedImage@@QAEEABVImage@@W4BmpColorMode@@@Z
-??0GroupBox@@QAE@PAVWindow@@_J@Z
-?FillLayoutData@GroupBox@@EBEXXZ
-??0?$Reference@VXAccessible@accessibility@star@sun@com@drafts@@@uno@star@sun@com@@QAE@PAVXAccessible@accessibility@234drafts@@@Z
-??0ImageControl@@QAE@PAVWindow@@_J@Z
-?GetFocus@ImageControl@@UAEXXZ
-?GetModeBitmap@ImageControl@@QBEABVBitmapEx@@W4BmpColorMode@@@Z
-?IsScaleImage@ImageControl@@QBEEXZ
-?LoseFocus@ImageControl@@UAEXXZ
-?Paint@ImageControl@@UAEXABVRectangle@@@Z
-?SetModeBitmap@ImageControl@@QAEEABVBitmapEx@@W4BmpColorMode@@@Z
-?SetScaleImage@ImageControl@@QAEXE@Z
-??0LongCurrencyBox@@QAE@PAVWindow@@_J@Z
-??0LongCurrencyField@@QAE@PAVWindow@@_J@Z
-??0ListBox@@QAE@PAVWindow@@_J@Z
-??0MultiListBox@@QAE@PAVWindow@@_J@Z
-?FillLayoutData@ListBox@@MBEXXZ
-?GetBoundingRectangle@ListBox@@QBE?AVRectangle@@G@Z
-?GetDisplayBackground@ListBox@@UBEABVWallpaper@@XZ
-?GetDisplayLineCount@ListBox@@QBEGXZ
-?GetDropDownPosSizePixel@ListBox@@QBE?AVRectangle@@XZ
-?GetPreferredKeyInputWindow@ListBox@@UAEPAVWindow@@XZ
-?ToggleDropDown@ListBox@@QAEXXZ
-??0MoreButton@@QAE@PAVWindow@@_J@Z
-??0MenuButton@@QAE@PAVWindow@@_J@Z
-??0ScrollBar@@QAE@PAVWindow@@_J@Z
-??0ScrollBarBox@@QAE@PAVWindow@@_J@Z
-??0Slider@@QAE@PAVWindow@@_J@Z
-??0SpinField@@QAE@PAVWindow@@_J@Z
-?FillLayoutData@SpinField@@MBEXXZ
-??0SpinButton@@QAE@PAVWindow@@_J@Z
-??0TabControl@@QAE@PAVWindow@@_J@Z
-??0?$Reference@VXInterface@uno@star@sun@com@@@uno@star@sun@com@@QAE@PAVXInterface@1234@W4UnoReference_Query@1234@@Z
-??0?$_List_base@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@ABV?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??0?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Const_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@ABU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@1@@Z
-??0?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@ABU01@@Z
-??0?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@U12@V?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@2@@std@@QAE@ABV?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@1@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??0?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@ABV?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??0?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@QAE@XZ
-??0?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@ABV?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??1?$_List_base@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@U12@V?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@2@@std@@QAE@XZ
-??1?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@XZ
-??1?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@QAE@XZ
-??1?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE@XZ
-??D?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Const_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QBEABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@XZ
-??D?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QBEAAV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@XZ
-??E?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Const_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAEAAU01@XZ
-??E?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAEAAU01@XZ
-??_7DisplayConnection@vcl@@6BOWeakObject@cppu@@@
-?_Construct@std@@YAXPAV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@ABV23456@@Z
-?_Destroy@std@@YAXPAV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@Z
-?_M_create_node@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@IAEPAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@2@ABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@Z
-?allocate@?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QBEPAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@2@IPBX@Z
-?begin@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@2@XZ
-?clear@?$_List_base@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAEXXZ
-?deallocate@?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QBEXPAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@2@I@Z
-?end@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@2@XZ
-?erase@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@2@U32@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXDisplayConnection@awt@star@sun@com@@@2345@@Z
-?insert@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@2@U32@ABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@Z
-?iquery@?$Reference@VXInterface@uno@star@sun@com@@@uno@star@sun@com@@CAPAVXInterface@2345@PAV62345@@Z
-?push_back@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAEXABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@Z
-?remove@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@std@@@std@@QAEXABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@Z
-?SetHighContrastMode@StyleSettings@@QAEXE@Z
-?SetMenuBarColor@StyleSettings@@QAEXABVColor@@@Z
-?SetWorkspaceColor@StyleSettings@@QAEXABVColor@@@Z
-InitMultipleMonitorStubs
-IsPlatformNT
-g_fMultiMonInitDone
-g_fMultimonPlatformNT
-g_pfnEnumDisplayDevices
-g_pfnEnumDisplayMonitors
-g_pfnGetMonitorInfo
-g_pfnGetSystemMetrics
-g_pfnMonitorFromPoint
-g_pfnMonitorFromRect
-g_pfnMonitorFromWindow
-xEnumDisplayDevices@16
-xEnumDisplayMonitors@16
-xGetMonitorInfo@8
-xGetSystemMetrics@4
-xMonitorFromPoint@12
-xMonitorFromRect@8
-xMonitorFromWindow@8
-??0Directory@osl@@QAE@ABVOUString@rtl@@@Z
-??0DirectoryItem@osl@@QAE@XZ
-??0FileStatus@osl@@QAE@K@Z
-??0OUString@rtl@@QAE@PAU_rtl_uString@@@Z
-??0ScopedCharArray@@QAE@PAD@Z
-??0ScopedTrueTypeFont@@QAE@XZ
-??1Directory@osl@@QAE@XZ
-??1DirectoryItem@osl@@QAE@XZ
-??1FileStatus@osl@@QAE@XZ
-??1ScopedCharArray@@QAE@XZ
-??1ScopedFont@@QAE@XZ
-??1ScopedTrueTypeFont@@QAE@XZ
-?_IsOKToMemCpy@std@@YA?AU?$_OKToMemCpy@UtagKERNINGPAIR@@U1@@1@PAUtagKERNINGPAIR@@0@Z
-?_Ret@?$_BothPtrType@PAUtagKERNINGPAIR@@PAU1@@std@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@UtagKERNINGPAIR@@U1@@std@@SA?AU__false_type@2@XZ
-?__adjust_heap@std@@YAXPAUtagKERNINGPAIR@@HHU2@P6A_NABU2@2@Z@Z
-?__copy_backward@std@@YAPAUtagKERNINGPAIR@@PAU2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_backward_aux@std@@YAPAUtagKERNINGPAIR@@PAU2@00ABU__true_type@1@@Z
-?__copy_backward_ptrs@std@@YAPAUtagKERNINGPAIR@@PAU2@00ABU__false_type@1@@Z
-?__final_insertion_sort@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?__insertion_sort@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?__introsort_loop@std@@YAXPAUtagKERNINGPAIR@@00HP6A_NABU2@1@Z@Z
-?__linear_insert@std@@YAXPAUtagKERNINGPAIR@@0U2@P6A_NABU2@2@Z@Z
-?__make_heap@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z0PAH@Z
-?__median@std@@YAABUtagKERNINGPAIR@@ABU2@00P6A_N00@Z@Z
-?__partial_sort@std@@YAXPAUtagKERNINGPAIR@@000P6A_NABU2@1@Z@Z
-?__pop_heap@std@@YAXPAUtagKERNINGPAIR@@00U2@P6A_NABU2@2@ZPAH@Z
-?__pop_heap_aux@std@@YAXPAUtagKERNINGPAIR@@00P6A_NABU2@1@Z@Z
-?__push_heap@std@@YAXPAUtagKERNINGPAIR@@HHU2@P6A_NABU2@2@Z@Z
-?__unguarded_insertion_sort@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?__unguarded_insertion_sort_aux@std@@YAXPAUtagKERNINGPAIR@@00P6A_NABU2@1@Z@Z
-?__unguarded_linear_insert@std@@YAXPAUtagKERNINGPAIR@@U2@P6A_NABU2@2@Z@Z
-?__unguarded_partition@std@@YAPAUtagKERNINGPAIR@@PAU2@0U2@P6A_NABU2@2@Z@Z
-?close@Directory@osl@@QAE?AW4RC@FileBase@2@XZ
-?copy@OUString@rtl@@QBE?AV12@JJ@Z
-?copy_backward@std@@YAPAUtagKERNINGPAIR@@PAU2@00@Z
-?distance_type@std@@YAPAHPBUtagKERNINGPAIR@@@Z
-?get@ScopedCharArray@@QBEPADXZ
-?get@ScopedTrueTypeFont@@QBEPAU_TrueTypeFont@@XZ
-?getFileStatus@DirectoryItem@osl@@QAE?AW4RC@FileBase@2@AAVFileStatus@2@@Z
-?getFileURL@FileStatus@osl@@QBE?AVOUString@rtl@@XZ
-?getNextItem@Directory@osl@@QAE?AW4RC@FileBase@2@AAVDirectoryItem@2@K@Z
-?iter_swap@std@@YAXPAUtagKERNINGPAIR@@0@Z
-?iterator_category@std@@YA?AUrandom_access_iterator_tag@1@PBUtagKERNINGPAIR@@@Z
-?lastIndexOf@OUString@rtl@@QBEJG@Z
-?make_heap@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?open@Directory@osl@@QAE?AW4RC@FileBase@2@XZ
-?open@ScopedTrueTypeFont@@QAEHPAXKK@Z
-?partial_sort@std@@YAXPAUtagKERNINGPAIR@@00P6A_NABU2@1@Z@Z
-?pop_heap@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?sort@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?sort_heap@std@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?swap@std@@YAXAAUtagKERNINGPAIR@@0@Z
-?value_type@std@@YAPAUtagKERNINGPAIR@@PBU2@@Z
-threadFunc
-??1SimpleWinLayout@@UAE@XZ
-??1UniscribeLayout@@UAE@XZ
-??1WinLayout@@UAE@XZ
-??_7SimpleWinLayout@@6B@
-??_7UniscribeLayout@@6B@
-??_7WinLayout@@6B@
-??_GSimpleWinLayout@@UAEPAXI@Z
-??_GUniscribeLayout@@UAEPAXI@Z
-??_GWinLayout@@UAEPAXI@Z
-?ApplyDXArray@SimpleWinLayout@@IAEXPBJ@Z
-?ApplyDXArray@UniscribeLayout@@IAEXPBJ@Z
-?FillDXArray@SimpleWinLayout@@UBEJPAJ@Z
-?FillDXArray@UniscribeLayout@@UBEJPAJ@Z
-?GetCaretPositions@SimpleWinLayout@@UBEXPAJ@Z
-?GetCaretPositions@UniscribeLayout@@UBEXPAJ@Z
-?GetCharPosition@SimpleWinLayout@@UBE?AVPoint@@H_N@Z
-?GetCharPosition@UniscribeLayout@@UBE?AVPoint@@H_N@Z
-?GetItemSubrange@UniscribeLayout@@IBE_NABUVisualItem@@AAH1@Z
-?GetNextGlyphs@SimpleWinLayout@@UBEHHPAJAAVPoint@@AAH0PAH@Z
-?GetNextGlyphs@UniscribeLayout@@UBEHHPAJAAVPoint@@AAH0PAH@Z
-?GetTextBreak@SimpleWinLayout@@UBEHJJH@Z
-?GetTextBreak@UniscribeLayout@@UBEHJJH@Z
-?Justify@SimpleWinLayout@@IAEXJ@Z
-?Justify@UniscribeLayout@@IAEXJ@Z
-?__advance@std@@YAXAAPBUtagKERNINGPAIR@@HABUrandom_access_iterator_tag@1@@Z
-?__distance@std@@YAHABQBUtagKERNINGPAIR@@0ABUrandom_access_iterator_tag@1@@Z
-?__lower_bound@std@@YAPBUtagKERNINGPAIR@@PBU2@0ABU2@P6A_N11@ZPAH@Z
-?advance@std@@YAXAAPBUtagKERNINGPAIR@@H@Z
-?distance@std@@YAHABQBUtagKERNINGPAIR@@0@Z
-?lower_bound@std@@YAPBUtagKERNINGPAIR@@PBU2@0ABU2@P6A_N11@Z@Z
-?SetType@Window@@QAEXG@Z
-??1?$Reference@VXChangesBatch@util@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??1OConfigurationTreeRoot@utl@@QAE@XZ
-??_2uno@star@sun@com@@YAEABVAny@0123@AAE@Z
-?isValid@OConfigurationNode@utl@@QBEEXZ
-??0?$_List_base@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE@ABV?$allocator@VLink@@@1@@Z
-??0?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@_STL@@QAE@ABU01@@Z
-??0?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@_STL@@QAE@PAU?$_List_node@VLink@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@VLink@@@_STL@@U12@V?$allocator@U?$_List_node@VLink@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_List_node@VLink@@@_STL@@@1@PAU?$_List_node@VLink@@@1@@Z
-??0?$allocator@U?$_List_node@VLink@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@VLink@@@_STL@@@_STL@@QAE@ABV?$allocator@VLink@@@1@@Z
-??0?$allocator@VLink@@@_STL@@QAE@XZ
-??0?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE@ABV?$allocator@VLink@@@1@@Z
-??1?$_List_base@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@VLink@@@_STL@@U12@V?$allocator@U?$_List_node@VLink@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$allocator@U?$_List_node@VLink@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@VLink@@@_STL@@QAE@XZ
-??1?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE@XZ
-??D?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@_STL@@QBEAAVLink@@XZ
-??E?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@_STL@@QAEAAU01@XZ
-?CanToggleImeStatusWindow@Application@@SA_NXZ
-?GetReservedKeyCode@Application@@SAPBVKeyCode@@K@Z
-?GetReservedKeyCodeCount@Application@@SAKXZ
-?GetReservedKeyCodeDescription@Application@@SA?AVString@@K@Z
-?GetShowImeStatusWindowDefault@Application@@SA_NXZ
-?ShowImeStatusWindow@Application@@SAX_N@Z
-?_Construct@_STL@@YAXPAVLink@@ABV2@@Z
-?_Destroy@_STL@@YAXPAVLink@@@Z
-?_M_create_node@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@IAEPAU?$_List_node@VLink@@@2@ABVLink@@@Z
-?allocate@?$allocator@U?$_List_node@VLink@@@_STL@@@_STL@@QBEPAU?$_List_node@VLink@@@2@IPBX@Z
-?begin@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@2@XZ
-?clear@?$_List_base@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAEXXZ
-?deallocate@?$allocator@U?$_List_node@VLink@@@_STL@@@_STL@@QBEXPAU?$_List_node@VLink@@@2@I@Z
-?empty@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QBE_NXZ
-?end@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@2@XZ
-?erase@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@2@U32@@Z
-?insert@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE?AU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@2@U32@ABVLink@@@Z
-?push_back@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAEXABVLink@@@Z
-?remove@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAEXABVLink@@@Z
-??1JavaDisabledException@java@star@sun@com@@QAE@XZ
-??1JavaNotConfiguredException@java@star@sun@com@@QAE@XZ
-??1JavaVMCreationFailureException@java@star@sun@com@@QAE@XZ
-??1MissingJavaRuntimeException@java@star@sun@com@@QAE@XZ
-??_R0?AVJavaDisabledException@java@star@sun@com@@@8
-??_R0?AVJavaNotConfiguredException@java@star@sun@com@@@8
-??_R0?AVJavaVMCreationFailureException@java@star@sun@com@@@8
-??_R0?AVMissingJavaRuntimeException@java@star@sun@com@@@8
-?makeAny@uno@star@sun@com@@YA?AVAny@1234@ABVOUString@rtl@@@Z
-?realloc@?$Sequence@VAny@uno@star@sun@com@@@uno@star@sun@com@@QAAXJ@Z
-??C?$Reference@VXExtendedToolkit@awt@star@sun@com@drafts@@@uno@star@sun@com@@QBAPAVXExtendedToolkit@awt@234drafts@@XZ
-??_2uno@star@sun@com@@YAEABVAny@0123@AAF@Z
-??0?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@_STL@@QAE@PAU?$_List_node@VLink@@@1@@Z
-??0?$allocator@VLink@@@_STL@@QAE@ABV?$allocator@U?$_List_node@VLink@@@_STL@@@1@@Z
-??0?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAE@ABV01@@Z
-??D?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@_STL@@QBEABVLink@@XZ
-??E?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@_STL@@QAEAAU01@XZ
-??E?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@_STL@@QAE?AU01@H@Z
-?_M_insert_dispatch@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAEXU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@2@U?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@2@1ABU__false_type@2@@Z
-?begin@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QBE?AU?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@2@XZ
-?end@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QBE?AU?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@2@XZ
-?get_allocator@?$_List_base@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QBE?AV?$allocator@VLink@@@2@XZ
-?insert@?$list@VLink@@V?$allocator@VLink@@@_STL@@@_STL@@QAEXU?$_List_iterator@VLink@@U?$_Nonconst_traits@VLink@@@_STL@@@2@U?$_List_iterator@VLink@@U?$_Const_traits@VLink@@@_STL@@@2@1@Z
-?MakeMono@Bitmap@@QAEEE@Z
-?max@_STL@@YAABJABJ0@Z
-?IsEqual@GDIMetaFile@@QBEEABV1@@Z
-?IsEqual@GfxLink@@QBEEABV1@@Z
-?GetSizePixel@Graphic@@QBE?AVSize@@PBVOutputDevice@@@Z
-_real@3e45798ee2308c3a
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@PAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@1@PAV?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@1@@Z
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@ABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@1@@Z
-??0?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@1@I@Z
-??0?$allocator@PAX@_STL@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@1@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@1@@Z
-??0?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@IABUOUStringHash@rtl@@ABU?$equal_to@VOUString@rtl@@@1@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@1@@Z
-??1?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@XZ
-??4?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAEAAV01@ABV01@@Z
-??8_STL@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@0@0@Z
-??9_STL@@YA_NABU?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@0@0@Z
-??C?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBEPBU?$pair@$$CBVOUString@rtl@@V12@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBVOUString@rtl@@V12@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBVOUString@rtl@@V12@@1@XZ
-??E?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@QBEABVOUString@rtl@@ABU?$pair@$$CBVOUString@rtl@@V12@@1@@Z
-??R?$less@I@_STL@@QBE_NABI0@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEIABU?$pair@$$CBVOUString@rtl@@V12@@2@@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEIABU?$pair@$$CBVOUString@rtl@@V12@@2@I@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEIABVOUString@rtl@@@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEIABVOUString@rtl@@I@Z
-?_M_copy_from@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@AAEXABV12@@Z
-?_M_delete_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@AAEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@Z
-?_M_equal@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@SA_NABV12@0@Z
-?_M_find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@ABVOUString@rtl@@@Z
-?_M_get_bucket@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEPBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@I@Z
-?_M_initialize_buckets@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@AAEXI@Z
-?_M_insert@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAEAAU?$pair@$$CBVOUString@rtl@@V12@@2@ABU32@@Z
-?_M_list@?$_Stl_prime@_N@_STL@@2QBIB
-?_M_new_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@AAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@ABU?$pair@$$CBVOUString@rtl@@V12@@2@@Z
-?_M_next_size@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@ABEII@Z
-?_M_skip_to_next@?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@XZ
-?__advance@_STL@@YAXAAPBIHABUrandom_access_iterator_tag@1@@Z
-?__distance@_STL@@YAHABQBI0ABUrandom_access_iterator_tag@1@@Z
-?__less@_STL@@YA?AU?$less@I@1@PAI@Z
-?__lower_bound@_STL@@YAPBIPBI0ABIU?$less@I@1@PAH@Z
-?allocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@_STL@@QBEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@IPBX@Z
-?begin@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@XZ
-?begin@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@XZ
-?bucket_count@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBEIXZ
-?clear@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAEXXZ
-?deallocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@I@Z
-?distance@_STL@@YAHABQBI0@Z
-?end@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@XZ
-?end@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@XZ
-?find@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBI@Z
-?resize@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAEXI@Z
-??8@YAEABVByteString@@0@Z
-??9LineInfo@@QBEEABV0@@Z
-?Compare@MetaAction@@EBEEABV1@@Z
-?Compare@MetaArcAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaBmpAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaBmpExAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaBmpExScaleAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaBmpExScalePartAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaBmpScaleAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaBmpScalePartAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaChordAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaClipRegionAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaCommentAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaEPSAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaEllipseAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaFillColorAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaFloatTransparentAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaFontAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaGradientAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaGradientExAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaHatchAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaISectRectClipRegionAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaISectRegionClipRegionAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaLayoutModeAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaLineAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaLineColorAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaMapModeAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaMaskAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaMaskScaleAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaMaskScalePartAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaMoveClipRegionAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPieAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPixelAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPointAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPolyLineAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPolyPolygonAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPolygonAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaPushAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaRasterOpAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaRectAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaRefPointAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaRoundRectAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaStretchTextAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextAlignAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextArrayAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextColorAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextFillColorAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextLineAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextLineColorAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTextRectAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaTransparentAction@@EBEEABVMetaAction@@@Z
-?Compare@MetaWallpaperAction@@EBEEABVMetaAction@@@Z
-?IsEqual@MetaAction@@QBEEABV1@@Z
-?GetFontColor@StyleSettings@@QBEABVColor@@XZ
-??0?$_STLP_alloc_proxy@PAHHV?$allocator@H@_STL@@@_STL@@QAE@ABV?$allocator@H@1@PAH@Z
-??0?$_STLP_alloc_proxy@PAVPolyPolygon@@V1@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAE@ABV?$allocator@VPolyPolygon@@@1@PAVPolyPolygon@@@Z
-??0?$_STLP_alloc_proxy@PAVRectangle@@V1@V?$allocator@VRectangle@@@_STL@@@_STL@@QAE@ABV?$allocator@VRectangle@@@1@PAVRectangle@@@Z
-??0?$_Vector_base@HV?$allocator@H@_STL@@@_STL@@QAE@IABV?$allocator@H@1@@Z
-??0?$_Vector_base@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAE@ABV?$allocator@VPolyPolygon@@@1@@Z
-??0?$_Vector_base@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAE@ABV?$allocator@VRectangle@@@1@@Z
-??0?$allocator@H@_STL@@QAE@ABV01@@Z
-??0?$allocator@VPolyPolygon@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@VPolyPolygon@@@_STL@@QAE@XZ
-??0?$allocator@VRectangle@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@VRectangle@@@_STL@@QAE@XZ
-??0?$auto_ptr@VVirtualDevice@@@_STL@@QAE@PAVVirtualDevice@@@Z
-??0?$vector@HV?$allocator@H@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAE@ABV?$allocator@VPolyPolygon@@@1@@Z
-??0?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAE@ABV?$allocator@VRectangle@@@1@@Z
-??1?$_STLP_alloc_proxy@PAHHV?$allocator@H@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAVPolyPolygon@@V1@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAVRectangle@@V1@V?$allocator@VRectangle@@@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@HV?$allocator@H@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@H@_STL@@QAE@XZ
-??1?$allocator@VPolyPolygon@@@_STL@@QAE@XZ
-??1?$allocator@VRectangle@@@_STL@@QAE@XZ
-??1?$auto_ptr@VVirtualDevice@@@_STL@@QAE@XZ
-??1?$vector@HV?$allocator@H@_STL@@@_STL@@QAE@XZ
-??1?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAE@XZ
-??1?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAE@XZ
-??A?$vector@HV?$allocator@H@_STL@@@_STL@@QAEAAHI@Z
-??C?$auto_ptr@VVirtualDevice@@@_STL@@QBEPAVVirtualDevice@@XZ
-?AddTempDevFont@OutputDevice@@QAEEABVString@@0@Z
-?DrawCtrlText@OutputDevice@@QAEXABVPoint@@ABVString@@GGGPAV?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@PAV3@@Z
-?DrawText@OutputDevice@@QAEXABVPoint@@ABVString@@GGPAV?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@PAV3@@Z
-?DrawText@OutputDevice@@QAEXABVRectangle@@ABVString@@GPAV?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@PAV3@@Z
-?GetGlyphBoundRects@OutputDevice@@QAEEABVPoint@@ABVString@@HHHAAV?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@@Z
-?GetTextOutlines@OutputDevice@@QBEEAAV?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@ABVString@@GGGE@Z
-?_Construct@_STL@@YAXPAJABJ@Z
-?_Construct@_STL@@YAXPAVPolyPolygon@@ABV2@@Z
-?_Construct@_STL@@YAXPAVRectangle@@ABV2@@Z
-?_Destroy@_STL@@YAXPAH0@Z
-?_Destroy@_STL@@YAXPAJ0@Z
-?_Destroy@_STL@@YAXPAVPolyPolygon@@0@Z
-?_Destroy@_STL@@YAXPAVPolyPolygon@@@Z
-?_Destroy@_STL@@YAXPAVRectangle@@0@Z
-?_Destroy@_STL@@YAXPAVRectangle@@@Z
-?_IsOKToMemCpy@_STL@@YA?AU?$_OKToMemCpy@HH@1@PAH0@Z
-?_M_allocate_and_copy@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@IAEPAVPolyPolygon@@IPAV3@0@Z
-?_M_clear@?$vector@JV?$allocator@J@_STL@@@_STL@@IAEXXZ
-?_M_clear@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@IAEXXZ
-?_M_clear@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@IAEXXZ
-?_M_insert_overflow@?$vector@JV?$allocator@J@_STL@@@_STL@@IAEXPAJABJABU__true_type@2@I_N@Z
-?_M_insert_overflow@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@IAEXPAVPolyPolygon@@ABV3@ABU__false_type@2@I_N@Z
-?_M_insert_overflow@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@IAEXPAVRectangle@@ABV3@ABU__false_type@2@I_N@Z
-?_M_set@?$vector@JV?$allocator@J@_STL@@@_STL@@IAEXPAJ00@Z
-?_M_set@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@IAEXPAVPolyPolygon@@00@Z
-?_M_set@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@IAEXPAVRectangle@@00@Z
-?_Ret@?$_BothPtrType@PBHPAH@_STL@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@HH@_STL@@SA?AU__false_type@2@XZ
-?__copy@_STL@@YAPAHPBH0PAHABUrandom_access_iterator_tag@1@1@Z
-?__copy@_STL@@YAPAVPolyPolygon@@PAV2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy@_STL@@YAPAVRectangle@@PAV2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_aux@_STL@@YAPAHPBH0PAHABU__true_type@1@@Z
-?__copy_ptrs@_STL@@YAPAHPBH0PAHABU__false_type@1@@Z
-?__copy_ptrs@_STL@@YAPAVPolyPolygon@@PAV2@00ABU__false_type@1@@Z
-?__copy_ptrs@_STL@@YAPAVRectangle@@PAV2@00ABU__false_type@1@@Z
-?__copy_trivial@_STL@@YAPAXPBX0PAX@Z
-?__destroy@_STL@@YAXPAH00@Z
-?__destroy@_STL@@YAXPAJ00@Z
-?__destroy@_STL@@YAXPAVPolyPolygon@@00@Z
-?__destroy@_STL@@YAXPAVRectangle@@00@Z
-?__destroy_aux@_STL@@YAXPAH0ABU__true_type@1@@Z
-?__destroy_aux@_STL@@YAXPAJ0ABU__true_type@1@@Z
-?__destroy_aux@_STL@@YAXPAVPolyPolygon@@0ABU__false_type@1@@Z
-?__destroy_aux@_STL@@YAXPAVRectangle@@0ABU__false_type@1@@Z
-?__set@__ptr_base@_STL@@QAEXPAX@Z
-?__uninitialized_copy@_STL@@YAPAHPBH0PAHABU__true_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAVPolyPolygon@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAVRectangle@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAVPolyPolygon@@PAV2@IABV2@ABU__false_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAVRectangle@@PAV2@IABV2@ABU__false_type@1@@Z
-?allocate@?$allocator@H@_STL@@QBEPAHIPBX@Z
-?allocate@?$allocator@J@_STL@@QBEPAJIPBX@Z
-?allocate@?$allocator@VPolyPolygon@@@_STL@@QBEPAVPolyPolygon@@IPBX@Z
-?allocate@?$allocator@VRectangle@@@_STL@@QBEPAVRectangle@@IPBX@Z
-?begin@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEPAHXZ
-?begin@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEPAVPolyPolygon@@XZ
-?begin@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAEPAVRectangle@@XZ
-?begin@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QBEPBVString@@XZ
-?capacity@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QBEIXZ
-?clear@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEXXZ
-?clear@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAEXXZ
-?deallocate@?$allocator@H@_STL@@QBEXPAHI@Z
-?deallocate@?$allocator@J@_STL@@QBEXPAJI@Z
-?deallocate@?$allocator@VPolyPolygon@@@_STL@@QBEXPAVPolyPolygon@@I@Z
-?deallocate@?$allocator@VRectangle@@@_STL@@QBEXPAVRectangle@@I@Z
-?distance_type@_STL@@YAPAHPBH@Z
-?distance_type@_STL@@YAPAHPBVPolyPolygon@@@Z
-?distance_type@_STL@@YAPAHPBVRectangle@@@Z
-?end@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEPAVPolyPolygon@@XZ
-?end@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAEPAVRectangle@@XZ
-?end@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QBEPBVString@@XZ
-?erase@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEPAVPolyPolygon@@PAV3@0@Z
-?erase@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAEPAVRectangle@@PAV3@0@Z
-?fill_n@_STL@@YAPAJPAJIABJ@Z
-?get@?$auto_ptr@VVirtualDevice@@@_STL@@QBEPAVVirtualDevice@@XZ
-?get_allocator@?$vector@HV?$allocator@H@_STL@@@_STL@@QBE?AV?$allocator@H@2@XZ
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBH@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBVPolyPolygon@@@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBVRectangle@@@Z
-?push_back@?$vector@JV?$allocator@J@_STL@@@_STL@@QAEXABJ@Z
-?push_back@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEXABVPolyPolygon@@@Z
-?push_back@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAEXABVRectangle@@@Z
-?reserve@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEXI@Z
-?size@?$vector@HV?$allocator@H@_STL@@@_STL@@QBEIXZ
-?size@?$vector@JV?$allocator@J@_STL@@@_STL@@QBEIXZ
-?size@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QBEIXZ
-?size@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QBEIXZ
-?size@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QBEIXZ
-?value_type@_STL@@YAPAHPBH@Z
-?value_type@_STL@@YAPAJPBJ@Z
-?value_type@_STL@@YAPAVPolyPolygon@@PBV2@@Z
-?value_type@_STL@@YAPAVRectangle@@PBV2@@Z
-??0?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@ABU?$less@G@1@ABV?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBGUSymbolEntry@@@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Const_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@U12@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@1@PAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@@Z
-??0?$_Vector_base@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@1@@Z
-??0?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@QAE@XZ
-??0?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@_STL@@QAE@XZ
-??0?$multimap@GUSymbolEntry@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@3@@_STL@@QAE@XZ
-??0?$pair@$$CBGUSymbolEntry@@@_STL@@QAE@ABGABUSymbolEntry@@@Z
-??0?$pair@$$CBGUSymbolEntry@@@_STL@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@1@0@Z
-??0?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@1@@Z
-??1?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBGUSymbolEntry@@@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@U12@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Vector_base@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@_STL@@QAE@XZ
-??1?$multimap@GUSymbolEntry@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@3@@_STL@@QAE@XZ
-??1?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAE@XZ
-??9_Rb_tree_base_iterator@_STL@@QBE_NABU01@@Z
-??A?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAEAAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@I@Z
-??C?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QBEPAU?$pair@$$CBGUSymbolEntry@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Const_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBGUSymbolEntry@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBGUSymbolEntry@@@1@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@QBEABGABU?$pair@$$CBGUSymbolEntry@@@1@@Z
-??R?$less@G@_STL@@QBE_NABG0@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBGUSymbolEntry@@@1@ABU21@@Z
-?_Construct@_STL@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@ABU21@@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBGUSymbolEntry@@@1@@Z
-?_Destroy@_STL@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@0@Z
-?_Destroy@_STL@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@@Z
-?_M_allocate_and_copy@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@IAEPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@IPAU32@0@Z
-?_M_clear@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@IAEXXZ
-?_M_create_node@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@ABU?$pair@$$CBGUSymbolEntry@@@2@@Z
-?_M_empty_initialize@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@AAEXXZ
-?_M_erase@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@Z
-?_M_find@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@ABG@Z
-?_M_insert@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBGUSymbolEntry@@@2@0@Z
-?_M_insert_overflow@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@IAEXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@ABU32@ABU__false_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@ABG@Z
-?_M_rightmost@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@XZ
-?_M_root@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@XZ
-?_M_set@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@IAEXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@00@Z
-?_M_upper_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@ABG@Z
-?_S_color@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@KAABGPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@Z
-?_S_left@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@PAU32@@Z
-?_S_value@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@KAAAU?$pair@$$CBGUSymbolEntry@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@Z
-?__destroy@_STL@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@00@Z
-?__destroy_aux@_STL@@YAXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@0ABU__false_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@PAU21@00ABU__false_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@PAU21@IABU21@ABU__false_type@1@@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@_STL@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@IPBX@Z
-?allocate@?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@_STL@@QBEPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@IPBX@Z
-?begin@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAEPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@XZ
-?capacity@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QBEIXZ
-?clear@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAEXXZ
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@I@Z
-?deallocate@?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@_STL@@QBEXPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@I@Z
-?end@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@XZ
-?end@?$multimap@GUSymbolEntry@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@XZ
-?equal_range@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@ABG@Z
-?equal_range@?$multimap@GUSymbolEntry@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@3@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@ABG@Z
-?find@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@ABG@Z
-?find@?$multimap@GUSymbolEntry@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@ABG@Z
-?insert@?$multimap@GUSymbolEntry@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@ABU?$pair@$$CBGUSymbolEntry@@@2@@Z
-?insert_equal@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@ABU?$pair@$$CBGUSymbolEntry@@@2@@Z
-?lower_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@ABG@Z
-?push_back@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAEXABU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@2@@Z
-?reserve@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QAEXI@Z
-?size@?$vector@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@V?$allocator@U?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@_STL@@@2@@_STL@@QBEIXZ
-?upper_bound@?$_Rb_tree@GU?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Select1st@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@2@ABG@Z
-?value_type@_STL@@YAPAU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGUSymbolEntry@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGUSymbolEntry@@@_STL@@@2@@_STL@@U12@@1@PBU21@@Z
-??0PaperInfo@vcl@@QAE@XZ
-??1PaperInfo@vcl@@QAE@XZ
-??A?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAEAAUPaperInfo@vcl@@I@Z
-?Abs@@YAFF@Z
-?GetCurrentPaperInfo@Printer@@QBEABUPaperInfo@vcl@@XZ
-?GetLandscapeAngle@Printer@@QBEHXZ
-?GetPaperInfo@Printer@@QBEABUPaperInfo@vcl@@H@Z
-?GetPaperInfoCount@Printer@@QBEHXZ
-?GetPaperSizePixel@Printer@@QBEABVSize@@XZ
-?SetPaperFromInfo@Printer@@QAEEABUPaperInfo@vcl@@@Z
-?begin@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAEPAUPaperInfo@vcl@@XZ
-?empty@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QBE_NXZ
-?size@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QBEIXZ
-??0?$_List_base@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@1@@Z
-??0?$_List_base@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE@ABV?$allocator@UConnectedComponents@@@1@@Z
-??0?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@PAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@1@@Z
-??0?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@PAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@1@@Z
-??0?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@_STL@@QAE@ABU01@@Z
-??0?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@_STL@@QAE@PAU?$_List_node@UConnectedComponents@@@1@@Z
-??0?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??0?$_STLP_alloc_proxy@PAPBUConnectedComponents@@PBU1@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAE@ABV?$allocator@PBUConnectedComponents@@@1@PAPBUConnectedComponents@@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@U12@V?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@1@PAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@UConnectedComponents@@@_STL@@U12@V?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@1@PAU?$_List_node@UConnectedComponents@@@1@@Z
-??0?$_Vector_base@PBUConnectedComponents@@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAE@IABV?$allocator@PBUConnectedComponents@@@1@@Z
-??0?$allocator@PBUConnectedComponents@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@PBUConnectedComponents@@@_STL@@QAE@XZ
-??0?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@1@@Z
-??0?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@_STL@@QAE@ABV?$allocator@UConnectedComponents@@@1@@Z
-??0?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@QAE@ABV?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@QAE@XZ
-??0?$allocator@UConnectedComponents@@@_STL@@QAE@XZ
-??0?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@ABV01@@Z
-??0?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@1@@Z
-??0?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE@ABV?$allocator@UConnectedComponents@@@1@@Z
-??0?$pair@PBVMetaAction@@H@_STL@@QAE@ABQBVMetaAction@@ABH@Z
-??0?$pair@PBVMetaAction@@H@_STL@@QAE@ABU01@@Z
-??0?$vector@PBUConnectedComponents@@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAE@I@Z
-??0ConnectedComponents@@QAE@ABU0@@Z
-??0ConnectedComponents@@QAE@XZ
-??0_List_iterator_base@_STL@@QAE@XZ
-??1?$_List_base@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@XZ
-??1?$_List_base@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAPBUConnectedComponents@@PBU1@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@U12@V?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@UConnectedComponents@@@_STL@@U12@V?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Vector_base@PBUConnectedComponents@@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@PBUConnectedComponents@@@_STL@@QAE@XZ
-??1?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@QAE@XZ
-??1?$allocator@UConnectedComponents@@@_STL@@QAE@XZ
-??1?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE@XZ
-??1?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??1?$vector@PBUConnectedComponents@@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAE@XZ
-??1ConnectedComponents@@QAE@XZ
-??8_List_iterator_base@_STL@@QBE_NABU01@@Z
-??A?$vector@PBUConnectedComponents@@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAEAAPBUConnectedComponents@@I@Z
-??C?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBEPAU?$pair@PBVMetaAction@@H@1@XZ
-??C?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@_STL@@QBEPAUConnectedComponents@@XZ
-??D?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBEABU?$pair@PBVMetaAction@@H@1@XZ
-??D?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBEAAU?$pair@PBVMetaAction@@H@1@XZ
-??D?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@_STL@@QBEAAUConnectedComponents@@XZ
-??E?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEAAU01@XZ
-??E?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEAAU01@XZ
-??E?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@_STL@@QAEAAU01@XZ
-??_GConnectedComponents@@QAEPAXI@Z
-?_Construct@_STL@@YAXPAU?$pair@PBVMetaAction@@H@1@ABU21@@Z
-?_Construct@_STL@@YAXPAUConnectedComponents@@ABU2@@Z
-?_Destroy@_STL@@YAXPAPBUConnectedComponents@@0@Z
-?_Destroy@_STL@@YAXPAU?$pair@PBVMetaAction@@H@1@@Z
-?_Destroy@_STL@@YAXPAUConnectedComponents@@@Z
-?_Is_POD@_STL@@YA?AU?$_IsPOD@PBUConnectedComponents@@@1@PAPBUConnectedComponents@@@Z
-?_M_create_node@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@IAEPAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@2@ABU?$pair@PBVMetaAction@@H@2@@Z
-?_M_create_node@?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@IAEPAU?$_List_node@UConnectedComponents@@@2@ABUConnectedComponents@@@Z
-?_M_insert_dispatch@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEXU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@U?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@1ABU__false_type@2@@Z
-?_Ret@?$_IsPOD@PBUConnectedComponents@@@_STL@@SA?AU__true_type@2@XZ
-?__destroy@_STL@@YAXPAPBUConnectedComponents@@00@Z
-?__destroy_aux@_STL@@YAXPAPBUConnectedComponents@@0ABU__true_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAPBUConnectedComponents@@PAPBU2@IABQBU2@ABU__true_type@1@@Z
-?allocate@?$allocator@PBUConnectedComponents@@@_STL@@QBEPAPBUConnectedComponents@@IPBX@Z
-?allocate@?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@_STL@@QBEPAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@2@IPBX@Z
-?allocate@?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@_STL@@QBEPAU?$_List_node@UConnectedComponents@@@2@IPBX@Z
-?begin@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE?AU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@XZ
-?begin@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBE?AU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@XZ
-?begin@?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE?AU?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@2@XZ
-?begin@?$vector@PBUConnectedComponents@@V?$allocator@PBUConnectedComponents@@@_STL@@@_STL@@QAEPAPBUConnectedComponents@@XZ
-?clear@?$_List_base@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEXXZ
-?clear@?$_List_base@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAEXXZ
-?deallocate@?$allocator@PBUConnectedComponents@@@_STL@@QBEXPAPBUConnectedComponents@@I@Z
-?deallocate@?$allocator@U?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@_STL@@@_STL@@QBEXPAU?$_List_node@U?$pair@PBVMetaAction@@H@_STL@@@2@I@Z
-?deallocate@?$allocator@U?$_List_node@UConnectedComponents@@@_STL@@@_STL@@QBEXPAU?$_List_node@UConnectedComponents@@@2@I@Z
-?empty@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBE_NXZ
-?end@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE?AU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@XZ
-?end@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBE?AU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@XZ
-?end@?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE?AU?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@2@XZ
-?erase@?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE?AU?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@2@U32@@Z
-?fill_n@_STL@@YAPAPBUConnectedComponents@@PAPBU2@IABQBU2@@Z
-?get_allocator@?$_List_base@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBE?AV?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@XZ
-?insert@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAE?AU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@U32@ABU?$pair@PBVMetaAction@@H@2@@Z
-?insert@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEXU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@U?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@1@Z
-?insert@?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAE?AU?$_List_iterator@UConnectedComponents@@U?$_Nonconst_traits@UConnectedComponents@@@_STL@@@2@U32@ABUConnectedComponents@@@Z
-?iterator_category@_STL@@YA?AUbidirectional_iterator_tag@1@ABU_List_iterator_base@1@@Z
-?make_pair@_STL@@YA?AU?$pair@PBVMetaAction@@H@1@ABQBVMetaAction@@ABH@Z
-?push_back@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEXABU?$pair@PBVMetaAction@@H@2@@Z
-?push_back@?$list@UConnectedComponents@@V?$allocator@UConnectedComponents@@@_STL@@@_STL@@QAEXABUConnectedComponents@@@Z
-?splice@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QAEXU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Nonconst_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@2@AAV12@@Z
-?uninitialized_fill_n@_STL@@YAPAPBUConnectedComponents@@PAPBU2@IABQBU2@@Z
-?value_type@_STL@@YAPAPBUConnectedComponents@@PBQBU2@@Z
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@PAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@1@PAV?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@1@@Z
-??0?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@ABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@1@@Z
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??0?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@PBU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@1@PBV?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@ABU?$less@H@1@ABV?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@ABU?$less@H@1@ABV?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@ABU?$less@H@1@ABV?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@1@@Z
-??0?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@ABV01@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBHVOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@1@I@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAUFontNameAttr@FontSubstConfigItem@vcl@@U123@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@ABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@PAUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-??0?$_STLP_alloc_proxy@PAVString@@V1@V?$allocator@VString@@@_STL@@@_STL@@QAE@ABV?$allocator@VString@@@1@PAVString@@@Z
-??0?$_Vector_base@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@ABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@@Z
-??0?$_Vector_base@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@IABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@@Z
-??0?$_Vector_base@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAE@ABV?$allocator@VString@@@1@@Z
-??0?$_Vector_base@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAE@IABV?$allocator@VString@@@1@@Z
-??0?$allocator@PAX@_STL@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@1@@Z
-??0?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@QAE@XZ
-??0?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??0?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@QAE@XZ
-??0?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@QAE@ABV?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@_STL@@@1@@Z
-??0?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@QAE@XZ
-??0?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@QAE@XZ
-??0?$allocator@VString@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@VString@@@_STL@@QAE@XZ
-??0?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QAE@ABV01@@Z
-??0?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QAE@XZ
-??0?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QAE@ABV01@@Z
-??0?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@IABUOUStringHash@rtl@@ABU?$equal_to@VOUString@rtl@@@1@ABV?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@1@@Z
-??0?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??0?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??0?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAE@ABV01@@Z
-??0?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAE@XZ
-??0?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@QAE@ABHABV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@1@@Z
-??0?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@QAE@ABU01@@Z
-??0?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@QAE@ABHABV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@1@@Z
-??0?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@QAE@ABU01@@Z
-??0?$pair@$$CBHVOUString@rtl@@@_STL@@QAE@ABHABVOUString@rtl@@@Z
-??0?$pair@$$CBHVOUString@rtl@@@_STL@@QAE@ABU01@@Z
-??0?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@QAE@ABU01@@Z
-??0?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@QAE@ABVOUString@rtl@@ABV?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@1@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@_N@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@1@AB_N@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@_N@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@1@AB_N@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@_N@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@1@AB_N@Z
-??0?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@ABV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@1@@Z
-??0?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAE@ABV?$allocator@VString@@@1@@Z
-??1?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBHVOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@IU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@V?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAUFontNameAttr@FontSubstConfigItem@vcl@@U123@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAVString@@V1@V?$allocator@VString@@@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@QAE@XZ
-??1?$allocator@VString@@@_STL@@QAE@XZ
-??1?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QAE@XZ
-??1?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAE@XZ
-??1?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@QAE@XZ
-??1?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$pair@$$CBHVOUString@rtl@@@_STL@@QAE@XZ
-??1?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@QAE@XZ
-??1?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAE@XZ
-??1?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAE@XZ
-??4?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAEAAV01@ABV01@@Z
-??8_Rb_tree_base_iterator@_STL@@QBE_NABU01@@Z
-??8_STL@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@0@0@Z
-??8_STL@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@0@0@Z
-??8_STL@@YA_NABU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@0@0@Z
-??9_STL@@YA_NABU?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@0@0@Z
-??A?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QAEAAV?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@1@ABVOUString@rtl@@@Z
-??A?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAEAAV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@1@ABH@Z
-??A?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAEAAV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@1@ABH@Z
-??A?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAEAAVOUString@rtl@@ABH@Z
-??C?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QBEPBU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@1@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBEPBU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@1@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBEPBU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@1@XZ
-??C?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBEPBU?$pair@$$CBHVOUString@rtl@@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@1@XZ
-??D?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBHVOUString@rtl@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBHVOUString@rtl@@@1@XZ
-??E?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@QBEABHABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@1@@Z
-??R?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@QBEABHABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@1@@Z
-??R?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@QBEABHABU?$pair@$$CBHVOUString@rtl@@@1@@Z
-??R?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@QBEABVOUString@rtl@@ABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@1@@Z
-??R?$less@H@_STL@@QBE_NABH0@Z
-??_G?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@QAEPAXI@Z
-??_G?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@QAEPAXI@Z
-??_G?$pair@$$CBHVOUString@rtl@@@_STL@@QAEPAXI@Z
-??_G?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@QAEPAXI@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@1@ABU21@@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@1@ABU21@@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBHVOUString@rtl@@@1@ABU21@@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@1@ABU21@@Z
-?_Construct@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@ABU234@@Z
-?_Construct@_STL@@YAXPAVString@@ABV2@@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@1@@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@1@@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBHVOUString@rtl@@@1@@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@1@@Z
-?_Destroy@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?_Destroy@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?_Destroy@_STL@@YAXPAVString@@0@Z
-?_Destroy@_STL@@YAXPAVString@@@Z
-?_IsOKToMemCpy@_STL@@YA?AU?$_OKToMemCpy@UFontNameAttr@FontSubstConfigItem@vcl@@U123@@1@PAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?_M_allocate_and_copy@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@IAEPAVString@@IPBV3@0@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@ABEIABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@2@@Z
-?_M_bkt_num@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@ABEIABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@2@I@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@ABEIABVOUString@rtl@@@Z
-?_M_bkt_num_key@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@ABEIABVOUString@rtl@@I@Z
-?_M_clear@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@IAEXXZ
-?_M_clear@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@IAEXXZ
-?_M_clone_node@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@@Z
-?_M_copy@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@AAEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@0@Z
-?_M_create_node@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@2@@Z
-?_M_create_node@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@2@@Z
-?_M_create_node@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?_M_delete_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@AAEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@Z
-?_M_empty_initialize@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@AAEXXZ
-?_M_empty_initialize@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@AAEXXZ
-?_M_empty_initialize@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@AAEXXZ
-?_M_erase@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@Z
-?_M_erase@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@Z
-?_M_erase@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@Z
-?_M_find@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@ABH@Z
-?_M_find@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@ABH@Z
-?_M_find@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@ABH@Z
-?_M_find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@ABEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@ABVOUString@rtl@@@Z
-?_M_initialize_buckets@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@AAEXI@Z
-?_M_insert@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@2@0@Z
-?_M_insert@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@2@0@Z
-?_M_insert@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBHVOUString@rtl@@@2@0@Z
-?_M_insert@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAEAAU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@2@ABU32@@Z
-?_M_insert_overflow@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@IAEXPAUFontNameAttr@FontSubstConfigItem@vcl@@ABU345@ABU__false_type@2@I_N@Z
-?_M_insert_overflow@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@IAEXPAVString@@ABV3@ABU__false_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@XZ
-?_M_leftmost@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@XZ
-?_M_leftmost@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@ABH@Z
-?_M_lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@ABH@Z
-?_M_lower_bound@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@ABH@Z
-?_M_new_node@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@AAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@ABU?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@2@@Z
-?_M_next_size@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@ABEII@Z
-?_M_rightmost@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@XZ
-?_M_rightmost@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@XZ
-?_M_rightmost@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@XZ
-?_M_root@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@XZ
-?_M_root@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@XZ
-?_M_root@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@XZ
-?_M_set@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@IAEXPAUFontNameAttr@FontSubstConfigItem@vcl@@00@Z
-?_M_set@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@IAEXPAVString@@00@Z
-?_M_skip_to_next@?$_Hashtable_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@XZ
-?_Ret@?$_BothPtrType@PAUFontNameAttr@FontSubstConfigItem@vcl@@PAU123@@_STL@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@UFontNameAttr@FontSubstConfigItem@vcl@@U123@@_STL@@SA?AU__false_type@2@XZ
-?_S_color@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@Z
-?_S_color@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@Z
-?_S_color@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAABHPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAABHPAU_Rb_tree_node_base@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAABHPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAABHPAU_Rb_tree_node_base@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAABHPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAABHPAU_Rb_tree_node_base@2@@Z
-?_S_left@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@PAU32@@Z
-?_S_left@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@PAU32@@Z
-?_S_left@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@@Z
-?_S_maximum@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@@Z
-?_S_maximum@_Rb_tree_node_base@_STL@@SAPAU12@PAU12@@Z
-?_S_minimum@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@@Z
-?_S_minimum@_Rb_tree_node_base@_STL@@SAPAU12@PAU12@@Z
-?_S_parent@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_value@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@KAAAU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@Z
-?_S_value@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@KAAAU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@Z
-?_S_value@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@KAAAU?$pair@$$CBHVOUString@rtl@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@Z
-?__adjust_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@HHU234@UStrictStringSort@@@Z
-?__advance@_STL@@YAXAAPBUFontNameAttr@FontSubstConfigItem@vcl@@HABUrandom_access_iterator_tag@1@@Z
-?__copy@_STL@@YAPAVString@@PBV2@0PAV2@ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_backward@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_backward_aux@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABU__true_type@1@@Z
-?__copy_backward_ptrs@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABU__false_type@1@@Z
-?__copy_ptrs@_STL@@YAPAVString@@PBV2@0PAV2@ABU__false_type@1@@Z
-?__default_constructed@_STL@@YA?AV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@1@PAV21@@Z
-?__default_constructed@_STL@@YA?AV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@1@PAV21@@Z
-?__default_constructed@_STL@@YA?AVOUString@rtl@@PAV23@@Z
-?__default_constructed_aux@_STL@@YA?AV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@1@PAV21@ABU__false_type@1@@Z
-?__default_constructed_aux@_STL@@YA?AV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@1@PAV21@ABU__false_type@1@@Z
-?__default_constructed_aux@_STL@@YA?AVOUString@rtl@@PAV23@ABU__false_type@1@@Z
-?__destroy@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00@Z
-?__destroy@_STL@@YAXPAVString@@00@Z
-?__destroy_aux@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0ABU__false_type@1@@Z
-?__destroy_aux@_STL@@YAXPAVString@@0ABU__false_type@1@@Z
-?__distance@_STL@@YAHABQBUFontNameAttr@FontSubstConfigItem@vcl@@0ABUrandom_access_iterator_tag@1@@Z
-?__final_insertion_sort@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?__insertion_sort@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?__introsort_loop@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00HUStrictStringSort@@@Z
-?__lg@_STL@@YAHH@Z
-?__linear_insert@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0U234@UStrictStringSort@@@Z
-?__lower_bound@_STL@@YAPBUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@0ABU234@UWeakStringSort@@PAH@Z
-?__make_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@0PAH@Z
-?__median@_STL@@YAABUFontNameAttr@FontSubstConfigItem@vcl@@ABU234@00UStrictStringSort@@@Z
-?__partial_sort@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@000UStrictStringSort@@@Z
-?__pop_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00U234@UStrictStringSort@@PAH@Z
-?__pop_heap_aux@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00UStrictStringSort@@@Z
-?__push_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@HHU234@UStrictStringSort@@@Z
-?__unguarded_insertion_sort@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?__unguarded_insertion_sort_aux@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00UStrictStringSort@@@Z
-?__unguarded_linear_insert@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@U234@UStrictStringSort@@@Z
-?__unguarded_partition@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@0U234@UStrictStringSort@@@Z
-?__uninitialized_copy@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00ABU__false_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@0PAU234@ABU__false_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAVString@@PAV2@00ABU__false_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAVString@@PBV2@0PAV2@ABU__false_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@IABU234@ABU__false_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAVString@@PAV2@IABV2@ABU__false_type@1@@Z
-?advance@_STL@@YAXAAPBUFontNameAttr@FontSubstConfigItem@vcl@@H@Z
-?allocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@_STL@@QBEPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@_STL@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@_STL@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@_STL@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@IPBX@Z
-?allocate@?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@QBEPAUFontNameAttr@FontSubstConfigItem@vcl@@IPBX@Z
-?allocate@?$allocator@VString@@@_STL@@QBEPAVString@@IPBX@Z
-?begin@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@XZ
-?begin@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@XZ
-?begin@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@XZ
-?begin@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@XZ
-?begin@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@XZ
-?begin@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@XZ
-?begin@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAEPAUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?begin@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QBEPBUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?bucket_count@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QBEIXZ
-?capacity@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QBEIXZ
-?clear@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAEXXZ
-?clear@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAEXXZ
-?clear@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAEXXZ
-?clear@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QAEXXZ
-?clear@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAEXXZ
-?clear@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAEXXZ
-?copy_backward@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PAU234@00@Z
-?deallocate@?$allocator@U?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Hashtable_node@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@I@Z
-?deallocate@?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@QBEXPAUFontNameAttr@FontSubstConfigItem@vcl@@I@Z
-?deallocate@?$allocator@VString@@@_STL@@QBEXPAVString@@I@Z
-?distance@_STL@@YAHABQBUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?distance_type@_STL@@YAPAHPBUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?distance_type@_STL@@YAPAHPBVString@@@Z
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@XZ
-?end@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@XZ
-?end@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@XZ
-?end@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@XZ
-?end@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@XZ
-?end@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@XZ
-?end@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@XZ
-?end@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@XZ
-?end@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@XZ
-?end@?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@XZ
-?end@?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@XZ
-?end@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAEPAUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?end@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QBEPBUFontNameAttr@FontSubstConfigItem@vcl@@XZ
-?find@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@ABH@Z
-?find@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@ABH@Z
-?find@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@ABH@Z
-?find@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hash_map@VOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@4@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@4@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Ht_iterator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@VOUString@rtl@@UOUStringHash@5@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@2@ABVOUString@rtl@@@Z
-?find@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@ABH@Z
-?find@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Const_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@ABH@Z
-?find@?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QBE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Const_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@ABH@Z
-?get_allocator@?$_Rb_tree_base@U?$pair@$$CBHVOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBE?AV?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@XZ
-?get_allocator@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBE?AV?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@XZ
-?get_allocator@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QBE?AV?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@2@XZ
-?get_allocator@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QBE?AV?$allocator@VString@@@2@XZ
-?insert@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@U32@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@2@@Z
-?insert@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@U32@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@2@@Z
-?insert@?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@U32@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@U32@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@_N@2@ABU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@U32@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@_N@2@ABU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@U32@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?insert_unique@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@_N@2@ABU?$pair@$$CBHVOUString@rtl@@@2@@Z
-?iter_swap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBVString@@@Z
-?key_comp@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$less@H@2@XZ
-?key_comp@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$less@H@2@XZ
-?key_comp@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBE?AU?$less@H@2@XZ
-?key_comp@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$less@H@2@XZ
-?key_comp@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBE?AU?$less@H@2@XZ
-?key_comp@?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QBE?AU?$less@H@2@XZ
-?lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@ABH@Z
-?lower_bound@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@ABH@Z
-?lower_bound@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@ABH@Z
-?lower_bound@?$map@HV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@2@ABH@Z
-?lower_bound@?$map@HV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@2@ABH@Z
-?lower_bound@?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@2@ABH@Z
-?lower_bound@_STL@@YAPBUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@0ABU234@UWeakStringSort@@@Z
-?make_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?partial_sort@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@00UStrictStringSort@@@Z
-?pop_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?push_back@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QAEXABUFontNameAttr@FontSubstConfigItem@vcl@@@Z
-?push_back@?$vector@VString@@V?$allocator@VString@@@_STL@@@_STL@@QAEXABVString@@@Z
-?resize@?$hashtable@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@@_STL@@@2@@_STL@@QAEXI@Z
-?size@?$_Rb_tree@HU?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$map@HVOUString@rtl@@U?$less@H@_STL@@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@4@@_STL@@@_STL@@@2@@_STL@@QBEIXZ
-?size@?$_Rb_tree@HU?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@U?$_Select1st@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHV?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@@_STL@@@2@@_STL@@QBEIXZ
-?size@?$_Rb_tree@HU?$pair@$$CBHVOUString@rtl@@@_STL@@U?$_Select1st@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@U?$less@H@2@V?$allocator@U?$pair@$$CBHVOUString@rtl@@@_STL@@@2@@_STL@@QBEIXZ
-?size@?$hash_map@VOUString@rtl@@V12@UOUStringHash@2@U?$equal_to@VOUString@rtl@@@_STL@@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@5@@_STL@@QBEIXZ
-?size@?$hashtable@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@VOUString@rtl@@UOUStringHash@4@U?$_Select1st@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@U?$equal_to@VOUString@rtl@@@2@V?$allocator@U?$pair@$$CBVOUString@rtl@@V12@@_STL@@@2@@_STL@@QBEIXZ
-?size@?$vector@UFontNameAttr@FontSubstConfigItem@vcl@@V?$allocator@UFontNameAttr@FontSubstConfigItem@vcl@@@_STL@@@_STL@@QBEIXZ
-?sort@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?sort_heap@_STL@@YAXPAUFontNameAttr@FontSubstConfigItem@vcl@@0UStrictStringSort@@@Z
-?swap@_STL@@YAXAAUFontNameAttr@FontSubstConfigItem@vcl@@0@Z
-?value_type@_STL@@YAPAUFontNameAttr@FontSubstConfigItem@vcl@@PBU234@@Z
-?value_type@_STL@@YAPAVString@@PBV2@@Z
-??0?$_List_base@HV?$allocator@H@_STL@@@_STL@@QAE@ABV?$allocator@H@1@@Z
-??0?$_List_iterator@HU?$_Const_traits@H@_STL@@@_STL@@QAE@ABU?$_List_iterator@HU?$_Nonconst_traits@H@_STL@@@1@@Z
-??0?$_List_iterator@HU?$_Const_traits@H@_STL@@@_STL@@QAE@XZ
-??0?$_List_iterator@HU?$_Nonconst_traits@H@_STL@@@_STL@@QAE@PAU?$_List_node@H@1@@Z
-??0?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@ABU?$less@J@1@ABV?$allocator@U?$pair@$$CBJJ@_STL@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBJJ@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBJJ@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@H@_STL@@U12@V?$allocator@U?$_List_node@H@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_List_node@H@_STL@@@1@PAU?$_List_node@H@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PA_K_KV?$allocator@_K@_STL@@@_STL@@QAE@ABV?$allocator@_K@1@PA_K@Z
-??0?$_Vector_base@_KV?$allocator@_K@_STL@@@_STL@@QAE@ABV?$allocator@_K@1@@Z
-??0?$allocator@H@_STL@@QAE@XZ
-??0?$allocator@U?$_List_node@H@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@H@_STL@@@_STL@@QAE@ABV?$allocator@H@1@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBJJ@_STL@@@1@@Z
-??0?$allocator@U?$pair@$$CBJJ@_STL@@@_STL@@QAE@XZ
-??0?$allocator@_K@_STL@@QAE@ABV01@@Z
-??0?$allocator@_K@_STL@@QAE@XZ
-??0?$list@HV?$allocator@H@_STL@@@_STL@@QAE@ABV?$allocator@H@1@@Z
-??0?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@XZ
-??0?$pair@$$CBJJ@_STL@@QAE@ABJ0@Z
-??0?$pair@$$CBJJ@_STL@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@_N@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@1@AB_N@Z
-??0?$vector@_KV?$allocator@_K@_STL@@@_STL@@QAE@ABV?$allocator@_K@1@@Z
-??1?$_List_base@HV?$allocator@H@_STL@@@_STL@@QAE@XZ
-??1?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBJJ@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_List_node@H@_STL@@U12@V?$allocator@U?$_List_node@H@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PA_K_KV?$allocator@_K@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@_KV?$allocator@_K@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_List_node@H@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBJJ@_STL@@@_STL@@QAE@XZ
-??1?$allocator@_K@_STL@@QAE@XZ
-??1?$list@HV?$allocator@H@_STL@@@_STL@@QAE@XZ
-??1?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE@XZ
-??1?$vector@_KV?$allocator@_K@_STL@@@_STL@@QAE@XZ
-??A?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAEAAJABJ@Z
-??A?$vector@_KV?$allocator@_K@_STL@@@_STL@@QAEAA_KI@Z
-??C?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QBEPAU?$pair@$$CBJJ@1@XZ
-??D?$_List_iterator@HU?$_Const_traits@H@_STL@@@_STL@@QBEABHXZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBJJ@1@XZ
-??E?$_List_iterator@HU?$_Const_traits@H@_STL@@@_STL@@QAEAAU01@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBJJ@_STL@@@_STL@@QBEABJABU?$pair@$$CBJJ@1@@Z
-??R?$less@J@_STL@@QBE_NABJ0@Z
-?_Construct@_STL@@YAXPAHABH@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBJJ@1@ABU21@@Z
-?_Construct@_STL@@YAXPA_KAB_K@Z
-?_Destroy@_STL@@YAXPAH@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBJJ@1@@Z
-?_Destroy@_STL@@YAXPA_K0@Z
-?_M_clear@?$vector@_KV?$allocator@_K@_STL@@@_STL@@IAEXXZ
-?_M_create_node@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@ABU?$pair@$$CBJJ@2@@Z
-?_M_create_node@?$list@HV?$allocator@H@_STL@@@_STL@@IAEPAU?$_List_node@H@2@ABH@Z
-?_M_decr@_List_iterator_base@_STL@@QAEXXZ
-?_M_empty_initialize@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@AAEXXZ
-?_M_erase@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@@Z
-?_M_insert@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBJJ@2@0@Z
-?_M_insert_overflow@?$vector@_KV?$allocator@_K@_STL@@@_STL@@IAEXPA_KAB_KABU__true_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@ABJ@Z
-?_M_rightmost@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@XZ
-?_M_root@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@XZ
-?_M_set@?$vector@_KV?$allocator@_K@_STL@@@_STL@@IAEXPA_K00@Z
-?_S_color@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAABJPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAABJPAU_Rb_tree_node_base@2@@Z
-?_S_left@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_value@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@KAAAU?$pair@$$CBJJ@2@PAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@@Z
-?__default_constructed@_STL@@YAJPAJ@Z
-?__default_constructed_aux@_STL@@YAJPAJABU__true_type@1@@Z
-?__destroy@_STL@@YAXPA_K00@Z
-?__destroy_aux@_STL@@YAXPA_K0ABU__true_type@1@@Z
-?allocate@?$allocator@U?$_List_node@H@_STL@@@_STL@@QBEPAU?$_List_node@H@2@IPBX@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@_STL@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@IPBX@Z
-?allocate@?$allocator@_K@_STL@@QBEPA_KIPBX@Z
-?begin@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@XZ
-?begin@?$list@HV?$allocator@H@_STL@@@_STL@@QAE?AU?$_List_iterator@HU?$_Nonconst_traits@H@_STL@@@2@XZ
-?begin@?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@XZ
-?begin@?$vector@_KV?$allocator@_K@_STL@@@_STL@@QAEPA_KXZ
-?clear@?$_List_base@HV?$allocator@H@_STL@@@_STL@@QAEXXZ
-?clear@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAEXXZ
-?deallocate@?$allocator@U?$_List_node@H@_STL@@@_STL@@QBEXPAU?$_List_node@H@2@I@Z
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@_STL@@@_STL@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBJJ@_STL@@@2@I@Z
-?deallocate@?$allocator@_K@_STL@@QBEXPA_KI@Z
-?end@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@XZ
-?end@?$list@HV?$allocator@H@_STL@@@_STL@@QAE?AU?$_List_iterator@HU?$_Nonconst_traits@H@_STL@@@2@XZ
-?end@?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@XZ
-?fill_n@_STL@@YAPA_KPA_KIAB_K@Z
-?insert@?$list@HV?$allocator@H@_STL@@@_STL@@QAE?AU?$_List_iterator@HU?$_Nonconst_traits@H@_STL@@@2@U32@ABH@Z
-?insert@?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@U32@ABU?$pair@$$CBJJ@2@@Z
-?insert_unique@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@U32@ABU?$pair@$$CBJJ@2@@Z
-?insert_unique@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@_STL@@_N@2@ABU?$pair@$$CBJJ@2@@Z
-?key_comp@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QBE?AU?$less@J@2@XZ
-?key_comp@?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QBE?AU?$less@J@2@XZ
-?lower_bound@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@ABJ@Z
-?lower_bound@?$map@JJU?$less@J@_STL@@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBJJ@_STL@@U?$_Nonconst_traits@U?$pair@$$CBJJ@_STL@@@2@@2@ABJ@Z
-?push_back@?$list@HV?$allocator@H@_STL@@@_STL@@QAEXABH@Z
-?push_back@?$vector@_KV?$allocator@_K@_STL@@@_STL@@QAEXAB_K@Z
-?size@?$_Rb_tree@JU?$pair@$$CBJJ@_STL@@U?$_Select1st@U?$pair@$$CBJJ@_STL@@@2@U?$less@J@2@V?$allocator@U?$pair@$$CBJJ@_STL@@@2@@_STL@@QBEIXZ
-?size@?$vector@_KV?$allocator@_K@_STL@@@_STL@@QBEIXZ
-?value_type@_STL@@YAPA_KPB_K@Z
-??0?$Reference@VXBitmap@awt@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??0?$Reference@VXIntrospectionAccess@beans@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??0?$Reference@VXInvocation@script@star@sun@com@@@uno@star@sun@com@@QAE@PAVXInvocation@script@234@@Z
-??0?$Sequence@C@uno@star@sun@com@@QAE@ABV01234@@Z
-??0BmpConverter@vcl@@QAE@XZ
-??0BmpTransporter@vcl@@QAE@ABVBitmap@@@Z
-??0CannotConvertException@script@star@sun@com@@QAE@ABV01234@@Z
-??0CannotConvertException@script@star@sun@com@@QAE@XZ
-??0InvocationTargetException@reflection@star@sun@com@@QAE@ABV01234@@Z
-??0InvocationTargetException@reflection@star@sun@com@@QAE@XZ
-??0Size@awt@star@sun@com@@QAE@XZ
-??0UnknownPropertyException@beans@star@sun@com@@QAE@ABV01234@@Z
-??0UnknownPropertyException@beans@star@sun@com@@QAE@XZ
-??0WrappedTargetException@lang@star@sun@com@@QAE@ABV01234@@Z
-??0WrappedTargetException@lang@star@sun@com@@QAE@XZ
-??0XBitmap@awt@star@sun@com@@QAE@XZ
-??0XInvocation@script@star@sun@com@@QAE@XZ
-??1?$Reference@VXBitmap@awt@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??1?$Reference@VXIntrospectionAccess@beans@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??1?$Reference@VXInvocation@script@star@sun@com@@@uno@star@sun@com@@QAE@XZ
-??1BmpConverter@vcl@@UAE@XZ
-??1BmpTransporter@vcl@@UAE@XZ
-??1CannotConvertException@script@star@sun@com@@QAE@XZ
-??1InvocationTargetException@reflection@star@sun@com@@QAE@XZ
-??1UnknownPropertyException@beans@star@sun@com@@QAE@XZ
-??1WrappedTargetException@lang@star@sun@com@@QAE@XZ
-??4?$Reference@VXBitmap@awt@star@sun@com@@@uno@star@sun@com@@QAAAAV01234@PAVXBitmap@awt@234@@Z
-??4?$Sequence@C@uno@star@sun@com@@QAAAAV01234@ABV01234@@Z
-??C?$Reference@VXBitmap@awt@star@sun@com@@@uno@star@sun@com@@QBAPAVXBitmap@awt@234@XZ
-??_2uno@star@sun@com@@YAEABVAny@0123@AAG@Z
-??_2uno@star@sun@com@@YAEABVAny@0123@AAV?$Reference@VXBitmap@awt@star@sun@com@@@0123@@Z
-??_3uno@star@sun@com@@YAXAAVAny@0123@ABV?$Reference@VXBitmap@awt@star@sun@com@@@0123@@Z
-??_7BmpConverter@vcl@@6BOWeakObject@cppu@@@
-??_7BmpConverter@vcl@@6BXInvocation@script@star@sun@com@@@
-??_7BmpConverter@vcl@@6BXTypeProvider@lang@star@sun@com@@@
-??_7BmpTransporter@vcl@@6BOWeakObject@cppu@@@
-??_7BmpTransporter@vcl@@6BXBitmap@awt@star@sun@com@@@
-??_7BmpTransporter@vcl@@6BXTypeProvider@lang@star@sun@com@@@
-??_C@_0BJ@ENJGIHBC@com?4sun?4star?4awt?4XBitmap?$AA@
-??_C@_0CA@NPPNKFE@com?4sun?4star?4script?4XInvocation?$AA@
-??_GBmpConverter@vcl@@UAEPAXI@Z
-??_GBmpTransporter@vcl@@UAEPAXI@Z
-??_R0?AVCannotConvertException@script@star@sun@com@@@8
-??_R0?AVInvocationTargetException@reflection@star@sun@com@@@8
-??_R0?AVUnknownPropertyException@beans@star@sun@com@@@8
-??_R0?AVWrappedTargetException@lang@star@sun@com@@@8
-?GetSize@SvMemoryStream@@QBEKXZ
-?createBmpConverter@vcl@@YA?AV?$Reference@VXInvocation@script@star@sun@com@@@uno@star@sun@com@@XZ
-?equalsIgnoreAsciiCase@OUString@rtl@@QBEEABV12@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXBitmap@awt@star@sun@com@@@2345@@Z
-?getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXInvocation@script@star@sun@com@@@2345@@Z
-?getDIB@BmpTransporter@vcl@@UAA?AV?$Sequence@C@uno@star@sun@com@@XZ
-?getIntrospection@BmpConverter@vcl@@UAA?AV?$Reference@VXIntrospectionAccess@beans@star@sun@com@@@uno@star@sun@com@@XZ
-?getLength@?$Sequence@C@uno@star@sun@com@@QBAJXZ
-?getMaskDIB@BmpTransporter@vcl@@UAA?AV?$Sequence@C@uno@star@sun@com@@XZ
-?getSize@BmpTransporter@vcl@@UAA?AUSize@awt@star@sun@com@@XZ
-?getValue@BmpConverter@vcl@@UAA?AVAny@uno@star@sun@com@@ABVOUString@rtl@@@Z
-?hasMethod@BmpConverter@vcl@@UAAEABVOUString@rtl@@@Z
-?hasProperty@BmpConverter@vcl@@UAAEABVOUString@rtl@@@Z
-?invoke@BmpConverter@vcl@@UAA?AVAny@uno@star@sun@com@@ABVOUString@rtl@@ABV?$Sequence@VAny@uno@star@sun@com@@@4567@AAV?$Sequence@F@4567@AAV?$Sequence@VAny@uno@star@sun@com@@@4567@@Z
-?s_pType_com_sun_star_awt_XBitmap@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXBitmap@awt@star@sun@com@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?s_pType_com_sun_star_script_XInvocation@?1??getCppuType@@YAABVType@uno@star@sun@com@@PBV?$Reference@VXInvocation@script@star@sun@com@@@3456@@Z@4PAU_typelib_TypeDescriptionReference@@A
-?set@?$Reference@VXBitmap@awt@star@sun@com@@@uno@star@sun@com@@QAAEPAVXBitmap@awt@345@@Z
-?setValue@BmpConverter@vcl@@UAAXABVOUString@rtl@@ABVAny@uno@star@sun@com@@@Z
-_TI2?AVCannotConvertException@script@star@sun@com@@
-_TI2?AVUnknownPropertyException@beans@star@sun@com@@
-_TI3?AVInvocationTargetException@reflection@star@sun@com@@
-??0?$_Vector_base@HV?$allocator@H@_STL@@@_STL@@QAE@ABV?$allocator@H@1@@Z
-??0?$vector@HV?$allocator@H@_STL@@@_STL@@QAE@ABV?$allocator@H@1@@Z
-??4?$vector@HV?$allocator@H@_STL@@@_STL@@QAEAAV01@ABV01@@Z
-?GetLocalizedChar@@YAGGH@Z
-?GetMirroredChar@@YAGG@Z
-?GetVerticalChar@@YAGG@Z
-?GetVerticalFlags@@YAHG@Z
-?_Is_POD@_STL@@YA?AU?$_IsPOD@H@1@PAH@Z
-?_M_allocate_and_copy@?$vector@HV?$allocator@H@_STL@@@_STL@@IAEPAHIPBH0@Z
-?_M_clear@?$vector@HV?$allocator@H@_STL@@@_STL@@IAEXXZ
-?_M_fill_insert@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEXPAHIABH@Z
-?_M_insert_overflow@?$vector@HV?$allocator@H@_STL@@@_STL@@IAEXPAHABHABU__true_type@2@I_N@Z
-?_M_set@?$vector@HV?$allocator@H@_STL@@@_STL@@IAEXPAH00@Z
-?_Ret@?$_BothPtrType@PAHPAH@_STL@@SA?AU__true_type@2@XZ
-?_Ret@?$_IsPOD@H@_STL@@SA?AU__true_type@2@XZ
-?__copy@_STL@@YAPAHPAH00ABUrandom_access_iterator_tag@1@0@Z
-?__copy_aux@_STL@@YAPAHPAH00ABU__true_type@1@@Z
-?__copy_backward_ptrs@_STL@@YAPAHPAH00ABU__true_type@1@@Z
-?__copy_ptrs@_STL@@YAPAHPAH00ABU__false_type@1@@Z
-?__copy_ptrs@_STL@@YAPAHPAH00ABU__true_type@1@@Z
-?__copy_ptrs@_STL@@YAPAHPBH0PAHABU__true_type@1@@Z
-?__copy_trivial_backward@_STL@@YAPAXPBX0PAX@Z
-?__uninitialized_copy@_STL@@YAPAHPAH00ABU__true_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAHPAHIABHABU__true_type@1@@Z
-?back@?$vector@VPolyPolygon@@V?$allocator@VPolyPolygon@@@_STL@@@_STL@@QAEAAVPolyPolygon@@XZ
-?capacity@?$vector@HV?$allocator@H@_STL@@@_STL@@QBEIXZ
-?clear@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEXXZ
-?end@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEPAHXZ
-?erase@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEPAHPAH0@Z
-?fill@_STL@@YAXPAH0ABH@Z
-?fill_n@_STL@@YAPAHPAHIABH@Z
-?insert@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEXPAHIABH@Z
-?push_back@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEXABH@Z
-?resize@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEXI@Z
-?resize@?$vector@HV?$allocator@H@_STL@@@_STL@@QAEXIABH@Z
-?uninitialized_fill_n@_STL@@YAPAHPAHIABH@Z
-?SetDirection@Cursor@@QAEXE@Z
-?min@_STL@@YAABJABJ0@Z
-?GetParentLabelFor@Window@@UBEPAV1@PBV1@@Z
-?GetParentLabeledBy@Window@@UBEPAV1@PBV1@@Z
-??0?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@ABU?$less@G@1@ABV?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@1@@Z
-??0?$_Rb_tree_base@U?$pair@$$CBGVRectangle@@@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Const_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@1@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@ABU01@@Z
-??0?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@1@@Z
-??0?$_STLP_alloc_proxy@PAJJV?$allocator@J@_STL@@@_STL@@QAE@ABV?$allocator@J@1@PAJ@Z
-??0?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@1@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@1@@Z
-??0?$_Vector_base@GV?$allocator@G@_STL@@@_STL@@QAE@ABV?$allocator@G@1@@Z
-??0?$_Vector_base@JV?$allocator@J@_STL@@@_STL@@QAE@ABV?$allocator@J@1@@Z
-??0?$allocator@J@_STL@@QAE@ABV01@@Z
-??0?$allocator@J@_STL@@QAE@XZ
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@_STL@@QAE@ABV?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@1@@Z
-??0?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@QAE@XZ
-??0?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAE@XZ
-??0?$pair@$$CBGVRectangle@@@_STL@@QAE@ABGABVRectangle@@@Z
-??0?$pair@$$CBGVRectangle@@@_STL@@QAE@ABU01@@Z
-??0?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@_N@_STL@@QAE@ABU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@1@AB_N@Z
-??0?$vector@GV?$allocator@G@_STL@@@_STL@@QAE@ABV?$allocator@G@1@@Z
-??0?$vector@JV?$allocator@J@_STL@@@_STL@@QAE@ABV?$allocator@J@1@@Z
-??1?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Rb_tree_base@U?$pair@$$CBGVRectangle@@@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAJJV?$allocator@J@_STL@@@_STL@@QAE@XZ
-??1?$_STLP_alloc_proxy@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@U12@V?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$_Vector_base@GV?$allocator@G@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@JV?$allocator@J@_STL@@@_STL@@QAE@XZ
-??1?$allocator@J@_STL@@QAE@XZ
-??1?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@QAE@XZ
-??1?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAE@XZ
-??1?$vector@GV?$allocator@G@_STL@@@_STL@@QAE@XZ
-??1?$vector@JV?$allocator@J@_STL@@@_STL@@QAE@XZ
-??A?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAEAAVRectangle@@ABG@Z
-??A?$vector@GV?$allocator@G@_STL@@@_STL@@QAEAAGI@Z
-??A?$vector@JV?$allocator@J@_STL@@@_STL@@QAEAAJI@Z
-??C?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Const_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QBEPBU?$pair@$$CBGVRectangle@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Const_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QBEABU?$pair@$$CBGVRectangle@@@1@XZ
-??D?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QBEAAU?$pair@$$CBGVRectangle@@@1@XZ
-??E?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??F?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAEAAU01@XZ
-??R?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@QBEABGABU?$pair@$$CBGVRectangle@@@1@@Z
-?GetItemStartEnd@Menu@@QBE?AVPair@@G@Z
-?GetUseImagesInMenus@StyleSettings@@QBEEXZ
-?SetSelectHdl@ToolBox@@QAEXABVLink@@@Z
-?_Construct@_STL@@YAXPAGABG@Z
-?_Construct@_STL@@YAXPAU?$pair@$$CBGVRectangle@@@1@ABU21@@Z
-?_Destroy@_STL@@YAXPAG0@Z
-?_Destroy@_STL@@YAXPAU?$pair@$$CBGVRectangle@@@1@@Z
-?_M_clear@?$vector@GV?$allocator@G@_STL@@@_STL@@IAEXXZ
-?_M_create_node@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@IAEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?_M_empty_initialize@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@AAEXXZ
-?_M_erase@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@AAEXPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@@Z
-?_M_find@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@ABG@Z
-?_M_insert@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@AAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@PAU_Rb_tree_node_base@2@0ABU?$pair@$$CBGVRectangle@@@2@0@Z
-?_M_insert_overflow@?$vector@GV?$allocator@G@_STL@@@_STL@@IAEXPAGABGABU__true_type@2@I_N@Z
-?_M_leftmost@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@XZ
-?_M_lower_bound@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@ABEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@ABG@Z
-?_M_rightmost@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@XZ
-?_M_root@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@IBEAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@XZ
-?_M_set@?$vector@GV?$allocator@G@_STL@@@_STL@@IAEXPAG00@Z
-?_S_color@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAAA_NPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAABGPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@@Z
-?_S_key@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAABGPAU_Rb_tree_node_base@2@@Z
-?_S_left@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@PAU32@@Z
-?_S_parent@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@PAU32@@Z
-?_S_right@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAAAPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@PAU_Rb_tree_node_base@2@@Z
-?_S_value@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@KAAAU?$pair@$$CBGVRectangle@@@2@PAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@@Z
-?__default_constructed@_STL@@YA?AVRectangle@@PAV2@@Z
-?__default_constructed_aux@_STL@@YA?AVRectangle@@PAV2@ABU__false_type@1@@Z
-?allocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@_STL@@QBEPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@IPBX@Z
-?begin@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@XZ
-?begin@?$vector@GV?$allocator@G@_STL@@@_STL@@QAEPAGXZ
-?begin@?$vector@JV?$allocator@J@_STL@@@_STL@@QAEPAJXZ
-?clear@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAEXXZ
-?clear@?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAEXXZ
-?deallocate@?$allocator@U?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@_STL@@@_STL@@QBEXPAU?$_Rb_tree_node@U?$pair@$$CBGVRectangle@@@_STL@@@2@I@Z
-?end@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@XZ
-?end@?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@XZ
-?fill_n@_STL@@YAPAGPAGIABG@Z
-?find@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@ABG@Z
-?find@?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@ABG@Z
-?insert@?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@U32@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?insert_unique@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@U32@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?insert_unique@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE?AU?$pair@U?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@_N@2@ABU?$pair@$$CBGVRectangle@@@2@@Z
-?key_comp@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QBE?AU?$less@G@2@XZ
-?key_comp@?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QBE?AU?$less@G@2@XZ
-?lower_bound@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@ABG@Z
-?lower_bound@?$map@GVRectangle@@U?$less@G@_STL@@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@3@@_STL@@QAE?AU?$_Rb_tree_iterator@U?$pair@$$CBGVRectangle@@@_STL@@U?$_Nonconst_traits@U?$pair@$$CBGVRectangle@@@_STL@@@2@@2@ABG@Z
-?push_back@?$vector@GV?$allocator@G@_STL@@@_STL@@QAEXABG@Z
-?size@?$_Rb_tree@GU?$pair@$$CBGVRectangle@@@_STL@@U?$_Select1st@U?$pair@$$CBGVRectangle@@@_STL@@@2@U?$less@G@2@V?$allocator@U?$pair@$$CBGVRectangle@@@_STL@@@2@@_STL@@QBEIXZ
-?size@?$vector@GV?$allocator@G@_STL@@@_STL@@QBEIXZ
-?SetDefaultCheckBoxText@QueryBox@@QAEXXZ
-?SetDefaultCheckBoxText@WarningBox@@QAEXXZ
-?CalcLayoutSizePixel@SplitWindow@@QAE?AVSize@@ABV2@@Z
-?GetAccessibleName@StatusBar@@QBEABVString@@G@Z
-?ResetProgressMode@StatusBar@@QAEXXZ
-?SetAccessibleName@StatusBar@@QAEXGABVString@@@Z
-??1ToolBoxLayoutData@vcl@@QAE@XZ
-??_GToolBoxLayoutData@vcl@@QAEPAXI@Z
-??0ToolBoxLayoutData@vcl@@QAE@XZ
-?GetCharacterBounds@ToolBox@@QBE?AVRectangle@@GJ@Z
-?GetDisplayItemId@ToolBox@@QBEGJ@Z
-?GetDisplayText@ToolBox@@UBE?AVString@@XZ
-?GetIndexForPoint@ToolBox@@QBEJABVPoint@@AAG@Z
-?GetTextCount@ToolBox@@QBEJXZ
-?GetTextStartEnd@ToolBox@@QBE?AVPair@@J@Z
-?GetClientWindowExtentsRelative@Window@@QAE?AVRectangle@@PAV1@@Z
-?IsCompoundControl@Window@@QBEEXZ
-?IsInModalMode@Window@@QBEEXZ
-?RecordLayoutData@Window@@QAEXPAUControlLayoutData@vcl@@ABVRectangle@@@Z
-?SetUseImagesInMenus@StyleSettings@@QAEXE@Z
-?makeAny@uno@star@sun@com@@YA?AVAny@1234@ABJ@Z
-??0CommandModKeyData@@QAE@G@Z
-??0IntroWindow@@QAE@XZ
-??1IntroWindow@@UAE@XZ
-??_7IntroWindow@@6B@
-??_GIntroWindow@@UAEPAXI@Z
-??0?$_STLP_alloc_proxy@PAPAVWindow@@PAV1@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAE@ABV?$allocator@PAVWindow@@@1@PAPAVWindow@@@Z
-??0?$_Temporary_buffer@PAPAVWindow@@PAV1@@_STL@@QAE@PAPAVWindow@@0@Z
-??0?$_Vector_base@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAE@ABV?$allocator@PAVWindow@@@1@@Z
-??0?$allocator@PAVWindow@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@PAVWindow@@@_STL@@QAE@XZ
-??0?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAE@ABV?$allocator@PAVWindow@@@1@@Z
-??1?$_STLP_alloc_proxy@PAPAVWindow@@PAV1@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAE@XZ
-??1?$_Temporary_buffer@PAPAVWindow@@PAV1@@_STL@@QAE@XZ
-??1?$_Vector_base@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@PAVWindow@@@_STL@@QAE@XZ
-??1?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAE@XZ
-?_Construct@_STL@@YAXPAPAVWindow@@ABQAV2@@Z
-?_Destroy@_STL@@YAXPAPAVWindow@@0@Z
-?_Destroy@_STL@@YAXPAPAVWindow@@@Z
-?_IsOKToMemCpy@_STL@@YA?AU?$_OKToMemCpy@PAVWindow@@PAV1@@1@PAPAVWindow@@0@Z
-?_M_allocate_buffer@?$_Temporary_buffer@PAPAVWindow@@PAV1@@_STL@@AAEXXZ
-?_M_clear@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@IAEXXZ
-?_M_initialize_buffer@?$_Temporary_buffer@PAPAVWindow@@PAV1@@_STL@@AAEXABQAVWindow@@ABU__true_type@2@@Z
-?_M_insert_overflow@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@IAEXPAPAVWindow@@ABQAV3@ABU__true_type@2@I_N@Z
-?_M_set@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@IAEXPAPAVWindow@@00@Z
-?_Ret@?$_BothPtrType@PAPAVWindow@@PAPAV1@@_STL@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@PAVWindow@@PAV1@@_STL@@SA?AU__true_type@2@XZ
-?__advance@_STL@@YAXAAPAPAVWindow@@HABUrandom_access_iterator_tag@1@@Z
-?__chunk_insertion_sort@_STL@@YAXPAPAVWindow@@0HULTRSort@@@Z
-?__chunk_insertion_sort@_STL@@YAXPAPAVWindow@@0HULTRSortBackward@@@Z
-?__copy_aux@_STL@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_backward_aux@_STL@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_backward_ptrs@_STL@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__copy_ptrs@_STL@@YAPAPAVWindow@@PAPAV2@00ABU__true_type@1@@Z
-?__destroy@_STL@@YAXPAPAVWindow@@00@Z
-?__destroy_aux@_STL@@YAXPAPAVWindow@@0ABU__true_type@1@@Z
-?__distance@_STL@@YAHABQAPAVWindow@@0ABUrandom_access_iterator_tag@1@@Z
-?__find@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ABUrandom_access_iterator_tag@1@@Z
-?__gcd@_STL@@YAHHH@Z
-?__inplace_stable_sort@_STL@@YAXPAPAVWindow@@0ULTRSort@@@Z
-?__inplace_stable_sort@_STL@@YAXPAPAVWindow@@0ULTRSortBackward@@@Z
-?__insertion_sort@_STL@@YAXPAPAVWindow@@0ULTRSort@@@Z
-?__insertion_sort@_STL@@YAXPAPAVWindow@@0ULTRSortBackward@@@Z
-?__linear_insert@_STL@@YAXPAPAVWindow@@0PAV2@ULTRSort@@@Z
-?__linear_insert@_STL@@YAXPAPAVWindow@@0PAV2@ULTRSortBackward@@@Z
-?__lower_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@PAH@Z
-?__lower_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@PAH@Z
-?__merge_adaptive@_STL@@YAXPAPAVWindow@@00HH0HULTRSort@@@Z
-?__merge_adaptive@_STL@@YAXPAPAVWindow@@00HH0HULTRSortBackward@@@Z
-?__merge_backward@_STL@@YAPAPAVWindow@@PAPAV2@0000ULTRSort@@@Z
-?__merge_backward@_STL@@YAPAPAVWindow@@PAPAV2@0000ULTRSortBackward@@@Z
-?__merge_sort_loop@_STL@@YAXPAPAVWindow@@00HULTRSort@@@Z
-?__merge_sort_loop@_STL@@YAXPAPAVWindow@@00HULTRSortBackward@@@Z
-?__merge_sort_with_buffer@_STL@@YAXPAPAVWindow@@00PAHULTRSort@@@Z
-?__merge_sort_with_buffer@_STL@@YAXPAPAVWindow@@00PAHULTRSortBackward@@@Z
-?__merge_without_buffer@_STL@@YAXPAPAVWindow@@00HHULTRSort@@@Z
-?__merge_without_buffer@_STL@@YAXPAPAVWindow@@00HHULTRSortBackward@@@Z
-?__rotate@_STL@@YAPAPAVWindow@@PAPAV2@00PAH0@Z
-?__rotate@_STL@@YAPAPAVWindow@@PAPAV2@00PAHABUrandom_access_iterator_tag@1@@Z
-?__rotate_adaptive@_STL@@YAPAPAVWindow@@PAPAV2@00HH0H@Z
-?__stable_sort_adaptive@_STL@@YAXPAPAVWindow@@00HULTRSort@@@Z
-?__stable_sort_adaptive@_STL@@YAXPAPAVWindow@@00HULTRSortBackward@@@Z
-?__stable_sort_aux@_STL@@YAXPAPAVWindow@@00PAHULTRSort@@@Z
-?__stable_sort_aux@_STL@@YAXPAPAVWindow@@00PAHULTRSortBackward@@@Z
-?__unguarded_linear_insert@_STL@@YAXPAPAVWindow@@PAV2@ULTRSort@@@Z
-?__unguarded_linear_insert@_STL@@YAXPAPAVWindow@@PAV2@ULTRSortBackward@@@Z
-?__upper_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@PAH@Z
-?__upper_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@PAH@Z
-?advance@_STL@@YAXAAPAPAVWindow@@H@Z
-?allocate@?$allocator@PAVWindow@@@_STL@@QBEPAPAVWindow@@IPBX@Z
-?begin@?$_Temporary_buffer@PAPAVWindow@@PAV1@@_STL@@QAEPAPAVWindow@@XZ
-?begin@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAEPAPAVWindow@@XZ
-?copy@_STL@@YAPAPAVWindow@@PAPAV2@00@Z
-?copy_backward@_STL@@YAPAPAVWindow@@PAPAV2@00@Z
-?deallocate@?$allocator@PAVWindow@@@_STL@@QBEXPAPAVWindow@@I@Z
-?distance@_STL@@YAHABQAPAVWindow@@0@Z
-?distance_type@_STL@@YAPAHPBQAVWindow@@@Z
-?end@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAEPAPAVWindow@@XZ
-?erase@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAEPAPAVWindow@@PAPAV3@@Z
-?fill_n@_STL@@YAPAPAVWindow@@PAPAV2@IABQAV2@@Z
-?find@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@@Z
-?iter_swap@_STL@@YAXPAPAVWindow@@0@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBQAVWindow@@@Z
-?lower_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@@Z
-?lower_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@@Z
-?merge@_STL@@YAPAPAVWindow@@PAPAV2@0000ULTRSort@@@Z
-?merge@_STL@@YAPAPAVWindow@@PAPAV2@0000ULTRSortBackward@@@Z
-?min@_STL@@YAABHABH0@Z
-?push_back@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QAEXABQAVWindow@@@Z
-?rotate@_STL@@YAPAPAVWindow@@PAPAV2@00@Z
-?size@?$_Temporary_buffer@PAPAVWindow@@PAV1@@_STL@@QBEHXZ
-?size@?$vector@PAVWindow@@V?$allocator@PAVWindow@@@_STL@@@_STL@@QBEIXZ
-?stable_sort@_STL@@YAXPAPAVWindow@@0ULTRSort@@@Z
-?stable_sort@_STL@@YAXPAPAVWindow@@0ULTRSortBackward@@@Z
-?swap@_STL@@YAXAAPAVWindow@@0@Z
-?swap_ranges@_STL@@YAPAPAVWindow@@PAPAV2@00@Z
-?upper_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSort@@@Z
-?upper_bound@_STL@@YAPAPAVWindow@@PAPAV2@0ABQAV2@ULTRSortBackward@@@Z
-?value_type@_STL@@YAPAPAVWindow@@PBQAV2@@Z
-??A?$vector@JV?$allocator@J@_STL@@@_STL@@QBEABJI@Z
-??A?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QAEAAVRectangle@@I@Z
-??A?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QBEABVRectangle@@I@Z
-?begin@?$vector@JV?$allocator@J@_STL@@@_STL@@QBEPBJXZ
-?begin@?$vector@VRectangle@@V?$allocator@VRectangle@@@_STL@@@_STL@@QBEPBVRectangle@@XZ
-?EnableDDAutoWidth@ComboBox@@QAEXE@Z
-?GetBoundingRectangle@ComboBox@@QBE?AVRectangle@@G@Z
-?GetSelectEntryCount@ComboBox@@QBEGXZ
-?GetSelectEntryPos@ComboBox@@QBEGG@Z
-?IsDDAutoWidthEnabled@ComboBox@@QBEEXZ
-?IsEntryPosSelected@ComboBox@@QBEEG@Z
-?SelectEntryPos@ComboBox@@QAEXGE@Z
-?SetNoSelection@ComboBox@@QAEXXZ
-?Count@ResStringArray@@QBEGXZ
-?GetString@ResStringArray@@QBEABVString@@G@Z
-?GetValue@ResStringArray@@QBEJG@Z
-?EnableDDAutoWidth@ListBox@@QAEXE@Z
-?IsDDAutoWidthEnabled@ListBox@@QBEEXZ
-??0?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Const_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE@ABU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@1@@Z
-??0?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE@ABU01@@Z
-??0?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??0?$_STLP_alloc_proxy@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@U12@V?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@2@@_STL@@QAE@ABV?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@1@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??0?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE@ABV?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@1@@Z
-??1?$_STLP_alloc_proxy@PAU?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@U12@V?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@2@@_STL@@QAE@XZ
-??1?$allocator@U?$_List_node@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE@XZ
-??D?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Const_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QBEABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@XZ
-??D?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QBEAAV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@XZ
-??E?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Const_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAEAAU01@XZ
-??E?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAEAAU01@XZ
-?begin@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@2@XZ
-?end@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@2@XZ
-?erase@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@2@U32@@Z
-?insert@?$list@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@V?$allocator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@_STL@@QAE?AU?$_List_iterator@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@U?$_Nonconst_traits@V?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@_STL@@@2@U32@ABV?$Reference@VXEventHandler@awt@star@sun@com@@@uno@star@sun@com@@@Z
-??0OString@rtl@@QAE@XZ
-??0OUString@rtl@@QAE@PBG@Z
-??0TempFontItem@@QAE@XZ
-??1TempFontItem@@QAE@XZ
-??4OString@rtl@@QAEAAV01@ABV01@@Z
-??_GTempFontItem@@QAEPAXI@Z
-?_IsOKToMemCpy@_STL@@YA?AU?$_OKToMemCpy@UtagKERNINGPAIR@@U1@@1@PAUtagKERNINGPAIR@@0@Z
-?_Ret@?$_BothPtrType@PAUtagKERNINGPAIR@@PAU1@@_STL@@SA?AU__true_type@2@XZ
-?_Ret@?$_OKToMemCpy@UtagKERNINGPAIR@@U1@@_STL@@SA?AU__false_type@2@XZ
-?__adjust_heap@_STL@@YAXPAUtagKERNINGPAIR@@HHU2@P6A_NABU2@2@Z@Z
-?__copy_backward@_STL@@YAPAUtagKERNINGPAIR@@PAU2@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_backward_aux@_STL@@YAPAUtagKERNINGPAIR@@PAU2@00ABU__true_type@1@@Z
-?__copy_backward_ptrs@_STL@@YAPAUtagKERNINGPAIR@@PAU2@00ABU__false_type@1@@Z
-?__final_insertion_sort@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?__insertion_sort@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?__introsort_loop@_STL@@YAXPAUtagKERNINGPAIR@@00HP6A_NABU2@1@Z@Z
-?__linear_insert@_STL@@YAXPAUtagKERNINGPAIR@@0U2@P6A_NABU2@2@Z@Z
-?__make_heap@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z0PAH@Z
-?__median@_STL@@YAABUtagKERNINGPAIR@@ABU2@00P6A_N00@Z@Z
-?__partial_sort@_STL@@YAXPAUtagKERNINGPAIR@@000P6A_NABU2@1@Z@Z
-?__pop_heap@_STL@@YAXPAUtagKERNINGPAIR@@00U2@P6A_NABU2@2@ZPAH@Z
-?__pop_heap_aux@_STL@@YAXPAUtagKERNINGPAIR@@00P6A_NABU2@1@Z@Z
-?__push_heap@_STL@@YAXPAUtagKERNINGPAIR@@HHU2@P6A_NABU2@2@Z@Z
-?__unguarded_insertion_sort@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?__unguarded_insertion_sort_aux@_STL@@YAXPAUtagKERNINGPAIR@@00P6A_NABU2@1@Z@Z
-?__unguarded_linear_insert@_STL@@YAXPAUtagKERNINGPAIR@@U2@P6A_NABU2@2@Z@Z
-?__unguarded_partition@_STL@@YAPAUtagKERNINGPAIR@@PAU2@0U2@P6A_NABU2@2@Z@Z
-?copy_backward@_STL@@YAPAUtagKERNINGPAIR@@PAU2@00@Z
-?distance_type@_STL@@YAPAHPBUtagKERNINGPAIR@@@Z
-?iter_swap@_STL@@YAXPAUtagKERNINGPAIR@@0@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBUtagKERNINGPAIR@@@Z
-?make_heap@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?partial_sort@_STL@@YAXPAUtagKERNINGPAIR@@00P6A_NABU2@1@Z@Z
-?pop_heap@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?sort@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?sort_heap@_STL@@YAXPAUtagKERNINGPAIR@@0P6A_NABU2@1@Z@Z
-?swap@_STL@@YAXAAUtagKERNINGPAIR@@0@Z
-?value_type@_STL@@YAPAUtagKERNINGPAIR@@PBU2@@Z
-??0?$_STLP_alloc_proxy@PAUPaperInfo@vcl@@U12@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAE@ABV?$allocator@UPaperInfo@vcl@@@1@PAUPaperInfo@vcl@@@Z
-??0?$_Vector_base@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAE@ABV?$allocator@UPaperInfo@vcl@@@1@@Z
-??0?$allocator@UPaperInfo@vcl@@@_STL@@QAE@ABV01@@Z
-??0?$allocator@UPaperInfo@vcl@@@_STL@@QAE@XZ
-??0?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAE@ABV?$allocator@UPaperInfo@vcl@@@1@@Z
-??0PaperInfo@vcl@@QAE@ABU01@@Z
-??1?$_STLP_alloc_proxy@PAUPaperInfo@vcl@@U12@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAE@XZ
-??1?$allocator@UPaperInfo@vcl@@@_STL@@QAE@XZ
-??1?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAE@XZ
-??4PaperInfo@vcl@@QAEAAU01@ABU01@@Z
-??_GPaperInfo@vcl@@QAEPAXI@Z
-?Abs@@YAHH@Z
-?_Construct@_STL@@YAXPAUPaperInfo@vcl@@ABU23@@Z
-?_Destroy@_STL@@YAXPAUPaperInfo@vcl@@0@Z
-?_Destroy@_STL@@YAXPAUPaperInfo@vcl@@@Z
-?_M_clear@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@IAEXXZ
-?_M_insert_overflow@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@IAEXPAUPaperInfo@vcl@@ABU34@ABU__false_type@2@I_N@Z
-?_M_set@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@IAEXPAUPaperInfo@vcl@@00@Z
-?__copy@_STL@@YAPAUPaperInfo@vcl@@PAU23@00ABUrandom_access_iterator_tag@1@PAH@Z
-?__copy_ptrs@_STL@@YAPAUPaperInfo@vcl@@PAU23@00ABU__false_type@1@@Z
-?__destroy@_STL@@YAXPAUPaperInfo@vcl@@00@Z
-?__destroy_aux@_STL@@YAXPAUPaperInfo@vcl@@0ABU__false_type@1@@Z
-?__uninitialized_copy@_STL@@YAPAUPaperInfo@vcl@@PAU23@00ABU__false_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAUPaperInfo@vcl@@PAU23@IABU23@ABU__false_type@1@@Z
-?allocate@?$allocator@UPaperInfo@vcl@@@_STL@@QBEPAUPaperInfo@vcl@@IPBX@Z
-?clear@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAEXXZ
-?deallocate@?$allocator@UPaperInfo@vcl@@@_STL@@QBEXPAUPaperInfo@vcl@@I@Z
-?distance_type@_STL@@YAPAHPBUPaperInfo@vcl@@@Z
-?end@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAEPAUPaperInfo@vcl@@XZ
-?erase@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAEPAUPaperInfo@vcl@@PAU34@0@Z
-?iterator_category@_STL@@YA?AUrandom_access_iterator_tag@1@PBUPaperInfo@vcl@@@Z
-?push_back@?$vector@UPaperInfo@vcl@@V?$allocator@UPaperInfo@vcl@@@_STL@@@_STL@@QAEXABUPaperInfo@vcl@@@Z
-?value_type@_STL@@YAPAUPaperInfo@vcl@@PBU23@@Z
-??0SimpleWinLayout@@QAE@PAUHDC__@@EPBUtagKERNINGPAIR@@H@Z
-??0UniscribeLayout@@QAE@PAUHDC__@@@Z
-??0WinLayout@@QAE@PAUHDC__@@@Z
-??1UniscribeLayout@@MAE@XZ
-??_GUniscribeLayout@@MAEPAXI@Z
-?DropGlyph@SimpleWinLayout@@UAEXH@Z
-?DropGlyph@UniscribeLayout@@UAEXH@Z
-?GetCaretPositions@SimpleWinLayout@@UBEXHPAJ@Z
-?GetCaretPositions@UniscribeLayout@@UBEXHPAJ@Z
-?InitFont@WinLayout@@UBEXXZ
-?IsEmpty@VisualItem@@QBE_NXZ
-?MoveGlyph@SimpleWinLayout@@UAEXHJ@Z
-?MoveGlyph@UniscribeLayout@@UAEXHJ@Z
-?Simplify@SimpleWinLayout@@UAEX_N@Z
-?Simplify@UniscribeLayout@@UAEX_N@Z
-?__advance@_STL@@YAXAAPBUtagKERNINGPAIR@@HABUrandom_access_iterator_tag@1@@Z
-?__distance@_STL@@YAHABQBUtagKERNINGPAIR@@0ABUrandom_access_iterator_tag@1@@Z
-?__lower_bound@_STL@@YAPBUtagKERNINGPAIR@@PBU2@0ABU2@P6A_N11@ZPAH@Z
-?advance@_STL@@YAXAAPBUtagKERNINGPAIR@@H@Z
-?distance@_STL@@YAHABQBUtagKERNINGPAIR@@0@Z
-?lower_bound@_STL@@YAPBUtagKERNINGPAIR@@PBU2@0ABU2@P6A_N11@Z@Z
-?lcl_convert@vcl@@YA?AVPoint@@ABVMapMode@@0PAVOutputDevice@@ABV2@@Z
-?lcl_convert@vcl@@YA?AVRectangle@@ABVMapMode@@0PAVOutputDevice@@ABV2@@Z
-?lcl_convert@vcl@@YA?AVSize@@ABVMapMode@@0PAVOutputDevice@@ABV2@@Z
-?GetMenuBorderColor@StyleSettings@@QBEABVColor@@XZ
-?GetUseFlatMenues@StyleSettings@@QBEEXZ
-?SetMenuBorderColor@StyleSettings@@QAEXABVColor@@@Z
-?SetToolbarIconSize@StyleSettings@@QAEXK@Z
-?SetUseFlatMenues@StyleSettings@@QAEXE@Z
-??0?$_STLP_alloc_proxy@PAEEV?$allocator@E@_STL@@@_STL@@QAE@ABV?$allocator@E@1@PAE@Z
-??0?$_Vector_base@EV?$allocator@E@_STL@@@_STL@@QAE@IABV?$allocator@E@1@@Z
-??0?$allocator@E@_STL@@QAE@ABV01@@Z
-??0?$allocator@E@_STL@@QAE@XZ
-??0?$vector@EV?$allocator@E@_STL@@@_STL@@QAE@I@Z
-??1?$_STLP_alloc_proxy@PAEEV?$allocator@E@_STL@@@_STL@@QAE@XZ
-??1?$_Vector_base@EV?$allocator@E@_STL@@@_STL@@QAE@XZ
-??1?$allocator@E@_STL@@QAE@XZ
-??1?$vector@EV?$allocator@E@_STL@@@_STL@@QAE@XZ
-??A?$vector@EV?$allocator@E@_STL@@@_STL@@QAEAAEI@Z
-?_Destroy@_STL@@YAXPAE0@Z
-?_Is_POD@_STL@@YA?AU?$_IsPOD@E@1@PAE@Z
-?_Ret@?$_IsPOD@E@_STL@@SA?AU__true_type@2@XZ
-?__destroy@_STL@@YAXPAE00@Z
-?__destroy_aux@_STL@@YAXPAE0ABU__true_type@1@@Z
-?__uninitialized_fill_n@_STL@@YAPAEPAEIABEABU__true_type@1@@Z
-?allocate@?$allocator@E@_STL@@QBEPAEIPBX@Z
-?begin@?$vector@EV?$allocator@E@_STL@@@_STL@@QAEPAEXZ
-?deallocate@?$allocator@E@_STL@@QBEXPAEI@Z
-?fill_n@_STL@@YAPAEPAEIABE@Z
-?uninitialized_fill_n@_STL@@YAPAEPAEIABE@Z
-?value_type@_STL@@YAPAEPBE@Z
-?__adjust_heap@_STL@@YAXPAHHHHU?$less@H@1@@Z
-?__copy_backward@_STL@@YAPAHPAH00ABUrandom_access_iterator_tag@1@0@Z
-?__copy_backward_aux@_STL@@YAPAHPAH00ABU__true_type@1@@Z
-?__copy_backward_ptrs@_STL@@YAPAHPAH00ABU__false_type@1@@Z
-?__final_insertion_sort@_STL@@YAXPAH0U?$less@H@1@@Z
-?__insertion_sort@_STL@@YAXPAH0U?$less@H@1@@Z
-?__introsort_loop@_STL@@YAXPAH00HU?$less@H@1@@Z
-?__less@_STL@@YA?AU?$less@H@1@PAH@Z
-?__linear_insert@_STL@@YAXPAH0HU?$less@H@1@@Z
-?__make_heap@_STL@@YAXPAH0U?$less@H@1@00@Z
-?__median@_STL@@YAABHABH00U?$less@H@1@@Z
-?__partial_sort@_STL@@YAXPAH000U?$less@H@1@@Z
-?__pop_heap@_STL@@YAXPAH00HU?$less@H@1@0@Z
-?__pop_heap_aux@_STL@@YAXPAH00U?$less@H@1@@Z
-?__push_heap@_STL@@YAXPAHHHHU?$less@H@1@@Z
-?__unguarded_insertion_sort@_STL@@YAXPAH0U?$less@H@1@@Z
-?__unguarded_insertion_sort_aux@_STL@@YAXPAH00U?$less@H@1@@Z
-?__unguarded_linear_insert@_STL@@YAXPAHHU?$less@H@1@@Z
-?__unguarded_partition@_STL@@YAPAHPAH0HU?$less@H@1@@Z
-?copy_backward@_STL@@YAPAHPAH00@Z
-?iter_swap@_STL@@YAXPAH0@Z
-?make_heap@_STL@@YAXPAH0U?$less@H@1@@Z
-?partial_sort@_STL@@YAXPAH00U?$less@H@1@@Z
-?pop_heap@_STL@@YAXPAH0U?$less@H@1@@Z
-?sort@_STL@@YAXPAH0@Z
-?sort_heap@_STL@@YAXPAH0U?$less@H@1@@Z
-?swap@_STL@@YAXAAH0@Z
-??1CancelButton@@UAE@XZ
-??1FixedText@@UAE@XZ
-??1GroupBox@@UAE@XZ
-??1HelpButton@@UAE@XZ
-??1OKButton@@UAE@XZ
-??8Date@@QBEEABV0@@Z
-??8Time@@QBEEABV0@@Z
-??O@YAEABVString@@0@Z
-?GetSavedValue@CheckBox@@QBE?AW4TriState@@XZ
-?SaveValue@CheckBox@@QAEXXZ
-?SetPosSizePixel@ListBox@@QAEXABVPoint@@ABVSize@@@Z
-??_C@_0BP@EGLBGAIM@?$CD?$CD?$CD?5illegal?5index?5of?5sequence?$CB?$AA@
-??_C@_0DF@HCMHNEML@o?3?2SRX644?2wntmsci8?2inc?2com?1sun?1s@
-??_C@_0BL@JGPCIGAJ@No?5color?5buffer?5available?$CB?$AA@
-??_C@_0BP@GLKOFDG@Palette?5index?5is?5out?5of?5range?$CB?$AA@
-??_C@_0BP@IICOAGKJ@Pixel?5represents?5color?5values?$CB?$AA@
-??_C@_0CI@HDFFEOGI@Pixel?5represents?5index?5into?5colo@
-??_C@_0BF@JINJEMP@Access?5is?5not?5valid?$CB?$AA@
-??_C@_0BH@HKMJOPEK@Bitmap?5has?5no?5palette?$CB?$AA@
-??_C@_0BL@JMALBHPM@x?9coordinate?5out?5of?5range?$CB?$AA@
-??_C@_0BL@PCIHAMLN@y?9coordinate?5out?5of?5range?$CB?$AA@
-??_C@_0DA@EKKKGKOJ@Drawing?5with?5index?5into?5palette?5@
-??YByteString@@QAEAAV0@ABV0@@Z
-??YByteString@@QAEAAV0@D@Z
-??_C@_0CJ@FMKCFDPH@O?3?2SRX644?2src?2vcl?2source?2gdi?2imp@
-?max@_STL@@YAABKABK0@Z
-?getLength@?$Sequence@J@uno@star@sun@com@@QBAJXZ
-?__distance@_STL@@YAHABU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@1@0ABUinput_iterator_tag@1@@Z
-?distance@_STL@@YAHABU?$_List_iterator@U?$pair@PBVMetaAction@@H@_STL@@U?$_Const_traits@U?$pair@PBVMetaAction@@H@_STL@@@2@@1@0@Z
-?size@?$list@U?$pair@PBVMetaAction@@H@_STL@@V?$allocator@U?$pair@PBVMetaAction@@H@_STL@@@2@@_STL@@QBEIXZ
-??YByteString@@QAEAAV0@PBD@Z
-?GetMessText@MessBox@@QBEABVString@@XZ
-??_C@_0BD@FGFOJMDE@object?5is?5disposed?$AA@
-??_C@_0CJ@BKMIJDED@do?5not?5add?5listeners?5in?5the?5disp@
-??_C@_0DH@HLDPLLAC@o?3?2SRX644?2wntmsci8?2inc?2cppuhelpe@
-?getLength@?$Sequence@UCalendarItem@i18n@star@sun@com@@@uno@star@sun@com@@QBAJXZ
-??_C@_0CH@POINNAOP@o?3?2SRX644?2wntmsci8?2inc?2rtl?1ustri@
diff --git a/vcl/util/makefile.mk b/vcl/util/makefile.mk
index 5c674e0b6f0c..ea4efc34ec54 100644
--- a/vcl/util/makefile.mk
+++ b/vcl/util/makefile.mk
@@ -1,10 +1,10 @@
-#*************************************************************************
+##*************************************************************************
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.40 $
+# $Revision: 1.41 $
#
-# last change: $Author: hdu $ $Date: 2002-10-29 13:18:54 $
+# last change: $Author: hr $ $Date: 2003-03-27 17:59:08 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -216,8 +216,7 @@ SHL1STDLIBS+=\
$(UCBHELPERLIB) \
$(CPPULIB) \
$(UNOTOOLSLIB) \
- $(COMPHELPERLIB) \
- $(GPC3RDLIB)
+ $(COMPHELPERLIB)
.IF "$(remote)" != ""
SHL1STDLIBS+= $(UNOLIB)
@@ -301,9 +300,9 @@ SHL1STDLIBS += -lXext -lSM -lICE -lX11
.ENDIF # "$(OS)"=="SOLARIS"
.ENDIF # "$(GUIBASE)"=="unx"
-.IF "$(OS)"=="LINUX" || "$(OS)"=="SOLARIS"
+.IF "$(OS)"=="LINUX" || "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD"
SHL1STDLIBS += -laudio
-.ENDIF # "$(OS)"=="LINUX" || "$(OS)"=="SOLARIS"
+.ENDIF # "$(OS)"=="LINUX" || "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD"
.ENDIF # "$(GUI)"=="UNX"
diff --git a/vcl/win/inc/saldata.hxx b/vcl/win/inc/saldata.hxx
index 502a50aa146c..efb54420c1d3 100644
--- a/vcl/win/inc/saldata.hxx
+++ b/vcl/win/inc/saldata.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: saldata.hxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: ssa $ $Date: 2002-04-05 13:41:40 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -96,6 +96,7 @@ class SalVirtualDevice;
class SalPrinter;
class Font;
struct HDCCache;
+struct TempFontItem;
// --------------------
// - Standard-Defines -
@@ -139,7 +140,7 @@ struct SalData
ULONG mnTimerOrgMS; // Current Original Time (in MS)
UINT mnTimerId; // windows timer id
SALTIMERPROC mpTimerProc; // timer callback proc
- HHOOK mhSalObjMsgHook; // hook um SalObject relevante Message mitzubekommen
+ HHOOK mhSalObjMsgHook; // hook to get interesting msg for SalObject
HWND mhWantLeaveMsg; // window handle, that want a MOUSELEAVE message
AutoTimer* mpMouseLeaveTimer; // Timer for MouseLeave Test
SalInstance* mpFirstInstance; // pointer of first instance
@@ -154,18 +155,19 @@ struct SalData
COLORREF maStockBrushColorAry[MAX_STOCKBRUSH];
HPEN mhStockPenAry[MAX_STOCKPEN];
HBRUSH mhStockBrushAry[MAX_STOCKBRUSH];
- USHORT mnStockPenCount; // Anzahl statischer Pens
- USHORT mnStockBrushCount; // Anzahl statischer Brushes
+ USHORT mnStockPenCount; // count of static pens
+ USHORT mnStockBrushCount; // count of static brushes
WPARAM mnSalObjWantKeyEvt; // KeyEvent, welcher vom SalObj-Hook verarbeitet werden soll
BYTE mnCacheDCInUse; // count of CacheDC in use
- BOOL mbObjClassInit; // Ist SALOBJECTCLASS initialised
+ BOOL mbObjClassInit; // is SALOBJECTCLASS initialised
BOOL mbInPalChange; // is in WM_QUERYNEWPALETTE
DWORD mnAppThreadId; // Id from Applikation-Thread
WIN_BOOL mbScrSvrEnabled; // ScreenSaver enabled
- int mnSageStatus; // Status der Sage-DLL (DISABLE_AGENT == nicht vorhanden)
- HINSTANCE mhSageInst; // Instance-Handle zur Sage-DLL
- SysAgt_Enable_PROC mpSageEnableProc; // Funktion zum deaktivieren des Systemagenten
- SalIcon* mpFirstIcon; // Iconcache, points to first icon, NULL if no icons loaded
+ int mnSageStatus; // status of Sage-DLL (DISABLE_AGENT == nicht vorhanden)
+ HINSTANCE mhSageInst; // instance handle for the Sage-DLL
+ SysAgt_Enable_PROC mpSageEnableProc; // funktion to deactivate the system agent
+ SalIcon* mpFirstIcon; // icon cache, points to first icon, NULL if none
+ TempFontItem* mpTempFontItem;
};
inline void SetSalData( SalData* pData ) { ImplGetSVData()->mpSalData = (void*)pData; }
@@ -221,9 +223,12 @@ void ImplClearHDCCache( SalData* pData );
HDC ImplGetCachedDC( ULONG nID, HBITMAP hBmp = 0 );
void ImplReleaseCachedDC( ULONG nID );
-// ------------------------------------------------------
-// - SALSHL.CXX - Funktionen fuer DLL-Resource-Zugriffe -
-// ------------------------------------------------------
+bool ImplAddTempFont( SalData&, const String& rFontFileURL );
+void ImplReleaseTempFonts( SalData& );
+
+// --------------------------------------------
+// - SALSHL.CXX - for accessing DLL resources -
+// --------------------------------------------
HCURSOR ImplLoadSalCursor( int nId );
HBITMAP ImplLoadSalBitmap( int nId );
@@ -285,6 +290,7 @@ int ImplSalWICompareAscii( const wchar_t* pStr1, const char* pStr2 );
#define SAL_FRAME_CLASSNAMEW L"SALFRAME"
#define SAL_SUBFRAME_CLASSNAMEA "SALSUBFRAME"
#define SAL_SUBFRAME_CLASSNAMEW L"SALSUBFRAME"
+#define SAL_TMPSUBFRAME_CLASSNAMEW L"SALTMPSUBFRAME"
#define SAL_OBJECT_WNDEXTRA sizeof( DWORD )
#define SAL_OBJECT_THIS 0
#define SAL_OBJECT_CLASSNAMEA "SALOBJECT"
diff --git a/vcl/win/source/app/salinst.cxx b/vcl/win/source/app/salinst.cxx
index fe1eb366824a..9bbf4e29844d 100644
--- a/vcl/win/source/app/salinst.cxx
+++ b/vcl/win/source/app/salinst.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salinst.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: ssa $ $Date: 2002-11-15 12:29:07 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:18 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -113,6 +113,10 @@
#include <timer.hxx>
#endif
+#ifndef CS_DROPSHADOW
+#define CS_DROPSHADOW 0x00020000
+#endif
+
// =======================================================================
void SalAbort( const XubString& rErrorText )
@@ -496,6 +500,13 @@ SalInstance* CreateSalInstance()
if ( !RegisterClassExW( &aWndClassEx ) )
return NULL;
+ // shadow effect for popups on XP
+ if( aSalShlData.mbWXP )
+ aWndClassEx.style |= CS_DROPSHADOW;
+ aWndClassEx.lpszClassName = SAL_TMPSUBFRAME_CLASSNAMEW;
+ if ( !RegisterClassExW( &aWndClassEx ) )
+ return NULL;
+
aWndClassEx.style = 0;
aWndClassEx.lpfnWndProc = SalComWndProcW;
aWndClassEx.cbWndExtra = 0;
diff --git a/vcl/win/source/gdi/salgdi.cxx b/vcl/win/source/gdi/salgdi.cxx
index 3c8f5257bc0e..95d5adc56f31 100644
--- a/vcl/win/source/gdi/salgdi.cxx
+++ b/vcl/win/source/gdi/salgdi.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salgdi.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: hdu $ $Date: 2002-11-22 17:08:27 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:21 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -210,11 +210,14 @@ void ImplInitSalGDI()
pSalData->mhStockBrushAry[3] = CreateSolidBrush( pSalData->maStockBrushColorAry[3] );
pSalData->mnStockBrushCount = 4;
- // DC-Cache aufbauen
+ // initialize cache of device contexts
pSalData->mpHDCCache = new HDCCache[ CACHESIZE_HDC ];
memset( pSalData->mpHDCCache, 0, CACHESIZE_HDC * sizeof( HDCCache ) );
- // Nur bei 256 Farben Displays, die Paletten unterstuetzen
+ // initialize temporary font list
+ pSalData->mpTempFontItem = NULL;
+
+ // support palettes for 256 color displays
HDC hDC = GetDC( 0 );
int nBitsPixel = GetDeviceCaps( hDC, BITSPIXEL );
int nPlanes = GetDeviceCaps( hDC, PLANES );
@@ -364,9 +367,9 @@ void ImplInitSalGDI()
void ImplFreeSalGDI()
{
SalData* pSalData = GetSalData();
- USHORT i;
// destroy stock objects
+ int i;
for ( i = 0; i < pSalData->mnStockPenCount; i++ )
DeletePen( pSalData->mhStockPenAry[i] );
for ( i = 0; i < pSalData->mnStockBrushCount; i++ )
@@ -427,6 +430,9 @@ void ImplFreeSalGDI()
delete pIcon;
pIcon = pTmp;
}
+
+ // delete temporary font list
+ ImplReleaseTempFonts( *pSalData );
}
// -----------------------------------------------------------------------
@@ -846,19 +852,23 @@ USHORT SalGraphics::GetBitCount()
long SalGraphics::GetGraphicsWidth()
{
- SalFrame* pFrame = GetWindowPtr( maGraphicsData.mhWnd );
- if( pFrame )
+ if( maGraphicsData.mhWnd && IsWindow( maGraphicsData.mhWnd ) )
{
- if( pFrame->maGeometry.nWidth )
- return pFrame->maGeometry.nWidth;
- else
+ SalFrame* pFrame = GetWindowPtr( maGraphicsData.mhWnd );
+ if( pFrame )
{
- // TODO: perhaps not needed, maGeometry should always be up-to-date
- RECT aRect;
- GetClientRect( maGraphicsData.mhWnd, &aRect );
- return aRect.right;
+ if( pFrame->maGeometry.nWidth )
+ return pFrame->maGeometry.nWidth;
+ else
+ {
+ // TODO: perhaps not needed, maGeometry should always be up-to-date
+ RECT aRect;
+ GetClientRect( maGraphicsData.mhWnd, &aRect );
+ return aRect.right;
+ }
}
}
+
return 0;
}
diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx
index 3015759e6e24..3e8401e1e17b 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.37 $
+ * $Revision: 1.38 $
*
- * last change: $Author: hdu $ $Date: 2002-12-05 16:59:35 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:22 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -175,29 +175,6 @@ struct ImplEnumInfo
// =======================================================================
-class TempFontList
-{
-public:
- TempFontList() : mpFirstItem( NULL ) {}
- ~TempFontList();
- bool AddFont( const String& rFontFilePath );
-
-private:
- struct TempFontItem
- {
- ::rtl::OUString maFontFilePath;
- ::rtl::OString maResourcePath;
- TempFontItem* mpNextItem;
- };
-
- TempFontItem* mpFirstItem;
-};
-
-// this gets cleaned up at program exit
-static TempFontList aTempFontList;
-
-// =======================================================================
-
static CharSet ImplCharSetToSal( BYTE nCharSet )
{
rtl_TextEncoding eTextEncoding;
@@ -1213,57 +1190,84 @@ ULONG SalGraphics::GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs )
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)); }
ULONG SalGraphics::GetFontCodeRanges( sal_uInt32* pCodePairs ) const
{
int nRangeCount = 0;
- DWORD CmapTag = 'c' + ('m'<<8) + ('a'<<16) + ('p'<<24);
- DWORD rc = GetFontData( maGraphicsData.mhDC, CmapTag, 0, NULL, 0 );
- if( rc != GDI_ERROR )
+ // get SFNT font's CMAP table
+ const DWORD CmapTag = CalcTag( "cmap" );
+ DWORD nRC = GetFontData( maGraphicsData.mhDC, CmapTag, 0, NULL, 0 );
+ if( nRC == GDI_ERROR )
+ return 0;
+
+ int nLength = nRC;
+ std::vector<unsigned char> aCmap( nLength );
+ unsigned char* pCmap = &aCmap[0];
+ nRC = GetFontData( maGraphicsData.mhDC, CmapTag, 0, pCmap, nLength );
+ if( nRC == GDI_ERROR )
+ return 0;
+ // check for the CMAP table corruption
+ if( GetUShort( pCmap ) != 0 )
+ return 0;
+
+ int nOffset = 0;
+ int nFormat = -1;
+
+ // find suitable subtable
+ int nSubTables = GetUShort( pCmap + 2 );
+ for( const unsigned char* p = pCmap + 4; --nSubTables >= 0; p += 8 )
{
- // we have a truetype font
- int nLength = rc;
- unsigned char* pCmap = new unsigned char[ nLength ];
- rc = GetFontData( maGraphicsData.mhDC, CmapTag, 0, pCmap, nLength );
+ int nPlatform = GetUShort( p );
+ int nEncoding = GetUShort( p+2 );
+ // ignore non-unicode encodings
+ if( nEncoding!=0 && nEncoding!=1 )
+ continue;
+ nOffset = GetUInt( p+4 );
+ nFormat = GetUShort( pCmap + nOffset );
+ if( (nFormat == 4) || (nFormat == 12) )
+ break;
+ }
+
+ sal_uInt32* pCP = pCodePairs;
- if( (rc != GDI_ERROR) && GetUShort( pCmap )==0 )
+ // format 4, the most common 16bit unicode mapping table
+ if( (nFormat == 4) && ((nOffset+16) < nLength) )
+ {
+ int nSegCount = GetUShort( pCmap + nOffset + 6 );
+ nRangeCount = nSegCount/2 - 1;
+ if( pCP )
{
- int nSubTables = GetUShort( pCmap + 2 );
- const unsigned char* p = pCmap + 4;
- int nOffset = 0;
- int nFormat = -1;
- for( ; --nSubTables>=0; p+=8 )
+ const unsigned char* pLimit = pCmap + nOffset + 14;
+ const unsigned char* pBegin = pLimit + 2 + nSegCount;
+ for( int i = 0; i < nRangeCount; ++i )
{
- int nPlatform = GetUShort( p );
- int nEncoding = GetUShort( p+2 );
- if( nEncoding!=0 && nEncoding!=1 ) // unicode encodings?
+ sal_uInt32 cMinChar = GetUShort( pBegin + 2*i );
+ sal_uInt32 cMaxChar = GetUShort( pLimit + 2*i );
+ if( cMaxChar == 0xFFFF )
continue;
- nOffset = GetUInt( p+4 );
- nFormat = GetUShort( pCmap + nOffset );
- if( nFormat==4 )
- break;
+ *(pCP++) = cMinChar;
+ *(pCP++) = cMaxChar + 1;
}
+ nRangeCount = (pCP - pCodePairs) / 2;
+ }
+ }
- if( nFormat==4 && (nOffset+16)<nLength )
+ // format 12, the most common 32bit unicode mapping table
+ if( (nFormat == 12) && ((nOffset+16) < nLength) )
+ {
+ nRangeCount = GetUInt( pCmap + nOffset + 12 ) / 12;
+ if( pCP )
+ {
+ const unsigned char* pGroup = pCmap + nOffset + 16;
+ for( int i = 0; i < nRangeCount; ++i )
{
- // analyze most common unicode mapping table
- int nSegCount = GetUShort( pCmap + nOffset + 6 );
- nRangeCount = nSegCount/2 - 1;
- if( pCodePairs )
- {
- const unsigned char* pLimit = pCmap + nOffset + 14;
- const unsigned char* pBegin = pLimit + 2 + nSegCount;
- for( int i = 0; i < nRangeCount; ++i )
- {
- *(pCodePairs++) = GetUShort( pBegin + 2*i );
- *(pCodePairs++) = GetUShort( pLimit + 2*i ) + 1;
- }
- }
+ *(pCP++) = GetUShort( pGroup + 0 );
+ *(pCP++) = GetUShort( pGroup + 4 ) + 1;
+ pGroup += 12;
}
- }
-
- delete[] pCmap;
+ }
}
return nRangeCount;
@@ -1453,11 +1457,15 @@ int CALLBACK SalEnumFontsProcExW( const ENUMLOGFONTEXW* pLogFont,
// -----------------------------------------------------------------------
-bool TempFontList::AddFont( const String& rFontFileURL )
+struct TempFontItem
{
- TempFontItem *pNewItem = new TempFontItem;
- pNewItem->mpNextItem = mpFirstItem;
+ ::rtl::OUString maFontFilePath;
+ ::rtl::OString maResourcePath;
+ TempFontItem* mpNextItem;
+};
+bool ImplAddTempFont( SalData& rSalData, const String& rFontFileURL )
+{
int nRet = 0;
::rtl::OUString aUSytemPath;
OSL_VERIFY( !osl::FileBase::getSystemPathFromFileURL( rFontFileURL, aUSytemPath ) );
@@ -1488,34 +1496,29 @@ bool TempFontList::AddFont( const String& rFontFileURL )
if( !::CreateScalableFontResourceA( 0, aResourceName, aCFileName.getStr(), NULL ) )
return false;
++nCounter;
- pNewItem->maResourcePath = rtl::OString( aResourceName );
+
nRet = ::AddFontResourceA( aResourceName );
-#if 0 // TODO: improve ImplFontData using "FONTRES:" from *.fot file
- pFontData->maSearchName = // using "FONTRES:" from file
- if( rFontName != pFontData->maName )
- pFontData->maMapName = rFontName;
-#endif
+ if( nRet > 0 )
+ {
+ TempFontItem* pNewItem = new TempFontItem;
+ pNewItem->maResourcePath = rtl::OString( aResourceName );
+ pNewItem->maFontFilePath = aUSytemPath.getStr();
+ pNewItem->mpNextItem = rSalData.mpTempFontItem;
+ rSalData.mpTempFontItem = pNewItem;
+ }
}
if( nRet > 0 )
- {
- pNewItem->maFontFilePath = aUSytemPath.getStr();
- mpFirstItem = pNewItem;
return true;
- }
-
- delete pNewItem;
return false;
}
// -----------------------------------------------------------------------
-TempFontList::~TempFontList()
+void ImplReleaseTempFonts( SalData& rSalData )
{
- rtl_TextEncoding theEncoding = osl_getThreadTextEncoding();
-
int nCount = 0;
- while( TempFontItem* p = mpFirstItem )
+ while( TempFontItem* p = rSalData.mpTempFontItem )
{
++nCount;
if( p->maResourcePath.getLength() )
@@ -1530,18 +1533,24 @@ TempFontList::~TempFontList()
::RemoveFontResourceW( p->maFontFilePath.getStr() );
else
{
- ::rtl::OString aCFileName = rtl::OUStringToOString( p->maFontFilePath, theEncoding );
- ::RemoveFontResourceA( aCFileName.getStr() );
+ // poor man's string conversion because converter is gone
+ int nLen = p->maFontFilePath.getLength();
+ char* pNameA = new char[ nLen + 1 ];
+ for( int i = 0; i < nLen; ++i )
+ pNameA[i] = (char)(p->maFontFilePath.getStr())[i];
+ pNameA[ nLen ] = 0;
+ ::RemoveFontResourceA( pNameA );
+ delete[] pNameA;
}
}
- mpFirstItem = p->mpNextItem;
+ rSalData.mpTempFontItem = p->mpNextItem;
delete p;
}
// notify everybody
if( nCount )
- ::SendMessage( HWND_BROADCAST, WM_FONTCHANGE ,0 ,NULL );
+ ::SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, NULL );
}
// -----------------------------------------------------------------------
@@ -1552,15 +1561,28 @@ ImplFontData* SalGraphics::AddTempDevFont( const String& rFontFileURL, const Str
return NULL;
if( ::ImplIsFontAvailable( maGraphicsData.mhDC, rFontName ) )
return NULL;
- if( !aTempFontList.AddFont( rFontFileURL ) )
+
+ // remember temp font for cleanup later
+ if( !ImplAddTempFont( *GetSalData(), rFontFileURL ) )
return NULL;
+ UINT nPreferedCharSet = DEFAULT_CHARSET;
+ if ( !aSalShlData.mbWNT )
+ {
+ // for W98 assume prefered charset capability of temp font
+ CHARSETINFO aCharSetInfo;
+ DWORD nCP = GetACP();
+ if ( TranslateCharsetInfo( (DWORD*)nCP, &aCharSetInfo, TCI_SRCCODEPAGE ) )
+ nPreferedCharSet = aCharSetInfo.ciCharset;
+ }
+
+ // create matching FontData struct
ImplFontData* pFontData = new ImplFontData;
pFontData->maName = rFontName;
pFontData->mnQuality = 1000;
pFontData->mbDevice = TRUE;
- pFontData->mpSysData = (void*)DEFAULT_CHARSET;
- pFontData->meCharSet = DEFAULT_CHARSET;
+ pFontData->mpSysData = (void*)nPreferedCharSet;
+ pFontData->meCharSet = nPreferedCharSet;
pFontData->meFamily = FAMILY_DONTKNOW;
pFontData->meWidthType = WIDTH_DONTKNOW;
pFontData->meWeight = WEIGHT_DONTKNOW;
@@ -1572,6 +1594,12 @@ ImplFontData* SalGraphics::AddTempDevFont( const String& rFontFileURL, const Str
pFontData->mbSubsettable= FALSE;
pFontData->mbEmbeddable = FALSE;
+#if 0 // TODO: improve ImplFontData using "FONTRES:" from *.fot file
+ pFontData->maSearchName = // using "FONTRES:" from file
+ if( rFontName != pFontData->maName )
+ pFontData->maMapName = rFontName;
+#endif
+
return pFontData;
}
@@ -1665,9 +1693,14 @@ void SalGraphics::GetDevFontList( ImplDevFontList* pList )
}
}
+// ----------------------------------------------------------------------------
+
+void SalGraphics::GetDevFontSubstList( OutputDevice* pOutDev )
+{}
+
// -----------------------------------------------------------------------
-BOOL SalGraphics::GetGlyphBoundRect( long nIndex, bool /*bIsGlyphIndex*/, Rectangle& rRect, const OutputDevice* )
+BOOL SalGraphics::GetGlyphBoundRect( long nIndex, Rectangle& rRect, const OutputDevice* )
{
HDC hDC = maGraphicsData.mhDC;
@@ -1688,20 +1721,17 @@ BOOL SalGraphics::GetGlyphBoundRect( long nIndex, bool /*bIsGlyphIndex*/, Rectan
else if( (nGGOFlags & GGO_GLYPH_INDEX) || (nIndex <= 255) )
nSize = ::GetGlyphOutlineA( hDC, nIndex, nGGOFlags, &aGM, 0, NULL, &aMat );
- if( !nSize ) // blank glyphs are ok
- rRect.SetEmpty();
- else if( nSize != GDI_ERROR )
- rRect = Rectangle( Point( aGM.gmptGlyphOrigin.x, -aGM.gmptGlyphOrigin.y ),
- Size( aGM.gmBlackBoxX, aGM.gmBlackBoxY ) );
- else
+ if( nSize == GDI_ERROR )
return false;
+ rRect = Rectangle( Point( +aGM.gmptGlyphOrigin.x, -aGM.gmptGlyphOrigin.y ),
+ Size( aGM.gmBlackBoxX, aGM.gmBlackBoxY ) );
return true;
}
// -----------------------------------------------------------------------
-BOOL SalGraphics::GetGlyphOutline( long nIndex, bool /*bIsGlyphIndex*/, PolyPolygon& rPolyPoly, const OutputDevice* )
+BOOL SalGraphics::GetGlyphOutline( long nIndex, PolyPolygon& rPolyPoly, const OutputDevice* )
{
rPolyPoly.Clear();
diff --git a/vcl/win/source/gdi/salprn.cxx b/vcl/win/source/gdi/salprn.cxx
index c1149a62af8c..3b85cbba3c71 100644
--- a/vcl/win/source/gdi/salprn.cxx
+++ b/vcl/win/source/gdi/salprn.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salprn.cxx,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: cd $ $Date: 2002-12-04 17:23:32 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:22 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -270,7 +270,7 @@ void SalInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList )
while ( nRead >= nSize-2 )
{
nSize += 2048;
- delete pBuf;
+ delete []pBuf;
pBuf = new char[nSize];
nRead = GetProfileStringA( aImplDevices, NULL, "", pBuf, nSize );
}
@@ -349,7 +349,7 @@ void SalInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList )
pName += nNameLen + 1;
}
- delete pBuf;
+ delete []pBuf;
rtl_freeMemory( pWinInfo2 );
}
@@ -451,7 +451,7 @@ static BOOL ImplTestSalJobSetup( SalInfoPrinter* pPrinter,
return TRUE;
else if ( bDelete )
{
- delete pSetupData->mpDriverData;
+ rtl_freeMemory( pSetupData->mpDriverData );
pSetupData->mpDriverData = NULL;
pSetupData->mnDriverDataLen = 0;
}
@@ -548,7 +548,7 @@ static BOOL ImplUpdateSalJobSetup( SalInfoPrinter* pPrinter, ImplJobSetup* pSetu
// Daten updaten
if ( pSetupData->mpDriverData )
- delete pSetupData->mpDriverData;
+ rtl_freeMemory( pSetupData->mpDriverData );
pSetupData->mnDriverDataLen = nDriverDataLen;
pSetupData->mpDriverData = (BYTE*)pOutBuffer;
pSetupData->mnSystem = JOBSETUP_SYSTEM_WINDOWS;
@@ -643,8 +643,10 @@ static void ImplDevModeToJobSetup( SalInfoPrinter* pPrinter, ImplJobSetup* pSetu
static BOOL ImplPaperSizeEqual( short nPaperWidth1, short nPaperHeight1,
short nPaperWidth2, short nPaperHeight2 )
{
- return (((nPaperWidth1 >= nPaperWidth2-1) && (nPaperWidth1 <= nPaperWidth2+1)) &&
- ((nPaperHeight1 >= nPaperHeight2-1) && (nPaperHeight1 <= nPaperHeight2+1)));
+ const short PAPER_SLOPPY = 1; // 0.1 mm accuracy
+
+ return ( (Abs( nPaperWidth1-nPaperWidth2 ) <= PAPER_SLOPPY) &&
+ (Abs( nPaperHeight1-nPaperHeight2 ) <= PAPER_SLOPPY) );
}
// -----------------------------------------------------------------------
@@ -689,7 +691,7 @@ static void ImplJobSetupToDevMode( SalInfoPrinter* pPrinter, ImplJobSetup* pSetu
pDevMode->dmPaperWidth = 0;
pDevMode->dmPaperLength = 0;
- switch( pDevMode->dmPaperSize )
+ switch( pSetupData->mePaperFormat )
{
case( PAPER_A3 ):
pDevMode->dmPaperSize = DMPAPER_A3;
@@ -722,6 +724,7 @@ static void ImplJobSetupToDevMode( SalInfoPrinter* pPrinter, ImplJobSetup* pSetu
WORD* pPapers = NULL;
ULONG nPaperSizeCount = ImplDeviceCaps( pPrinter, DC_PAPERSIZE, NULL, pSetupData );
POINT* pPaperSizes = NULL;
+ DWORD nLandscapeAngle = ImplDeviceCaps( pPrinter, DC_ORIENTATION, NULL, pSetupData );
if ( nPaperCount && (nPaperCount != ((ULONG)-1)) )
{
pPapers = new WORD[nPaperCount];
@@ -745,44 +748,36 @@ static void ImplJobSetupToDevMode( SalInfoPrinter* pPrinter, ImplJobSetup* pSetu
(short)pPaperSizes[i].x,
(short)pPaperSizes[i].y ) )
{
+ pDevMode->dmFields |= DM_ORIENTATION;
+ pDevMode->dmOrientation = DMORIENT_PORTRAIT;
nPaper = pPapers[i];
break;
}
}
- if ( nPaper )
- pDevMode->dmPaperSize = nPaper;
- else
+ // If the printer supports landscape orientation, check paper sizes again
+ // with landscape orientation. This is necessary as a printer driver provides
+ // all paper sizes with portrait orientation only!!
+ if ( !nPaper && nLandscapeAngle != 0 )
{
- // Fallback solution:
- // Use the paper format that matches best with our user format. Prefer bigger
- // formats to formats that would better fit but are smaller. This is needed
- // because of the strange printer driver handling of DMPAPER_USER in some cases!
- long nDelta = 0;
- BOOL bCurrSelPrnPaperFits = FALSE;
- for( ULONG i = 0; i < nPaperCount; i++ )
+ for ( ULONG i = 0; i < nPaperCount; i++ )
{
- long nSW = pSetupData->mnPaperWidth/10;
- long nSH = pSetupData->mnPaperHeight/10;
- long nPW = pPaperSizes[i].x;
- long nPH = pPaperSizes[i].y;
- BOOL bPrnPaperSmaller = (( nPW < nSW ) || ( nPH < nSH ));
- long nCurDelta = ((nPW - nSW)*(nPW - nSW) + (nPH - nSH)*(nPH - nSH));
-
- if (( nPaper == 0 ) ||
- ( !bCurrSelPrnPaperFits && !bPrnPaperSmaller ) ||
- ( !bCurrSelPrnPaperFits && ( nCurDelta < nDelta ) ) ||
- ( bCurrSelPrnPaperFits && !bPrnPaperSmaller && ( nCurDelta < nDelta ) ))
+ if ( ImplPaperSizeEqual( (short)(pSetupData->mnPaperWidth/10),
+ (short)(pSetupData->mnPaperHeight/10),
+ (short)pPaperSizes[i].y,
+ (short)pPaperSizes[i].x ) )
{
+
+ pDevMode->dmFields |= DM_ORIENTATION;
+ pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
nPaper = pPapers[i];
- nDelta = nCurDelta;
- bCurrSelPrnPaperFits = !bPrnPaperSmaller;
+ break;
}
}
-
- if ( nPaper >= 0 )
- pDevMode->dmPaperSize = nPaper;
}
+
+ if ( nPaper )
+ pDevMode->dmPaperSize = nPaper;
}
if ( !nPaper )
@@ -1310,7 +1305,7 @@ BOOL SalPrinter::StartJob( const XubString* pFileName,
delete [] lpszDeviceName;
if ( pDevMode != pOrgDevMode )
- delete pDevMode;
+ rtl_freeMemory( pDevMode );
if ( !hDC )
{
@@ -1479,7 +1474,7 @@ SalGraphics* SalPrinter::StartPage( ImplJobSetup* pSetupData, BOOL bNewJobData )
pDevMode = ImplSalSetCopies( pOrgDevMode, maPrinterData.mnCopies, maPrinterData.mbCollate );
ResetDC( hDC, pDevMode );
if ( pDevMode != pOrgDevMode )
- delete pDevMode;
+ rtl_freeMemory( pDevMode );
}
int nRet = ::StartPage( hDC );
if ( nRet <= 0 )
diff --git a/vcl/win/source/gdi/salvd.cxx b/vcl/win/source/gdi/salvd.cxx
index d9f79ce479a8..9bbc07f5f919 100644
--- a/vcl/win/source/gdi/salvd.cxx
+++ b/vcl/win/source/gdi/salvd.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salvd.cxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:05:49 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -110,7 +110,8 @@ SalVirtualDevice* SalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
{
SalVirtualDevice* pVDev = new SalVirtualDevice;
SalData* pSalData = GetSalData();
- SalGraphics* pVirGraphics = new SalGraphics;
+ SalGraphics* pVirGraphics = new SalGraphicsLayout;
+ pVirGraphics->SetLayout( 0 ); // by default no! mirroring for VirtualDevices, can be enabled with EnableRTL()
pVirGraphics->maGraphicsData.mhDC = hDC;
pVirGraphics->maGraphicsData.mhWnd = 0;
pVirGraphics->maGraphicsData.mbPrinter = FALSE;
diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx
index 5afae8995168..85c7c9f44a36 100755
--- a/vcl/win/source/gdi/winlayout.cxx
+++ b/vcl/win/source/gdi/winlayout.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: winlayout.cxx,v $
*
- * $Revision: 1.60 $
+ * $Revision: 1.61 $
*
- * last change: $Author: hdu $ $Date: 2002-12-06 17:27:03 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -87,46 +87,49 @@
class WinLayout : public SalLayout
{
public:
- WinLayout( HDC, const ImplLayoutArgs& );
+ WinLayout( HDC );
virtual void InitFont() const;
protected:
HDC mhDC;
HFONT mhFont;
+ int mnBaseAdv;
};
+#define DROPPED_OUTGLYPH 0xFFFF
+
// =======================================================================
class SimpleWinLayout : public WinLayout
{
public:
- SimpleWinLayout( HDC, const ImplLayoutArgs&
+ SimpleWinLayout( HDC hDC, BYTE nCharSet
#ifdef GCP_KERN_HACK
- , const KERNINGPAIR* pPairs, int nPairs
+ , const KERNINGPAIR* pPairs, int nPairs
#endif // GCP_KERN_HACK
);
virtual ~SimpleWinLayout();
virtual bool LayoutText( ImplLayoutArgs& );
+ virtual void AdjustLayout( ImplLayoutArgs& );
virtual void DrawText( SalGraphics& ) const;
virtual int GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos, int&,
long* pGlyphAdvances, int* pCharIndexes ) const;
- virtual Point GetCharPosition( int nCharPos, bool bRTL ) const;
virtual long FillDXArray( long* pDXArray ) const;
virtual int GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const;
- virtual void GetCaretPositions( long* ) const;
+ virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
// for glyph+font+script fallback
- virtual bool ApplyFallback( SalLayout& rFallback );
- virtual void UpdateGlyphPos( int nStart, int nNewXPos );
- virtual void RemoveNotdefs();
+ virtual void MoveGlyph( int nStart, long nNewXPos );
+ virtual void DropGlyph( int nStart );
+ virtual void Simplify( bool bIsBase );
protected:
void Justify( long nNewWidth );
- void ApplyDXArray( const long* pDXArray );
+ void ApplyDXArray( const ImplLayoutArgs& );
private:
int mnGlyphCount;
@@ -134,10 +137,14 @@ private:
WCHAR* mpOutGlyphs;
int* mpGlyphAdvances;
int* mpGlyphOrigAdvs;
- int* mpChars2Glyphs; // rel char pos, abs glyph pos
- int* mpGlyphs2Chars; // abs glyph pos, abs char pos
+ int* mpCharWidths; // map rel char pos to char width
+ int* mpChars2Glyphs; // map rel char pos to abs glyph pos
+ int* mpGlyphs2Chars; // map abs glyph pos to abs char pos
+ mutable long mnWidth;
+ bool mbDisableGlyphs;
+
int mnNotdefWidth;
- long mnWidth;
+ BYTE mnCharSet;
#ifdef GCP_KERN_HACK
const KERNINGPAIR* mpKerningPairs;
@@ -147,10 +154,10 @@ private:
// =======================================================================
-WinLayout::WinLayout( HDC hDC, const ImplLayoutArgs& rArgs )
-: SalLayout( rArgs ),
- mhDC( hDC ),
- mhFont( (HFONT)::GetCurrentObject(hDC,OBJ_FONT) )
+WinLayout::WinLayout( HDC hDC )
+: mhDC( hDC ),
+ mhFont( (HFONT)::GetCurrentObject(hDC,OBJ_FONT) ),
+ mnBaseAdv( 0 )
{}
// -----------------------------------------------------------------------
@@ -162,12 +169,12 @@ void WinLayout::InitFont() const
// =======================================================================
-SimpleWinLayout::SimpleWinLayout( HDC hDC, const ImplLayoutArgs& rArgs,
+SimpleWinLayout::SimpleWinLayout( HDC hDC, BYTE nCharSet
#ifdef GCP_KERN_HACK
- const KERNINGPAIR* pKerningPairs, int nKerningPairs
+ , const KERNINGPAIR* pKerningPairs, int nKerningPairs
#endif // GCP_KERN_HACK
)
-: WinLayout( hDC, rArgs ),
+: WinLayout( hDC ),
#ifdef GCP_KERN_HACK
mpKerningPairs( pKerningPairs ),
mnKerningPairs( nKerningPairs ),
@@ -177,20 +184,46 @@ SimpleWinLayout::SimpleWinLayout( HDC hDC, const ImplLayoutArgs& rArgs,
mpOutGlyphs( NULL ),
mpGlyphAdvances( NULL ),
mpGlyphOrigAdvs( NULL ),
+ mpCharWidths( NULL ),
mpChars2Glyphs( NULL ),
mpGlyphs2Chars( NULL ),
+ mnWidth( 0 ),
mnNotdefWidth( -1 ),
- mnWidth( 0 )
+ mnCharSet( nCharSet ),
+ mbDisableGlyphs( false )
+{
+ if( !aSalShlData.mbWNT )
+ mbDisableGlyphs = true;
+}
+
+// -----------------------------------------------------------------------
+
+SimpleWinLayout::~SimpleWinLayout()
+{
+ delete[] mpGlyphs2Chars;
+ delete[] mpChars2Glyphs;
+ if( mpCharWidths != mpGlyphAdvances )
+ delete[] mpCharWidths;
+ delete[] mpGlyphOrigAdvs;
+ delete[] mpGlyphAdvances;
+ delete[] mpOutGlyphs;
+}
+
+// -----------------------------------------------------------------------
+
+bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
{
- // TODO: use a cached value for bDisableGlyphs from upper layers
- if( (mnLayoutFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING) == 0 )
+ // prepare layout
+ // TODO: fix case when reusing object
+ mbDisableGlyphs |= ((rArgs.mnFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING) != 0);
+
+ // TODO: use a cached value for bDisableGlyphs from upper layers font info
+ if( !mbDisableGlyphs )
{
// Win32 glyph APIs have serious problems with vertical layout
// => workaround is to use the unicode methods then
- bool bDisableGlyphs = false;
-
if( rArgs.mnFlags & SAL_LAYOUT_VERTICAL )
- bDisableGlyphs = true;
+ mbDisableGlyphs = true;
else
{
// #99019# don't use glyph indices for non-TT fonts
@@ -200,43 +233,23 @@ SimpleWinLayout::SimpleWinLayout( HDC hDC, const ImplLayoutArgs& rArgs,
if( !::GetTextMetricsA( mhDC, &aTextMetricA )
|| !(aTextMetricA.tmPitchAndFamily & TMPF_TRUETYPE)
|| (aTextMetricA.tmPitchAndFamily & TMPF_DEVICE) )
- bDisableGlyphs = true;
+ mbDisableGlyphs = true;
}
-
- if( bDisableGlyphs )
- mnLayoutFlags |= SAL_LAYOUT_DISABLE_GLYPH_PROCESSING;
}
// TODO: use a cached value for bDisableAsianKern from upper layers
- if( mnLayoutFlags & SAL_LAYOUT_KERNING_ASIAN )
+ if( rArgs.mnFlags & SAL_LAYOUT_KERNING_ASIAN )
{
TEXTMETRICA aTextMetricA;
if( ::GetTextMetricsA( mhDC, &aTextMetricA )
&& !(aTextMetricA.tmPitchAndFamily & TMPF_FIXED_PITCH) )
- mnLayoutFlags &= ~SAL_LAYOUT_KERNING_ASIAN;
+ rArgs.mnFlags &= ~SAL_LAYOUT_KERNING_ASIAN;
}
-}
-
-// -----------------------------------------------------------------------
-SimpleWinLayout::~SimpleWinLayout()
-{
- delete[] mpGlyphs2Chars;
- delete[] mpChars2Glyphs;
- delete[] mpGlyphOrigAdvs;
- delete[] mpGlyphAdvances;
- delete[] mpOutGlyphs;
-}
-
-// -----------------------------------------------------------------------
-
-bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
-{
// layout text
- mnGlyphCount = 0;
- int nMaxGlyphCount = rArgs.mnEndCharPos - rArgs.mnMinCharPos;
int i, j;
+ mnGlyphCount = 0;
bool bVertical = (rArgs.mnFlags & SAL_LAYOUT_VERTICAL) != 0;
if( !bVertical )
{
@@ -246,17 +259,18 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
}
const sal_Unicode* pBidiStr;
- if( mnGlyphCount == nMaxGlyphCount )
+ mnCharCount = rArgs.mnEndCharPos - rArgs.mnMinCharPos;
+ if( mnGlyphCount == mnCharCount )
pBidiStr = rArgs.mpStr + rArgs.mnMinCharPos;
else
{
// rewrite pBidiStr when right to left/partial fallback runs/vertical layout
- sal_Unicode* pStr = (sal_Unicode*)alloca( nMaxGlyphCount * sizeof(sal_Unicode) );
+ sal_Unicode* pStr = (sal_Unicode*)alloca( mnCharCount * sizeof(sal_Unicode) );
// note: glyph to char mapping is relative to first character
- mpChars2Glyphs = new int[ nMaxGlyphCount ];
- mpGlyphs2Chars = new int[ nMaxGlyphCount ];
+ mpChars2Glyphs = new int[ mnCharCount ];
+ mpGlyphs2Chars = new int[ mnCharCount ];
- for( i = 0; i < nMaxGlyphCount; ++i )
+ for( i = 0; i < mnCharCount; ++i )
mpChars2Glyphs[i] = mpGlyphs2Chars[i] = -1;
mnGlyphCount = 0;
@@ -296,17 +310,15 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
}
}
pBidiStr = pStr;
- nMaxGlyphCount = mnGlyphCount;
}
- DWORD nGcpOption = 0;
-
- mpOutGlyphs = new WCHAR[ nMaxGlyphCount ];
- mpGlyphAdvances = new int[ nMaxGlyphCount ];
+ mpOutGlyphs = new WCHAR[ mnGlyphCount ];
+ mpGlyphAdvances = new int[ mnGlyphCount ];
if( rArgs.mnFlags & (SAL_LAYOUT_KERNING_PAIRS | SAL_LAYOUT_KERNING_ASIAN) )
- mpGlyphOrigAdvs = new int[ nMaxGlyphCount ];
+ mpGlyphOrigAdvs = new int[ mnGlyphCount ];
+ DWORD nGcpOption = 0;
#ifndef GCP_KERN_HACK
// enable kerning if requested
if( rArgs.mnFlags & SAL_LAYOUT_KERNING_PAIRS )
@@ -321,12 +333,12 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
aGCPW.lpDx = mpGlyphAdvances;
aGCPW.lpCaretPos = NULL;
aGCPW.lpClass = NULL;
- aGCPW.nGlyphs = nMaxGlyphCount;
+ aGCPW.nGlyphs = mnGlyphCount;
aGCPW.nMaxFit = 0;
aGCPW.lpOrder = NULL;
// get glyphs/outstring and kerned placement
- if( mnLayoutFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING )
+ if( mbDisableGlyphs )
{
aGCPW.lpOutString = mpOutGlyphs;
aGCPW.lpGlyphs = NULL;
@@ -336,7 +348,7 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
aGCPW.lpOutString = NULL;
aGCPW.lpGlyphs = mpOutGlyphs;
}
- nRC = ::GetCharacterPlacementW( mhDC, pBidiStr, nMaxGlyphCount,
+ nRC = ::GetCharacterPlacementW( mhDC, pBidiStr, mnGlyphCount,
0, &aGCPW, nGcpOption );
mnGlyphCount = aGCPW.lpGlyphs ? aGCPW.nGlyphs : aGCPW.nMaxFit;
@@ -345,75 +357,57 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
if( rArgs.mnFlags & SAL_LAYOUT_KERNING_PAIRS )
{
aGCPW.lpDx = mpGlyphOrigAdvs;
- nRC = ::GetCharacterPlacementW( mhDC, pBidiStr, nMaxGlyphCount,
+ nRC = ::GetCharacterPlacementW( mhDC, pBidiStr, mnGlyphCount,
0, &aGCPW, (nGcpOption & ~GCP_USEKERNING) );
}
#endif // GCP_KERN_HACK
}
else
{
- // TODO: emulate full GetCharacterPlacementW on non-unicode OS
- // TODO: move into uwinapi.dll
- // convert into ANSI code page
- int nMBLen = ::WideCharToMultiByte( CP_ACP,
- WC_COMPOSITECHECK | WC_DISCARDNS | WC_DEFAULTCHAR,
- pBidiStr, nMaxGlyphCount, NULL, 0, NULL, NULL );
- if( (nMBLen <= 0) || (nMBLen >= 8 * nMaxGlyphCount) )
- return false;
- char* const pMBStr = (char*)alloca( nMBLen+1 );
- ::WideCharToMultiByte( CP_ACP,
- WC_COMPOSITECHECK | WC_DISCARDNS | WC_DEFAULTCHAR,
- pBidiStr, nMaxGlyphCount, pMBStr, nMBLen, NULL, NULL );
-
- // resize arrays if needed
- int nArraySize = nMaxGlyphCount;
- if( nArraySize < nMBLen )
- nArraySize = nMBLen;
-
- if( nArraySize > nMaxGlyphCount )
+ if( mbDisableGlyphs )
{
- delete[] mpGlyphAdvances;
- delete[] mpOutGlyphs;
- mpGlyphAdvances = new int[ nArraySize ];
- mpOutGlyphs = new WCHAR[ nArraySize ];
- if( mpGlyphOrigAdvs )
+ // GetCharacterPlacementW replacement on non-W platforms:
+ // in no-glyphs case unicode chars are interpreted as glyphs
+ nRC = 0;
+ for( i = 0; i < mnGlyphCount; ++i )
{
- delete[] mpGlyphOrigAdvs;
- mpGlyphOrigAdvs = new int[ nArraySize ];
+ WCHAR cChar = pBidiStr[ i ];
+ mpOutGlyphs[ i ] = cChar;
+ ::GetCharWidthW( mhDC, cChar, cChar, &mpGlyphAdvances[i] );
+ nRC += mpGlyphAdvances[i];
}
}
-
- // get glyphs/outstring and placement
- GCP_RESULTSA aGCPA;
- aGCPA.lStructSize = sizeof(aGCPA);
- aGCPA.lpDx = mpGlyphAdvances;
- aGCPA.lpCaretPos = NULL;
- aGCPA.lpClass = NULL;
- aGCPA.nMaxFit = 0;
- aGCPA.nGlyphs = nArraySize;
- aGCPA.lpOrder = NULL;
-
- // resize arrays if needed
- if( mnLayoutFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING )
- {
- aGCPA.lpGlyphs = NULL;
- aGCPA.lpOutString = reinterpret_cast<char*>(mpOutGlyphs);
- }
else
{
+ // TODO: emulate full GetCharacterPlacementW on non-unicode OS
+ // TODO: move into uwinapi.dll
+ // convert into ANSI code page
+ int nMBLen = ::WideCharToMultiByte( mnCharSet,
+ WC_COMPOSITECHECK | WC_DISCARDNS | WC_DEFAULTCHAR,
+ pBidiStr, mnGlyphCount, NULL, 0, NULL, NULL );
+ if( (nMBLen <= 0) || (nMBLen >= 8 * mnGlyphCount) )
+ return false;
+ char* const pMBStr = (char*)alloca( nMBLen+1 );
+ ::WideCharToMultiByte( mnCharSet,
+ WC_COMPOSITECHECK | WC_DISCARDNS | WC_DEFAULTCHAR,
+ pBidiStr, mnGlyphCount, pMBStr, nMBLen, NULL, NULL );
+
+ // get glyphs/outstring and placement
+ GCP_RESULTSA aGCPA;
+ aGCPA.lStructSize = sizeof(aGCPA);
+ aGCPA.lpDx = mpGlyphAdvances;
+ aGCPA.lpCaretPos = NULL;
+ aGCPA.lpClass = NULL;
+ aGCPA.nMaxFit = 0;
+ aGCPA.nGlyphs = mnGlyphCount;
+ aGCPA.lpOrder = NULL;
+
aGCPA.lpGlyphs = mpOutGlyphs;
aGCPA.lpOutString = NULL;
- }
- nRC = ::GetCharacterPlacementA( mhDC, pMBStr, nMBLen,
- 0, &aGCPA, nGcpOption );
- // TODO: check lpDxA->lpDxW mapping
- if( aGCPA.lpGlyphs )
+ nRC = ::GetCharacterPlacementA( mhDC, pMBStr, nMBLen, 0, &aGCPA, nGcpOption );
+
mnGlyphCount = aGCPA.nGlyphs;
- else
- {
- mnCharCount = aGCPA.nMaxFit;
- mnGlyphCount = nMaxGlyphCount;
}
#ifndef GCP_KERN_HACK
@@ -424,23 +418,6 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
0, &aGCPA, (nGcpOption & ~GCP_USEKERNING) );
}
#endif // GCP_KERN_HACK
-
- if( aGCPA.lpOutString && (mnGlyphCount != mnCharCount) )
- {
- const char* pAnsiStr = aGCPA.lpOutString;
-
- // adjust advance widths when DBCS present
- int* pAnsiAdv = new int[ mnCharCount ];
- for( int i = 0, j = 0; i < mnCharCount; ++j, ++i )
- {
- pAnsiAdv[i] = mpGlyphAdvances[j];
- if( (pAnsiStr[i] & 0x80) && ::IsDBCSLeadByte( pAnsiStr[i] ) )
- pAnsiAdv[ ++i ] = 0; // trailing byte advance width
- }
- DBG_ASSERT( (j==mnGlyphCount), "SimpleWinLayout::DrawTextA DBCS mismatch" );
- delete[] mpGlyphAdvances;
- mpGlyphAdvances = pAnsiAdv;
- }
}
// cache essential layout properties
@@ -454,40 +431,56 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
for( i = 0; i < mnGlyphCount; ++i )
{
// we are only interested in notdef candidates
- if( (mpGlyphAdvances[i] != 0) && (mpOutGlyphs[i] != 0) )
- continue;
+ if( mbDisableGlyphs )
+ {
+ // TODO: improve heurisitics for non-GlyphIndexing NotDef detection
+ if( mpGlyphAdvances[i] != 0 )
+ continue;
+ }
+ else
+ {
+ // TODO: improve heuristic below
+ // problem is some fonts seem to have NotDef at glyphids 0,3,4
+ if( (mpGlyphAdvances[i] != 0) || (mpOutGlyphs[i] > 4) )
+ if( mpOutGlyphs[i] != 0 )
+ continue;
+ }
// request fallback
bool bRTL = false; // TODO: get from run
- int nCharPos = mpGlyphs2Chars ? mpGlyphs2Chars[i]: rArgs.mnMinCharPos+i;
+ int nCharPos = mpGlyphs2Chars ? mpGlyphs2Chars[i]: i + rArgs.mnMinCharPos;
rArgs.NeedFallback( nCharPos, bRTL );
- // insert a dummy in the meantime
- if( mnNotdefWidth < 0 )
+ if( rArgs.mnFlags & SAL_LAYOUT_FOR_FALLBACK )
{
- SIZE aExtent;
- WCHAR cNotDef = pBidiStr[ nCharPos ];
- mnNotdefWidth = GetTextExtentPoint32W(mhDC,&cNotDef,1,&aExtent) ? aExtent.cx : 0;
+ // for fallbacks a NotDef glyph isn't interesting
+ mpOutGlyphs[i] = DROPPED_OUTGLYPH;
+ mnNotdefWidth = 0;
+ }
+ else
+ {
+ if( mnNotdefWidth < 0 )
+ {
+ SIZE aExtent;
+ WCHAR cNotDef = rArgs.mpStr[ nCharPos ];
+ mnNotdefWidth = ::GetTextExtentPoint32W(mhDC,&cNotDef,1,&aExtent) ? aExtent.cx : 0;
+ }
+ // use a better NotDef glyph
+ if( !mbDisableGlyphs )
+ mpOutGlyphs[i] = 0;
}
- if( !(mnLayoutFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING) )
- mpOutGlyphs[i] = 0;
mnWidth += mnNotdefWidth - mpGlyphAdvances[i];
mpGlyphAdvances[i] = mnNotdefWidth;
if( mpGlyphOrigAdvs )
mpGlyphOrigAdvs[i] = mnNotdefWidth;
}
- // adjust positions if requested
- if( rArgs.mpDXArray )
- ApplyDXArray( rArgs.mpDXArray );
- else if( rArgs.mnLayoutWidth )
- Justify( rArgs.mnLayoutWidth );
#ifdef GCP_KERN_HACK
- else if( rArgs.mnFlags & (SAL_LAYOUT_KERNING_ASIAN|SAL_LAYOUT_KERNING_PAIRS) )
+ if( rArgs.mnFlags & (SAL_LAYOUT_KERNING_ASIAN|SAL_LAYOUT_KERNING_PAIRS) )
{
#else // GCP_KERN_HACK
- else if( rArgs.mnFlags & SAL_LAYOUT_KERNING_ASIAN )
+ if( rArgs.mnFlags & SAL_LAYOUT_KERNING_ASIAN )
{
if( !(rArgs.mnFlags & SAL_LAYOUT_KERNING_PAIRS) )
#endif // GCP_KERN_HACK
@@ -532,6 +525,22 @@ bool SimpleWinLayout::LayoutText( ImplLayoutArgs& rArgs )
}
}
+ // calculate virtual char widths
+ if( !mpGlyphs2Chars )
+ mpCharWidths = mpGlyphAdvances;
+ else
+ {
+ mpCharWidths = new int[ mnCharCount ];
+ for( i = 0; i < mnCharCount; ++i )
+ mpCharWidths[ i ] = 0;
+ for( i = 0; i < mnGlyphCount; ++i )
+ {
+ int j = mpGlyphs2Chars[ i ] - rArgs.mnMinCharPos;
+ if( j >= 0 )
+ mpCharWidths[ j ] += mpGlyphAdvances[ i ];
+ }
+ }
+
return true;
}
@@ -559,7 +568,7 @@ int SimpleWinLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos, int& n
{
// update returned values
long nGlyphIndex = mpOutGlyphs[ nStart ];
- if( mnLayoutFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING )
+ if( mbDisableGlyphs )
{
if( mnLayoutFlags & SAL_LAYOUT_VERTICAL )
nGlyphIndex |= GetVerticalFlags( nGlyphIndex & GF_IDXMASK );
@@ -571,7 +580,11 @@ int SimpleWinLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos, int& n
*(pGlyphAdvances++) = mpGlyphAdvances[ nStart ];
if( pCharIndexes )
{
- int nCharPos = mpGlyphs2Chars ? mpGlyphs2Chars[nStart] : nStart;
+ int nCharPos;
+ if( !mpGlyphs2Chars )
+ nCharPos = nStart + mnMinCharPos;
+ else
+ nCharPos = mpGlyphs2Chars[nStart];
*(pCharIndexes++) = nCharPos;
}
// stop at last glyph
@@ -595,11 +608,11 @@ void SimpleWinLayout::DrawText( SalGraphics& ) const
return;
UINT mnDrawOptions = ETO_GLYPH_INDEX;
- if( mnLayoutFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING )
+ if( mbDisableGlyphs )
mnDrawOptions = 0;
#ifndef DEBUG_GETNEXTGLYPHS
- Point aPos = GetDrawPosition();
+ Point aPos = GetDrawPosition( Point( mnBaseAdv, 0 ) );
if( mnDrawOptions || aSalShlData.mbWNT )
{
@@ -608,9 +621,21 @@ void SimpleWinLayout::DrawText( SalGraphics& ) const
}
else
{
- const char* pAnsiStr = (char*)mpOutGlyphs;
- ::ExtTextOutA( mhDC, aPos.X(), aPos.Y(), mnDrawOptions, NULL,
- pAnsiStr, mnCharCount, mpGlyphAdvances );
+ if( !mpGlyphOrigAdvs )
+ ::ExtTextOutW( mhDC, aPos.X(), aPos.Y(), 0, NULL,
+ mpOutGlyphs, mnGlyphCount, NULL );
+ else
+ {
+ // workaround for problem in #106259#
+ long nXPos = mnBaseAdv;
+ for( int i = 0; i < mnGlyphCount; ++i )
+ {
+ ::ExtTextOutW( mhDC, aPos.X(), aPos.Y(), 0, NULL,
+ mpOutGlyphs+i, 1, NULL );
+ nXPos += mpGlyphAdvances[ i ];
+ aPos = GetDrawPosition( Point( nXPos, 0 ) );
+ }
+ }
}
#else // DEBUG_GETNEXTGLYPHS
#define MAXGLYPHCOUNT 8
@@ -642,35 +667,43 @@ void SimpleWinLayout::DrawText( SalGraphics& ) const
long SimpleWinLayout::FillDXArray( long* pDXArray ) const
{
- if( mnWidth && !pDXArray )
- return mnWidth;
-
- long nWidth = 0;
+ if( !mnWidth )
+ {
+ long mnWidth = mnBaseAdv;
+ for( int i = 0; i < mnGlyphCount; ++i )
+ mnWidth += mpGlyphAdvances[ i ];
+ }
- for( int i = 0; i < mnGlyphCount; ++i )
+ if( pDXArray != NULL )
{
- int j = !mpChars2Glyphs ? i : mpChars2Glyphs[i];
- nWidth += mpGlyphAdvances[j];
- if( pDXArray )
- pDXArray[i] = nWidth;
+ for( int i = 0; i < mnCharCount; ++i )
+ pDXArray[ i ] = mpCharWidths[ i ];
}
- return nWidth;
+ return mnWidth;
}
// -----------------------------------------------------------------------
int SimpleWinLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
{
- long nWidth = 0;
+ // NOTE: the factor prevents rounding errors for small nCharExtra values
+ if( mnWidth )
+ if( mnWidth * nFactor <= nMaxWidth )
+ return STRING_LEN;
- for( int i = 0; i < mnGlyphCount; ++i )
+ long nExtraWidth = mnBaseAdv * nFactor;
+ for( int i = 0; i < mnCharCount; ++i )
{
- int j = !mpChars2Glyphs ? i : mpChars2Glyphs[i];
- nWidth += mpGlyphAdvances[j] * nFactor;
- if( nWidth >= nMaxWidth )
- return (mnMinCharPos + i);
- nWidth += nCharExtra;
+ nExtraWidth += mpCharWidths[ i ] * nFactor;
+ if( nExtraWidth >= nMaxWidth )
+ {
+ if( mpGlyphs2Chars )
+ return mpGlyphs2Chars[ i ];
+ else
+ return (mnMinCharPos + i);
+ }
+ nExtraWidth += nCharExtra;
}
return STRING_LEN;
@@ -678,14 +711,13 @@ int SimpleWinLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor
// -----------------------------------------------------------------------
-void SimpleWinLayout::GetCaretPositions( long* pCaretXArray ) const
+void SimpleWinLayout::GetCaretPositions( int nMaxIdx, long* pCaretXArray ) const
{
long nXPos = 0;
- int nMaxIdx = 2 * (mnEndCharPos - mnMinCharPos), i;
if( !mpGlyphs2Chars )
{
- for( i = 0; i < nMaxIdx; i += 2 )
+ for( int i = 0; i < nMaxIdx; i += 2 )
{
pCaretXArray[ i ] = nXPos;
nXPos += mpGlyphAdvances[ i>>1 ];
@@ -694,6 +726,7 @@ void SimpleWinLayout::GetCaretPositions( long* pCaretXArray ) const
}
else
{
+ int i;
for( i = 0; i < nMaxIdx; ++i )
pCaretXArray[ i ] = -1;
@@ -732,46 +765,6 @@ void SimpleWinLayout::GetCaretPositions( long* pCaretXArray ) const
// -----------------------------------------------------------------------
-Point SimpleWinLayout::GetCharPosition( int nCharPos, bool bRTL ) const
-{
- //TODO: implement reordering using mpChars2Glyphs[i]
- long nXPos = 0;
-
- if( mnGlyphCount <= 0 )
- return Point( nXPos, 0 );
-
- if( !bRTL ) // relative to left edge
- {
- int nCharLimit = mnEndCharPos;
- if( nCharLimit > nCharPos )
- nCharLimit = nCharPos;
- nCharLimit -= mnMinCharPos;
- for( int i = 0; i < nCharLimit; ++i )
- {
- int j = !mpChars2Glyphs ? i : mpChars2Glyphs[i];
- if( j >= 0 )
- nXPos += mpGlyphAdvances[j];
- }
- }
- else // relative to right edge?
- {
- int nCharStart = nCharPos - mnMinCharPos;
- if( nCharStart < 0 )
- nCharStart = 0;
- int nCharLimit = mnEndCharPos - mnMinCharPos;
- for( int i = nCharStart; i < nCharLimit; ++i )
- {
- int j = !mpChars2Glyphs ? i : mpChars2Glyphs[i];
- if( j >= 0 )
- nXPos -= mpGlyphAdvances[j];
- }
- }
-
- return Point( nXPos, 0 );
-}
-
-// -----------------------------------------------------------------------
-
void SimpleWinLayout::Justify( long nNewWidth )
{
long nOldWidth = mnWidth;
@@ -802,11 +795,46 @@ void SimpleWinLayout::Justify( long nNewWidth )
// -----------------------------------------------------------------------
-void SimpleWinLayout::ApplyDXArray( const long* pDXArray )
+void SimpleWinLayout::AdjustLayout( ImplLayoutArgs& rArgs )
+{
+ SalLayout::AdjustLayout( rArgs );
+
+ // adjust positions if requested
+ if( rArgs.mpDXArray )
+ ApplyDXArray( rArgs );
+ else if( rArgs.mnLayoutWidth )
+ Justify( rArgs.mnLayoutWidth );
+
+ // recalculate virtual char widths
+ if( mpCharWidths != mpGlyphAdvances )
+ {
+ int i;
+ if( mpGlyphs2Chars )
+ for( i = 0; i < mnGlyphCount; ++i )
+ mpCharWidths[ i ] = mpGlyphAdvances[ i ];
+ else
+ {
+ for( i = 0; i < mnCharCount; ++i )
+ mpCharWidths[ i ] = 0;
+ for( i = 0; i < mnGlyphCount; ++i )
+ {
+ int j = mpGlyphs2Chars[ i ] - rArgs.mnMinCharPos;
+ if( j >= 0 )
+ mpCharWidths[ j ] += mpGlyphAdvances[ i ];
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void SimpleWinLayout::ApplyDXArray( const ImplLayoutArgs& rArgs )
{
// try to avoid disturbance of text flow for LSB rounding case;
+ const long* pDXArray = rArgs.mpDXArray;
+
int i = 0;
- long nOldWidth = 0;
+ long nOldWidth = mnBaseAdv;
for(; i < mnGlyphCount; ++i )
{
int j = !mpChars2Glyphs ? i : mpChars2Glyphs[i];
@@ -834,7 +862,7 @@ void SimpleWinLayout::ApplyDXArray( const long* pDXArray )
mpGlyphOrigAdvs[ i ] = mpGlyphAdvances[ i ];
}
- mnWidth = 0;
+ mnWidth = mnBaseAdv;
for( i = 0; i < mnGlyphCount; ++i )
{
int j = !mpChars2Glyphs ? i : mpChars2Glyphs[i];
@@ -846,47 +874,117 @@ void SimpleWinLayout::ApplyDXArray( const long* pDXArray )
// -----------------------------------------------------------------------
-bool SimpleWinLayout::ApplyFallback( SalLayout& rFallback )
+void SimpleWinLayout::MoveGlyph( int nStart, long nNewXPos )
{
- // TODO: implement
- return false;
+ if( nStart >= mnGlyphCount )
+ return;
+ // TODO: cache absolute positions
+ int nDelta = mnBaseAdv;
+ for( int i = 0; i < nStart; ++i )
+ nDelta += mpGlyphAdvances[ i ];
+ nDelta = nNewXPos - nDelta;
+ if( mnWidth )
+ {
+ // when width is cached it needs to be adjusted
+ mnWidth += nDelta;
+ }
+ if( nStart > 0 )
+ {
+ // adjust virtual width when inbetween
+ mpGlyphAdvances[ nStart-1 ] += nDelta;
+ }
+ else
+ {
+ // change offset when first glyph has fallback
+ mnBaseAdv = nNewXPos;
+ }
}
// -----------------------------------------------------------------------
-void SimpleWinLayout::UpdateGlyphPos( int nStart, int nNewXPos )
+void SimpleWinLayout::DropGlyph( int nStart )
{
- if( nStart >= mnGlyphCount )
- return;
-
- int nCurXPos = 0, i;
- for( i = 0; i < nStart; ++i )
- nCurXPos += mpGlyphAdvances[ i ];
- if( i > 0 )
- mpGlyphAdvances[ i-1 ] += nNewXPos - nCurXPos;
- // TODO: change offset when first glyph gets removed
+ mpOutGlyphs[ nStart ] = DROPPED_OUTGLYPH;
}
// -----------------------------------------------------------------------
-void SimpleWinLayout::RemoveNotdefs()
+void SimpleWinLayout::Simplify( bool bIsBase )
{
- // TODO: change offset when first glyph gets removed
- for( int i = 0, j = 0; i < mnGlyphCount; ++i )
+ // return early if no glyph is dropped
+ int i = mnGlyphCount;
+ while( (--i >= 0) && (mpOutGlyphs[ i ] != DROPPED_OUTGLYPH) );
+ if( i < 0 )
+ return;
+
+ // convert to sparse layout when glyphs are dropped
+ if( !mpGlyphs2Chars )
{
- if( i != j )
+ mpGlyphs2Chars = new int[ mnGlyphCount ];
+ mpCharWidths = new int[ mnCharCount ];
+ // assertion: mnGlyphCount == mnCharCount
+ for( int k = 0; k < mnGlyphCount; ++k )
{
- mpOutGlyphs[ j ] = mpOutGlyphs[ i ];
- mpGlyphAdvances[ j ] = mpGlyphAdvances[ i ];
- mpGlyphOrigAdvs[ j ] = mpGlyphOrigAdvs[ i ];
+ mpGlyphs2Chars[ k ] = k + mnMinCharPos;
+ mpCharWidths[ k ] = mpGlyphAdvances[ k ];
}
+ }
+
+ // when glyphs at end have been removed => reduce width
+ for( i = mnGlyphCount; --i >= 0; )
+ {
+ if( mpOutGlyphs[ i ] != DROPPED_OUTGLYPH )
+ break;
+ mnWidth -= mpGlyphAdvances[ i ];
+ int c = mpGlyphs2Chars[ i ] - mnMinCharPos;
+ if( c >= 0 )
+ mpCharWidths[ c ] = 0;
+ }
+ mnGlyphCount = i + 1;
+
+ // keep original widths around
+ if( !mpGlyphOrigAdvs )
+ {
+ mpGlyphOrigAdvs = new int[ mnGlyphCount ];
+ for( int k = 0; k < mnGlyphCount; ++k )
+ mpGlyphOrigAdvs[ k ] = mpGlyphAdvances[ k ];
+ }
+
+ // skip to first dropped glyph
+ for( i = 0; i < mnGlyphCount; ++i )
+ if( mpOutGlyphs[ i ] != DROPPED_OUTGLYPH )
+ break;
+
+ // remove dropped glyphs inbetween
+ int nNewGC = i;
+ for(; i < mnGlyphCount; ++i )
+ {
+ mpOutGlyphs[ nNewGC ] = mpOutGlyphs[ i ];
+ mpGlyphAdvances[ nNewGC ] = mpGlyphAdvances[ i ];
+ mpGlyphOrigAdvs[ nNewGC ] = mpGlyphOrigAdvs[ i ];
+ mpGlyphs2Chars[ nNewGC ] = mpGlyphs2Chars[ i ];
- // we are only interested in NotDef candidates
- if( mpOutGlyphs[ i ] == 0 )
- mpGlyphAdvances[ j ] += mpGlyphAdvances[ i ];
+ if( mpOutGlyphs[ i ] != DROPPED_OUTGLYPH )
+ {
+ ++nNewGC;
+ continue;
+ }
+
+ // zero virtual char width for fallback char
+ int c = mpGlyphs2Chars[ i ] - mnMinCharPos;
+ if( c >= 0 )
+ mpCharWidths[ c ] = 0;
+
+ // adjust positions for dropped glyph
+ if( nNewGC > 0 )
+ mpGlyphAdvances[ nNewGC-1 ] += mpGlyphAdvances[ i ];
else
- ++j;
+ mnBaseAdv += mpGlyphAdvances[ i ];
}
+
+ mnGlyphCount = nNewGC;
+ if( mnGlyphCount <= 0 )
+ mnWidth = mnBaseAdv = 0;
}
// =======================================================================
@@ -896,39 +994,45 @@ void SimpleWinLayout::RemoveNotdefs()
struct VisualItem
{
+public:
SCRIPT_ITEM* mpScriptItem;
int mnMinGlyphPos;
int mnEndGlyphPos;
int mnMinCharPos;
int mnEndCharPos;
- long mnPixelWidth;
+ //long mnPixelWidth;
+ int mnXOffset;
ABC maABCWidths;
+
+public:
+ bool IsEmpty() const { return (mnEndGlyphPos <= 0); }
};
class UniscribeLayout : public WinLayout
{
public:
- UniscribeLayout( HDC hDC, const ImplLayoutArgs& );
- virtual ~UniscribeLayout();
+ UniscribeLayout( HDC );
virtual bool LayoutText( ImplLayoutArgs& );
+ virtual void AdjustLayout( ImplLayoutArgs& );
virtual void DrawText( SalGraphics& ) const;
virtual int GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos, int&,
long* pGlyphAdvances, int* pCharPosAry ) const;
virtual long FillDXArray( long* pDXArray ) const;
virtual int GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const;
- virtual void GetCaretPositions( long* ) const;
- virtual Point GetCharPosition( int nCharPos, bool bRTL ) const;
+ virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
// for glyph+font+script fallback
- virtual bool ApplyFallback( SalLayout& rFallback );
- virtual void UpdateGlyphPos( int nStart, int nNewXPos );
- virtual void RemoveNotdefs();
+ virtual void MoveGlyph( int nStart, long nNewXPos );
+ virtual void DropGlyph( int nStart );
+ virtual void Simplify( bool bIsBase );
protected:
+ virtual ~UniscribeLayout();
+
void Justify( long nNewWidth );
- void ApplyDXArray( const long* pDXArray );
+ void ApplyDXArray( const ImplLayoutArgs& );
bool GetItemSubrange( const VisualItem& rVisualItem,
int& rMinIndex, int& rEndIndex ) const;
@@ -942,8 +1046,8 @@ private:
// string specific info
// everything is in logical order
int mnCharCapacity;
- WORD* mpLogClusters;
- int* mpCharWidths;
+ WORD* mpLogClusters; // mapping relative to script items
+ int* mpCharWidths; // map abs char pos to char width
int mnSubStringMin;
// glyph specific info
@@ -955,7 +1059,7 @@ private:
WORD* mpOutGlyphs;
GOFFSET* mpGlyphOffsets;
SCRIPT_VISATTR* mpVisualAttrs;
- int* mpGlyphs2Chars;
+ mutable int* mpGlyphs2Chars; // map abs glyph pos to abs char pos
// platform specific info
mutable SCRIPT_CACHE maScriptCache;
@@ -1053,8 +1157,8 @@ static bool InitUSP()
// -----------------------------------------------------------------------
-UniscribeLayout::UniscribeLayout( HDC hDC, const ImplLayoutArgs& rArgs )
-: WinLayout( hDC, rArgs ),
+UniscribeLayout::UniscribeLayout( HDC hDC )
+: WinLayout( hDC ),
maScriptCache( NULL ),
mnItemCount(0),
mpScriptItems( NULL ),
@@ -1077,7 +1181,8 @@ UniscribeLayout::UniscribeLayout( HDC hDC, const ImplLayoutArgs& rArgs )
UniscribeLayout::~UniscribeLayout()
{
- (*pScriptFreeCache)( &maScriptCache );
+ if( maScriptCache )
+ (*pScriptFreeCache)( &maScriptCache );
delete[] mpScriptItems;
delete[] mpVisualItems;
@@ -1095,6 +1200,29 @@ UniscribeLayout::~UniscribeLayout()
bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
{
+ // for fallback layout prepare to drop unneeded glyphs
+ typedef std::vector<int> TIntVector;
+ TIntVector aDropChars;
+ if( rArgs.mnFlags & SAL_LAYOUT_FOR_FALLBACK )
+ {
+ // calculate superfluous context char positions
+ aDropChars.push_back( 0 );
+ aDropChars.push_back( rArgs.mnLength );
+ int nMin, nEnd;
+ for( bool bRTL; rArgs.GetNextRun( &nMin, &nEnd, &bRTL ); )
+ {
+ aDropChars.push_back( nMin );
+ aDropChars.push_back( nEnd );
+ }
+ // prepare aDropChars for binary search
+ std::sort( aDropChars.begin(), aDropChars.end() );
+ }
+
+ // prepare layout
+ // TODO: fix case when reusing object
+ mnMinCharPos = rArgs.mnMinCharPos;
+ mnEndCharPos = rArgs.mnEndCharPos;
+
// determine script items from string
// TODO: try to avoid itemization since it costs a lot of performance
SCRIPT_STATE aScriptState = {0,false,false,false,false,false,false,false,false,0,0};
@@ -1103,7 +1231,8 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
aScriptState.fDigitSubstitute = (0 != (rArgs.mnFlags & SAL_LAYOUT_SUBSTITUTE_DIGITS));
aScriptState.fArabicNumContext = aScriptState.fDigitSubstitute & aScriptState.uBidiLevel;
DWORD nLangId = 0; // TODO: get language from font
- SCRIPT_CONTROL aScriptControl = {nLangId,false,false,false,false,false,true,false,false,0};
+ SCRIPT_CONTROL aScriptControl = {nLangId,false,false,false,false,false,false,false,false,0};
+ aScriptControl.fNeutralOverride = aScriptState.fOverrideDirection;
aScriptControl.fContextDigits = (0 != (rArgs.mnFlags & SAL_LAYOUT_SUBSTITUTE_DIGITS));
// determine relevant substring and work only on it
// when Bidi status is unknown we need to look at the whole string though
@@ -1111,8 +1240,14 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
int nSubStringEnd = rArgs.mnLength;
if( aScriptState.fOverrideDirection )
{
+#if (_MSC_VER < 1300)
+ // TODO: limit substring to portion limits
mnSubStringMin = std::max( rArgs.mnMinCharPos - 8, 0 );
nSubStringEnd = std::min( rArgs.mnEndCharPos + 8, rArgs.mnLength );
+#else
+ mnSubStringMin = max( rArgs.mnMinCharPos - 8, 0 );
+ nSubStringEnd = min( rArgs.mnEndCharPos + 8, rArgs.mnLength );
+#endif
}
for( int nItemCapacity = 8; /*FOREVER*/; nItemCapacity *= 2 )
{
@@ -1129,18 +1264,24 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
}
// calculate visual items order
- mpVisualItems = new VisualItem[ mnItemCount ];
+ int nItem, i;
- // default item ordering and adding substring offset
- int nItem;
+ // adjust char positions by substring offset
+ for( nItem = 0; nItem <= mnItemCount; ++nItem )
+ mpScriptItems[ nItem ].iCharPos += mnSubStringMin;
+ // default visual item ordering
+ mpVisualItems = new VisualItem[ mnItemCount ];
for( nItem = 0; nItem < mnItemCount; ++nItem )
{
- mpScriptItems[ nItem ].iCharPos += mnSubStringMin;
- mpVisualItems[ nItem ].mpScriptItem = &mpScriptItems[ nItem ];
+ // initialize char specific item info
+ VisualItem& rVisualItem = mpVisualItems[ nItem ];
+ SCRIPT_ITEM* pScriptItem = &mpScriptItems[ nItem ];
+ rVisualItem.mpScriptItem = pScriptItem;
+ rVisualItem.mnMinCharPos = pScriptItem[0].iCharPos;
+ rVisualItem.mnEndCharPos = pScriptItem[1].iCharPos;
}
- mpScriptItems[ mnItemCount ].iCharPos += mnSubStringMin;
- // calculate visual item order
+ // reorder visual item order if needed
if( rArgs.mnFlags & SAL_LAYOUT_BIDI_STRONG )
{
// override item ordering if requested
@@ -1148,7 +1289,7 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
{
VisualItem* pVI = &mpVisualItems[0];
SCRIPT_ITEM* pSI = &mpScriptItems[mnItemCount];
- for( nItem = mnItemCount; --nItem >= 0;)
+ for( nItem = mnItemCount; --nItem >= 0; )
(pVI++)->mpScriptItem = --pSI;
}
}
@@ -1202,24 +1343,25 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
mpGlyphOffsets = new GOFFSET[ mnGlyphCapacity ];
mpVisualAttrs = new SCRIPT_VISATTR[ mnGlyphCapacity ];
+ long nXOffset = 0;
+
// layout script items
for( nItem = 0; nItem < mnItemCount; ++nItem )
{
VisualItem& rVisualItem = mpVisualItems[ nItem ];
- // intitialize visual item info
+ // initialize glyph specific item info
rVisualItem.mnMinGlyphPos = mnGlyphCount;
rVisualItem.mnEndGlyphPos = 0;
- rVisualItem.mnMinCharPos = rVisualItem.mpScriptItem[0].iCharPos;
- rVisualItem.mnEndCharPos = rVisualItem.mpScriptItem[1].iCharPos;
- rVisualItem.mnPixelWidth = 0;
+ rVisualItem.mnXOffset = nXOffset;
+ //rVisualItem.mnPixelWidth = 0;
- // shortcut for skipped items
+ // shortcut ignorable items
if( (rArgs.mnEndCharPos <= rVisualItem.mnMinCharPos)
|| (rArgs.mnMinCharPos >= rVisualItem.mnEndCharPos) )
{
for( int i = rVisualItem.mnMinCharPos; i < rVisualItem.mnEndCharPos; ++i )
- mpLogClusters[ i ] = 0;
+ mpLogClusters[ i ] = -1;
continue;
}
@@ -1245,9 +1387,9 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
if( nRC == USP_E_SCRIPT_NOT_IN_FONT )
{
- // request fallback using different font
+ // request fallback for whole item
rArgs.NeedFallback( rVisualItem.mnMinCharPos, rVisualItem.mnEndCharPos,
- rVisualItem.mpScriptItem->a.fRTL);
+ rVisualItem.mpScriptItem->a.fRTL );
// for now fall back to default layout
rVisualItem.mpScriptItem->a.eScript = SCRIPT_UNDEFINED;
@@ -1260,24 +1402,48 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
mpLogClusters + rVisualItem.mnMinCharPos,
mpVisualAttrs + rVisualItem.mnMinGlyphPos,
&nGlyphCount );
- }
-
- if( nRC != 0 )
- continue;
- // request fallback for notdef glyphs
- for( int i = 0; i < nGlyphCount; ++i )
- {
- if( mpOutGlyphs[i] != 0 )
+ if( nRC != 0 )
continue;
- // TODO: optimize calculation of nCharPos
- int nCharPos = rVisualItem.mnMinCharPos;
- for( int j = nCharCount; --j >= 0; ++nCharPos )
- if( mpLogClusters[ nCharPos ] == i )
+ // mark as NotDef glyphs
+ for( i = 0; i < nGlyphCount; ++i )
+ mpOutGlyphs[ i + rVisualItem.mnMinGlyphPos ] = 0;
+ }
+ else if( nRC != 0 )
+ // something undefined happened => give up
+ continue;
+ else
+ {
+ // check if there are any NotDef glyphs
+ for( i = 0; i < nGlyphCount; ++i )
+ if( 0 == mpOutGlyphs[ i + rVisualItem.mnMinGlyphPos ] )
break;
-
- rArgs.NeedFallback( nCharPos, rVisualItem.mpScriptItem->a.fRTL);
+ if( i < nGlyphCount )
+ {
+ // calculate proper charpos limits
+ int nMinCharPos = rVisualItem.mnMinCharPos;
+ if( nMinCharPos < rArgs.mnMinCharPos )
+ nMinCharPos = rArgs.mnMinCharPos;
+ int nEndCharPos = rVisualItem.mnEndCharPos;
+ if( nEndCharPos > rArgs.mnEndCharPos )
+ nEndCharPos = rArgs.mnEndCharPos;
+ // request fallback for individual NotDef glyphs
+ do
+ {
+ if( 0 != mpOutGlyphs[ i + rVisualItem.mnMinGlyphPos ] )
+ continue;
+ // find matching nCharPos
+ // TODO: optimize algorithm
+ for( int j = nMinCharPos; j < nEndCharPos; ++j )
+ {
+ if( mpLogClusters[ j ] != i )
+ continue;
+ rArgs.NeedFallback( j, rVisualItem.mpScriptItem->a.fRTL );
+ break;
+ }
+ } while( ++i < nGlyphCount );
+ }
}
nRC = (*pScriptPlace)( mhDC, &maScriptCache,
@@ -1292,9 +1458,6 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
if( nRC != 0 )
continue;
- const ABC& rABC = rVisualItem.maABCWidths;
- rVisualItem.mnPixelWidth = rABC.abcA + rABC.abcB + rABC.abcC;
-
nRC = (*pScriptGetLogicalWidths)(
&rVisualItem.mpScriptItem->a,
nCharCount, nGlyphCount,
@@ -1306,13 +1469,55 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
// update glyphcount only when we didn't run into a problem
mnGlyphCount += nGlyphCount;
rVisualItem.mnEndGlyphPos = mnGlyphCount;
- }
- // adjust positions if requested
- if( rArgs.mpDXArray )
- ApplyDXArray( rArgs.mpDXArray );
- else if( rArgs.mnLayoutWidth )
- Justify( rArgs.mnLayoutWidth );
+ // update nXOffset
+ int nEndGlyphPos;
+ if( GetItemSubrange( rVisualItem, i, nEndGlyphPos ) )
+ for(; i < nEndGlyphPos; ++i )
+ nXOffset += mpGlyphAdvances[ i ];
+
+ // for fallback layout unneeded context glyphs are dropped
+ if( rArgs.mnFlags & SAL_LAYOUT_FOR_FALLBACK )
+ {
+ TIntVector::const_iterator it = aDropChars.begin();
+ while( it != aDropChars.end() )
+ {
+ // find matching "drop range"
+ int nMinDropPos = *(it++); // begin of drop range
+ if( nMinDropPos >= rVisualItem.mnEndCharPos )
+ break;
+ int nEndDropPos = *(it++); // end of drop range
+ if( nEndDropPos <= rVisualItem.mnMinCharPos )
+ continue;
+ // match "drop range" to visual item
+ if( nMinDropPos <= rVisualItem.mnMinCharPos )
+ {
+ nMinDropPos = rVisualItem.mnMinCharPos;
+ // drop whole visual item if possible
+ if( nEndDropPos >= rVisualItem.mnEndCharPos )
+ {
+ rVisualItem.mnEndGlyphPos = 0;
+ // recycle those glyphs immediately
+ mnGlyphCount -= nGlyphCount;
+ break;
+ }
+ }
+ if( nEndDropPos > rVisualItem.mnEndCharPos )
+ nEndDropPos = rVisualItem.mnEndCharPos;
+ // drop those glyphs
+ for( int j = nMinDropPos; j < nEndDropPos; ++j )
+ {
+ int nGlyphPos = rVisualItem.mnMinGlyphPos;
+ nGlyphPos += mpLogClusters[ j ];
+ mpOutGlyphs[ nGlyphPos ] = DROPPED_OUTGLYPH;
+ }
+ }
+ }
+
+ // TODO: shrink glyphpos limits to match charpos/fallback limits
+ //pVI->mnMinGlyphPos = nMinGlyphPos;
+ //pVI->mnEndGlyphPos = nEndGlyphPos;
+ }
return true;
}
@@ -1322,8 +1527,10 @@ bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
bool UniscribeLayout::GetItemSubrange( const VisualItem& rVisualItem,
int& rMinGlyphPos, int& rEndGlyphPos ) const
{
- // return early when nothing of interst in this item
- if( (rVisualItem.mnEndCharPos <= mnMinCharPos) || (mnEndCharPos <= rVisualItem.mnMinCharPos) )
+ // return early when nothing of interest in this item
+ if( rVisualItem.IsEmpty()
+ || (rVisualItem.mnEndCharPos <= mnMinCharPos)
+ || (mnEndCharPos <= rVisualItem.mnMinCharPos) )
return false;
// default: subrange is complete range
@@ -1331,7 +1538,8 @@ bool UniscribeLayout::GetItemSubrange( const VisualItem& rVisualItem,
rEndGlyphPos = rVisualItem.mnEndGlyphPos;
// return early when the whole item is of interest
- if( (mnMinCharPos <= rVisualItem.mnMinCharPos) && (rVisualItem.mnEndCharPos <= mnEndCharPos ) )
+ if( (mnMinCharPos <= rVisualItem.mnMinCharPos)
+ && (rVisualItem.mnEndCharPos <= mnEndCharPos ) )
return true;
// get glyph range from char range by looking at cluster boundries
@@ -1378,118 +1586,291 @@ bool UniscribeLayout::GetItemSubrange( const VisualItem& rVisualItem,
// -----------------------------------------------------------------------
int UniscribeLayout::GetNextGlyphs( int nLen, long* pGlyphs, Point& rPos,
- int& nVisualStart, long* pGlyphAdvances, int* pCharPosAry ) const
+ int& nStart, long* pGlyphAdvances, int* pCharPosAry ) const
{
- // return zero if no more glyph found
- if( nVisualStart >= mnGlyphCount )
+ if( nStart > mnGlyphCount ) // nStart>MAX means no more glyphs
return 0;
- // calculate glyph position relative to layout base
- // TODO: avoid for nStart!=0 case by reusing rPos
- long nXOffset = 0;
- const int* pGlyphWidths = mpJustifications ? mpJustifications : mpGlyphAdvances;
-
- int nVisualMinGlyphPos = 0;
- int nNextVisualStart = 0;
- int nMinGlyphPos = 0;
- int nCurrGlyphPos = 0;
- int nEndGlyphPos = mnGlyphCount;
-
- // search item with the visual starting glyph,
- // update position in items with visible glyphs
int i;
- const VisualItem* pVisualItem = NULL;
- for( int nItem = 0; nItem < mnItemCount; ++nItem )
+ const VisualItem* pVI = mpVisualItems;
+ if( nStart == 0 ) // nStart==0 for first visible glyph
{
- // skip invisible items
- pVisualItem = &mpVisualItems[ nItem ];
- if( !GetItemSubrange( *pVisualItem, nMinGlyphPos, nEndGlyphPos ) )
- continue;
+ // find first visible item
+ for( i = 0; i < mnItemCount; ++i, ++pVI )
+ if( !pVI->IsEmpty() )
+ {
+ nStart = pVI->mnMinGlyphPos;
+ break;
+ }
+ }
+ else //if( nStart > 0 ) // nStart>0 means absolute glyph pos +1
+ {
+ --nStart;
- nVisualMinGlyphPos = nNextVisualStart;
- nNextVisualStart += pVisualItem->mnEndGlyphPos - pVisualItem->mnMinGlyphPos;
- if( nNextVisualStart > nVisualStart )
- break;
+ // find matching item
+ for( i = 0; i < mnItemCount; ++i, ++pVI )
+ if( (nStart >= pVI->mnMinGlyphPos) && (nStart < pVI->mnEndGlyphPos) )
+ break;
+ }
- // advance to next visual position by using adjusted glyph widths
- // TODO: shortcut addition with cached ABC width if possible
- for( i = nMinGlyphPos; i < nEndGlyphPos; ++i )
- nXOffset += pGlyphWidths[ i ];
+ if( i >= mnItemCount )
+ {
+ // everything has been read
+ nStart = mnGlyphCount;
+ return 0;
+ }
+
+ // calculate start of next visible item
+ int nNextItemStart = mnGlyphCount;
+ while( ++i < mnItemCount )
+ {
+ if( mpVisualItems[i].IsEmpty() )
+ continue;
+ nNextItemStart = mpVisualItems[i].mnMinGlyphPos;
+ break;
}
- // adjust visual glyph pos to first visible glyph in item
- if( nVisualStart == nVisualMinGlyphPos )
- nVisualStart += nMinGlyphPos - pVisualItem->mnMinGlyphPos;
+ int nMinGlyphPos, nEndGlyphPos;
+ bool bRC = GetItemSubrange( *pVI, nMinGlyphPos, nEndGlyphPos );
+ DBG_ASSERT( bRC, "USPLayout::GNG GISR() returned false" );
- nCurrGlyphPos = pVisualItem->mnMinGlyphPos + (nVisualStart - nVisualMinGlyphPos);
+ if( nStart < nMinGlyphPos )
+ nStart = nMinGlyphPos;
+ // calculate glyph position relative to layout base
// advance to next visual position by using adjusted glyph widths
- for( i = nMinGlyphPos; i < nCurrGlyphPos; ++i )
+ // TODO: avoid for nStart!=0 case by reusing rPos
+ long nXOffset = pVI->mnXOffset;
+ const int* pGlyphWidths = mpJustifications ? mpJustifications : mpGlyphAdvances;
+ for( i = nMinGlyphPos; i < nStart; ++i )
nXOffset += pGlyphWidths[ i ];
// adjust nXOffset relative to cluster start
i = mnMinCharPos;
- if( !pVisualItem->mpScriptItem->a.fRTL )
+ if( !pVI->mpScriptItem->a.fRTL )
{
int nTmpIndex = mpLogClusters[ i ];
- while( (--i >= pVisualItem->mnMinCharPos) && (nTmpIndex == mpLogClusters[i]) )
+ while( (--i >= pVI->mnMinCharPos)
+ && (nTmpIndex == mpLogClusters[i]) )
nXOffset -= mpCharWidths[i];
}
else
{
- int nTmpIndex = mpLogClusters[ pVisualItem->mnEndCharPos - 1 ];
- while( (--i >= pVisualItem->mnMinCharPos) && (nTmpIndex == mpLogClusters[i]) )
+ int nTmpIndex = mpLogClusters[ pVI->mnEndCharPos - 1 ];
+ while( (--i >= pVI->mnMinCharPos)
+ && (nTmpIndex == mpLogClusters[i]) )
nXOffset += mpCharWidths[i];
}
+ // for usage below create mpGlyphs2Chars if needed
+ if( pCharPosAry && !mpGlyphs2Chars )
+ {
+ mpGlyphs2Chars = new int[ mnGlyphCapacity ];
+ for( i = 0; i < mnGlyphCount; ++i )
+ mpGlyphs2Chars[ i ] = -1;
+ for( int nItem = 0; nItem < mnItemCount; ++nItem )
+ {
+ // skip invisible items
+ VisualItem& rVI = mpVisualItems[ nItem ];
+ if( rVI.IsEmpty() )
+ continue;
+ for( i = rVI.mnEndCharPos; --i >= rVI.mnMinCharPos; )
+ {
+ int j = mpLogClusters[ i ] + rVI.mnMinGlyphPos;
+ mpGlyphs2Chars[ j ] = i;
+ }
+ }
+ }
+
// calculate absolute position in pixel units
- const GOFFSET aGOffset = mpGlyphOffsets[ nCurrGlyphPos ];
+ const GOFFSET aGOffset = mpGlyphOffsets[ nStart ];
Point aRelativePos( nXOffset + aGOffset.du, aGOffset.dv );
rPos = GetDrawPosition( aRelativePos );
- if( pCharPosAry && !mpGlyphs2Chars )
- {} //TODO: implement, also see usage below
-
int nCount = 0;
while( nCount < nLen )
{
// update returned values
- *(pGlyphs++) = mpOutGlyphs[ nCurrGlyphPos ];
+ *(pGlyphs++) = mpOutGlyphs[ nStart ];
if( pGlyphAdvances )
- *(pGlyphAdvances++) = pGlyphWidths[ nCurrGlyphPos ];
+ *(pGlyphAdvances++) = pGlyphWidths[ nStart ];
if( pCharPosAry )
- *(pCharPosAry++) = -1; // TODO: use mpGlyphs2Chars[nGI];
+ *(pCharPosAry++) = mpGlyphs2Chars[ nStart ];
++nCount;
- ++nVisualStart;
// stop aftert last visible glyph in item
- if( ++nCurrGlyphPos >= nEndGlyphPos )
+ if( ++nStart >= nEndGlyphPos )
{
- nVisualStart = nNextVisualStart;
+ nStart = nNextItemStart;
break;
}
// stop when next x-position is unexpected
if( !pGlyphAdvances )
- if( (mpGlyphOffsets && (mpGlyphOffsets[nCurrGlyphPos].du != aGOffset.du) )
- || (mpJustifications && (mpJustifications[nCurrGlyphPos] != mpGlyphAdvances[nCurrGlyphPos]) ) )
+ if( (mpGlyphOffsets && (mpGlyphOffsets[nStart].du != aGOffset.du) )
+ || (mpJustifications && (mpJustifications[nStart] != mpGlyphAdvances[nStart]) ) )
break;
// stop when next y-position is unexpected
- if( mpGlyphOffsets && (mpGlyphOffsets[nCurrGlyphPos].dv != aGOffset.dv) )
+ if( mpGlyphOffsets && (mpGlyphOffsets[nStart].dv != aGOffset.dv) )
break;
}
+ ++nStart;
return nCount;
}
// -----------------------------------------------------------------------
+void UniscribeLayout::MoveGlyph( int nStart, long nNewXPos )
+{
+ if( nStart > mnGlyphCount )
+ return;
+
+ VisualItem* pVI = mpVisualItems;
+ int nMinGlyphPos, nEndGlyphPos;
+ if( nStart == 0 ) // nStart==0 for first visible glyph
+ {
+ for( int i = mnItemCount; --i >= 0; ++pVI )
+ if( GetItemSubrange( *pVI, nMinGlyphPos, nEndGlyphPos ) )
+ break;
+ nStart = nMinGlyphPos;
+ DBG_ASSERT( nStart <= mnGlyphCount, "USPLayout::MoveG overflow" );
+ }
+ else //if( nStart > 0 ) // nStart>0 means absolute glyph pos +1
+ {
+ --nStart;
+ for( int i = mnItemCount; --i >= 0; ++pVI )
+ if( (nStart >= pVI->mnMinGlyphPos) && (nStart < pVI->mnEndGlyphPos) )
+ break;
+ bool bRC = GetItemSubrange( *pVI, nMinGlyphPos, nEndGlyphPos );
+ DBG_ASSERT( bRC, "USPLayout::MoveG GISR() returned false" );
+ }
+
+ long nDelta = nNewXPos - pVI->mnXOffset;
+ if( nStart > nMinGlyphPos )
+ {
+ for( int i = nMinGlyphPos; i < nStart; ++i )
+ nDelta -= mpGlyphAdvances[ i ];
+ mpGlyphAdvances[ i-1 ] += nDelta;
+ }
+ else
+ pVI->mnXOffset += nDelta;
+}
+
+// -----------------------------------------------------------------------
+
+void UniscribeLayout::DropGlyph( int nStart )
+{
+ DBG_ASSERT( nStart<=mnGlyphCount, "USPLayout::MoveG nStart overflow" );
+
+ if( nStart > 0 ) // nStart>0 means absolute glyph pos + 1
+ --nStart;
+ else // if( !nStart ) // nStart==0 for first visible glyph
+ {
+ const VisualItem* pVI = mpVisualItems;
+ for( int i = mnItemCount, nDummy; --i >= 0; ++pVI )
+ if( GetItemSubrange( *pVI, nStart, nDummy ) )
+ break;
+ DBG_ASSERT( nStart <= mnGlyphCount, "USPLayout::DropG overflow" );
+ }
+
+ mpOutGlyphs[ nStart ] = DROPPED_OUTGLYPH;
+}
+
+// -----------------------------------------------------------------------
+
+void UniscribeLayout::Simplify( bool bIsBase )
+{
+ const WCHAR cDroppedGlyph = bIsBase ? DROPPED_OUTGLYPH : 0;
+ int i;
+ // if there are no dropped glyphs don't bother
+ for( i = 0; i < mnGlyphCount; ++i )
+ if( mpOutGlyphs[ i ] == cDroppedGlyph )
+ break;
+ if( i >= mnGlyphCount )
+ return;
+
+ // prepare for sparse layout
+ if( !mpGlyphs2Chars )
+ {
+ mpGlyphs2Chars = new int[ mnGlyphCapacity ];
+ for( i = 0; i < mnGlyphCount; ++i )
+ mpGlyphs2Chars[ i ] = -1;
+ for( int nItem = 0; nItem < mnItemCount; ++nItem )
+ {
+ // skip invisible items
+ VisualItem& rVI = mpVisualItems[ nItem ];
+ if( rVI.IsEmpty() )
+ continue;
+ for( i = rVI.mnEndCharPos; --i >= rVI.mnMinCharPos; )
+ {
+ int j = mpLogClusters[ i ] + rVI.mnMinGlyphPos;
+ mpGlyphs2Chars[ j ] = i;
+ }
+ }
+ }
+
+ // remove the dropped glyphs
+ const int* pGlyphWidths = mpJustifications ? mpJustifications : mpGlyphAdvances;
+ for( int nItem = 0; nItem < mnItemCount; ++nItem )
+ {
+ VisualItem& rVI = mpVisualItems[ nItem ];
+ if( rVI.IsEmpty() )
+ continue;
+
+ // mark replaced character widths
+ for( i = rVI.mnMinCharPos; i < rVI.mnEndCharPos; ++i )
+ {
+ int j = mpLogClusters[ i ] + rVI.mnMinGlyphPos;
+ if( mpOutGlyphs[ j ] == cDroppedGlyph )
+ mpCharWidths[ i ] = 0;
+ }
+
+ // dropped glyphs at start of visual item
+ int nEndGlyphPos;
+ GetItemSubrange( rVI, i, nEndGlyphPos );
+ while( (mpOutGlyphs[i] == cDroppedGlyph) && (i < nEndGlyphPos) )
+ {
+ rVI.mnXOffset += pGlyphWidths[ i ];
+ rVI.mnMinGlyphPos = ++i;
+ }
+
+ // when whole item got dropped mark as empty
+ if( i >= nEndGlyphPos )
+ {
+ rVI.mnEndGlyphPos = 0;
+ continue;
+ }
+
+ // dropped glyphs in the middle of visual item
+ for(; i < nEndGlyphPos; ++i )
+ if( mpOutGlyphs[ i ] == cDroppedGlyph )
+ break;
+ int j = i;
+ while( ++i < nEndGlyphPos )
+ {
+ if( mpOutGlyphs[ i ] == cDroppedGlyph )
+ continue;
+ mpOutGlyphs[ j ] = mpOutGlyphs[ i ];
+ mpGlyphOffsets[ j ] = mpGlyphOffsets[ i ];
+ mpVisualAttrs[ j ] = mpVisualAttrs[ i ];
+ mpGlyphAdvances[ j ] = mpGlyphAdvances[ i ];
+ if( mpJustifications )
+ mpJustifications[ j ] = mpJustifications[ i ];
+ int k = mpGlyphs2Chars[ i ];
+ mpGlyphs2Chars[ j ] = k;
+ mpLogClusters[ k ] = j;
+ rVI.mnEndGlyphPos = ++j;
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
void UniscribeLayout::DrawText( SalGraphics& ) const
{
#ifndef DEBUG_GETNEXTGLYPHS
- Point aRelPos = Point(0,0);
-
const int* pGlyphWidths = mpJustifications ? mpJustifications : mpGlyphAdvances;
for( int nItem = 0; nItem < mnItemCount; ++nItem )
{
@@ -1500,6 +1881,8 @@ void UniscribeLayout::DrawText( SalGraphics& ) const
if( !GetItemSubrange( rVisualItem, nMinGlyphPos, nEndGlyphPos ) )
continue;
+ Point aRelPos( rVisualItem.mnXOffset, 0 );
+
// adjust draw position relative to cluster start
int i = mnMinCharPos;
if( !rVisualItem.mpScriptItem->a.fRTL )
@@ -1525,9 +1908,6 @@ void UniscribeLayout::DrawText( SalGraphics& ) const
mpGlyphAdvances + nMinGlyphPos,
mpJustifications ? mpJustifications + nMinGlyphPos : NULL,
mpGlyphOffsets + nMinGlyphPos );
-
- for( i = nMinGlyphPos; i < nEndGlyphPos; ++i )
- aRelPos.X() += pGlyphWidths[ i ];
}
#else
#define MAXGLYPHCOUNT 4
@@ -1567,15 +1947,29 @@ void UniscribeLayout::DrawText( SalGraphics& ) const
long UniscribeLayout::FillDXArray( long* pDXArray ) const
{
- long nWidth = 0;
+ long nWidth = mnBaseAdv;
- for( int i = mnMinCharPos; i < mnEndCharPos; ++i )
+ for( int nItem = mnItemCount; --nItem >= 0; )
{
- nWidth += mpCharWidths[ i ];
- if( pDXArray )
- pDXArray[ i - mnMinCharPos ] = nWidth;
+ const VisualItem& rVI = mpVisualItems[ nItem ];
+
+ // skip if there is nothing to display
+ int nMinGlyphPos, nEndGlyphPos;
+ if( !GetItemSubrange( rVI, nMinGlyphPos, nEndGlyphPos ) )
+ continue;
+
+ // width = xoffset + width of last item
+ nWidth = rVI.mnXOffset;
+ const int* pGlyphWidths = mpJustifications ? mpJustifications : mpGlyphAdvances;
+ for( int i = nMinGlyphPos; i < nEndGlyphPos; ++i )
+ nWidth += pGlyphWidths[i];
+ break;
}
+ if( pDXArray )
+ for( int i = mnMinCharPos; i < mnEndCharPos; ++i )
+ pDXArray[ i - mnMinCharPos ] = mpCharWidths[ i ];
+
return nWidth;
}
@@ -1602,9 +1996,8 @@ int UniscribeLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor
// -----------------------------------------------------------------------
-void UniscribeLayout::GetCaretPositions( long* pCaretXArray ) const
+void UniscribeLayout::GetCaretPositions( int nMaxIdx, long* pCaretXArray ) const
{
- const int nMaxIdx = 2 * (mnEndCharPos - mnMinCharPos);
int i;
for( i = 0; i < nMaxIdx; ++i )
pCaretXArray[ i ] = -1;
@@ -1616,7 +2009,7 @@ void UniscribeLayout::GetCaretPositions( long* pCaretXArray ) const
for( int nItem = 0; nItem < mnItemCount; ++nItem )
{
const VisualItem& rVisualItem = mpVisualItems[ nItem ];
- if( rVisualItem.mnEndGlyphPos <= 0 )
+ if( rVisualItem.IsEmpty() )
continue;
// get glyph positions
@@ -1664,61 +2057,23 @@ void UniscribeLayout::GetCaretPositions( long* pCaretXArray ) const
// -----------------------------------------------------------------------
-Point UniscribeLayout::GetCharPosition( int nCharPos, bool bRTL ) const
+void UniscribeLayout::AdjustLayout( ImplLayoutArgs& rArgs )
{
- int nStartIndex = mnGlyphCapacity; // mark as untouched
- int nGlyphIndex = 0;
- int nEndIndex = -1; // mark as untouched
-
- for( int nItem = 0; nItem < mnItemCount; ++nItem )
- {
- const VisualItem& rVisualItem = mpVisualItems[ nItem ];
- if( rVisualItem.mnEndGlyphPos <= 0 )
- continue;
-
- if( (rVisualItem.mnMinCharPos <= nCharPos) && (nCharPos < rVisualItem.mnEndCharPos) )
- nGlyphIndex = mpLogClusters[ nCharPos ] + rVisualItem.mnMinGlyphPos;
-
- // find the corresponding glyphs
- int nMinIndex, nMaxIndex;
- if( GetItemSubrange( rVisualItem, nMinIndex, nMaxIndex ) )
- {
- if( nStartIndex > nMinIndex )
- nStartIndex = nMinIndex;
-
- if( nEndIndex < nMaxIndex )
- nEndIndex = nMaxIndex;
- }
- }
-
- // set StartIndex and EndIndex to defaults when not touched
- if( nStartIndex >= mnGlyphCapacity )
- nStartIndex = 0;
- if( nEndIndex < 0 )
- nEndIndex = mnGlyphCount;
-
- long nXPos = 0;
+ SalLayout::AdjustLayout( rArgs );
- if( !bRTL ) // relative to left edge
- {
- for( int i = nStartIndex; i < nGlyphIndex; ++i )
- nXPos += mpGlyphAdvances[ i ];
- }
- else // relative to right edge?
- {
- if( nGlyphIndex < nStartIndex )
- nGlyphIndex = nStartIndex;
- for( int i = nGlyphIndex; i < nEndIndex; ++i )
- nXPos -= mpGlyphAdvances[ i ];
- }
-
- return Point( nXPos, 0 );
+ // adjust positions if requested
+ if( rArgs.mpDXArray )
+ ApplyDXArray( rArgs );
+ else if( rArgs.mnLayoutWidth )
+ Justify( rArgs.mnLayoutWidth );
}
// -----------------------------------------------------------------------
-void UniscribeLayout::ApplyDXArray( const long* pDXArray )
+void UniscribeLayout::ApplyDXArray( const ImplLayoutArgs& rArgs )
{
+ const long* pDXArray = rArgs.mpDXArray;
+
// increase char widths in string range to desired values
bool bModified = false;
int nOldWidth = 0;
@@ -1744,10 +2099,11 @@ void UniscribeLayout::ApplyDXArray( const long* pDXArray )
mpJustifications[ i ] = mpGlyphAdvances[ i ];
// apply new widths to script items
+ long nXOffset = 0;
for( int nItem = 0; nItem < mnItemCount; ++nItem )
{
VisualItem& rVisualItem = mpVisualItems[ nItem ];
- if( rVisualItem.mnEndGlyphPos <= 0 )
+ if( rVisualItem.IsEmpty() )
continue;
if( (rVisualItem.mnMinCharPos < mnEndCharPos)
@@ -1780,8 +2136,12 @@ void UniscribeLayout::ApplyDXArray( const long* pDXArray )
break;
}
- const ABC& rABC = rVisualItem.maABCWidths;
- rVisualItem.mnPixelWidth = rABC.abcA + rABC.abcB + rABC.abcC;
+ rVisualItem.mnXOffset = nXOffset;
+ // update nXOffset
+ int nEndGlyphPos;
+ if( GetItemSubrange( rVisualItem, i, nEndGlyphPos ) )
+ for(; i < nEndGlyphPos; ++i )
+ nXOffset += mpJustifications[ i ];
if( rVisualItem.mpScriptItem->a.fRTL )
{
@@ -1819,10 +2179,11 @@ void UniscribeLayout::Justify( long nNewWidth )
mpJustifications[ i ] = mpGlyphAdvances[ i ];
// justify stretched script items
+ long nXOffset = 0;
for( int nItem = 0; nItem < mnItemCount; ++nItem )
{
- const VisualItem& rVisualItem = mpVisualItems[ nItem ];
- if( rVisualItem.mnEndGlyphPos <= 0 )
+ VisualItem& rVisualItem = mpVisualItems[ nItem ];
+ if( rVisualItem.IsEmpty() )
continue;
if( (rVisualItem.mnMinCharPos < mnEndCharPos)
@@ -1831,6 +2192,7 @@ void UniscribeLayout::Justify( long nNewWidth )
long nItemWidth = 0;
for( i = rVisualItem.mnMinCharPos; i < rVisualItem.mnEndCharPos; ++i )
nItemWidth += mpCharWidths[ i ];
+ nItemWidth = (int)((fStretch - 1.0) * nItemWidth + 0.5);
SCRIPT_FONTPROPERTIES aFontProperties;
int nMinKashida = 1;
@@ -1842,49 +2204,30 @@ void UniscribeLayout::Justify( long nNewWidth )
mpVisualAttrs + rVisualItem.mnMinGlyphPos,
mpGlyphAdvances + rVisualItem.mnMinGlyphPos,
rVisualItem.mnEndGlyphPos - rVisualItem.mnMinGlyphPos,
- (int)((fStretch-1.0) * nItemWidth + 0.5),
+ nItemWidth,
nMinKashida,
mpJustifications + rVisualItem.mnMinGlyphPos );
+
+ rVisualItem.mnXOffset = nXOffset;
+ nXOffset += nItemWidth;
}
}
}
-// -----------------------------------------------------------------------
-
-bool UniscribeLayout::ApplyFallback( SalLayout& rFallback )
-{
- // TODO: implement
- return false;
-}
-
-// -----------------------------------------------------------------------
-
-void UniscribeLayout::UpdateGlyphPos( int nStart, int nNewXPos )
-{
- // TODO: implement
-}
-
-// -----------------------------------------------------------------------
-
-void UniscribeLayout::RemoveNotdefs()
-{
- // TODO: implement
-}
-
#endif // USE_UNISCRIBE
// =======================================================================
-SalLayout* SalGraphics::LayoutText( ImplLayoutArgs& rArgs, int nFallbackLevel )
+SalLayout* SalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
{
WinLayout* pWinLayout = NULL;
#ifdef USE_UNISCRIBE
- if( !(rArgs.mnFlags & SAL_LAYOUT_COMPLEX_DISABLED)
- && bUspEnabled && (aUspModule || InitUSP()) )
+ if( !(rArgs.mnFlags & SAL_LAYOUT_COMPLEX_DISABLED) // complex text
+ && (aUspModule || (bUspEnabled && InitUSP())) ) // CTL layout engine
{
// script complexity is determined in upper layers
- pWinLayout = new UniscribeLayout( maGraphicsData.mhDC, rArgs );
+ pWinLayout = new UniscribeLayout( maGraphicsData.mhDC );
}
else
#endif // USE_UNISCRIBE
@@ -1894,19 +2237,16 @@ SalLayout* SalGraphics::LayoutText( ImplLayoutArgs& rArgs, int nFallbackLevel )
GetKernPairs( 0, NULL );
#endif // GCP_KERN_HACK
- pWinLayout = new SimpleWinLayout( maGraphicsData.mhDC, rArgs
+ BYTE eCharSet = ANSI_CHARSET;
+ if( maGraphicsData.mpLogFont )
+ eCharSet = maGraphicsData.mpLogFont->lfCharSet;
+ pWinLayout = new SimpleWinLayout( maGraphicsData.mhDC, eCharSet
#ifdef GCP_KERN_HACK
, maGraphicsData.mpFontKernPairs, maGraphicsData.mnFontKernPairCount
#endif // GCP_KERN_HACK
);
}
- if( !pWinLayout->LayoutText( rArgs ) )
- {
- pWinLayout->Release();
- pWinLayout = NULL;
- }
-
return pWinLayout;
}
diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx
index cdb80b19d49d..0e0e3d1830a5 100644
--- a/vcl/win/source/window/salframe.cxx
+++ b/vcl/win/source/window/salframe.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: salframe.cxx,v $
*
- * $Revision: 1.89 $
+ * $Revision: 1.90 $
*
- * last change: $Author: ssa $ $Date: 2002-12-12 17:14:17 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:28 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -155,6 +155,9 @@ extern "C" {
#define ULW_OPAQUE 0x00000004
#define WS_EX_LAYERED 0x00080000
+// =======================================================================
+
+const unsigned int WM_USER_SYSTEM_WINDOW_ACTIVATED = RegisterWindowMessageA("SYSTEM_WINDOW_ACTIVATED");
// =======================================================================
@@ -495,9 +498,19 @@ SalFrame* ImplSalCreateFrame( SalInstance* pInst,
{
LPCWSTR pClassName;
if ( bSubFrame )
- pClassName = SAL_SUBFRAME_CLASSNAMEW;
+ {
+ if ( nSalFrameStyle & (SAL_FRAME_STYLE_MOVEABLE|SAL_FRAME_STYLE_NOSHADOW) ) // check if shadow not wanted
+ pClassName = SAL_SUBFRAME_CLASSNAMEW;
+ else
+ pClassName = SAL_TMPSUBFRAME_CLASSNAMEW; // undecorated floaters will get shadow on XP
+ }
else
- pClassName = SAL_FRAME_CLASSNAMEW;
+ {
+ if ( nSalFrameStyle & SAL_FRAME_STYLE_MOVEABLE )
+ pClassName = SAL_FRAME_CLASSNAMEW;
+ else
+ pClassName = SAL_TMPSUBFRAME_CLASSNAMEW;
+ }
hWnd = CreateWindowExW( nExSysStyle, pClassName, L"", nSysStyle,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
hWndParent, 0, pInst->maInstData.mhInst, (void*)pFrame );
@@ -1141,13 +1154,13 @@ void SalFrame::SetIcon( USHORT nIcon )
// 0 means default (class) icon
HICON hIcon = NULL, hSmIcon = NULL;
- if ( nIcon )
- {
- ImplLoadSalIcon( nIcon, hIcon, hSmIcon );
+ if ( !nIcon )
+ nIcon = 1;
- DBG_ASSERT( hIcon , "SalFrame::SetIcon(): Could not load large icon !" );
- DBG_ASSERT( hSmIcon , "SalFrame::SetIcon(): Could not load small icon !" );
- }
+ ImplLoadSalIcon( nIcon, hIcon, hSmIcon );
+
+ DBG_ASSERT( hIcon , "SalFrame::SetIcon(): Could not load large icon !" );
+ DBG_ASSERT( hSmIcon , "SalFrame::SetIcon(): Could not load small icon !" );
ImplSendMessage( maFrameData.mhWnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon );
ImplSendMessage( maFrameData.mhWnd, WM_SETICON, ICON_SMALL, (LPARAM)hSmIcon );
@@ -1201,6 +1214,18 @@ static void ImplSalShow( HWND hWnd, BOOL bVisible, BOOL bNoActivate )
else
ShowWindow( hWnd, pFrame->maFrameData.mnShowState );
+ if ( aSalShlData.mbWXP && pFrame->maFrameData.mbFloatWin && !(pFrame->maFrameData.mnStyle & SAL_FRAME_STYLE_NOSHADOW))
+ {
+ // erase the window immediately to improve XP shadow effect
+ // otherwise the shadow may appears long time before the rest of the window
+ // especially when accessibility is on
+ HDC dc = GetDC( hWnd );
+ RECT aRect;
+ GetClientRect( hWnd, &aRect );
+ FillRect( dc, &aRect, (HBRUSH) (COLOR_MENU+1) ); // choose the menucolor, because its mostly noticeable for menues
+ ReleaseDC( hWnd, dc );
+ }
+
// #i4715, matrox centerpopup might have changed our position
// reposition popups without caption (menues, dropdowns, tooltips)
GetWindowRect( hWnd, &aRectPostMatrox );
@@ -1371,6 +1396,10 @@ void SalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight,
nY = aPt.y;
}
+ // #i3338# to be conformant to UNIX we must position the client window, ie without the decoration
+ nX += aWinRect.left;
+ nY += aWinRect.top;
+
int nScreenX;
int nScreenY;
int nScreenWidth;
@@ -1527,6 +1556,7 @@ void SalFrame::SetParent( SalFrame* pNewParent )
HDC hDC = (HDC)ImplSendMessage( GetSalData()->mpFirstInstance->maInstData.mhComWnd,
SAL_MSG_GETDC,
(WPARAM) hWnd, 0 );
+ maFrameData.mpGraphics2->maGraphicsData.mhWnd = hWnd;
if ( hDC )
{
maFrameData.mpGraphics2->maGraphicsData.mhDC = hDC;
@@ -1553,6 +1583,7 @@ void SalFrame::SetParent( SalFrame* pNewParent )
if( maFrameData.mpGraphics )
{
// re-create DC
+ maFrameData.mpGraphics->maGraphicsData.mhWnd = hWnd;
maFrameData.mpGraphics->maGraphicsData.mhDC = GetDC( hWnd );
if ( GetSalData()->mhDitherPal )
{
@@ -2643,8 +2674,13 @@ void SalFrame::UpdateSettings( AllSettings& rSettings )
StyleSettings aStyleSettings = rSettings.GetStyleSettings();
BOOL bCompBorder = (aStyleSettings.GetOptions() & (STYLE_OPTION_MACSTYLE | STYLE_OPTION_UNIXSTYLE)) == 0;
+#if (_MSC_VER < 1300)
aStyleSettings.SetScrollBarSize( std::min( GetSystemMetrics( SM_CXVSCROLL ), 20 ) ); // #99956# do not allow huge scrollbars, most of the UI is not scaled anymore
aStyleSettings.SetSpinSize( std::min( GetSystemMetrics( SM_CXVSCROLL ), 20 ) );
+#else
+ aStyleSettings.SetScrollBarSize( min( GetSystemMetrics( SM_CXVSCROLL ), 20 ) ); // #99956# do not allow huge scrollbars, most of the UI is not scaled anymore
+ aStyleSettings.SetSpinSize( min( GetSystemMetrics( SM_CXVSCROLL ), 20 ) );
+#endif
aStyleSettings.SetCursorBlinkTime( GetCaretBlinkTime() );
if ( bCompBorder )
{
@@ -2685,6 +2721,8 @@ void SalFrame::UpdateSettings( AllSettings& rSettings )
{
aStyleSettings.SetMenuColor( ImplWinColorToSal( GetSysColor( COLOR_MENU ) ) );
aStyleSettings.SetMenuBarColor( aStyleSettings.GetMenuColor() );
+ aStyleSettings.SetMenuBorderColor( aStyleSettings.GetLightBorderColor() ); // overriden below for flat menus
+ aStyleSettings.SetUseFlatMenues( FALSE );
aStyleSettings.SetMenuTextColor( ImplWinColorToSal( GetSysColor( COLOR_MENUTEXT ) ) );
aStyleSettings.SetActiveColor( ImplWinColorToSal( GetSysColor( COLOR_ACTIVECAPTION ) ) );
aStyleSettings.SetActiveTextColor( ImplWinColorToSal( GetSysColor( COLOR_CAPTIONTEXT ) ) );
@@ -2697,8 +2735,10 @@ void SalFrame::UpdateSettings( AllSettings& rSettings )
SystemParametersInfo( SPI_GETFLATMENU, 0, &bFlatMenues, 0);
if( bFlatMenues )
{
+ aStyleSettings.SetUseFlatMenues( TRUE );
aStyleSettings.SetMenuBarColor( ImplWinColorToSal( GetSysColor( COLOR_MENUBAR ) ) );
aStyleSettings.SetMenuHighlightColor( ImplWinColorToSal( GetSysColor( COLOR_MENUHILIGHT ) ) );
+ aStyleSettings.SetMenuBorderColor( ImplWinColorToSal( GetSysColor( COLOR_3DSHADOW ) ) );
}
}
}
@@ -2771,7 +2811,15 @@ void SalFrame::UpdateSettings( AllSettings& rSettings )
ImplSalUpdateStyleFontA( hDC, aLogFont, aIconFont, bReplaceFont );
}
}
+
+ // get screen font resolution to calculate toolbox item size
+ long nDPIY = GetDeviceCaps( hDC, LOGPIXELSY );
+
ReleaseDC( 0, hDC );
+
+ long nHeightPx = aMenuFont.GetHeight() * nDPIY / 72;
+ aStyleSettings.SetToolbarIconSize( (((nHeightPx-1)*2) >= 28) ? STYLE_TOOLBAR_ICONSIZE_LARGE : STYLE_TOOLBAR_ICONSIZE_SMALL );
+
aStyleSettings.SetMenuFont( aMenuFont );
aStyleSettings.SetTitleFont( aTitleFont );
aStyleSettings.SetFloatTitleFont( aFloatTitleFont );
@@ -3733,6 +3781,9 @@ static void UpdateFrameGeometry( HWND hWnd, SalFrame* pFrame )
GetWindowRect( hWnd, &aRect );
memset(&pFrame->maGeometry, 0, sizeof(SalFrameGeometry) );
+ if ( IsIconic( hWnd ) )
+ return;
+
POINT aPt;
aPt.x=0;
aPt.y=0;
@@ -4801,6 +4852,15 @@ LRESULT CALLBACK SalFrameWndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lP
return 0;
}
+ if ( WM_USER_SYSTEM_WINDOW_ACTIVATED == nMsg )
+ {
+ ImplSVData* pSVData = ImplGetSVData();
+ if (pSVData->mpIntroWindow)
+ pSVData->mpIntroWindow->Hide();
+
+ return 0;
+ }
+
switch( nMsg )
{
case WM_MOUSEMOVE:
@@ -4938,15 +4998,27 @@ LRESULT CALLBACK SalFrameWndProc( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lP
if( !wParam )
{
- ImplGetSVData()->maAppData.mnModalMode++;
+ ImplSVData* pSVData = ImplGetSVData();
+ pSVData->maAppData.mnModalMode++;
+
+ // #106431#, hide SplashScreen
+ if( pSVData->mpIntroWindow )
+ pSVData->mpIntroWindow->Hide();
+
if( pWin )
+ {
pWin->EnableInput( FALSE, TRUE, TRUE, NULL );
+ pWin->ImplIncModalCount(); // #106303# support frame based modal count
+ }
}
else
{
ImplGetSVData()->maAppData.mnModalMode--;
if( pWin )
+ {
pWin->EnableInput( TRUE, TRUE, TRUE, NULL );
+ pWin->ImplDecModalCount(); // #106303# support frame based modal count
+ }
}
}
break;
@@ -5177,7 +5249,7 @@ int ImplShowNativeMessageBox(const String& rTitle, const String& rMessage, int n
nDefaultButton >= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK &&
nDefaultButton <= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO, "Invalid arguments!" );
- int nFlags = MB_TASKMODAL | MB_SETFOREGROUND | nButtonCombination;
+ int nFlags = MB_TASKMODAL | MB_SETFOREGROUND | MB_ICONWARNING | nButtonCombination;
if (nButtonCombination >= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK &&
nButtonCombination <= SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL &&
@@ -5185,6 +5257,11 @@ int ImplShowNativeMessageBox(const String& rTitle, const String& rMessage, int n
nDefaultButton <= SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO)
nFlags |= DEFAULT_BTN_MAPPING_TABLE[nButtonCombination][nDefaultButton];
+ //#107209 hide the splash screen if active
+ ImplSVData* pSVData = ImplGetSVData();
+ if (pSVData->mpIntroWindow)
+ pSVData->mpIntroWindow->Hide();
+
return MessageBoxW(
0,
rMessage.GetBuffer(),
diff --git a/vcl/workben/svdem.cxx b/vcl/workben/svdem.cxx
index f5d2a60780fa..4e5584dc1cde 100644
--- a/vcl/workben/svdem.cxx
+++ b/vcl/workben/svdem.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: svdem.cxx,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: mt $ $Date: 2002-12-05 10:51:57 $
+ * last change: $Author: hr $ $Date: 2003-03-27 17:59:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -61,7 +61,6 @@
#include <sal/main.h>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
#include <event.hxx>
#include <svapp.hxx>
@@ -117,11 +116,6 @@ SAL_IMPLEMENT_MAIN()
}
#endif
- ::comphelper::setProcessServiceFactory( NULL );
- Reference< XComponent > xC( xMS, UNO_QUERY );
- xMS.clear();
- xC->dispose();
- xC.clear();
return 0;
}