10 changed files with 157 additions and 6 deletions
@ -0,0 +1,67 @@ |
|||||
|
#include "common.h" |
||||
|
|
||||
|
class Cursor : public ComSingleObject<IAvnCursor, &IID_IAvnCursor> |
||||
|
{ |
||||
|
public: |
||||
|
virtual HRESULT GetCursor (AvnStandardCursorType cursorType, void** ptr) |
||||
|
{ |
||||
|
NSCursor * cursor; |
||||
|
switch (cursorType) { |
||||
|
case CursorArrow: |
||||
|
case CursorAppStarting: |
||||
|
case CursorWait: |
||||
|
cursor = [NSCursor arrowCursor]; |
||||
|
break; |
||||
|
case CursorTopLeftCorner: |
||||
|
case CursorTopRightCorner: |
||||
|
case CursorBottomLeftCorner : |
||||
|
case CursorBottomRightCorner: |
||||
|
case CursorCross: |
||||
|
case CursorSizeAll: |
||||
|
cursor = [NSCursor crosshairCursor]; |
||||
|
break; |
||||
|
case CursorTopSide: |
||||
|
case CursorUpArrow: |
||||
|
cursor = [NSCursor resizeUpCursor]; |
||||
|
break; |
||||
|
case CursorBottomSize: |
||||
|
cursor = [NSCursor resizeDownCursor]; |
||||
|
break; |
||||
|
case CursorDragCopy: |
||||
|
case CursorDragMove: |
||||
|
cursor = [NSCursor dragCopyCursor]; |
||||
|
break; |
||||
|
case CursorDragLink: |
||||
|
cursor = [NSCursor dragLinkCursor]; |
||||
|
break; |
||||
|
case CursorHand: |
||||
|
cursor = [NSCursor pointingHandCursor]; |
||||
|
break; |
||||
|
case CursorHelp: |
||||
|
cursor = [NSCursor contextualMenuCursor]; |
||||
|
break; |
||||
|
case CursorIbeam: |
||||
|
cursor = [NSCursor IBeamCursor]; |
||||
|
break; |
||||
|
case CursorLeftSide: |
||||
|
cursor = [NSCursor resizeLeftCursor]; |
||||
|
break; |
||||
|
case CursorRightSide: |
||||
|
cursor = [NSCursor resizeRightCursor]; |
||||
|
break; |
||||
|
case CursorNo: |
||||
|
cursor = [NSCursor operationNotAllowedCursor]; |
||||
|
break; |
||||
|
default: |
||||
|
cursor = [NSCursor operationNotAllowedCursor]; |
||||
|
break; |
||||
|
} |
||||
|
*ptr = (__bridge void*)cursor; |
||||
|
return S_OK; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
extern IAvnCursor* CreateCursor() |
||||
|
{ |
||||
|
return new Cursor(); |
||||
|
} |
||||
@ -1,21 +1,35 @@ |
|||||
using System; |
using System; |
||||
using Avalonia.Input; |
using Avalonia.Input; |
||||
using Avalonia.Platform; |
using Avalonia.Platform; |
||||
|
using Avalonia.Native.Interop; |
||||
|
|
||||
namespace Avalonia.Native |
namespace Avalonia.Native |
||||
{ |
{ |
||||
class Cursor : IPlatformHandle |
class Cursor : IPlatformHandle |
||||
{ |
{ |
||||
public IntPtr Handle => IntPtr.Zero; |
public IntPtr Handle { get; } |
||||
|
|
||||
public string HandleDescriptor => "STUB"; |
public string HandleDescriptor => "NSCursor"; |
||||
|
|
||||
|
public Cursor(IntPtr handle) |
||||
|
{ |
||||
|
Handle = handle; |
||||
|
} |
||||
} |
} |
||||
|
|
||||
class CursorFactoryStub : IStandardCursorFactory |
class CursorFactory : IStandardCursorFactory |
||||
{ |
{ |
||||
|
IAvnCursor _native; |
||||
|
|
||||
|
public CursorFactory(IAvnCursor native) |
||||
|
{ |
||||
|
_native = native; |
||||
|
} |
||||
|
|
||||
public IPlatformHandle GetCursor(StandardCursorType cursorType) |
public IPlatformHandle GetCursor(StandardCursorType cursorType) |
||||
{ |
{ |
||||
return new Cursor(); |
var handle = _native.GetCursor((AvnStandardCursorType)cursorType); |
||||
|
return new Cursor( handle ); |
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue