diff --git a/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs b/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs index 0dc8959b..5d98e8a3 100644 --- a/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs +++ b/src/Calculator.Shared/CalcManager/CalculatorManager.Interop.cs @@ -12,88 +12,94 @@ namespace CalculationManager { public static class NativeDispatch { - [DllImport("CalcManager")] +#if __IOS__ + private const string DllPath = "__Internal"; // https://docs.microsoft.com/en-us/xamarin/ios/platform/native-interop +#else + private const string DllPath = "CalcManager"; +#endif + + [DllImport(DllPath)] public static extern IntPtr CalculatorManager_Create(ref CalculatorManager_CreateParams parms); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SendCommand(IntPtr nativeManager, Command command); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetRadix(IntPtr nativeManager, RADIX_TYPE iRadixType); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_Reset(IntPtr nativeManager, bool clearMemory); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetStandardMode(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetScientificMode(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetProgrammerMode(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_MemorizeNumber(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_MemorizedNumberLoad(IntPtr nativeManager, int value); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_MemorizedNumberAdd(IntPtr nativeManager, int value); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_MemorizedNumberSubtract(IntPtr nativeManager, int value); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_MemorizedNumberClear(IntPtr nativeManager, int value); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_MemorizedNumberClearAll(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern bool CalculatorManager_IsEngineRecording(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetMemorizedNumbersString(IntPtr nativeManager); - [DllImport("CalcManager", CharSet = CharSet.Unicode)] + [DllImport(DllPath, CharSet = CharSet.Unicode)] public static extern string CalculatorManager_GetResultForRadix(IntPtr nativeManager, int radix, int precision); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetPrecision(IntPtr nativeManager, int precision); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_UpdateMaxIntDigits(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern char CalculatorManager_DecimalSeparator(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern bool CalculatorManager_RemoveHistoryItem(IntPtr nativeManager, int uIdx); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_ClearHistory(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern int CalculatorManager_MaxHistorySize(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern Command CalculatorManager_GetCurrentDegreeMode(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern void CalculatorManager_SetInHistoryItemLoadMode(IntPtr nativeManager, bool isHistoryItemLoadMode); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern IntPtr CalculatorManager_GetHistoryItems(IntPtr nativeManager); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern IntPtr CalculatorManager_GetHistoryItemsWithMode(IntPtr nativeManager, CALCULATOR_MODE mode); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern IntPtr CalculatorManager_GetHistoryItem(IntPtr nativeManager, int uIdx); - [DllImport("CalcManager")] + [DllImport(DllPath)] public static extern CommandType IExpressionCommand_GetCommandType(IntPtr pExpressionCommand); public delegate IntPtr GetCEngineStringFunc(IntPtr state, IntPtr id); diff --git a/src/Calculator.Shared/ViewModels/StandardCalculatorViewModel.cs b/src/Calculator.Shared/ViewModels/StandardCalculatorViewModel.cs index 2e27efba..4b9d9c28 100644 --- a/src/Calculator.Shared/ViewModels/StandardCalculatorViewModel.cs +++ b/src/Calculator.Shared/ViewModels/StandardCalculatorViewModel.cs @@ -573,7 +573,7 @@ namespace CalculatorApp.ViewModel m_decimalSeparator = LocalizationSettings.GetInstance().GetDecimalSeparator(); -#if !__WASM__ +#if !__WASM__ && !__IOS__ if (CoreWindow.GetForCurrentThread() != null) { // Must have a CoreWindow to access the resource context. diff --git a/src/Calculator.iOS/Calculator.iOS.csproj b/src/Calculator.iOS/Calculator.iOS.csproj index f7371499..209ef912 100644 --- a/src/Calculator.iOS/Calculator.iOS.csproj +++ b/src/Calculator.iOS/Calculator.iOS.csproj @@ -25,6 +25,7 @@ x86_64 None true + -gcc_flags "-lc++ -lstdc++" portable @@ -35,6 +36,7 @@ None x86_64 false + -gcc_flags "-lc++ -lstdc++" true @@ -49,6 +51,7 @@ Entitlements.plist iPhone Developer true + -gcc_flags "-lc++ -lstdc++" none @@ -60,6 +63,7 @@ ARM64 false iPhone Developer + -gcc_flags "-lc++ -lstdc++" none @@ -88,9 +92,12 @@ - + + Designer + + @@ -104,6 +111,16 @@ + + + Static + + + + + Static + + \ No newline at end of file diff --git a/src/Calculator.iOS/Info.plist b/src/Calculator.iOS/Info.plist index 3457995b..6f1c9611 100644 --- a/src/Calculator.iOS/Info.plist +++ b/src/Calculator.iOS/Info.plist @@ -41,6 +41,7 @@ UIAppFonts Fonts/winjs-symbols.ttf + Fonts/CalcMDL2.ttf diff --git a/src/Calculator.iOS/Native References/arm64/libCalcManager.a b/src/Calculator.iOS/Native References/arm64/libCalcManager.a new file mode 100644 index 00000000..6df6d533 Binary files /dev/null and b/src/Calculator.iOS/Native References/arm64/libCalcManager.a differ diff --git a/src/Calculator.iOS/Native References/x86_64/libCalcManager.a b/src/Calculator.iOS/Native References/x86_64/libCalcManager.a new file mode 100644 index 00000000..1b703ede Binary files /dev/null and b/src/Calculator.iOS/Native References/x86_64/libCalcManager.a differ diff --git a/src/Calculator.iOS/Resources/Fonts/CalcMDL2.ttf b/src/Calculator.iOS/Resources/Fonts/CalcMDL2.ttf new file mode 100644 index 00000000..a4b8862c Binary files /dev/null and b/src/Calculator.iOS/Resources/Fonts/CalcMDL2.ttf differ