CWS-TOOLING: integrate CWS vcl101

2009-04-30 16:05:34 +0200 pl  r271420 : #i95591# need a poll timer so XtTimers work properly
2009-04-30 11:25:52 +0200 hdu  r271406 : #i100929# avoid unneeded colormap reallocation
2009-04-30 11:21:16 +0200 hdu  r271405 : #i100929# use improved SetDrawable() also for salframe updates
2009-04-30 11:12:41 +0200 hdu  r271404 : i100929# invalidate cached renderpic also for changed vdev
2009-04-29 14:31:40 +0200 hdu  r271375 : i100929# use cached renderpic also for alpha-rect/bitmap drawing
2009-04-29 14:16:51 +0200 hdu  r271370 : i100929# notify only GtkSalFrame's valid X11SalFrames
2009-04-29 13:58:10 +0200 hdu  r271369 : i100929# notify GtkSalFrame's X11SalGraphics that their drawables will become obsolete
2009-04-29 13:53:48 +0200 hdu  r271367 : #i100929# release cached renderpic whenever the corresponding drawable changes
2009-04-28 11:56:07 +0200 pl  r271317 : fix a snafu
2009-04-27 16:52:29 +0200 hdu  r271293 : #i100000# WAE fix for debug=true compilation
2009-04-27 12:38:11 +0200 hdu  r271260 : #i101367# disable vdev mapmode when measuring pixel size
2009-04-27 12:28:37 +0200 hdu  r271259 : #i101367# speedup svclcanvas::CanvasBitmapHelper::getSize()
2009-04-23 15:11:25 +0200 hdu  r271175 : #i91685# ignore trailing space in last cell
2009-04-23 12:55:14 +0200 pl  r271156 : #i101032# check for empty bitmap
2009-04-23 11:04:50 +0200 pl  r271144 : #101184# add a paranoia check
2009-04-21 19:12:25 +0200 pl  r271055 : #i101184# add: recognize added/removed monitors in xinerama configuration for gtk plugin (thanks cmc)
2009-04-21 17:04:44 +0200 pl  r271046 : #i101089# remove unused method (thanks cmc)
2009-04-21 16:41:38 +0200 hdu  r271042 : #i99842# set text decoration color
2009-04-20 22:57:37 +0200 pl  r271015 : #i101063# fix warnings
2009-04-20 22:55:39 +0200 pl  r271014 : #i101063# fix warnings
2009-04-20 11:35:24 +0200 hdu  r270968 : #i1001102# remove dependency to psprint module
2009-04-20 11:31:08 +0200 hdu  r270967 : #i100929# keep cached render Picture in X11SalGraphics removes
2009-04-20 11:24:57 +0200 hdu  r270966 : #i100929# cache render Picture in X11SalGraphics
2009-04-18 14:53:22 +0200 hdu  r270959 : CWS-TOOLING: rebase CWS vcl101 to trunk@270723 (milestone: DEV300:m46)
2009-04-17 12:00:50 +0200 hdu  r270934 : #i100951# b2d-polygon clipping handles bezier-segments nowadays => performance opt possible
2009-04-17 11:50:49 +0200 hdu  r270933 : #i100922# count b2d-polypoly-points to avoid priority-queue reallocations
2009-04-17 11:07:03 +0200 hdu  r270930 : #i101145# match dpi-sanity check with gnome-UI (thanks Caolan!)
2009-04-17 10:44:41 +0200 hdu  r270929 : #i100603# dingbats-encoded PDF-builtin fonts are symbol fonts too
2009-04-17 10:36:10 +0200 hdu  r270928 : #i101145# check sanity of resolution reported by Xft-dpi (thanks CMC!)
2009-04-08 13:53:35 +0200 hdu  r270644 : #i100951# avoid expensive calls to basegfx::tools::clipPolygonOnRange() if possible
2009-04-08 13:19:26 +0200 hdu  r270637 : #i100922# prevent needless stl::priority_queue reallacations by reserving
2009-04-08 11:14:30 +0200 hdu  r270627 : #i100929# use X11SalGraphics::GetXRenderPicture() also for text drawing
2009-04-08 10:00:42 +0200 hdu  r270620 : #i100929# add and use X11SalGraphics::GetXRenderPicture() for polygon drawing
2009-04-06 15:52:47 +0200 hdu  r270563 : #i100885# add and use AquaSalGraphics::copyResolution() to speed up virdev creation
2009-04-02 14:39:06 +0200 pl  r270408 : #i95873# do not set LD_LIBRARY_PATH for external apps
2009-03-31 18:43:19 +0200 pl  r270292 : #i99783# transparency of closer image changed to mask in the meantime
2009-03-27 15:42:37 +0100 hdu  r270158 : #i100591# fix binary search in dingbats encoding converter
2009-03-27 13:06:34 +0100 hdu  r270151 : #i100603# only PDF builtin text fonts use WinAnsiEncoding
2009-03-27 12:05:35 +0100 hdu  r270147 : #i100603# use correct encoding for all PDF builtin fonts
2009-03-27 09:04:07 +0100 hdu  r270133 : #i100603# use proper encoding for PDF builtin symbol fonts
2009-03-26 17:19:38 +0100 hdu  r270090 : #i100591# support RTL_TEXTENCODING_ADOBE_DINGBATS encoding
2009-03-25 09:02:18 +0100 hdu  r269995 : #i100521# prefer osl_getAsciiFunctionSymbol() when dynloading SAGE and extra USER32 symbols
2009-03-25 08:55:49 +0100 hdu  r269994 : #i100521# prefer osl_getAsciiFunctionSymbol() when dynloading LUNA symbols
2009-03-24 16:15:54 +0100 hdu  r269965 : #i100521# prefer osl_getAsciiFunctionSymbol() when dynloading vclplugin symbols
2009-03-24 16:10:29 +0100 hdu  r269963 : #i100521# prefer osl_getAsciiFunctionSymbol() when dynloading USP symbols
2009-03-24 15:54:30 +0100 hdu  r269962 : #i100521# prefer osl_getAsciiFunctionSymbol() when dynloading xrender symbols
2009-03-24 10:46:55 +0100 hdu  r269920 : #i100506# fix WAE build breakers on unxsols4 for debug=true
2009-03-23 16:36:43 +0100 hdu  r269884 : #159477# fix crash for PDFs with big zlib-chunks
2009-03-20 17:36:56 +0100 pl  r269821 : #i96568# add recent files to mac quickstarter
2009-03-20 14:39:41 +0100 pl  r269809 : #i35482# no HC mode detection, automatically done in independent part
2009-03-19 20:01:37 +0100 pl  r269768 : #i95591# do not reuse UnxPloginComm because of connection loss problems
2009-03-19 18:08:23 +0100 pl  r269765 : #i95588# change default visibility that was ignored everywhere but unix anyway
This commit is contained in:
Kurt Zenker 2009-06-03 15:45:09 +00:00
parent c1f8c3252a
commit 847a872bcf
37 changed files with 1768 additions and 1692 deletions

View File

