Author: hdu
Date: Thu Jan 23 16:56:03 2014
New Revision: 1560745
URL: http://svn.apache.org/r1560745
Log:
#i123895# add VCL support for 64bit OSX port
Modified:
openoffice/trunk/main/vcl/aqua/source/a11y/aqua11ywrapperrow.mm
openoffice/trunk/main/vcl/aqua/source/app/salinst.cxx
openoffice/trunk/main/vcl/aqua/source/app/vclnsapp.mm
openoffice/trunk/main/vcl/aqua/source/dtrans/DropTarget.cxx
openoffice/trunk/main/vcl/aqua/source/gdi/salgdiutils.cxx
openoffice/trunk/main/vcl/aqua/source/window/salframe.cxx
openoffice/trunk/main/vcl/aqua/source/window/salframeview.mm
openoffice/trunk/main/vcl/aqua/source/window/salmenu.cxx
openoffice/trunk/main/vcl/inc/aqua/aquavcltypes.h
openoffice/trunk/main/vcl/inc/aqua/salframeview.h
openoffice/trunk/main/vcl/inc/aqua/salgdi.h
Modified: openoffice/trunk/main/vcl/aqua/source/a11y/aqua11ywrapperrow.mm
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/a11y/aqua11ywrapperrow.mm?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/a11y/aqua11ywrapperrow.mm (original)
+++ openoffice/trunk/main/vcl/aqua/source/a11y/aqua11ywrapperrow.mm Thu Jan 23
16:56:03 2014
@@ -34,7 +34,8 @@
@implementation AquaA11yWrapperRow : AquaA11yWrapper
-(id)disclosingAttribute {
- return NO; // TODO
+ // TODO: implement
+ return nil;
}
-(NSArray *)accessibilityAttributeNames {
Modified: openoffice/trunk/main/vcl/aqua/source/app/salinst.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/app/salinst.cxx?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/app/salinst.cxx (original)
+++ openoffice/trunk/main/vcl/aqua/source/app/salinst.cxx Thu Jan 23 16:56:03
2014
@@ -190,8 +190,10 @@ static void initNSApp()
else
NSLog(@"Unable to obtain system version: %ld", (long)err);
- // Initialize Apple Remote
+ // Initialize Apple Remote
+#if 0 // disabled for now for stability problems
GetSalData()->mpMainController = [[MainController alloc] init];
+#endif
[[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
selector:
@selector(applicationWillBecomeActive:)
Modified: openoffice/trunk/main/vcl/aqua/source/app/vclnsapp.mm
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/app/vclnsapp.mm?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/app/vclnsapp.mm (original)
+++ openoffice/trunk/main/vcl/aqua/source/app/vclnsapp.mm Thu Jan 23 16:56:03
2014
@@ -79,7 +79,7 @@
if( nModMask == NSCommandKeyMask
&& [[pEvent charactersIgnoringModifiers] isEqualToString:
@"w"] )
{
- [pFrame->getNSWindow() windowShouldClose: nil];
+ [(SalFrameWindow*)pFrame->getNSWindow() windowShouldClose:
nil];
return;
}
}
Modified: openoffice/trunk/main/vcl/aqua/source/dtrans/DropTarget.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/dtrans/DropTarget.cxx?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/dtrans/DropTarget.cxx (original)
+++ openoffice/trunk/main/vcl/aqua/source/dtrans/DropTarget.cxx Thu Jan 23
16:56:03 2014
@@ -299,15 +299,12 @@ NSDragOperation DropTarget::draggingUpda
//NSLog(@"Drag update: Source actions: %x proposed action %x selected
action %x", mDragSourceSupportedActions, currentAction, mSelectedDropAction);
}
- // Weird but it appears as if there is no method in Cocoa
- // to create a kThemeCopyArrowCursor hence we have to use
- // Carbon to do it
if (dragOp == NSDragOperationNone)
- SetThemeCursor(kThemeNotAllowedCursor);
+ [[NSCursor operationNotAllowedCursor] set];
else if (dragOp == NSDragOperationCopy)
- SetThemeCursor(kThemeCopyArrowCursor);
+ [[NSCursor dragCopyCursor] set];
else
- SetThemeCursor(kThemeArrowCursor);
+ [[NSCursor arrowCursor] set];
return dragOp;
}
@@ -319,7 +316,7 @@ void DropTarget::draggingExited(id /*sen
fire_dragExit(dte);
mDragSourceSupportedActions = DNDConstants::ACTION_NONE;
mSelectedDropAction = DNDConstants::ACTION_NONE;
- SetThemeCursor(kThemeArrowCursor);
+ [[NSCursor arrowCursor] set];
}
@@ -373,7 +370,7 @@ void DropTarget::concludeDragOperation(i
mDragSourceSupportedActions = DNDConstants::ACTION_NONE;
mSelectedDropAction = DNDConstants::ACTION_NONE;
mXCurrentDragClipboard = uno::Reference<XClipboard>();
- SetThemeCursor(kThemeArrowCursor);
+ [[NSCursor arrowCursor] set];
}
Modified: openoffice/trunk/main/vcl/aqua/source/gdi/salgdiutils.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/gdi/salgdiutils.cxx?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/gdi/salgdiutils.cxx (original)
+++ openoffice/trunk/main/vcl/aqua/source/gdi/salgdiutils.cxx Thu Jan 23
16:56:03 2014
@@ -175,7 +175,7 @@ void AquaSalGraphics::SetState()
bool AquaSalGraphics::CheckContext()
{
- if( mbWindow && mpFrame != NULL )
+ if( mbWindow && mpFrame && mpFrame->getNSWindow() )
{
const unsigned int nWidth = mpFrame->maGeometry.nWidth;
const unsigned int nHeight = mpFrame->maGeometry.nHeight;
Modified: openoffice/trunk/main/vcl/aqua/source/window/salframe.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/window/salframe.cxx?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/window/salframe.cxx (original)
+++ openoffice/trunk/main/vcl/aqua/source/window/salframe.cxx Thu Jan 23
16:56:03 2014
@@ -207,7 +207,7 @@ void AquaSalFrame::initWindowAndView()
else
[mpNSWindow setAcceptsMouseMovedEvents: YES];
[mpNSWindow setHasShadow: YES];
- [mpNSWindow setDelegate: mpNSWindow];
+ [mpNSWindow setDelegate: static_cast<id<NSWindowDelegate> >(mpNSWindow)];
const NSRect aRect = NSMakeRect( 0,0, maGeometry.nWidth,
maGeometry.nHeight );
mnTrackingRectTag = [mpNSView addTrackingRect: aRect owner: mpNSView
userData: nil assumeInside: NO];
Modified: openoffice/trunk/main/vcl/aqua/source/window/salframeview.mm
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/window/salframeview.mm?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/window/salframeview.mm (original)
+++ openoffice/trunk/main/vcl/aqua/source/window/salframeview.mm Thu Jan 23
16:56:03 2014
@@ -136,9 +136,9 @@ static const struct ExceptionalKey
static AquaSalFrame* getMouseContainerFrame()
{
- int nWindows = 0;
+ NSInteger nWindows = 0;
NSCountWindows( &nWindows );
- int* pWindows = (int*)alloca( nWindows * sizeof(int) );
+ NSInteger* pWindows = (NSInteger*)alloca( nWindows * sizeof(NSInteger) );
// note: NSWindowList is supposed to be in z-order front to back
NSWindowList( nWindows, pWindows );
AquaSalFrame* pDispatchFrame = NULL;
@@ -1636,7 +1636,7 @@ private:
return nil;
}
-- (unsigned int)characterIndexForPoint:(NSPoint)thePoint
+- (NSUInteger)characterIndexForPoint:(NSPoint)thePoint
{
(void)thePoint;
// FIXME
Modified: openoffice/trunk/main/vcl/aqua/source/window/salmenu.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/aqua/source/window/salmenu.cxx?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/aqua/source/window/salmenu.cxx (original)
+++ openoffice/trunk/main/vcl/aqua/source/window/salmenu.cxx Thu Jan 23
16:56:03 2014
@@ -255,7 +255,7 @@ AquaSalMenu::AquaSalMenu( bool bMenuBar
if( ! mbMenuBar )
{
mpMenu = [[SalNSMenu alloc] initWithMenu: this];
- [mpMenu setDelegate: mpMenu];
+ [mpMenu setDelegate: (id<NSMenuDelegate>)mpMenu];
}
else
{
Modified: openoffice/trunk/main/vcl/inc/aqua/aquavcltypes.h
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/inc/aqua/aquavcltypes.h?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/inc/aqua/aquavcltypes.h (original)
+++ openoffice/trunk/main/vcl/inc/aqua/aquavcltypes.h Thu Jan 23 16:56:03 2014
@@ -29,4 +29,5 @@
#import <AppKit/NSEvent.h>
#include "postmac.h"
-#endif _AQUAVCLTYPES_H
+#endif // _AQUAVCLTYPES_H
+
Modified: openoffice/trunk/main/vcl/inc/aqua/salframeview.h
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/inc/aqua/salframeview.h?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/inc/aqua/salframeview.h (original)
+++ openoffice/trunk/main/vcl/inc/aqua/salframeview.h Thu Jan 23 16:56:03 2014
@@ -26,7 +26,7 @@
#include "aqua/aqua11ywrapper.h"
-@interface SalFrameWindow : NSWindow
+@interface SalFrameWindow : NSWindow<NSWindowDelegate>
{
AquaSalFrame* mpFrame;
id mDraggingDestinationHandler;
@@ -42,6 +42,9 @@
-(void)windowDidMiniaturize: (NSNotification*)pNotification;
-(void)windowDidDeminiaturize: (NSNotification*)pNotification;
-(BOOL)windowShouldClose: (NSNotification*)pNotification;
+//-(void)willEncodeRestorableState:(NSCoder*)pCoderState;
+//-(void)didDecodeRestorableState:(NSCoder*)pCoderState;
+//-(void)windowWillEnterVersionBrowser:(NSNotification*)pNotification;
-(void)dockMenuItemTriggered: (id)sender;
-(AquaSalFrame*)getSalFrame;
-(BOOL)containsMouse;
Modified: openoffice/trunk/main/vcl/inc/aqua/salgdi.h
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/inc/aqua/salgdi.h?rev=1560745&r1=1560744&r2=1560745&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/inc/aqua/salgdi.h (original)
+++ openoffice/trunk/main/vcl/inc/aqua/salgdi.h Thu Jan 23 16:56:03 2014
@@ -44,6 +44,8 @@ class ImplMacTextStyle;
struct CGRect;
+typedef std::vector<unsigned char> ByteVector;
+
#ifndef CGFLOAT_TYPE
typedef float CGFloat;
#endif
@@ -52,23 +54,27 @@ typedef float CGFloat;
class ImplMacFontData : public ImplFontData
{
public:
- ImplMacFontData( const ImplDevFontAttributes&, ATSUFontID );
-
- virtual ~ImplMacFontData();
+ ImplMacFontData( const ImplDevFontAttributes&, sal_IntPtr nFontID );
+ virtual ~ImplMacFontData();
- virtual ImplFontData* Clone() const;
- virtual ImplFontEntry* CreateFontInstance( ImplFontSelectData& ) const;
+ virtual ImplFontData* Clone() const = 0;
+ virtual ImplFontEntry* CreateFontInstance( ImplFontSelectData& ) const;
virtual sal_IntPtr GetFontId() const;
+
+ virtual ImplMacTextStyle* CreateMacTextStyle( const ImplFontSelectData&
) const = 0;
+ virtual int GetFontTable( const char pTagName[5], unsigned
char* ) const = 0;
- const ImplFontCharMap* GetImplFontCharMap() const;
+ const ImplFontCharMap* GetImplFontCharMap() const;
bool HasChar( sal_uInt32 cChar )
const;
void ReadOs2Table() const;
void ReadMacCmapEncoding() const;
bool HasCJKSupport() const;
+protected:
+ ImplMacFontData( const ImplMacFontData&);
private:
- const ATSUFontID mnFontId;
+ const sal_IntPtr mnFontId;
mutable const ImplFontCharMap* mpCharMap;
mutable bool mbOs2Read; //
true if OS2-table related info is valid
mutable bool mbHasOs2Table;
@@ -90,16 +96,57 @@ public:
CGFloat GetGreen() const { return mfRGBA[1]; }
CGFloat GetBlue() const { return mfRGBA[2]; }
CGFloat GetAlpha() const { return mfRGBA[3]; }
- private:
+private:
CGFloat mfRGBA[4]; // RGBA
};
+// --------------------
+// - ImplMacTextStyle -
+// --------------------
+class ImplMacTextStyle
+{
+public:
+ explicit ImplMacTextStyle( const ImplFontSelectData& );
+ virtual ~ImplMacTextStyle( void );
+
+ virtual SalLayout* GetTextLayout( void ) const = 0;
+
+ virtual void GetFontMetric( float fPDIY, ImplFontMetricData& ) const
= 0;
+ virtual bool GetGlyphBoundRect( sal_GlyphId, Rectangle& ) const = 0;
+ virtual bool GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon&
) const = 0;
+
+ virtual void SetTextColor( const RGBAColor& ) = 0;
+
+//###protected:
+ const ImplMacFontData* mpFontData;
+ /// workaround to prevent overflows for huge font sizes
+ float mfFontScale;
+ /// <1.0: font is squeezed, >1.0 font is stretched, else 1.0
+ float mfFontStretch;
+ /// text rotation in radian
+ float mfFontRotation;
+};
+
+// ------------------
+// - SystemFontList -
+// TODO: move into cross-platform headers
+// ------------------
+class SystemFontList
+{
+public:
+ virtual ~SystemFontList( void );
+
+ virtual void AnnounceFonts( ImplDevFontList& ) const = 0;
+ virtual ImplMacFontData* GetFontDataFromId( sal_IntPtr nFontId ) const
= 0;
+};
+
// -------------------
// - AquaSalGraphics -
// -------------------
class AquaSalGraphics : public SalGraphics
{
friend class ATSLayout;
+ friend class CTLayout;
protected:
AquaSalFrame* mpFrame;
CGLayerRef
mxLayer; // Quartz graphics layer
@@ -126,18 +173,12 @@ protected:
/// brush color RGBA
RGBAColor maFillColor;
- // Device Font settings
+ // Device Font settings
const ImplMacFontData* mpMacFontData;
- /// ATSU style object which carries all font attributes
- ATSUStyle maATSUStyle;
- /// text rotation as ATSU angle
- Fixed mnATSUIRotation;
- /// workaround to prevent ATSU overflows for huge font sizes
- float mfFontScale;
- /// <1.0: font is squeezed, >1.0 font is stretched, else 1.0
- float mfFontStretch;
- /// allows text to be rendered without antialiasing
- bool mbNonAntialiasedText;
+ ImplMacTextStyle* mpMacTextStyle;
+ RGBAColor maTextColor;
+ // allows text to be rendered without antialiasing
+ bool mbNonAntialiasedText;
// Graphics types