@@ -1,5 +1,6 @@
#include "com.h"
#include "key.h"
+#include "stddef.h"
#define AVNCOM(name, id) COMINTERFACE(name, 2e2cda0a, 9ae5, 4f1b, 8e, 20, 08, 1a, 04, 27, 9f, id)
@@ -415,6 +416,7 @@ AVNCOM(IAvnMenuItem, 19) : IUnknown
virtual HRESULT SetAction (IAvnPredicateCallback* predicate, IAvnActionCallback* callback) = 0;
virtual HRESULT SetIsChecked (bool isChecked) = 0;
virtual HRESULT SetToggleType (AvnMenuItemToggleType toggleType) = 0;
+ virtual HRESULT SetIcon (void* data, size_t length) = 0;
};
AVNCOM(IAvnMenuEvents, 1A) : IUnknown
@@ -53,6 +53,8 @@ public:
virtual HRESULT SetToggleType (AvnMenuItemToggleType toggleType) override;
+ virtual HRESULT SetIcon (void* data, size_t length) override;
+
bool EvaluateItemEnabled();
void RaiseOnClicked();
@@ -192,6 +192,34 @@ HRESULT AvnAppMenuItem::SetToggleType(AvnMenuItemToggleType toggleType)
}
+HRESULT AvnAppMenuItem::SetIcon(void *data, size_t length)
+{
+ @autoreleasepool
+ {
+ if(data != nullptr)
+ NSData *imageData = [NSData dataWithBytes:data length:length];
+ NSImage *image = [[NSImage alloc] initWithData:imageData];
+ NSSize originalSize = [image size];
+ NSSize size;
+ size.height = [[NSFont menuFontOfSize:0] pointSize] * 1.333333;
+ auto scaleFactor = size.height / originalSize.height;
+ size.width = originalSize.width * scaleFactor;
+ [image setSize: size];
+ [_native setImage:image];
+ }
+ else
+ [_native setImage:nullptr];
+ return S_OK;
+}
bool AvnAppMenuItem::EvaluateItemEnabled()
{
if(_predicate != nullptr)