ui/winui/icons.cpp

branch
newapi
changeset 215
1bd5534c395d
parent 213
7e39db525fd9
child 216
391c2c723029
--- a/ui/winui/icons.cpp	Fri Oct 13 11:26:47 2023 +0200
+++ b/ui/winui/icons.cpp	Fri Oct 13 15:20:54 2023 +0200
@@ -33,6 +33,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "util.h"
 
 using namespace winrt;
 using namespace Microsoft::UI::Xaml;
@@ -252,3 +253,50 @@
 	SymbolIcon icon = SymbolIcon(symbol);
 	return icon;
 }
+
+
+// symbol icon implementation
+UiSymbolIcon::UiSymbolIcon(winrt::Microsoft::UI::Xaml::Controls::Symbol sym) {
+	symbol = sym;
+}
+
+UiSymbolIcon::~UiSymbolIcon() {
+	
+}
+
+winrt::Microsoft::UI::Xaml::Controls::IconElement UiSymbolIcon::getIcon() {
+	return SymbolIcon(symbol);
+}
+
+// image icon implementation
+UiImageIcon::UiImageIcon(const char* uristr) {
+	wchar_t* wuri = str2wstr(uristr, nullptr);
+	Windows::Foundation::Uri uri{ wuri };
+	this->uri = uri;
+	free(wuri);
+}
+
+UiImageIcon::~UiImageIcon() {
+
+}
+
+winrt::Microsoft::UI::Xaml::Controls::IconElement UiImageIcon::getIcon() {
+	BitmapIcon icon = BitmapIcon();
+	icon.UriSource(uri);
+	return icon;
+}
+
+UIEXPORT UiIcon* ui_icon(const char* name, size_t size) {
+	Symbol symbol = ui_symbol_icons[name];
+	UiSymbolIcon* icon = new UiSymbolIcon(symbol);
+	return icon;
+}
+
+
+UIEXPORT UiIcon* ui_imageicon(const char* file) {
+	return new UiImageIcon(file);
+}
+
+UIEXPORT void ui_icon_free(UiIcon* icon) {
+	delete icon;
+}

mercurial