@ -105,6 +105,19 @@ namespace vclcanvas
return *maBitmap;
}
Size BitmapBackBuffer::getBitmapSizePixel() const
{
Size aSize = maBitmap->GetSizePixel();
if( mbVDevContentIsCurrent && mpVDev )
{
mpVDev->EnableMapMode( FALSE );
aSize = mpVDev->GetOutputSizePixel();
}
return aSize;
}
void BitmapBackBuffer::createVDev() const
{
if( !mpVDev )
@ -151,5 +164,5 @@ namespace vclcanvas
mbBitmapContentIsCurrent = false;
mbVDevContentIsCurrent = true;
}
}

View File

@ -70,6 +70,7 @@ namespace vclcanvas
@internal
*/
BitmapEx& getBitmapReference();
Size getBitmapSizePixel() const;
private:
void createVDev() const;
@ -103,3 +104,4 @@ namespace vclcanvas
}
#endif /* #ifndef _VCLCANVAS_BITMAPBACKBUFFER_HXX_ */

View File

@ -109,7 +109,7 @@ namespace vclcanvas
if( !mpBackBuffer )
return geometry::IntegerSize2D();
return ::vcl::unotools::integerSize2DFromSize( mpBackBuffer->getBitmapReference().GetSizePixel() );
return ::vcl::unotools::integerSize2DFromSize( mpBackBuffer->getBitmapSizePixel() );
}
void CanvasBitmapHelper::clear()

View File

