avalonia-native.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "com.h"
  2. #define AVNCOM(name, id) COMINTERFACE(name, 2e2cda0a, 9ae5, 4f1b, 8e, 20, 08, 1a, 04, 27, 9f, id)
  3. struct IAvnWindowEvents;
  4. struct IAvnWindow;
  5. struct IAvnMacOptions;
  6. struct IAvnPlatformThreadingInterface;
  7. struct AvnSize
  8. {
  9. double Width, Height;
  10. };
  11. struct AvnRect
  12. {
  13. double X, Y, Width, Height;
  14. };
  15. AVNCOM(IAvaloniaNativeFactory, 01) : virtual IUnknown
  16. {
  17. public:
  18. virtual HRESULT Initialize() = 0;
  19. virtual IAvnMacOptions* GetMacOptions() = 0;
  20. virtual HRESULT CreateWindow(IAvnWindowEvents* cb, IAvnWindow** ppv) = 0;
  21. virtual HRESULT CreatePlatformThreadingInterface(IAvnPlatformThreadingInterface** ppv) = 0;
  22. };
  23. AVNCOM(IAvnWindowBase, 02) : virtual IUnknown
  24. {
  25. virtual HRESULT Show() = 0;
  26. virtual HRESULT Close() = 0;
  27. virtual HRESULT GetClientSize(AvnSize*ret) = 0;
  28. virtual HRESULT Resize(double width, double height) = 0;
  29. };
  30. AVNCOM(IAvnWindow, 03) : virtual IAvnWindowBase
  31. {
  32. virtual HRESULT SetCanResize(bool value) = 0;
  33. virtual HRESULT SetHasDecorations(bool value) = 0;
  34. };
  35. AVNCOM(IAvnWindowBaseEvents, 04) : IUnknown
  36. {
  37. virtual HRESULT SoftwareDraw(void* ptr, int stride, int pixelWidth, int pixelHeight, const AvnSize& logicalSize) = 0;
  38. virtual void Closed() = 0;
  39. virtual void Activated() = 0;
  40. virtual void Deactivated() = 0;
  41. virtual void Resized(const AvnSize& size) = 0;
  42. };
  43. AVNCOM(IAvnWindowEvents, 05) : IAvnWindowBaseEvents
  44. {
  45. };
  46. AVNCOM(IAvnMacOptions, 06) : virtual IUnknown
  47. {
  48. virtual HRESULT SetShowInDock(int show) = 0;
  49. };
  50. AVNCOM(IAvnActionCallback, 07) : IUnknown
  51. {
  52. virtual void Run() = 0;
  53. };
  54. AVNCOM(IAvnSignaledCallback, 08) : IUnknown
  55. {
  56. virtual void Signaled(int priority, bool priorityContainsMeaningfulValue) = 0;
  57. };
  58. AVNCOM(IAvnLoopCancellation, 09) : virtual IUnknown
  59. {
  60. virtual void Cancel() = 0;
  61. };
  62. AVNCOM(IAvnPlatformThreadingInterface, 0a) : virtual IUnknown
  63. {
  64. virtual bool GetCurrentThreadIsLoopThread() = 0;
  65. virtual void SetSignaledCallback(IAvnSignaledCallback* cb) = 0;
  66. virtual IAvnLoopCancellation* CreateLoopCancellation() = 0;
  67. virtual void RunLoop(IAvnLoopCancellation* cancel) = 0;
  68. // Can't pass int* to sharpgentools for some reason
  69. virtual void Signal(int priority) = 0;
  70. virtual IUnknown* StartTimer(int priority, int ms, IAvnActionCallback* callback) = 0;
  71. };
  72. extern "C" IAvaloniaNativeFactory* CreateAvaloniaNative();