Add support for Wasm, fonts, loading.

This commit is contained in:
Jérôme Laban 2019-05-15 11:26:44 -04:00
commit bc6e316af0
2 changed files with 44 additions and 23 deletions

View file

@ -18,31 +18,31 @@ namespace CalculationManager
[DllImport("CalcManager")] [DllImport("CalcManager")]
public static extern void CalculatorManager_SendCommand(int instance, Command command); public static extern void CalculatorManager_SendCommand(int instance, Command command);
public delegate int GetCEngineStringFunc(int state, string id); private delegate int GetCEngineStringFunc(int state, string id);
public delegate void BinaryOperatorReceivedFunc(int state); private delegate void BinaryOperatorReceivedFunc(int state);
public delegate void SetPrimaryDisplayCallbackFunc(int state, string displayStringValue, bool isError); private delegate void SetPrimaryDisplayCallbackFunc(int state, string displayStringValue, bool isError);
public delegate void SetIsInErrorCallbackFunc(int state, bool isError); private delegate void SetIsInErrorCallbackFunc(int state, bool isError);
public delegate void SetParenthesisNumberCallbackFunc(int state, int parenthesisCount); private delegate void SetParenthesisNumberCallbackFunc(int state, int parenthesisCount);
public delegate void MaxDigitsReachedCallbackFunc(int state); private delegate void MaxDigitsReachedCallbackFunc(int state);
public delegate void MemoryItemChangedCallbackFunc(int state, int indexOfMemory); private delegate void MemoryItemChangedCallbackFunc(int state, int indexOfMemory);
public delegate void OnHistoryItemAddedCallbackFunc(int state, int addedItemIndex); private delegate void OnHistoryItemAddedCallbackFunc(int state, int addedItemIndex);
public delegate void OnNoRightParenAddedCallbackFunc(int state); private delegate void OnNoRightParenAddedCallbackFunc(int state);
public delegate void SetExpressionDisplayCallbackFunc(int state); private delegate void SetExpressionDisplayCallbackFunc(int state);
public delegate void SetMemorizedNumbersCallbackFunc(int state, string[] newMemorizedNumbers); private delegate void SetMemorizedNumbersCallbackFunc(int state, string[] newMemorizedNumbers);
public static GetCEngineStringFunc _getCEngineStringCallback = GetCEngineStringCallback; private static GetCEngineStringFunc _getCEngineStringCallback = GetCEngineStringCallback;
public static BinaryOperatorReceivedFunc _binaryOperatorReceivedCallback = BinaryOperatorReceivedCallback; private static BinaryOperatorReceivedFunc _binaryOperatorReceivedCallback = BinaryOperatorReceivedCallback;
public static SetPrimaryDisplayCallbackFunc _setPrimaryDisplayCallback = SetPrimaryDisplayCallback; private static SetPrimaryDisplayCallbackFunc _setPrimaryDisplayCallback = SetPrimaryDisplayCallback;
public static SetIsInErrorCallbackFunc _setIsInErrorCallback = SetIsInErrorCallback; private static SetIsInErrorCallbackFunc _setIsInErrorCallback = SetIsInErrorCallback;
public static SetParenthesisNumberCallbackFunc _setParenthesisNumberCallback = SetParenthesisNumberCallback; private static SetParenthesisNumberCallbackFunc _setParenthesisNumberCallback = SetParenthesisNumberCallback;
public static MaxDigitsReachedCallbackFunc _maxDigitsReachedCallback = MaxDigitsReachedCallback; private static MaxDigitsReachedCallbackFunc _maxDigitsReachedCallback = MaxDigitsReachedCallback;
public static MemoryItemChangedCallbackFunc _memoryItemChangedCallback = MemoryItemChangedCallback; private static MemoryItemChangedCallbackFunc _memoryItemChangedCallback = MemoryItemChangedCallback;
public static OnHistoryItemAddedCallbackFunc _onHistoryItemAddedCallback = OnHistoryItemAddedCallback; private static OnHistoryItemAddedCallbackFunc _onHistoryItemAddedCallback = OnHistoryItemAddedCallback;
public static OnNoRightParenAddedCallbackFunc _onNoRightParenAddedCallback = OnNoRightParenAddedCallback; private static OnNoRightParenAddedCallbackFunc _onNoRightParenAddedCallback = OnNoRightParenAddedCallback;
public static SetExpressionDisplayCallbackFunc _setExpressionDisplayCallback = SetExpressionDisplayCallback; private static SetExpressionDisplayCallbackFunc _setExpressionDisplayCallback = SetExpressionDisplayCallback;
public static SetMemorizedNumbersCallbackFunc _setMemorizedNumbersCallback = SetMemorizedNumbersCallback; private static SetMemorizedNumbersCallbackFunc _setMemorizedNumbersCallback = SetMemorizedNumbersCallback;
public static void MaxDigitsReachedCallback(int state) public static void MaxDigitsReachedCallback(int state)
{ {

View file

@ -6,6 +6,8 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
using Uno;
using Uno.Foundation;
namespace CalculationManager namespace CalculationManager
{ {
@ -108,7 +110,7 @@ namespace CalculationManager
_resourceProviderHandle = GCHandle.Alloc(resourceProvider); _resourceProviderHandle = GCHandle.Alloc(resourceProvider);
#if __WASM__ #if __WASM__
var rawPtrs = Uno.Foundation.WebAssemblyRuntime.InvokeJS("CalcManager.registerCallbacks()"); var rawPtrs = WebAssemblyRuntime.InvokeJS("CalcManager.registerCallbacks()");
var ptrs = rawPtrs.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); var ptrs = rawPtrs.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
var p = new CalculatorManager_CreateParams var p = new CalculatorManager_CreateParams
@ -129,6 +131,25 @@ namespace CalculationManager
SetMemorizedNumbers = (IntPtr)int.Parse(ptrs[10]), SetMemorizedNumbers = (IntPtr)int.Parse(ptrs[10]),
}; };
#else
var p = new CalculatorManager_CreateParams
{
CalculatorState = GCHandle.ToIntPtr(_displayCallbackHandle),
GetCEngineString = Marshal.GetFunctionPointerForDelegate(_getCEngineStringCallback),
GetCEngineString = (IntPtr)int.Parse(ptrs[0]),
BinaryOperatorReceived = (IntPtr)int.Parse(ptrs[1]),
SetPrimaryDisplay = (IntPtr)int.Parse(ptrs[2]),
SetIsInError = (IntPtr)int.Parse(ptrs[3]),
SetParenthesisNumber = (IntPtr)int.Parse(ptrs[4]),
MaxDigitsReached = (IntPtr)int.Parse(ptrs[5]),
MemoryItemChanged = (IntPtr)int.Parse(ptrs[6]),
OnHistoryItemAdded = (IntPtr)int.Parse(ptrs[7]),
OnNoRightParenAdded = (IntPtr)int.Parse(ptrs[8]),
SetExpressionDisplay = (IntPtr)int.Parse(ptrs[9]),
SetMemorizedNumbers = (IntPtr)int.Parse(ptrs[10]),
};
#else #else
var p = new CalculatorManager_CreateParams var p = new CalculatorManager_CreateParams
{ {