@ -1711,7 +1711,7 @@ BOOL BrowseBox::GoToColumnId( USHORT nColId, BOOL bMakeVisible, BOOL bRowColMove
if (!bRowColMove && !IsCursorMoveAllowed( nCurRow, nColId ) )
return FALSE;
if ( nColId != nCurColId || bMakeVisible && !IsFieldVisible(nCurRow, nColId, TRUE))
if ( nColId != nCurColId || (bMakeVisible && !IsFieldVisible(nCurRow, nColId, TRUE)))
{
USHORT nNewPos = GetColumnPos(nColId);
BrowserColumn* pColumn = pCols->GetObject( nNewPos );

View File

@ -901,7 +901,7 @@ sal_Bool SvtSecurityOptions_Impl::IsSecureURL( const OUString& sURL ,
INetProtocol aProtocol = aURL.GetProtocol();
// All other URLs must checked in combination with referer and internal information about security
if ( aProtocol != INET_PROT_MACRO && aProtocol != INET_PROT_SLOT ||
if ( (aProtocol != INET_PROT_MACRO && aProtocol != INET_PROT_SLOT) ||
aURL.GetMainURL( INetURLObject::NO_DECODE ).matchIgnoreAsciiCaseAsciiL( "macro:///", 9 ) == 0)
{
// security check only for "macro" ( without app basic ) or "slot" protocols

View File

@ -47,7 +47,7 @@
FileControl::FileControl( Window* pParent, WinBits nStyle, FileControlMode nFlags ) :
Window( pParent, nStyle|WB_DIALOGCONTROL ),
maEdit( this, (nStyle&(~WB_BORDER))|WB_NOTABSTOP ),
maButton( this, nStyle&(~WB_BORDER)|WB_NOLIGHTBORDER|WB_NOPOINTERFOCUS|WB_NOTABSTOP ),
maButton( this, (nStyle&(~WB_BORDER))|WB_NOLIGHTBORDER|WB_NOPOINTERFOCUS|WB_NOTABSTOP ),
maButtonText( SvtResId( STR_FILECTRL_BUTTONTEXT ) ),
mnFlags( nFlags ),
mnInternalFlags( FILECTRL_ORIGINALBUTTONTEXT )
@ -164,11 +164,11 @@ void FileControl::Resize()
Size aOutSz = GetOutputSizePixel();
long nButtonTextWidth = maButton.GetTextWidth( maButtonText );
if ( ((mnInternalFlags & FILECTRL_ORIGINALBUTTONTEXT) == 0) ||
nButtonTextWidth < aOutSz.Width()/3 &&
( nButtonTextWidth < aOutSz.Width()/3 &&
( mnFlags & FILECTRL_RESIZEBUTTONBYPATHLEN
? ( maEdit.GetTextWidth( maEdit.GetText() )
<= aOutSz.Width() - nButtonTextWidth - ButtonBorder )
: TRUE )
: TRUE ) )
)
{
maButton.SetText( maButtonText );

View File

@ -374,8 +374,8 @@ void SvtMatchContext_Impl::ReadFolder( const String& rURL,
sal_Bool bExectMatch = bPureHomePath
|| aText.CompareToAscii( "." ) == COMPARE_EQUAL
|| aText.Len() > 1 && aText.Copy( aText.Len() - 2, 2 ).CompareToAscii( "/." ) == COMPARE_EQUAL
|| aText.Len() > 1 && aText.Copy( aText.Len() - 3, 3 ).CompareToAscii( "/.." ) == COMPARE_EQUAL;
|| (aText.Len() > 1 && aText.Copy( aText.Len() - 2, 2 ).CompareToAscii( "/." ) == COMPARE_EQUAL)
|| (aText.Len() > 2 && aText.Copy( aText.Len() - 3, 3 ).CompareToAscii( "/.." ) == COMPARE_EQUAL);
// for pure home pathes ( ~username ) the '.' at the end of rMatch
// means that it poits to root catalog
@ -641,7 +641,7 @@ void SvtMatchContext_Impl::run()
// if the user input is a valid URL, go on with it
// otherwise it could be parsed smart with a predefined smart protocol
// ( or if this is not set with the protocol of a predefined base URL )
if( eProt == INET_PROT_NOT_VALID || eProt == eSmartProt || eSmartProt == INET_PROT_NOT_VALID && eProt == eBaseProt )
if( eProt == INET_PROT_NOT_VALID || eProt == eSmartProt || (eSmartProt == INET_PROT_NOT_VALID && eProt == eBaseProt) )
{
// not stopped yet ?
if( schedule() )

View File

@ -157,7 +157,7 @@ long XBMReader::ParseDefine( const sal_Char* pDefine )
{
long nRet = 0;
char* pTmp = (char*) pDefine;
char cTmp;
unsigned char cTmp;
// bis zum Ende gehen
pTmp += ( strlen( pDefine ) - 1 );

View File

@ -157,6 +157,7 @@ public:
void SetVirDevGraphics( CGLayerRef, CGContextRef, int nBitDepth = 0 );
void initResolution( NSWindow* );
void copyResolution( AquaSalGraphics& );
void updateResolution();
bool IsWindowGraphics() const { return mbWindow; }

View File

@ -301,7 +301,7 @@ void ATSLayout::AdjustLayout( ImplLayoutArgs& rArgs )
int nPixelWidth = rArgs.mnLayoutWidth;
if( !nPixelWidth && rArgs.mpDXArray ) {
// for now we are only interested in the layout width
// TODO: account for individual logical widths
// TODO: use all mpDXArray elements for layouting
nPixelWidth = rArgs.mpDXArray[ mnCharCount - 1 ];
// workaround for ATSUI not using trailing spaces for justification
@ -309,14 +309,21 @@ void ATSLayout::AdjustLayout( ImplLayoutArgs& rArgs )
int i = mnCharCount;
while( (--i > 0) && IsSpacingGlyph( rArgs.mpStr[mnMinCharPos+i]|GF_ISCHAR ) )
mnTrailingSpaceWidth += rArgs.mpDXArray[i] - rArgs.mpDXArray[i-1];
if( i <= 0 )
return;
// #i91685# trailing letters are left aligned (right aligned for RTL)
mnTrailingSpaceWidth += rArgs.mpDXArray[i];
if( i > 0 )
mnTrailingSpaceWidth -= rArgs.mpDXArray[i-1];
InitGIA(); // ensure valid mpCharWidths[]
mnTrailingSpaceWidth -= Fixed2Vcl( mpCharWidths[i] );
// ignore trailing space for calculating the available width
nOrigWidth -= mnTrailingSpaceWidth;
nPixelWidth -= mnTrailingSpaceWidth;
// trailing spaces can be leftmost spaces in RTL-layouts
// in RTL-layouts trailing spaces are leftmost
// TODO: use BiDi-algorithm to thoroughly check this assumption
if( rArgs.mnFlags & SAL_LAYOUT_BIDI_RTL)
mnBaseAdv = mnTrailingSpaceWidth;
// TODO: use all mpDXArray elements for layouting
}
// return early if there is nothing to do
if( !nPixelWidth )

View File

@ -416,6 +416,16 @@ void AquaSalGraphics::GetResolution( long& rDPIX, long& rDPIY )
rDPIY = static_cast<long>(mfFakeDPIScale * mnRealDPIY);
}
void AquaSalGraphics::copyResolution( AquaSalGraphics& rGraphics )
{
if( !rGraphics.mnRealDPIY && rGraphics.mbWindow && rGraphics.mpFrame )
rGraphics.initResolution( rGraphics.mpFrame->mpWindow );
mnRealDPIX = rGraphics.mnRealDPIX;
mnRealDPIY = rGraphics.mnRealDPIY;
mfFakeDPIScale = rGraphics.mfFakeDPIScale;
}
// -----------------------------------------------------------------------
USHORT AquaSalGraphics::GetBitCount()

View File

@ -87,7 +87,7 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX,
if( pFrame && AquaSalFrame::isAlive( pFrame ) )
{
mpGraphics->setGraphicsFrame( pFrame );
mpGraphics->initResolution( pFrame->mpWindow );
mpGraphics->copyResolution( *pGraphic );
}
}

View File

@ -46,7 +46,7 @@ class VCL_DLLPUBLIC SystemChildWindow : public Window
{
private:
using Window::ImplInit;
SAL_DLLPRIVATE void ImplInitSysChild( Window* pParent, WinBits nStyle, SystemWindowData *pData, BOOL bShow = TRUE );
SAL_DLLPRIVATE void ImplInitSysChild( Window* pParent, WinBits nStyle, SystemWindowData *pData, BOOL bShow = FALSE );
// Copy assignment is forbidden and not implemented.
SAL_DLLPRIVATE SystemChildWindow (const SystemChildWindow &);

View File

@ -646,7 +646,7 @@ const PDFWriterImpl::BuiltinFont PDFWriterImpl::m_aBuiltinFonts[ 14 ] = {
"ZapfDingbats", // PSName
820, -143, // ascend, descend
FAMILY_DONTKNOW, // family style
RTL_TEXTENCODING_SYMBOL, // charset
RTL_TEXTENCODING_ADOBE_DINGBATS, // charset
PITCH_VARIABLE, // pitch
WIDTH_NORMAL, // width type
WEIGHT_NORMAL, // weight type

View File

@ -246,9 +246,12 @@ void PDFWriter::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, const
void PDFWriter::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, const Point& rSrcPtPixel, const Size& rSrcSizePixel, const BitmapEx& rBitmap )
{
if ( !!rBitmap )
{
BitmapEx aBitmap( rBitmap );
aBitmap.Crop( Rectangle( rSrcPtPixel, rSrcSizePixel ) );
((PDFWriterImpl*)pImplementation)->drawBitmap( rDestPt, rDestSize, aBitmap );
}
}
void PDFWriter::DrawMask( const Point& rDestPt, const Bitmap& rBitmap, const Color& rMaskColor )

View File

@ -6,9 +6,6 @@
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: pdfwriter_impl.cxx,v $
* $Revision: 1.132.72.2 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@ -1930,7 +1927,7 @@ static ImplDevFontAttributes GetDevFontAttributes( const PDFWriterImpl::BuiltinF
aDFA.maName = String::CreateFromAscii( rBuiltin.m_pName );
aDFA.maStyleName = String::CreateFromAscii( rBuiltin.m_pStyleName );
aDFA.meFamily = rBuiltin.m_eFamily;
aDFA.mbSymbolFlag = (rBuiltin.m_eCharSet == RTL_TEXTENCODING_SYMBOL);
aDFA.mbSymbolFlag = (rBuiltin.m_eCharSet != RTL_TEXTENCODING_MS_1252 );
aDFA.mePitch = rBuiltin.m_ePitch;
aDFA.meWeight = rBuiltin.m_eWeight;
aDFA.meItalic = rBuiltin.m_eItalic;
@ -2033,7 +2030,7 @@ PDFSalLayout::PDFSalLayout( PDFWriterImpl& rPDFWriterImpl,
mrBuiltinFont( rBuiltinFont ),
mnPixelPerEM( nPixelPerEM )
{
mbIsSymbolFont = (rBuiltinFont.m_eCharSet == RTL_TEXTENCODING_SYMBOL);
mbIsSymbolFont = (rBuiltinFont.m_eCharSet != RTL_TEXTENCODING_MS_1252);
SetOrientation( nOrientation );
}
@ -2045,41 +2042,35 @@ bool PDFSalLayout::LayoutText( ImplLayoutArgs& rArgs )
SetText( aText );
SetUnitsPerPixel( 1000 );
rtl_UnicodeToTextConverter aConv = rtl_createTextToUnicodeConverter( RTL_TEXTENCODING_MS_1252 );
rtl_UnicodeToTextConverter aConv = rtl_createTextToUnicodeConverter( mrBuiltinFont.m_eCharSet );
Point aNewPos( 0, 0 );
bool bRightToLeft;
for( int nCharPos = -1; rArgs.GetNextPos( &nCharPos, &bRightToLeft ); )
{
// TODO: handle unicode surrogates
// on the other hand builtin fonts don't support them anyway
// on the other hand the PDF builtin fonts don't support them anyway
sal_Unicode cChar = rArgs.mpStr[ nCharPos ];
if( bRightToLeft )
cChar = static_cast<sal_Unicode>(GetMirroredChar( cChar ));
if( cChar & 0xff00 )
if( 1 ) // TODO: shortcut for ASCII?
{
// some characters can be used by conversion
if( (cChar >= 0xf000) && mbIsSymbolFont )
cChar -= 0xf000;
else
{
sal_Char aBuf[4];
sal_uInt32 nInfo;
sal_Size nSrcCvtChars;
sal_Char aBuf[4];
sal_uInt32 nInfo;
sal_Size nSrcCvtChars;
sal_Size nConv = rtl_convertUnicodeToText( aConv,
NULL,
&cChar, 1,
aBuf, 1,
RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR,
&nInfo, &nSrcCvtChars );
// check whether conversion was possible
// else fallback font is needed as the standard fonts
// are handled via WinAnsi encoding
if( nConv > 0 )
cChar = ((sal_Unicode)aBuf[0]) & 0x00ff;
}
sal_Size nConv = rtl_convertUnicodeToText( aConv,
NULL,
&cChar, 1,
aBuf, sizeof(aBuf)/sizeof(*aBuf),
RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR,
&nInfo, &nSrcCvtChars );
// check whether conversion was possible
// else fallback font is needed as the standard fonts
// are handled via WinAnsi encoding
if( nConv > 0 )
cChar = ((sal_Unicode)aBuf[0]) & 0x00ff;
}
if( cChar & 0xff00 )
{
@ -2088,7 +2079,7 @@ bool PDFSalLayout::LayoutText( ImplLayoutArgs& rArgs )
}
long nGlyphWidth = (long)mrBuiltinFont.m_aWidths[cChar] * mnPixelPerEM;
long nGlyphFlags = (nGlyphWidth > 0) ? 0 : GlyphItem::IS_IN_CLUSTER;
long nGlyphFlags = 0; // builtin fonts don't have diacritic glyphs
if( bRightToLeft )
nGlyphFlags |= GlyphItem::IS_RTL_GLYPH;
// TODO: get kerning from builtin fonts
@ -2782,7 +2773,7 @@ sal_Int32 PDFWriterImpl::emitBuiltinFont( const ImplFontData* pFont, sal_Int32 n
"<</Type/Font/Subtype/Type1/BaseFont/" );
appendName( pBuiltinFont->m_pPSName, aLine );
aLine.append( "\n" );
if( pBuiltinFont->m_eCharSet != RTL_TEXTENCODING_SYMBOL )
if( pBuiltinFont->m_eCharSet == RTL_TEXTENCODING_MS_1252 )
aLine.append( "/Encoding/WinAnsiEncoding\n" );
aLine.append( ">>\nendobj\n\n" );
CHECK_RETURN( writeBuffer( aLine.getStr(), aLine.getLength() ) );

View File

@ -5056,11 +5056,11 @@ MenuBarWindow::MenuBarWindow( Window* pParent ) :
if( pResMgr )
{
Bitmap aBitmap( ResId( SV_RESID_BITMAP_CLOSEDOC, *pResMgr ) );
Bitmap aBitmapHC( ResId( SV_RESID_BITMAP_CLOSEDOCHC, *pResMgr ) );
BitmapEx aBitmap( ResId( SV_RESID_BITMAP_CLOSEDOC, *pResMgr ) );
BitmapEx aBitmapHC( ResId( SV_RESID_BITMAP_CLOSEDOCHC, *pResMgr ) );
aCloser.maImage = Image( aBitmap, Color( COL_LIGHTMAGENTA ) );
aCloser.maImageHC = Image( aBitmapHC, Color( COL_LIGHTMAGENTA ) );
aCloser.maImage = Image( aBitmap );
aCloser.maImageHC = Image( aBitmapHC );
aCloser.SetOutStyle( TOOLBOX_STYLE_FLAT );
aCloser.SetBackground();

View File

@ -126,6 +126,12 @@ void signalScreenSizeChanged( GdkScreen* pScreen, gpointer data )
pDisp->screenSizeChanged( pScreen );
}
void signalMonitorsChanged( GdkScreen* pScreen, gpointer data )
{
GtkSalDisplay* pDisp = (GtkSalDisplay*)data;
pDisp->monitorsChanged( pScreen );
}
}
GdkFilterReturn GtkSalDisplay::filterGdkEvent( GdkXEvent* sys_event,
@ -192,6 +198,8 @@ void GtkSalDisplay::screenSizeChanged( GdkScreen* pScreen )
{
rSD.m_aSize = Size( gdk_screen_get_width( pScreen ),
gdk_screen_get_height( pScreen ) );
if( ! m_aFrames.empty() )
m_aFrames.front()->CallCallback( SALEVENT_DISPLAYCHANGED, 0 );
}
}
else
@ -201,6 +209,36 @@ void GtkSalDisplay::screenSizeChanged( GdkScreen* pScreen )
}
}
void GtkSalDisplay::monitorsChanged( GdkScreen* pScreen )
{
if( pScreen )
{
if( gdk_display_get_n_screens(m_pGdkDisplay) == 1 )
{
int nScreen = gdk_screen_get_number( pScreen );
if( nScreen == m_nDefaultScreen ) //To-Do, make m_aXineramaScreens a per-screen thing ?
{
gint nMonitors = gdk_screen_get_n_monitors(pScreen);
m_aXineramaScreens = std::vector<Rectangle>();
for (gint i = 0; i < nMonitors; ++i)
{
GdkRectangle dest;
gdk_screen_get_monitor_geometry(pScreen, i, &dest);
m_aXineramaScreens.push_back( Rectangle( Point(dest.x,
dest.y ), Size( dest.width, dest.height ) ) );
}
m_bXinerama = m_aXineramaScreens.size() > 1;
if( ! m_aFrames.empty() )
m_aFrames.front()->CallCallback( SALEVENT_DISPLAYCHANGED, 0 );
}
else
{
DBG_ERROR( "monitors for non-default screen changed, extend-me" );
}
}
}
}
void GtkSalDisplay::initScreen( int nScreen ) const
{
if( nScreen < 0 || nScreen >= static_cast<int>(m_aScreens.size()) )
@ -626,7 +664,10 @@ void GtkXLib::Init()
{
GdkScreen *pScreen = gdk_display_get_screen( pGdkDisp, n );
if( pScreen )
{
g_signal_connect( G_OBJECT(pScreen), "size-changed", G_CALLBACK(signalScreenSizeChanged), m_pGtkSalDisplay );
g_signal_connect( G_OBJECT(pScreen), "monitors-changed", G_CALLBACK(signalMonitorsChanged), m_pGtkSalDisplay );
}
}
}

View File

@ -114,10 +114,9 @@ extern "C"
static bool hookLocks( oslModule pModule )
{
typedef void (*GdkLockFn) (GCallback enter_fn, GCallback leave_fn);
rtl::OUString aSymbolName( RTL_CONSTASCII_USTRINGPARAM( "gdk_threads_set_lock_functions") );
GdkLockFn gdk_threads_set_lock_functions =
(GdkLockFn) osl_getFunctionSymbol( pModule, aSymbolName.pData );
(GdkLockFn) osl_getAsciiFunctionSymbol( pModule, "gdk_threads_set_lock_functions" );
if ( !gdk_threads_set_lock_functions )
{
#if OSL_DEBUG_LEVEL > 1

View File

@ -3435,10 +3435,12 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
// FIXME: need some way of fetching toolbar icon size.
// aStyleSet.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_SMALL );
/* #i35482# do not override HC mode per force
// #i59364# high contrast mode
bool bHC = ( aStyleSet.GetFaceColor().IsDark() ||
aStyleSet.GetWindowColor().IsDark() );
aStyleSet.SetHighContrastMode( bHC );
*/
// finally update the collected settings
rSettings.SetStyleSettings( aStyleSet );

View File

@ -417,6 +417,14 @@ GtkSalFrame::GtkSalFrame( SystemParentData* pSysData )
GtkSalFrame::~GtkSalFrame()
{
for( unsigned int i = 0; i < sizeof(m_aGraphics)/sizeof(m_aGraphics[0]); ++i )
{
if( !m_aGraphics[i].pGraphics )
continue;
m_aGraphics[i].pGraphics->SetDrawable( None, m_nScreen );
m_aGraphics[i].bInUse = false;
}
if( m_pParent )
m_pParent->m_aChildren.remove( this );

View File

@ -195,7 +195,7 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma
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 );
fprintf( stderr, "Tmp file %s has modes: 0%03lo\n", aFilename.GetBuffer(), (long)aStat.st_mode );
#endif
const char* argv[4];
if( ! ( argv[ 0 ] = getenv( "SHELL" ) ) )

View File

@ -85,6 +85,7 @@ public:
void startupNotificationCompleted() { m_bStartupCompleted = true; }
void screenSizeChanged( GdkScreen* );
void monitorsChanged( GdkScreen* );
};

View File

@ -87,7 +87,8 @@ protected:
SalColormap *m_pDeleteColormap;
Drawable hDrawable_; // use
int m_nScreen;
void* pRenderFormat_;
void* m_pRenderFormat;
XID m_aRenderPicture;
CairoFontsCache m_aCairoFontsCache;
XLIB_Region pPaintRegion_;
@ -215,14 +216,14 @@ public:
inline const SalVisual& GetVisual() const;
inline Drawable GetDrawable() const { return hDrawable_; }
void SetDrawable( Drawable d, int nScreen );
inline void* GetXRenderFormat() { return pRenderFormat_; }
inline void SetXRenderFormat( void* pRenderFormat ) { pRenderFormat_ = pRenderFormat; }
XID GetXRenderPicture();
void* GetXRenderFormat() const { return m_pRenderFormat; }
inline void SetXRenderFormat( void* pRenderFormat ) { m_pRenderFormat = pRenderFormat; }
inline const SalColormap& GetColormap() const { return *m_pColormap; }
using SalGraphics::GetPixel;
inline Pixel GetPixel( SalColor nSalColor ) const;
int GetScreenNumber() const
{ return m_nScreen; }
int GetScreenNumber() const { return m_nScreen; }
// overload all pure virtual methods
virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY );
@ -248,7 +249,7 @@ public:
virtual void SetROPFillColor( SalROPColor nROPColor );
virtual void SetTextColor( SalColor nSalColor );
virtual USHORT SetFont( ImplFontSelectData*, int nFallbackLevel );
virtual USHORT SetFont( ImplFontSelectData*, int nFallbackLevel );
virtual void GetFontMetric( ImplFontMetricData* );
virtual ULONG GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs );
virtual ImplFontCharMap* GetImplFontCharMap() const;

View File

@ -248,7 +248,7 @@ extern "C" {
if( nMajor != 3 || nMinor < 2 || (nMinor == 2 && nMicro < 2) )
{
#if OSL_DEBUG_LEVEL > 1
fprintf( stderr, "unsuitable qt version %d.%d.%d\n", nMajor, nMinor, nMicro );
fprintf( stderr, "unsuitable qt version %d.%d.%d\n", (int)nMajor, (int)nMinor, (int)nMicro );
#endif
return NULL;
}

View File

@ -2035,10 +2035,12 @@ void KDESalFrame::UpdateSettings( AllSettings& rSettings )
// Scroll bar size
aStyleSettings.SetScrollBarSize( kapp->style().pixelMetric( QStyle::PM_ScrollBarExtent ) );
/* #i35482# do not override HC mode
// #i59364# high contrast mode
bool bHC = ( aStyleSettings.GetFaceColor().IsDark() ||
aStyleSettings.GetWindowColor().IsDark() );
aStyleSettings.SetHighContrastMode( bHC );
*/
rSettings.SetStyleSettings( aStyleSettings );
}

View File

@ -831,24 +831,28 @@ void SalDisplay::Init()
int nDisplayScreens = ScreenCount( pDisp_ );
m_aScreens = std::vector<ScreenData>(nDisplayScreens);
const char *value;
mbExactResolution = false;
/* #i15507#
* Xft resolution should take precedence since
* it is what modern desktops use.
*/
if ((value = XGetDefault (pDisp_, "Xft", "dpi")))
const char* pValStr = XGetDefault( pDisp_, "Xft", "dpi" );
if( pValStr != NULL )
{
rtl::OString str (value);
long dpi = (long) str.toDouble();
aResolution_ = Pair( dpi, dpi );
mbExactResolution = true;
const rtl::OString aValStr( pValStr );
const long nDPI = (long) aValStr.toDouble();
// guard against insane resolution
if( (nDPI >= 50) && (nDPI <= 500) )
{
aResolution_ = Pair( nDPI, nDPI );
mbExactResolution = true;
}
}
else
if( mbExactResolution == false )
{
aResolution_ =
Pair( DPI( WidthOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), DisplayWidthMM ( pDisp_, m_nDefaultScreen ) ),
DPI( HeightOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), DisplayHeightMM( pDisp_, m_nDefaultScreen ) ) );
mbExactResolution = false;
}
nMaxRequestSize_ = XExtendedMaxRequestSize( pDisp_ ) * 4;

File diff suppressed because it is too large Load Diff

View File

@ -796,21 +796,15 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
if( rPeer.GetVersion() < 0x02 )
return false;
// create destination picture
Picture aDstPic = GetXRenderPicture();
if( !aDstPic )
return false;
const SalDisplay* pSalDisp = GetDisplay();
const SalVisual& rSalVis = pSalDisp->GetVisual( m_nScreen );
Display* pXDisplay = pSalDisp->GetDisplay();
// create destination picture
// TODO: scoped Pixmap and Pictures
Visual* pDstXVisual = rSalVis.GetVisual();
XRenderPictFormat* pDstVisFmt = rPeer.FindVisualFormat( pDstXVisual );
if( !pDstVisFmt )
return false;
Picture aDstPic = rPeer.CreatePicture( hDrawable_, pDstVisFmt, 0, NULL );
if( !aDstPic )
return false;
// create source Picture
int nDepth = m_pVDev ? m_pVDev->GetDepth() : rSalVis.GetDepth();
const X11SalBitmap& rSrcX11Bmp = static_cast<const X11SalBitmap&>( rSrcBitmap );
@ -829,7 +823,12 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
if( !aSrcPM )
return false;
XRenderPictFormat* pSrcVisFmt = pDstVisFmt;
// create source picture
// TODO: use scoped picture
Visual* pSrcXVisual = rSalVis.GetVisual();
XRenderPictFormat* pSrcVisFmt = rPeer.FindVisualFormat( pSrcXVisual );
if( !pSrcVisFmt )
return false;
Picture aSrcPic = rPeer.CreatePicture( aSrcPM, pSrcVisFmt, 0, NULL );
if( !aSrcPic )
return false;
@ -843,16 +842,16 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
// an XImage needs its data top_down
// TODO: avoid wrongly oriented images in upper layers!
const int nImageSize = pAlphaBuffer->mnHeight * pAlphaBuffer->mnScanlineSize;
const char* pSrc = (char*)pAlphaBuffer->mpBits;
const char* pSrcBits = (char*)pAlphaBuffer->mpBits;
char* pAlphaBits = new char[ nImageSize ];
if( BMP_SCANLINE_ADJUSTMENT( pAlphaBuffer->mnFormat ) == BMP_FORMAT_TOP_DOWN )
memcpy( pAlphaBits, pSrc, nImageSize );
memcpy( pAlphaBits, pSrcBits, nImageSize );
else
{
char* pDst = pAlphaBits + nImageSize;
char* pDstBits = pAlphaBits + nImageSize;
const int nLineSize = pAlphaBuffer->mnScanlineSize;
for(; (pDst -= nLineSize) >= pAlphaBits; pSrc += nLineSize )
memcpy( pDst, pSrc, nLineSize );
for(; (pDstBits -= nLineSize) >= pAlphaBits; pSrcBits += nLineSize )
memcpy( pDstBits, pSrcBits, nLineSize );
}
// the alpha values need to be inverted for XRender
@ -866,7 +865,7 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
*pCDst = ~*pCDst;
const XRenderPictFormat* pAlphaFormat = rPeer.GetStandardFormatA8();
XImage* pAlphaImg = XCreateImage( pXDisplay, pDstXVisual, 8, ZPixmap, 0,
XImage* pAlphaImg = XCreateImage( pXDisplay, pSrcXVisual, 8, ZPixmap, 0,
pAlphaBits, pAlphaBuffer->mnWidth, pAlphaBuffer->mnHeight,
pAlphaFormat->depth, pAlphaBuffer->mnScanlineSize );
@ -904,7 +903,6 @@ bool X11SalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
rPeer.FreePicture( aAlphaPic );
XFreePixmap(pXDisplay, aAlphaPM);
rPeer.FreePicture( aSrcPic );
rPeer.FreePicture( aDstPic );
return true;
}
@ -922,20 +920,10 @@ bool X11SalGraphics::drawAlphaRect( long nX, long nY, long nWidth,
return false;
XRenderPeer& rPeer = XRenderPeer::GetInstance();
if( rPeer.GetVersion() < 0x02 )
if( rPeer.GetVersion() < 0x02 ) // TODO: replace with better test
return false;
const SalDisplay* pSalDisp = GetDisplay();
const SalVisual& rSalVis = pSalDisp->GetVisual( m_nScreen );
// create destination picture
// TODO: scoped Pixmap and Pictures
Visual* pDstXVisual = rSalVis.GetVisual();
XRenderPictFormat* pDstVisFmt = rPeer.FindVisualFormat( pDstXVisual );
if( !pDstVisFmt )
return false;
Picture aDstPic = rPeer.CreatePicture( hDrawable_, pDstVisFmt, 0, NULL );
Picture aDstPic = GetXRenderPicture();
if( !aDstPic )
return false;
@ -948,9 +936,6 @@ bool X11SalGraphics::drawAlphaRect( long nX, long nY, long nWidth,
nX, nY,
nWidth, nHeight );
// cleanup
rPeer.FreePicture( aDstPic );
return true;
}

View File

@ -1023,29 +1023,22 @@ void X11SalGraphics::DrawCairoAAFontString( const ServerFontLayout& rLayout )
void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout )
{
Display* pDisplay = GetXDisplay();
XRenderPeer& rRenderPeer = XRenderPeer::GetInstance();
// find a XRenderPictFormat compatible with the Drawable
XRenderPictFormat* pVisualFormat = static_cast<XRenderPictFormat*>(GetXRenderFormat());
if( !pVisualFormat )
{
Visual* pVisual = GetDisplay()->GetVisual( m_nScreen ).GetVisual();
pVisualFormat = rRenderPeer.FindVisualFormat( pVisual );
// cache the XRenderPictFormat
SetXRenderFormat( static_cast<void*>(pVisualFormat) );
}
DBG_ASSERT( pVisualFormat!=NULL, "no matching XRenderPictFormat for text" );
if( !pVisualFormat )
// get xrender target for this drawable
Picture aDstPic = GetXRenderPicture();
if( !aDstPic )
return;
// get a XRenderPicture for the font foreground
// TODO: move into own method
XRenderPeer& rRenderPeer = XRenderPeer::GetInstance();
XRenderPictFormat* pVisualFormat = (XRenderPictFormat*)GetXRenderFormat();
DBG_ASSERT( pVisualFormat, "we already have a render picture, but XRenderPictFormat==NULL???");
const int nVisualDepth = pVisualFormat->depth;
SalDisplay::RenderEntry& rEntry = GetDisplay()->GetRenderEntries( m_nScreen )[ nVisualDepth ];
if( !rEntry.m_aPicture )
{
// create and cache XRenderPicture for the font foreground
Display* pDisplay = GetXDisplay();
#ifdef DEBUG
int iDummy;
unsigned uDummy;
@ -1067,12 +1060,10 @@ void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout )
XRenderColor aRenderColor = GetXRenderColor( nTextPixel_ );
rRenderPeer.FillRectangle( PictOpSrc, rEntry.m_aPicture, &aRenderColor, 0, 0, 1, 1 );
// notify xrender of target drawable
Picture aDst = rRenderPeer.CreatePicture( hDrawable_, pVisualFormat, 0, NULL );
// set clipping
// TODO: move into GetXRenderPicture()?
if( pClipRegion_ && !XEmptyRegion( pClipRegion_ ) )
rRenderPeer.SetPictureClipRegion( aDst, pClipRegion_ );
rRenderPeer.SetPictureClipRegion( aDstPic, pClipRegion_ );
ServerFont& rFont = rLayout.GetServerFont();
X11GlyphPeer& rGlyphPeer = X11GlyphCache::GetInstance().GetPeer();
@ -1096,12 +1087,9 @@ void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout )
unsigned int aRenderAry[ MAXGLYPHS ];
for( int i = 0; i < nGlyphs; ++i )
aRenderAry[ i ] = rGlyphPeer.GetGlyphId( rFont, aGlyphAry[i] );
rRenderPeer.CompositeString32( rEntry.m_aPicture, aDst,
rRenderPeer.CompositeString32( rEntry.m_aPicture, aDstPic,
aGlyphSet, aPos.X(), aPos.Y(), aRenderAry, nGlyphs );
}
// cleanup
rRenderPeer.FreePicture( aDst );
}
//--------------------------------------------------------------------------

View File

@ -248,7 +248,7 @@ static bool passFileToCommandLine( const String& rFilename, const String& rComma
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 );
fprintf( stderr, "Tmp file %s has modes: 0%03lo\n", aFilename.GetBuffer(), (long)aStat.st_mode );
#endif
const char* argv[4];
if( ! ( argv[ 0 ] = getenv( "SHELL" ) ) )

View File

@ -121,16 +121,14 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap,
if (m_pDeleteColormap != pOrigDeleteColormap)
delete pOrigDeleteColormap;
hDrawable_ = pDevice->GetDrawable();
const Drawable aVdevDrawable = pDevice->GetDrawable();
SetDrawable( aVdevDrawable, m_nScreen );
m_pVDev = pDevice;
m_pFrame = NULL;
bWindow_ = pDisplay->IsDisplay();
bVirDev_ = TRUE;
nPenPixel_ = GetPixel( nPenColor_ );
nTextPixel_ = GetPixel( nTextColor_ );
nBrushPixel_ = GetPixel( nBrushColor_ );
}
// -=-= SalVirDevData / SalVirtualDevice -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@ -274,3 +272,4 @@ void X11SalVirtualDevice::GetSize( long& rWidth, long& rHeight )
rWidth = GetWidth();
rHeight = GetHeight();
}

View File

@ -82,7 +82,7 @@ void XRenderPeer::InitRenderLib()
// we don't know if we are running on a system with xrender library
// we don't want to install system libraries ourselves
// => load them dynamically when they are there
OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.so.1" ));
const OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.so.1" ));
mpRenderLib = osl_loadModule( aLibName.pData, SAL_LOADMODULE_DEFAULT );
if( !mpRenderLib ) {
#ifdef DEBUG
@ -93,98 +93,81 @@ void XRenderPeer::InitRenderLib()
return;
}
OUString aQueryExtensionFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderQueryExtension"));
oslGenericFunction pFunc;
pFunc = osl_getFunctionSymbol( mpRenderLib, aQueryExtensionFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderQueryExtension" );
if( !pFunc ) return;
mpXRenderQueryExtension = (Bool(*)(Display*,int*,int*))pFunc;
OUString aQueryVersionFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderQueryVersion"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aQueryVersionFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderQueryVersion" );
if( !pFunc ) return;
mpXRenderQueryVersion = (void(*)(Display*,int*,int*))pFunc;
OUString aVisFormatFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFindVisualFormat"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aVisFormatFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindVisualFormat" );
if( !pFunc ) return;
mpXRenderFindVisualFormat = (XRenderPictFormat*(*)(Display*,Visual*))pFunc;
OUString aStdFormatFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFindStandardFormat"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aStdFormatFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindStandardFormat" );
if( !pFunc ) return;
mpXRenderFindStandardFormat = (XRenderPictFormat*(*)(Display*,int))pFunc;
OUString aFmtFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFindFormat"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aFmtFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindFormat" );
if( !pFunc ) return;
mpXRenderFindFormat = (XRenderPictFormat*(*)(Display*,unsigned long,
const XRenderPictFormat*,int))pFunc;
OUString aCreatGlyphFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCreateGlyphSet"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aCreatGlyphFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCreateGlyphSet" );
if( !pFunc ) return;
mpXRenderCreateGlyphSet = (GlyphSet(*)(Display*,const XRenderPictFormat*))pFunc;
OUString aFreeGlyphFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFreeGlyphSet"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aFreeGlyphFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreeGlyphSet" );
if( !pFunc ) return;
mpXRenderFreeGlyphSet = (void(*)(Display*,GlyphSet))pFunc;
OUString aAddGlyphFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderAddGlyphs"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aAddGlyphFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderAddGlyphs" );
if( !pFunc ) return;
mpXRenderAddGlyphs = (void(*)(Display*,GlyphSet,Glyph*,const XGlyphInfo*,
int,const char*,int))pFunc;
OUString aFreeGlyphsFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFreeGlyphs"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aFreeGlyphsFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreeGlyphs" );
if( !pFunc ) return;
mpXRenderFreeGlyphs = (void(*)(Display*,GlyphSet,Glyph*,int))pFunc;
OUString aCompStringFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCompositeString32"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aCompStringFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCompositeString32" );
if( !pFunc ) return;
mpXRenderCompositeString32 = (void(*)(Display*,int,Picture,Picture,
const XRenderPictFormat*,GlyphSet,int,int,int,int,const unsigned*,int))pFunc;
OUString aCreatPicFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderCreatePicture"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aCreatPicFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCreatePicture" );
if( !pFunc ) return;
mpXRenderCreatePicture = (Picture(*)(Display*,Drawable,const XRenderPictFormat*,
unsigned long,const XRenderPictureAttributes*))pFunc;
OUString aSetClipFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderSetPictureClipRegion"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aSetClipFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderSetPictureClipRegion" );
if( !pFunc ) return;
mpXRenderSetPictureClipRegion = (void(*)(Display*,Picture,XLIB_Region))pFunc;
OUString aFreePicFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFreePicture"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aFreePicFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreePicture" );
if( !pFunc ) return;
mpXRenderFreePicture = (void(*)(Display*,Picture))pFunc;
OUString aRenderCompositeFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderComposite"));
pFunc = osl_getFunctionSymbol( mpRenderLib, aRenderCompositeFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderComposite" );
if( !pFunc ) return;
mpXRenderComposite = (void(*)(Display*,int,Picture,Picture,Picture,
int,int,int,int,int,int,unsigned,unsigned))pFunc;
OUString aFillRectangleFuncName(RTL_CONSTASCII_USTRINGPARAM("XRenderFillRectangle"));
pFunc=osl_getFunctionSymbol( mpRenderLib, aFillRectangleFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFillRectangle" );
if( !pFunc ) return;
mpXRenderFillRectangle = (void(*)(Display*,int,Picture,const XRenderColor*,
int,int,unsigned int,unsigned int))pFunc;
OUString aCompositeTrapsFuncName( RTL_CONSTASCII_USTRINGPARAM("XRenderCompositeTrapezoids"));
pFunc=osl_getFunctionSymbol( mpRenderLib, aCompositeTrapsFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCompositeTrapezoids" );
#if 0 // not having trapezoid support is supported
if( !pFunc ) return;
#endif
mpXRenderCompositeTrapezoids = (void(*)(Display*,int,Picture,Picture,
const XRenderPictFormat*,int,int,const XTrapezoid*,int))pFunc;
OUString aAddTrapsFuncName( RTL_CONSTASCII_USTRINGPARAM("XRenderAddTraps"));
pFunc=osl_getFunctionSymbol( mpRenderLib, aAddTrapsFuncName.pData);
pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderAddTraps" );
#if 0 // not having trapezoid support is supported
if( !pFunc ) return;
#endif

View File

@ -79,8 +79,7 @@ static SalInstance* tryInstance( const OUString& rModuleBase )
SAL_LOADMODULE_DEFAULT );
if( aMod )
{
OUString aSym( RTL_CONSTASCII_USTRINGPARAM( "create_SalInstance" ) );
salFactoryProc aProc = (salFactoryProc)osl_getFunctionSymbol( aMod, aSym.pData );
salFactoryProc aProc = (salFactoryProc)osl_getAsciiFunctionSymbol( aMod, "create_SalInstance" );
if( aProc )
{
pInst = aProc( aMod );
@ -113,7 +112,7 @@ static SalInstance* tryInstance( const OUString& rModuleBase )
{
#if OSL_DEBUG_LEVEL > 1
std::fprintf( stderr, "could not load symbol %s from shared object %s\n",
OUStringToOString( aSym, RTL_TEXTENCODING_ASCII_US ).getStr(),
"create_SalInstance",
OUStringToOString( aModule, RTL_TEXTENCODING_ASCII_US ).getStr() );
#endif
osl_unloadModule( aMod );

View File

@ -100,18 +100,12 @@ VisualStylesAPI::VisualStylesAPI()
if ( mhModule )
{
OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "OpenThemeData" ) );
lpfnOpenThemeData = (OpenThemeData_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData );
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "CloseThemeData" ) );
lpfnCloseThemeData = (CloseThemeData_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData );
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "GetThemeBackgroundContentRect" ) );
lpfnGetThemeBackgroundContentRect = (GetThemeBackgroundContentRect_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData );
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "DrawThemeBackground" ) );
lpfnDrawThemeBackground = (DrawThemeBackground_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData );
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "DrawThemeText" ) );
lpfnDrawThemeText = (DrawThemeText_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData );
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "GetThemePartSize" ) );
lpfnGetThemePartSize = (GetThemePartSize_Proc_T) osl_getSymbol( mhModule, queryFuncName.pData );
lpfnOpenThemeData = (OpenThemeData_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "OpenThemeData" );
lpfnCloseThemeData = (CloseThemeData_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "CloseThemeData" );
lpfnGetThemeBackgroundContentRect = (GetThemeBackgroundContentRect_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "GetThemeBackgroundContentRect" );
lpfnDrawThemeBackground = (DrawThemeBackground_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "DrawThemeBackground" );
lpfnDrawThemeText = (DrawThemeText_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "DrawThemeText" );
lpfnGetThemePartSize = (GetThemePartSize_Proc_T)osl_getAsciiFunctionSymbol( mhModule, "GetThemePartSize" );
}
else
{

View File

@ -1172,62 +1172,52 @@ static bool InitUSP()
if( !aUspModule )
return (bUspEnabled = false);
OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "ScriptIsComplex" ) );
pScriptIsComplex = (HRESULT (WINAPI*)(const WCHAR*,int,DWORD))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptIsComplex" );
bUspEnabled &= (NULL != pScriptIsComplex);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptItemize" ) );
pScriptItemize = (HRESULT (WINAPI*)(const WCHAR*,int,int,
const SCRIPT_CONTROL*,const SCRIPT_STATE*,SCRIPT_ITEM*,int*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptItemize" );
bUspEnabled &= (NULL != pScriptItemize);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptShape" ) );
pScriptShape = (HRESULT (WINAPI*)(HDC,SCRIPT_CACHE*,const WCHAR*,
int,int,SCRIPT_ANALYSIS*,WORD*,WORD*,SCRIPT_VISATTR*,int*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptShape" );
bUspEnabled &= (NULL != pScriptShape);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptPlace" ) );
pScriptPlace = (HRESULT (WINAPI*)(HDC, SCRIPT_CACHE*, const WORD*, int,
const SCRIPT_VISATTR*,SCRIPT_ANALYSIS*,int*,GOFFSET*,ABC*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptPlace" );
bUspEnabled &= (NULL != pScriptPlace);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptGetLogicalWidths" ) );
pScriptGetLogicalWidths = (HRESULT (WINAPI*)(const SCRIPT_ANALYSIS*,
int,int,const int*,const WORD*,const SCRIPT_VISATTR*,int*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptGetLogicalWidths" );
bUspEnabled &= (NULL != pScriptGetLogicalWidths);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptApplyLogicalWidth" ) );
pScriptApplyLogicalWidth = (HRESULT (WINAPI*)(const int*,int,int,const WORD*,
const SCRIPT_VISATTR*,const int*,const SCRIPT_ANALYSIS*,ABC*,int*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptApplyLogicalWidth" );
bUspEnabled &= (NULL != pScriptApplyLogicalWidth);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptJustify" ) );
pScriptJustify = (HRESULT (WINAPI*)(const SCRIPT_VISATTR*,const int*,
int,int,int,int*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptJustify" );
bUspEnabled &= (NULL != pScriptJustify);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptGetFontProperties" ) );
pScriptGetFontProperties = (HRESULT (WINAPI*)( HDC,SCRIPT_CACHE*,SCRIPT_FONTPROPERTIES*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptGetFontProperties" );
bUspEnabled &= (NULL != pScriptGetFontProperties);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptTextOut" ) );
pScriptTextOut = (HRESULT (WINAPI*)(const HDC,SCRIPT_CACHE*,
int,int,UINT,const RECT*,const SCRIPT_ANALYSIS*,const WCHAR*,
int,const WORD*,int,const int*,const int*,const GOFFSET*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptTextOut" );
bUspEnabled &= (NULL != pScriptTextOut);
queryFuncName = OUString( RTL_CONSTASCII_USTRINGPARAM( "ScriptFreeCache" ) );
pScriptFreeCache = (HRESULT (WINAPI*)(SCRIPT_CACHE*))
osl_getSymbol( aUspModule, queryFuncName.pData );
osl_getAsciiFunctionSymbol( aUspModule, "ScriptFreeCache" );
bUspEnabled &= (NULL != pScriptFreeCache);
if( !bUspEnabled )

View File

@ -358,16 +358,12 @@ SalFrame* ImplSalCreateFrame( WinSalInstance* pInst,
void *pFunc = NULL;
if( pLib )
{
OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "SetLayeredWindowAttributes" ) );
pFunc = osl_getSymbol( pLib, queryFuncName.pData );
pFunc = osl_getAsciiFunctionSymbol( pLib, "SetLayeredWindowAttributes" );
}
lpfnSetLayeredWindowAttributes = ( SetLayeredWindowAttributes_Proc_T ) pFunc;
if ( pFunc )
bLayeredAPI = 1;
else
bLayeredAPI = 0;
bLayeredAPI = pFunc ? 1 : 0;
}
}
static const char* pEnvTransparentFloats = getenv("SAL_TRANSPARENT_FLOATS" );
@ -2113,8 +2109,7 @@ void WinSalFrame::StartPresentation( BOOL bStart )
{
OUString aLibraryName( OUString::createFromAscii( aOS.szPathName ) );
oslModule mhSageInst = osl_loadModule( aLibraryName.pData, SAL_LOADMODULE_DEFAULT );
OUString queryFuncName( RTL_CONSTASCII_USTRINGPARAM( "System_Agent_Enable" ) );
pSalData->mpSageEnableProc = (SysAgt_Enable_PROC) osl_getSymbol( mhSageInst, queryFuncName.pData );
pSalData->mpSageEnableProc = (SysAgt_Enable_PROC)osl_getAsciiFunctionSymbol( mhSageInst, "System_Agent_Enable" );
}
else
pSalData->mnSageStatus = DISABLE_AGENT;