├── src ├── GraphControl │ ├── pch.cpp │ ├── GraphControl.rc │ ├── Themes │ │ └── generic.xaml │ ├── Models │ │ └── Variable.h │ ├── winrtHeaders.h │ ├── Logger │ │ └── TraceLogger.h │ ├── DirectX │ │ └── NearestPointRenderer.h │ └── pch.h ├── GraphingImpl │ ├── pch.cpp │ ├── pch.h │ ├── targetver.h │ ├── GraphingImpl.rc │ ├── Mocks │ │ ├── Bitmap.h │ │ └── MathSolver.cpp │ └── dllmain.cpp ├── Calculator │ ├── Assets │ │ ├── CalculatorIcons.ttf │ │ ├── Graphing.targetsize-16.png │ │ ├── Graphing.targetsize-20.png │ │ ├── Graphing.targetsize-24.png │ │ ├── Graphing.targetsize-32.png │ │ ├── Graphing.targetsize-64.png │ │ ├── CalculatorAppList.targetsize-16.png │ │ ├── CalculatorAppList.targetsize-20.png │ │ ├── CalculatorAppList.targetsize-24.png │ │ ├── CalculatorAppList.targetsize-256.png │ │ ├── CalculatorAppList.targetsize-30.png │ │ ├── CalculatorAppList.targetsize-32.png │ │ ├── CalculatorAppList.targetsize-36.png │ │ ├── CalculatorAppList.targetsize-40.png │ │ ├── CalculatorAppList.targetsize-48.png │ │ ├── CalculatorAppList.targetsize-60.png │ │ ├── CalculatorAppList.targetsize-64.png │ │ ├── CalculatorAppList.targetsize-72.png │ │ ├── CalculatorAppList.targetsize-80.png │ │ ├── CalculatorAppList.targetsize-96.png │ │ ├── Date.targetsize-16_contrast-black.png │ │ ├── Date.targetsize-16_contrast-white.png │ │ ├── Date.targetsize-20_contrast-black.png │ │ ├── Date.targetsize-20_contrast-white.png │ │ ├── Date.targetsize-24_contrast-black.png │ │ ├── Date.targetsize-24_contrast-white.png │ │ ├── Date.targetsize-32_contrast-black.png │ │ ├── Date.targetsize-32_contrast-white.png │ │ ├── Date.targetsize-64_contrast-black.png │ │ ├── Date.targetsize-64_contrast-white.png │ │ ├── Graphing.targetsize-16_contrast-black.png │ │ ├── Graphing.targetsize-16_contrast-white.png │ │ ├── Graphing.targetsize-20_contrast-black.png │ │ ├── Graphing.targetsize-20_contrast-white.png │ │ ├── Graphing.targetsize-24_contrast-black.png │ │ ├── Graphing.targetsize-24_contrast-white.png │ │ ├── Graphing.targetsize-32_contrast-black.png │ │ ├── Graphing.targetsize-32_contrast-white.png │ │ ├── Graphing.targetsize-64_contrast-black.png │ │ ├── Graphing.targetsize-64_contrast-white.png │ │ ├── Standard.targetsize-16_contrast-black.png │ │ ├── Standard.targetsize-16_contrast-white.png │ │ ├── Standard.targetsize-20_contrast-black.png │ │ ├── Standard.targetsize-20_contrast-white.png │ │ ├── Standard.targetsize-24_contrast-black.png │ │ ├── Standard.targetsize-24_contrast-white.png │ │ ├── Standard.targetsize-32_contrast-black.png │ │ ├── Standard.targetsize-32_contrast-white.png │ │ ├── Standard.targetsize-64_contrast-black.png │ │ ├── Standard.targetsize-64_contrast-white.png │ │ ├── Programmer.targetsize-16_contrast-black.png │ │ ├── Programmer.targetsize-16_contrast-white.png │ │ ├── Programmer.targetsize-20_contrast-black.png │ │ ├── Programmer.targetsize-20_contrast-white.png │ │ ├── Programmer.targetsize-24_contrast-black.png │ │ ├── Programmer.targetsize-24_contrast-white.png │ │ ├── Programmer.targetsize-32_contrast-black.png │ │ ├── Programmer.targetsize-32_contrast-white.png │ │ ├── Programmer.targetsize-64_contrast-black.png │ │ ├── Programmer.targetsize-64_contrast-white.png │ │ ├── Scientific.targetsize-16_contrast-black.png │ │ ├── Scientific.targetsize-16_contrast-white.png │ │ ├── Scientific.targetsize-20_contrast-black.png │ │ ├── Scientific.targetsize-20_contrast-white.png │ │ ├── Scientific.targetsize-24_contrast-black.png │ │ ├── Scientific.targetsize-24_contrast-white.png │ │ ├── Scientific.targetsize-32_contrast-black.png │ │ ├── Scientific.targetsize-32_contrast-white.png │ │ ├── Scientific.targetsize-64_contrast-black.png │ │ ├── Scientific.targetsize-64_contrast-white.png │ │ ├── CalculatorAppList.scale-100_contrast-black.png │ │ ├── CalculatorAppList.scale-100_contrast-white.png │ │ ├── CalculatorAppList.scale-125_contrast-black.png │ │ ├── CalculatorAppList.scale-125_contrast-white.png │ │ ├── CalculatorAppList.scale-150_contrast-black.png │ │ ├── CalculatorAppList.scale-150_contrast-white.png │ │ ├── CalculatorAppList.scale-200_contrast-black.png │ │ ├── CalculatorAppList.scale-200_contrast-white.png │ │ ├── CalculatorAppList.scale-400_contrast-black.png │ │ ├── CalculatorAppList.scale-400_contrast-white.png │ │ ├── CalculatorMedTile.scale-100_contrast-black.png │ │ ├── CalculatorMedTile.scale-100_contrast-white.png │ │ ├── CalculatorMedTile.scale-125_contrast-black.png │ │ ├── CalculatorMedTile.scale-125_contrast-white.png │ │ ├── CalculatorMedTile.scale-150_contrast-black.png │ │ ├── CalculatorMedTile.scale-150_contrast-white.png │ │ ├── CalculatorMedTile.scale-200_contrast-black.png │ │ ├── CalculatorMedTile.scale-200_contrast-white.png │ │ ├── CalculatorMedTile.scale-400_contrast-black.png │ │ ├── CalculatorMedTile.scale-400_contrast-white.png │ │ ├── CalculatorWideTile.scale-100_contrast-black.png │ │ ├── CalculatorWideTile.scale-100_contrast-white.png │ │ ├── CalculatorWideTile.scale-125_contrast-black.png │ │ ├── CalculatorWideTile.scale-125_contrast-white.png │ │ ├── CalculatorWideTile.scale-150_contrast-black.png │ │ ├── CalculatorWideTile.scale-150_contrast-white.png │ │ ├── CalculatorWideTile.scale-200_contrast-black.png │ │ ├── CalculatorWideTile.scale-200_contrast-white.png │ │ ├── CalculatorWideTile.scale-400_contrast-black.png │ │ ├── CalculatorWideTile.scale-400_contrast-white.png │ │ ├── CalculatorLargeTile.scale-100_contrast-black.png │ │ ├── CalculatorLargeTile.scale-100_contrast-white.png │ │ ├── CalculatorLargeTile.scale-125_contrast-black.png │ │ ├── CalculatorLargeTile.scale-125_contrast-white.png │ │ ├── CalculatorLargeTile.scale-150_contrast-black.png │ │ ├── CalculatorLargeTile.scale-150_contrast-white.png │ │ ├── CalculatorLargeTile.scale-200_contrast-black.png │ │ ├── CalculatorLargeTile.scale-200_contrast-white.png │ │ ├── CalculatorLargeTile.scale-400_contrast-black.png │ │ ├── CalculatorLargeTile.scale-400_contrast-white.png │ │ ├── CalculatorSmallTile.scale-100_contrast-black.png │ │ ├── CalculatorSmallTile.scale-100_contrast-white.png │ │ ├── CalculatorSmallTile.scale-125_contrast-black.png │ │ ├── CalculatorSmallTile.scale-125_contrast-white.png │ │ ├── CalculatorSmallTile.scale-150_contrast-black.png │ │ ├── CalculatorSmallTile.scale-150_contrast-white.png │ │ ├── CalculatorSmallTile.scale-200_contrast-black.png │ │ ├── CalculatorSmallTile.scale-200_contrast-white.png │ │ ├── CalculatorSmallTile.scale-400_contrast-black.png │ │ ├── CalculatorSmallTile.scale-400_contrast-white.png │ │ ├── CalculatorStoreLogo.scale-100_contrast-black.png │ │ ├── CalculatorStoreLogo.scale-100_contrast-white.png │ │ ├── CalculatorStoreLogo.scale-200_contrast-black.png │ │ ├── CalculatorStoreLogo.scale-200_contrast-white.png │ │ ├── CalculatorAppList.targetsize-16_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-16_contrast-black.png │ │ ├── CalculatorAppList.targetsize-16_contrast-white.png │ │ ├── CalculatorAppList.targetsize-20_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-20_contrast-black.png │ │ ├── CalculatorAppList.targetsize-20_contrast-white.png │ │ ├── CalculatorAppList.targetsize-24_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-24_contrast-black.png │ │ ├── CalculatorAppList.targetsize-24_contrast-white.png │ │ ├── CalculatorAppList.targetsize-256_contrast-black.png │ │ ├── CalculatorAppList.targetsize-256_contrast-white.png │ │ ├── CalculatorAppList.targetsize-30_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-30_contrast-black.png │ │ ├── CalculatorAppList.targetsize-30_contrast-white.png │ │ ├── CalculatorAppList.targetsize-32_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-32_contrast-black.png │ │ ├── CalculatorAppList.targetsize-32_contrast-white.png │ │ ├── CalculatorAppList.targetsize-36_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-36_contrast-black.png │ │ ├── CalculatorAppList.targetsize-36_contrast-white.png │ │ ├── CalculatorAppList.targetsize-40_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-40_contrast-black.png │ │ ├── CalculatorAppList.targetsize-40_contrast-white.png │ │ ├── CalculatorAppList.targetsize-48_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-48_contrast-black.png │ │ ├── CalculatorAppList.targetsize-48_contrast-white.png │ │ ├── CalculatorAppList.targetsize-60_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-60_contrast-black.png │ │ ├── CalculatorAppList.targetsize-60_contrast-white.png │ │ ├── CalculatorAppList.targetsize-64_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-64_contrast-black.png │ │ ├── CalculatorAppList.targetsize-64_contrast-white.png │ │ ├── CalculatorAppList.targetsize-72_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-72_contrast-black.png │ │ ├── CalculatorAppList.targetsize-72_contrast-white.png │ │ ├── CalculatorAppList.targetsize-80_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-80_contrast-black.png │ │ ├── CalculatorAppList.targetsize-80_contrast-white.png │ │ ├── CalculatorAppList.targetsize-96_altform-unplated.png │ │ ├── CalculatorAppList.targetsize-96_contrast-black.png │ │ ├── CalculatorAppList.targetsize-96_contrast-white.png │ │ ├── CalculatorSplashScreen.scale-100_contrast-black.png │ │ ├── CalculatorSplashScreen.scale-100_contrast-white.png │ │ ├── CalculatorSplashScreen.scale-125_contrast-black.png │ │ ├── CalculatorSplashScreen.scale-125_contrast-white.png │ │ ├── CalculatorSplashScreen.scale-150_contrast-black.png │ │ ├── CalculatorSplashScreen.scale-150_contrast-white.png │ │ ├── CalculatorSplashScreen.scale-200_contrast-black.png │ │ ├── CalculatorSplashScreen.scale-200_contrast-white.png │ │ ├── CalculatorSplashScreen.scale-400_contrast-black.png │ │ ├── CalculatorSplashScreen.scale-400_contrast-white.png │ │ ├── CalculatorAppList.targetsize-256_altform-unplated.png │ │ ├── CalculatorSplashScreen.scale-100_altform-colorful.png │ │ ├── CalculatorSplashScreen.scale-125_altform-colorful.png │ │ ├── CalculatorSplashScreen.scale-150_altform-colorful.png │ │ ├── CalculatorSplashScreen.scale-200_altform-colorful.png │ │ ├── CalculatorSplashScreen.scale-400_altform-colorful.png │ │ ├── CalculatorAppList.targetsize-16_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-20_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-24_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-30_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-32_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-36_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-40_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-48_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-60_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-64_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-72_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-80_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-96_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-256_altform-lightunplated.png │ │ ├── CalculatorAppList.targetsize-16_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-16_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-20_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-20_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-24_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-24_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-30_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-30_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-32_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-32_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-36_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-36_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-40_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-40_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-48_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-48_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-60_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-60_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-64_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-64_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-72_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-72_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-80_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-80_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-96_altform-unplated_contrast-black.png │ │ ├── CalculatorAppList.targetsize-96_altform-unplated_contrast-white.png │ │ ├── CalculatorAppList.targetsize-256_altform-unplated_contrast-black.png │ │ └── CalculatorAppList.targetsize-256_altform-unplated_contrast-white.png │ ├── WindowsDev_TemporaryKey.pfx │ ├── DesignData │ │ ├── DesignAppViewModel.cpp │ │ ├── DesignUnitConverterViewModel.cpp │ │ ├── DesignStandardCalculatorViewModel.cpp │ │ └── DesignAppViewModel.h │ ├── Controls │ │ ├── RadixButton.cs │ │ ├── OverflowTextBlockAutomationPeer.cs │ │ └── CalculationResultAutomationPeer.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ ├── Utils │ │ ├── DelegateCommandUtils.cs │ │ └── DispatcherTimerDelayer.cs │ ├── Converters │ │ ├── BooleanNegationConverter.cs │ │ ├── VisibilityNegationConverter.cs │ │ ├── ItemSizeToVisibilityConverter.cs │ │ └── ExpressionItemTemplateSelector.cs │ ├── Views │ │ ├── CalculatorStandardOperators.xaml.cs │ │ └── GraphingCalculator │ │ │ └── KeyGraphFeaturesPanel.xaml.cs │ └── Selectors │ │ ├── NavViewMenuItemTemplateSelector.cs │ │ └── KeyGraphFeaturesTemplateSelector.cs ├── CalculatorUnitTests │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── SplashScreen.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-200.png │ │ └── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── CalculatorUnitTests.rc │ ├── WindowsDev_TemporaryKey.pfx │ ├── pch.cpp │ ├── UnitTestApp.xaml │ ├── resource.h │ ├── Module.cpp │ ├── UtilsTests.cpp │ ├── UnitTestApp.xaml.h │ ├── AsyncHelper.cpp │ ├── UnitTestApp.rd.xml │ ├── Package.appxmanifest │ ├── pch.h │ └── Mocks │ │ └── CurrencyHttpClient.cpp ├── CalcViewModel │ ├── pch.cpp │ ├── Common │ │ ├── RadixType.cpp │ │ ├── NumberBase.h │ │ ├── BitLength.h │ │ ├── RadixType.h │ │ ├── EngineResourceProvider.h │ │ ├── AppResourceProvider.h │ │ ├── ExpressionCommandSerializer.h │ │ ├── ExpressionCommandDeserializer.h │ │ ├── Automation │ │ │ ├── INarratorAnnouncementHost.h │ │ │ ├── NarratorAnnouncementHostFactory.h │ │ │ ├── LiveRegionHost.h │ │ │ ├── LiveRegionHost.cpp │ │ │ ├── NotificationHost.h │ │ │ └── NarratorNotifier.h │ │ ├── AppResourceProvider.cpp │ │ ├── NetworkManager.h │ │ ├── CalculatorButtonPressedEventArgs.h │ │ ├── CalculatorButtonPressedEventArgs.cpp │ │ ├── CalculatorDisplay.h │ │ ├── ExpressionCommandSerializer.cpp │ │ ├── DisplayExpressionToken.h │ │ └── EngineResourceProvider.cpp │ ├── CalcViewModel.rc │ ├── targetver.h │ ├── DataLoaders │ │ ├── DataLoaderMockConstants.h │ │ ├── ICurrencyHttpClient.h │ │ ├── CurrencyHttpClient.h │ │ └── CurrencyHttpClient.cpp │ ├── GraphingCalculatorEnums.h │ ├── MemoryItemViewModel.cpp │ ├── MemoryItemViewModel.h │ ├── pch.h │ ├── GraphingCalculator │ │ ├── GraphingCalculatorViewModel.h │ │ └── GraphingCalculatorViewModel.cpp │ └── HistoryItemViewModel.cpp ├── TraceLogging │ ├── pch.cpp │ ├── pch.h │ ├── TraceLogging.rc │ ├── TraceLogging.vcxproj.filters │ └── TraceLoggingCommon.h ├── GraphingInterfaces │ ├── IBitmap.h │ ├── IEquation.h │ ├── IGraphAnalyzer.h │ ├── IGraph.h │ ├── IEquationOptions.h │ └── IGraphRenderer.h ├── CalcManager │ ├── pch.cpp │ ├── Header Files │ │ ├── RadixType.h │ │ ├── CalcUtils.h │ │ ├── IHistoryDisplay.h │ │ ├── Number.h │ │ ├── ICalcDisplay.h │ │ └── RationalMath.h │ ├── sal_cross_platform.h │ ├── NumberFormattingUtils.h │ ├── winerror_cross_platform.h │ ├── pch.h │ ├── CalculatorResource.h │ ├── CalculatorHistory.h │ ├── CEngine │ │ ├── Number.cpp │ │ └── CalcUtils.cpp │ └── ExpressionCommandInterface.h ├── CalculatorUITestFramework │ ├── CalculatorUITestFramework.csproj │ ├── MemoryItem.cs │ ├── HistoryItem.cs │ ├── UnitConverterOperatorsPanel.cs │ ├── WindowsElementExtensions.cs │ └── UnitConverterResults.cs ├── CalculatorUITests │ ├── CalculatorUITests.release.runsettings │ ├── CalculatorUITests.ci-internal.runsettings │ ├── CalculatorUITests.ci.runsettings │ └── CalculatorUITests.csproj ├── build │ └── Calculator.StampAssemblyInfo.targets └── Settings.XamlStyler ├── docs ├── Images │ ├── CalculatorScreenshot.png │ ├── VisualStates │ │ ├── Converter1.gif │ │ ├── Standard1.gif │ │ └── Scientific1.gif │ └── VSInstallationScreenshot.png └── Roadmap.md ├── .editorconfig ├── Tools ├── PGO │ ├── build │ │ └── native │ │ │ └── Microsoft.WindowsCalculator.PGO.props │ └── Microsoft.WindowsCalculator.PGO.nuspec └── Scripts │ └── clang-format │ └── clang-format-all.sh ├── CODE_OF_CONDUCT.md ├── .github ├── pull_request_template.md └── ISSUE_TEMPLATE │ └── bug_report.md ├── nuget.config ├── LICENSE └── .gitattributes /src/GraphControl/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /src/GraphingImpl/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /docs/Images/CalculatorScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/docs/Images/CalculatorScreenshot.png -------------------------------------------------------------------------------- /docs/Images/VisualStates/Converter1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/docs/Images/VisualStates/Converter1.gif -------------------------------------------------------------------------------- /docs/Images/VisualStates/Standard1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/docs/Images/VisualStates/Standard1.gif -------------------------------------------------------------------------------- /docs/Images/VSInstallationScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/docs/Images/VSInstallationScreenshot.png -------------------------------------------------------------------------------- /docs/Images/VisualStates/Scientific1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/docs/Images/VisualStates/Scientific1.gif -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorIcons.ttf -------------------------------------------------------------------------------- /src/Calculator/WindowsDev_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/WindowsDev_TemporaryKey.pfx -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/StoreLogo.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/CalculatorUnitTests.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/CalculatorUnitTests.rc -------------------------------------------------------------------------------- /src/CalcViewModel/pch.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-16.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-20.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-24.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-32.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-64.png -------------------------------------------------------------------------------- /src/TraceLogging/pch.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/WindowsDev_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/WindowsDev_TemporaryKey.pfx -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-16_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-16_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-16_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-16_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-20_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-20_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-20_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-20_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-24_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-24_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-24_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-24_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-32_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-32_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-32_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-32_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-64_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-64_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Date.targetsize-64_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Date.targetsize-64_contrast-white.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-16_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-16_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-16_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-16_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-20_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-20_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-20_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-20_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-24_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-24_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-24_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-24_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-32_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-32_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-32_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-32_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-64_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-64_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Graphing.targetsize-64_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Graphing.targetsize-64_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-16_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-16_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-16_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-16_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-20_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-20_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-20_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-20_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-24_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-24_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-24_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-24_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-32_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-32_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-32_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-32_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-64_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-64_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Standard.targetsize-64_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Standard.targetsize-64_contrast-white.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-16_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-16_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-16_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-16_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-20_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-20_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-20_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-20_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-24_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-24_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-24_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-24_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-32_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-32_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-32_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-32_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-64_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-64_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Programmer.targetsize-64_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Programmer.targetsize-64_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-16_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-16_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-16_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-16_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-20_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-20_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-20_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-20_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-24_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-24_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-24_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-24_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-32_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-32_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-32_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-32_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-64_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-64_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/Scientific.targetsize-64_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/Scientific.targetsize-64_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-125_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-125_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-125_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-125_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-150_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-150_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-150_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-150_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-400_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-400_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.scale-400_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.scale-400_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-125_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-125_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-125_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-125_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-150_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-150_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-150_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-150_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-400_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-400_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorMedTile.scale-400_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorMedTile.scale-400_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-125_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-125_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-125_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-125_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-150_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-150_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-150_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-150_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-400_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-400_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorWideTile.scale-400_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorWideTile.scale-400_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-125_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-125_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-125_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-125_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-150_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-150_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-150_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-150_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-400_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-400_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorLargeTile.scale-400_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorLargeTile.scale-400_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-125_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-125_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-125_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-125_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-150_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-150_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-150_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-150_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-400_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-400_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSmallTile.scale-400_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSmallTile.scale-400_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorStoreLogo.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorStoreLogo.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorStoreLogo.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorStoreLogo.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorStoreLogo.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorStoreLogo.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorStoreLogo.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorStoreLogo.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-100_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-100_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-100_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-100_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-125_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-125_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-125_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-125_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-150_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-150_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-150_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-150_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-200_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-200_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-200_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-200_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-400_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-400_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-400_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-400_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-unplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-100_altform-colorful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-100_altform-colorful.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-125_altform-colorful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-125_altform-colorful.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-150_altform-colorful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-150_altform-colorful.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-200_altform-colorful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-200_altform-colorful.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorSplashScreen.scale-400_altform-colorful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorSplashScreen.scale-400_altform-colorful.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-lightunplated.png -------------------------------------------------------------------------------- /src/Calculator/DesignData/DesignAppViewModel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "DesignAppViewModel.h" 6 | -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-lightunplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-lightunplated.png -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/CalculatorUnitTests/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /src/CalcViewModel/Common/RadixType.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "RadixType.h" 6 | 7 | // export enum RadixType 8 | 9 | -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-16_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-20_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-24_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-30_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-32_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-36_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-40_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-48_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-60_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-64_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-72_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-80_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-96_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/Calculator/DesignData/DesignUnitConverterViewModel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "DesignUnitConverterViewModel.h" 6 | -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-unplated_contrast-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-unplated_contrast-black.png -------------------------------------------------------------------------------- /src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-unplated_contrast-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinghRajenM/calculator/master/src/Calculator/Assets/CalculatorAppList.targetsize-256_altform-unplated_contrast-white.png -------------------------------------------------------------------------------- /src/GraphingImpl/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "targetver.h" 4 | 5 | #ifndef WIN32_LEAN_AND_MEAN 6 | #define WIN32_LEAN_AND_MEAN 7 | #endif 8 | 9 | #include 10 | #include 11 | #include 12 | -------------------------------------------------------------------------------- /src/Calculator/DesignData/DesignStandardCalculatorViewModel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "DesignStandardCalculatorViewModel.h" 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | ## IDE-independent coding style via EditorConfig: https://editorconfig.org/ 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 4 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/pch.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | // 5 | // pch.cpp 6 | // Include the standard header and generate the precompiled header. 7 | // 8 | 9 | #include "pch.h" 10 | -------------------------------------------------------------------------------- /src/TraceLogging/pch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | 9 | // C++\WinRT Headers 10 | #include "Windows.Foundation.Diagnostics.h" 11 | -------------------------------------------------------------------------------- /Tools/PGO/build/native/Microsoft.WindowsCalculator.PGO.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Optimize 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/UnitTestApp.xaml: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/GraphingInterfaces/IBitmap.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include 7 | 8 | namespace Graphing 9 | { 10 | struct IBitmap 11 | { 12 | virtual const std::vector& GetData() const = 0; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /src/CalcManager/pch.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | // Intentionally do not include the pch.h here. For projects that don't 5 | // use precompiled headers, including the header here would force unnecessary compilation. 6 | // The pch will be included through forced include. 7 | -------------------------------------------------------------------------------- /src/CalcManager/Header Files/RadixType.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | // This is expected to be in same order as IDM_HEX, IDM_DEC, IDM_OCT, IDM_BIN 7 | enum class RadixType 8 | { 9 | Hex, 10 | Decimal, 11 | Octal, 12 | Binary 13 | }; 14 | -------------------------------------------------------------------------------- /src/GraphingImpl/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 5 | or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or 6 | comments. -------------------------------------------------------------------------------- /src/CalcManager/sal_cross_platform.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(_WIN32) && defined(_MSC_VER) 4 | 5 | #include 6 | 7 | #else 8 | 9 | // Empty macro definitions for source annotations 10 | 11 | #define _In_opt_ 12 | #define _Out_opt_ 13 | #define _In_ 14 | #define _Out_ 15 | #define _Inout_ 16 | #define __in_opt 17 | #define _Frees_ptr_opt_ 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /src/CalculatorUITestFramework/CalculatorUITestFramework.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6.0 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/NumberBase.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | namespace CalculatorApp::ViewModel::Common 6 | { 7 | public 8 | enum class NumberBase 9 | { 10 | Unknown = -1, 11 | HexBase = 5, 12 | DecBase = 6, 13 | OctBase = 7, 14 | BinBase = 8 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/BitLength.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace CalculatorApp::ViewModel 4 | { 5 | namespace Common 6 | { 7 | public 8 | enum class BitLength : int 9 | { 10 | BitLengthUnknown = -1, 11 | BitLengthByte = 8, 12 | BitLengthWord = 16, 13 | BitLengthDWord = 32, 14 | BitLengthQWord = 64, 15 | }; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Fixes #. 2 | 3 | 4 | ### Description of the changes: 5 | - 6 | - 7 | - 8 | 9 | ### How changes were validated: 10 | 13 | - 14 | - 15 | - 16 | 17 | -------------------------------------------------------------------------------- /src/CalcViewModel/CalcViewModel.rc: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #define APP_FILE_NAME "CalcViewModel" 5 | #define APP_FILE_IS_EXE 6 | #define APP_PRODUCT_NAME "Microsoft Calculator ViewModel" 7 | #define APP_COMPANY_NAME "Microsoft Corporation" 8 | #define APP_COPYRIGHT "\251 Microsoft Corporation. All rights reserved." 9 | 10 | #include "../build/appversion.rc" 11 | -------------------------------------------------------------------------------- /src/GraphControl/GraphControl.rc: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #define APP_FILE_NAME "GraphControl" 5 | #define APP_FILE_IS_EXE 6 | #define APP_PRODUCT_NAME "Microsoft Calculator GraphControl" 7 | #define APP_COMPANY_NAME "Microsoft Corporation" 8 | #define APP_COPYRIGHT "\251 Microsoft Corporation. All rights reserved." 9 | 10 | #include "../build/appversion.rc" 11 | -------------------------------------------------------------------------------- /src/TraceLogging/TraceLogging.rc: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #define APP_FILE_NAME "TraceLogging" 5 | #define APP_FILE_IS_EXE 6 | #define APP_PRODUCT_NAME "Microsoft Calculator TraceLogging" 7 | #define APP_COMPANY_NAME "Microsoft Corporation" 8 | #define APP_COPYRIGHT "\251 Microsoft Corporation. All rights reserved." 9 | 10 | #include "../build/appversion.rc" 11 | -------------------------------------------------------------------------------- /nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by CalculatorUnitTests_VS.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /src/GraphingImpl/GraphingImpl.rc: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #define APP_FILE_NAME "GraphingImpl" 5 | #define APP_FILE_IS_EXE 6 | #define APP_PRODUCT_NAME "Microsoft Calculator Graphing Implementation" 7 | #define APP_COMPANY_NAME "Microsoft Corporation" 8 | #define APP_COPYRIGHT "\251 Microsoft Corporation. All rights reserved." 9 | 10 | #include "../build/appversion.rc" 11 | -------------------------------------------------------------------------------- /src/CalcViewModel/targetver.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | // Including SDKDDKVer.h defines the highest available Windows platform. 7 | 8 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 9 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 10 | 11 | #include 12 | -------------------------------------------------------------------------------- /src/GraphingImpl/Mocks/Bitmap.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "GraphingInterfaces/IBitmap.h" 7 | #include 8 | namespace MockGraphingImpl 9 | { 10 | class Bitmap : public Graphing::IBitmap 11 | { 12 | virtual const std::vector& GetData() const 13 | { 14 | return std::vector(); 15 | } 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /src/GraphingImpl/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | 6 | BOOL APIENTRY DllMain(HMODULE /* hModule */, DWORD ul_reason_for_call, LPVOID /* lpReserved */) 7 | { 8 | switch (ul_reason_for_call) 9 | { 10 | case DLL_PROCESS_ATTACH: 11 | case DLL_THREAD_ATTACH: 12 | case DLL_THREAD_DETACH: 13 | case DLL_PROCESS_DETACH: 14 | break; 15 | } 16 | return TRUE; 17 | } 18 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/RadixType.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace CalculatorApp::ViewModel 7 | { 8 | namespace Common 9 | { 10 | // This is expected to be in same order as IDM_HEX, IDM_DEC, IDM_OCT, IDM_BIN 11 | public enum class RadixType 12 | { 13 | Hex, 14 | Decimal, 15 | Octal, 16 | Binary 17 | }; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/CalcViewModel/DataLoaders/DataLoaderMockConstants.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace CalculatorApp 7 | { 8 | namespace DataLoaders 9 | { 10 | static constexpr auto sc_MetadataUriLocalizeFor = L"https://go.microsoft.com/fwlink/?linkid=2091028&localizeFor="; 11 | static constexpr auto sc_RatiosUriRelativeTo = L"https://go.microsoft.com/fwlink/?linkid=2091307&localCurrency="; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/CalculatorUITestFramework/MemoryItem.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using OpenQA.Selenium.Appium; 5 | 6 | namespace CalculatorUITestFramework 7 | { 8 | public class MemoryItem 9 | { 10 | public AppiumWebElement Item { get; } 11 | 12 | public MemoryItem(AppiumWebElement item) 13 | { 14 | Item = item; 15 | } 16 | 17 | public string GetValue() 18 | { 19 | return Item.Text; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/CalcManager/Header Files/CalcUtils.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | using OpCode = uintptr_t; 7 | 8 | bool IsOpInRange(OpCode op, uint32_t x, uint32_t y); 9 | bool IsBinOpCode(OpCode opCode); 10 | 11 | // WARNING: IDC_SIGN is a special unary op but still this doesn't catch this. Caller has to be aware 12 | // of it and catch it themselves or not needing this 13 | bool IsUnaryOpCode(OpCode opCode); 14 | bool IsDigitOpCode(OpCode opCode); 15 | bool IsGuiSettingOpCode(OpCode opCode); 16 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Module.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include 6 | 7 | using namespace Microsoft::VisualStudio::CppUnitTestFramework; 8 | 9 | namespace CalculatorUnitTests 10 | { 11 | BEGIN_TEST_MODULE_ATTRIBUTE() 12 | TEST_MODULE_ATTRIBUTE(L"APPX:CertificateFileName", L"CalculatorUnitTests.cer:TrustedPeople") 13 | END_TEST_MODULE_ATTRIBUTE() 14 | 15 | TEST_MODULE_INITIALIZE(ModuleSetup) 16 | { 17 | } 18 | 19 | TEST_MODULE_CLEANUP(ModuleCleanup) 20 | { 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/EngineResourceProvider.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "CalcManager/CalculatorResource.h" 7 | 8 | namespace CalculatorApp::ViewModel::Common 9 | { 10 | class EngineResourceProvider : public CalculationManager::IResourceProvider 11 | { 12 | public: 13 | EngineResourceProvider(); 14 | virtual std::wstring GetCEngineString(std::wstring_view id) override; 15 | 16 | private: 17 | Windows::ApplicationModel::Resources::ResourceLoader ^ m_resLoader; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /src/GraphControl/Themes/generic.xaml: -------------------------------------------------------------------------------- 1 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /src/CalcManager/NumberFormattingUtils.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include 7 | #include "sal_cross_platform.h" 8 | 9 | namespace UnitConversionManager::NumberFormattingUtils 10 | { 11 | void TrimTrailingZeros(_Inout_ std::wstring& input); 12 | unsigned int GetNumberDigits(std::wstring value); 13 | unsigned int GetNumberDigitsWholeNumberPart(double value); 14 | std::wstring RoundSignificantDigits(double value, unsigned int numberSignificantDigits); 15 | std::wstring ToScientificNumber(double number); 16 | } 17 | -------------------------------------------------------------------------------- /src/CalcManager/winerror_cross_platform.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(_WIN32) && defined(_MSC_VER) 4 | 5 | #include 6 | 7 | #else 8 | 9 | #include "Ratpack/CalcErr.h" 10 | 11 | #define E_ACCESSDENIED 0x80070005 12 | #define E_FAIL 0x80004005 13 | #define E_INVALIDARG 0x80070057 14 | #define E_OUTOFMEMORY 0x8007000E 15 | #define E_POINTER 0x80004003 16 | #define E_UNEXPECTED 0x8000FFFF 17 | #define E_BOUNDS 0x8000000B 18 | #define S_OK 0x0 19 | #define S_FALSE 0x1 20 | 21 | #define SUCCEEDED(hr) (((ResultCode)(hr)) >= 0) 22 | #define FAILED(hr) (((ResultCode)(hr)) < 0) 23 | #define SCODE_CODE(sc) ((sc)&0xFFFF) 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/GraphControl/Models/Variable.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | #include "Utils.h" 6 | 7 | namespace GraphControl 8 | { 9 | public 10 | ref class Variable sealed 11 | { 12 | public: 13 | PROPERTY_RW(double, Value); 14 | PROPERTY_RW(double, Step); 15 | PROPERTY_RW(double, Min); 16 | PROPERTY_RW(double, Max); 17 | 18 | Variable(double value) 19 | : m_Value{ value } 20 | , m_Step{ 0.1 } 21 | , m_Min{ -5.0 } 22 | , m_Max{ 5.0 } 23 | { 24 | } 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /src/GraphingInterfaces/IEquation.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common.h" 7 | #include "IEquationOptions.h" 8 | 9 | namespace Graphing 10 | { 11 | struct IEquation : public NonCopyable, public NonMoveable 12 | { 13 | virtual ~IEquation() = default; 14 | 15 | virtual std::shared_ptr GetGraphEquationOptions() const = 0; 16 | 17 | virtual unsigned int GetGraphEquationID() const = 0; 18 | 19 | virtual bool TrySelectEquation() = 0; 20 | virtual bool IsEquationSelected() const = 0; 21 | }; 22 | } -------------------------------------------------------------------------------- /src/CalcManager/Header Files/IHistoryDisplay.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "../ExpressionCommandInterface.h" 7 | 8 | // Callback interface to be implemented by the clients of CCalcEngine if they require equation history 9 | class IHistoryDisplay 10 | { 11 | public: 12 | virtual ~IHistoryDisplay(){}; 13 | virtual unsigned int AddToHistory( 14 | _In_ std::shared_ptr>> const& tokens, 15 | _In_ std::shared_ptr>> const& commands, 16 | _In_ std::wstring_view result) = 0; 17 | }; 18 | -------------------------------------------------------------------------------- /src/Calculator/Controls/RadixButton.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using CalculatorApp.ViewModel.Common; 5 | 6 | namespace CalculatorApp 7 | { 8 | namespace Controls 9 | { 10 | public sealed class RadixButton : Windows.UI.Xaml.Controls.RadioButton 11 | { 12 | public RadixButton() 13 | { } 14 | 15 | internal string GetRawDisplayValue() 16 | { 17 | string radixContent = Content?.ToString(); 18 | return LocalizationSettings.GetInstance().RemoveGroupSeparators(radixContent); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/CalcViewModel/GraphingCalculatorEnums.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace CalculatorApp 4 | { 5 | enum KeyGraphFeaturesFlag 6 | { 7 | Domain = 1, 8 | Range = 2, 9 | Parity = 4, 10 | Periodicity = 8, 11 | Zeros = 16, 12 | YIntercept = 32, 13 | Minima = 64, 14 | Maxima = 128, 15 | InflectionPoints = 256, 16 | VerticalAsymptotes = 512, 17 | HorizontalAsymptotes = 1024, 18 | ObliqueAsymptotes = 2048, 19 | MonotoneIntervals = 4096 20 | }; 21 | 22 | enum AnalysisErrorType 23 | { 24 | NoError, 25 | AnalysisCouldNotBePerformed, 26 | AnalysisNotSupported, 27 | VariableIsNotX 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /src/Calculator/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Calculator")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("Microsoft Corporation")] 11 | [assembly: AssemblyProduct("Microsoft Calculator")] 12 | [assembly: AssemblyCopyright("Copyright © Microsoft Corporation. All rights reserved.")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /src/TraceLogging/TraceLogging.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 32f35fa0-613c-4f4e-b062-c61ab420e23b 6 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/AppResourceProvider.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace CalculatorApp::ViewModel::Common 7 | { 8 | public ref class AppResourceProvider sealed 9 | { 10 | public: 11 | static AppResourceProvider ^ GetInstance(); 12 | Platform::String ^ GetResourceString(_In_ Platform::String ^ key); 13 | Platform::String ^ GetCEngineString(_In_ Platform::String ^ key); 14 | 15 | private: 16 | AppResourceProvider(); 17 | Windows::ApplicationModel::Resources::ResourceLoader ^ m_stringResLoader; 18 | Windows::ApplicationModel::Resources::ResourceLoader ^ m_cEngineStringResLoader; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /src/GraphControl/winrtHeaders.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | template 10 | T from_cx(Platform::Object^ from) 11 | { 12 | T to{ nullptr }; 13 | 14 | winrt::check_hresult(reinterpret_cast<::IUnknown*>(from) 15 | ->QueryInterface(winrt::guid_of(), 16 | reinterpret_cast(winrt::put_abi(to)))); 17 | 18 | return to; 19 | } 20 | 21 | template 22 | T^ to_cx(winrt::Windows::Foundation::IUnknown const& from) 23 | { 24 | return safe_cast(reinterpret_cast(winrt::get_abi(from))); 25 | } 26 | -------------------------------------------------------------------------------- /src/GraphingImpl/Mocks/MathSolver.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "MathSolver.h" 6 | #include "Mocks/Graph.h" 7 | 8 | using namespace std; 9 | 10 | namespace Graphing 11 | { 12 | unique_ptr IMathSolver::CreateMathSolver() 13 | { 14 | return make_unique(); 15 | } 16 | } 17 | 18 | shared_ptr MockGraphingImpl::MathSolver::CreateGrapher() 19 | { 20 | return make_shared(); 21 | } 22 | 23 | shared_ptr MockGraphingImpl::MathSolver::CreateGrapher(const Graphing::IExpression* expression) 24 | { 25 | return make_shared(); 26 | } 27 | -------------------------------------------------------------------------------- /Tools/PGO/Microsoft.WindowsCalculator.PGO.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.WindowsCalculator.PGO 5 | $version$ 6 | Microsoft 7 | sourceapps 8 | https://microsoft.visualstudio.com/Apps/_git/calculator.app 9 | false 10 | A package containing the required files for Profile Guided Optimization for Calculator. 11 | Microsoft Corporation. All rights reserved. 12 | pgo 13 | en-US 14 | 15 | -------------------------------------------------------------------------------- /src/CalcManager/Header Files/Number.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include 7 | #include "Ratpack/ratpak.h" 8 | 9 | namespace CalcEngine 10 | { 11 | class Number 12 | { 13 | public: 14 | Number() noexcept; 15 | Number(int32_t sign, int32_t exp, std::vector const& mantissa) noexcept; 16 | 17 | explicit Number(PNUMBER p) noexcept; 18 | PNUMBER ToPNUMBER() const; 19 | 20 | int32_t const& Sign() const; 21 | int32_t const& Exp() const; 22 | std::vector const& Mantissa() const; 23 | 24 | bool IsZero() const; 25 | 26 | private: 27 | int32_t m_sign; 28 | int32_t m_exp; 29 | std::vector m_mantissa; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /src/Calculator/Utils/DelegateCommandUtils.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using CalculatorApp.ViewModel.Common; 5 | 6 | using System; 7 | 8 | namespace CalculatorApp.Utils 9 | { 10 | internal static class DelegateCommandUtils 11 | { 12 | public static DelegateCommand MakeDelegateCommand(TTarget target, Action handler) 13 | where TTarget : class 14 | { 15 | WeakReference weakTarget = new WeakReference(target); 16 | return new DelegateCommand(param => 17 | { 18 | if (weakTarget.Target is TTarget thatTarget) 19 | { 20 | handler.Invoke(thatTarget, param); 21 | } 22 | }); 23 | } 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /src/CalculatorUITestFramework/HistoryItem.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using OpenQA.Selenium.Appium; 5 | 6 | namespace CalculatorUITestFramework 7 | { 8 | public class HistoryItem 9 | { 10 | public AppiumWebElement Item { get; } 11 | 12 | public HistoryItem(AppiumWebElement item) 13 | { 14 | Item = item; 15 | } 16 | 17 | public string GetValue() 18 | { 19 | var equalSignIndex = Item.Text.IndexOf("="); 20 | return Item.Text.Substring(equalSignIndex + 1).Trim(); 21 | } 22 | public string GetExpression() 23 | { 24 | var equalSignIndex = Item.Text.IndexOf("="); 25 | return Item.Text.Substring(0, equalSignIndex + 1).Trim(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/CalcManager/pch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | // The CalcManager project should be able to be compiled with or without a precompiled header 7 | // in - order to support other toolchains besides MSVC. When adding new system headers, make sure 8 | // that the relevant source file includes all headers it needs, but then also add the system headers 9 | // here so that MSVC users see the performance benefit. 10 | 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/ExpressionCommandSerializer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "CalcManager/ExpressionCommand.h" 7 | 8 | namespace CalculatorApp::ViewModel 9 | { 10 | namespace Common 11 | { 12 | class SerializeCommandVisitor : public ISerializeCommandVisitor 13 | { 14 | public: 15 | SerializeCommandVisitor(_In_ Windows::Storage::Streams::DataWriter ^ dataWriter); 16 | 17 | void Visit(_In_ COpndCommand& opndCmd); 18 | void Visit(_In_ CUnaryCommand& unaryCmd); 19 | void Visit(_In_ CBinaryCommand& binaryCmd); 20 | void Visit(_In_ CParentheses& paraCmd); 21 | 22 | private: 23 | Windows::Storage::Streams::DataWriter ^ m_dataWriter; 24 | }; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | using OpenQA.Selenium.Appium.Windows; 4 | 5 | namespace CalculatorUITestFramework 6 | { 7 | public class UnitConverterOperatorsPanel 8 | { 9 | private WindowsDriver session => WinAppDriver.Instance.CalculatorSession; 10 | public NumberPad NumberPad = new NumberPad(); 11 | public WindowsElement ClearButton => this.session.TryFindElementByAccessibilityId("ClearEntryButtonPos0"); 12 | public WindowsElement BackSpaceButton => this.session.TryFindElementByAccessibilityId("BackSpaceButtonSmall"); 13 | public WindowsElement Units1 => this.session.TryFindElementByAccessibilityId("Units1"); 14 | public WindowsElement Units2 => this.session.TryFindElementByAccessibilityId("Units2"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/GraphControl/Logger/TraceLogger.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common.h" 7 | 8 | // A trace logging provider can only be instantiated and registered once per module. 9 | // This class implements a singleton model ensure that only one instance is created. 10 | namespace GraphControl 11 | { 12 | 13 | public ref class TraceLogger sealed 14 | { 15 | internal: 16 | static TraceLogger ^ GetInstance(); 17 | 18 | void LogEquationCountChanged(int currentValidEquations, int currentInvalidEquations); 19 | void LogFunctionAnalysisPerformed(int analysisErrorType, uint32 tooComplexFlag); 20 | void LogVariableCountChanged(int variablesCount); 21 | void LogLineWidthChanged(); 22 | 23 | private: 24 | TraceLogger() 25 | { 26 | } 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/ExpressionCommandDeserializer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "CalcManager/ExpressionCommand.h" 7 | 8 | namespace CalculatorApp::ViewModel 9 | { 10 | namespace Common 11 | { 12 | class CommandDeserializer 13 | { 14 | public: 15 | CommandDeserializer(_In_ Windows::Storage::Streams::DataReader ^ dataReader); 16 | std::shared_ptr Deserialize(_In_ CalculationManager::CommandType cmdType); 17 | 18 | private: 19 | Windows::Storage::Streams::DataReader ^ m_dataReader; 20 | COpndCommand DeserializeOperand(); 21 | CParentheses DeserializeParentheses(); 22 | CUnaryCommand DeserializeUnary(); 23 | CBinaryCommand DeserializeBinary(); 24 | }; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/GraphingInterfaces/IGraphAnalyzer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common.h" 7 | #include "GraphingEnums.h" 8 | #include 9 | #include 10 | #include 11 | 12 | namespace Graphing::Analyzer 13 | { 14 | using NativeAnalysisType = unsigned int; // PerformAnalysisType 15 | 16 | struct IGraphAnalyzer : public NonCopyable, public NonMoveable 17 | { 18 | virtual ~IGraphAnalyzer() = default; 19 | virtual bool CanFunctionAnalysisBePerformed(bool& variableIsNotX) = 0; 20 | virtual HRESULT PerformFunctionAnalysis(NativeAnalysisType analysisType) = 0; 21 | virtual HRESULT GetAnalysisTypeCaption(const AnalysisType type, std::wstring& captionOut) const = 0; 22 | virtual HRESULT GetMessage(const GraphAnalyzerMessage msg, std::wstring& msgOut) const = 0; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /src/CalcViewModel/DataLoaders/ICurrencyHttpClient.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace CalculatorApp 7 | { 8 | namespace ViewModel::DataLoaders 9 | { 10 | class ICurrencyHttpClient 11 | { 12 | public: 13 | virtual ~ICurrencyHttpClient() 14 | { 15 | } 16 | 17 | virtual void SetSourceCurrencyCode(Platform::String ^ sourceCurrencyCode) = 0; 18 | virtual void SetResponseLanguage(Platform::String ^ responseLanguage) = 0; 19 | 20 | virtual Windows::Foundation::IAsyncOperationWithProgress ^ GetCurrencyMetadata() = 0; 21 | virtual Windows::Foundation::IAsyncOperationWithProgress ^ GetCurrencyRatios() = 0; 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/CalcManager/CalculatorResource.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include 7 | 8 | namespace CalculationManager 9 | { 10 | class IResourceProvider 11 | { 12 | public: 13 | virtual ~IResourceProvider() 14 | { 15 | } 16 | 17 | // Should return a string from the resource table for strings used 18 | // by the calculation engine. The strings that must be defined 19 | // and the ids to define them with can be seen in EngineStrings.h 20 | // with SIDS prefix. Additionally it must provide values for string 21 | // ids "sDecimal", "sThousand" and "sGrouping". See 22 | // https://technet.microsoft.com/en-us/library/cc782655(v=ws.10).aspx 23 | // for what these values refer to. 24 | virtual std::wstring GetCEngineString(std::wstring_view id) = 0; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /src/Calculator/Controls/OverflowTextBlockAutomationPeer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.Collections.Generic; 5 | 6 | using Windows.UI.Xaml.Automation.Peers; 7 | 8 | namespace CalculatorApp 9 | { 10 | namespace Controls 11 | { 12 | public sealed class OverflowTextBlockAutomationPeer : Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer 13 | { 14 | public OverflowTextBlockAutomationPeer(OverflowTextBlock owner) : base(owner) 15 | { 16 | } 17 | 18 | protected override AutomationControlType GetAutomationControlTypeCore() 19 | { 20 | return AutomationControlType.Text; 21 | } 22 | 23 | protected override IList GetChildrenCore() 24 | { 25 | return null; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/CalculatorUITests/CalculatorUITests.release.runsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/CalculatorUITests/CalculatorUITests.ci-internal.runsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/GraphControl/DirectX/NearestPointRenderer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace GraphControl::DX 7 | { 8 | class DeviceResources; 9 | 10 | class NearestPointRenderer 11 | { 12 | public: 13 | NearestPointRenderer(DeviceResources* deviceResources); 14 | 15 | void CreateDeviceDependentResources(); 16 | void ReleaseDeviceDependentResources(); 17 | void Render(const Windows::Foundation::Point& location); 18 | 19 | void SetColor(const D2D1::ColorF& color); 20 | void SetRadius(float radius); 21 | 22 | private: 23 | void CreateBrush(); 24 | 25 | private: 26 | DeviceResources* const m_deviceResources; 27 | 28 | D2D1::ColorF m_color; 29 | D2D1_ELLIPSE m_ellipse; 30 | 31 | // Resources related to rendering. 32 | Microsoft::WRL::ComPtr m_brush; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/Automation/INarratorAnnouncementHost.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | #include "NarratorAnnouncement.h" 6 | 7 | // Declaration of the INarratorAnnouncementHost interface. 8 | // This interface exists to hide the concrete announcement host 9 | // being used. Depending on the version of the OS the app is running on, 10 | // the app may need a host that uses LiveRegionChanged or RaiseNotification. 11 | 12 | namespace CalculatorApp::ViewModel::Common::Automation 13 | { 14 | public 15 | interface class INarratorAnnouncementHost 16 | { 17 | public: 18 | // Is the host available on this OS. 19 | bool IsHostAvailable(); 20 | 21 | // Make a new instance of a concrete host. 22 | INarratorAnnouncementHost ^ MakeHost(); 23 | 24 | // Make an announcement using the concrete host's preferred method. 25 | void Announce(NarratorAnnouncement ^ announcement); 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /src/CalculatorUITests/CalculatorUITests.ci.runsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/CalcViewModel/MemoryItemViewModel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "MemoryItemViewModel.h" 6 | #include "StandardCalculatorViewModel.h" 7 | 8 | using namespace CalculatorApp; 9 | using namespace CalculatorApp::ViewModel::Common; 10 | using namespace CalculatorApp::ViewModel::Common::Automation; 11 | using namespace CalculatorApp::ViewModel; 12 | using namespace Platform; 13 | using namespace std; 14 | using namespace Windows::Foundation; 15 | using namespace Windows::Storage; 16 | using namespace Windows::Storage::Streams; 17 | using namespace Windows::Security::Cryptography; 18 | using namespace Windows::Foundation::Collections; 19 | 20 | void MemoryItemViewModel::Clear() 21 | { 22 | m_calcVM->OnMemoryClear(Position); 23 | }; 24 | 25 | void MemoryItemViewModel::MemoryAdd() 26 | { 27 | m_calcVM->OnMemoryAdd(Position); 28 | }; 29 | 30 | void MemoryItemViewModel::MemorySubtract() 31 | { 32 | m_calcVM->OnMemorySubtract(Position); 33 | }; 34 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/AppResourceProvider.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "AppResourceProvider.h" 6 | 7 | using namespace Platform; 8 | using namespace Windows::ApplicationModel::Resources; 9 | using namespace CalculatorApp; 10 | using namespace CalculatorApp::ViewModel::Common; 11 | 12 | AppResourceProvider::AppResourceProvider() 13 | { 14 | m_stringResLoader = ResourceLoader::GetForViewIndependentUse(); 15 | m_cEngineStringResLoader = ResourceLoader::GetForViewIndependentUse(L"CEngineStrings"); 16 | } 17 | 18 | AppResourceProvider ^ AppResourceProvider::GetInstance() 19 | { 20 | static AppResourceProvider ^ s_instance = ref new AppResourceProvider(); 21 | return s_instance; 22 | } 23 | 24 | String ^ AppResourceProvider::GetResourceString(_In_ String ^ key) 25 | { 26 | return m_stringResLoader->GetString(key); 27 | } 28 | 29 | String ^ AppResourceProvider::GetCEngineString(_In_ String ^ key) 30 | { 31 | return m_cEngineStringResLoader->GetString(key); 32 | } 33 | -------------------------------------------------------------------------------- /src/Calculator/Converters/BooleanNegationConverter.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | 6 | namespace CalculatorApp 7 | { 8 | namespace Converters 9 | { 10 | /// 11 | /// Value converter that translates true to false and vice versa. 12 | /// 13 | [Windows.Foundation.Metadata.WebHostHidden] 14 | public sealed class BooleanNegationConverter : Windows.UI.Xaml.Data.IValueConverter 15 | { 16 | public object Convert(object value, Type targetType, object parameter, string language) 17 | { 18 | var boolValue = (value is bool boxedBool && boxedBool); 19 | return !boolValue; 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | { 24 | var boolValue = (value is bool boxedBool && boxedBool); 25 | return !boolValue; 26 | } 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/Calculator/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/NetworkManager.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace CalculatorApp::ViewModel::Common 7 | { 8 | public 9 | enum class NetworkAccessBehavior 10 | { 11 | Normal = 0, 12 | OptIn = 1, 13 | Offline = 2 14 | }; 15 | 16 | public 17 | delegate void NetworkBehaviorChangedHandler(NetworkAccessBehavior behavior); 18 | 19 | public 20 | ref class NetworkManager sealed 21 | { 22 | public: 23 | NetworkManager(); 24 | 25 | static NetworkAccessBehavior GetNetworkAccessBehavior(); 26 | 27 | event NetworkBehaviorChangedHandler ^ NetworkBehaviorChanged; 28 | 29 | private: 30 | ~NetworkManager(); 31 | 32 | void OnNetworkStatusChange(_In_ Platform::Object ^ sender); 33 | static NetworkAccessBehavior ConvertCostInfoToBehavior(_In_ Windows::Networking::Connectivity::ConnectionCost ^ connectionCost); 34 | 35 | private: 36 | Windows::Foundation::EventRegistrationToken m_NetworkStatusChangedToken; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /src/CalcViewModel/DataLoaders/CurrencyHttpClient.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "ICurrencyHttpClient.h" 7 | 8 | namespace CalculatorApp 9 | { 10 | namespace ViewModel::DataLoaders 11 | { 12 | class CurrencyHttpClient : public ICurrencyHttpClient 13 | { 14 | public: 15 | CurrencyHttpClient(); 16 | 17 | void SetSourceCurrencyCode(Platform::String ^ sourceCurrencyCode) override; 18 | void SetResponseLanguage(Platform::String ^ responseLanguage) override; 19 | 20 | Windows::Foundation::IAsyncOperationWithProgress ^ GetCurrencyMetadata() override; 21 | Windows::Foundation::IAsyncOperationWithProgress ^ GetCurrencyRatios() override; 22 | 23 | private: 24 | Windows::Web::Http::HttpClient ^ m_client; 25 | Platform::String ^ m_responseLanguage; 26 | Platform::String ^ m_sourceCurrencyCode; 27 | }; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/UtilsTests.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include 6 | 7 | using namespace Microsoft::VisualStudio::CppUnitTestFramework; 8 | 9 | namespace CalculatorUnitTests 10 | { 11 | TEST_CLASS(UtilsTests){ public: TEST_METHOD(IsLastCharacterSuccess){ VERIFY_IS_TRUE(Utils::IsLastCharacterTarget(L"Test.", L'.')); 12 | } 13 | 14 | TEST_METHOD(IsLastCharacterSuccessMultipleSuffices) 15 | { 16 | VERIFY_IS_TRUE(Utils::IsLastCharacterTarget(L"Test..", L'.')); 17 | } 18 | 19 | TEST_METHOD(IsLastCharacterFailure) 20 | { 21 | VERIFY_IS_FALSE(Utils::IsLastCharacterTarget(L"Test", L'.')); 22 | } 23 | 24 | TEST_METHOD(IsLastCharacterFailureAllButLastMatch) 25 | { 26 | VERIFY_IS_FALSE(Utils::IsLastCharacterTarget(L".....T", L'.')); 27 | } 28 | 29 | TEST_METHOD(IsLastCharacterFailureEmptyInput) 30 | { 31 | VERIFY_IS_FALSE(Utils::IsLastCharacterTarget({}, L'.')); 32 | } 33 | 34 | TEST_METHOD(IsLastCharacterFailureNullTarget) 35 | { 36 | VERIFY_IS_FALSE(Utils::IsLastCharacterTarget({}, NULL)); 37 | } 38 | } 39 | ; 40 | } 41 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/UnitTestApp.xaml.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | // 5 | // App.xaml.h 6 | // Declaration of the App class. 7 | // 8 | 9 | #pragma once 10 | 11 | #include "UnitTestApp.g.h" 12 | #include "CalcViewModel/DateCalculatorViewModel.h" 13 | #include "CalcViewModel/StandardCalculatorViewModel.h" 14 | #include "CalcViewModel/UnitConverterViewModel.h" 15 | #include "CalcViewModel/MemoryItemViewModel.h" 16 | 17 | namespace CalculatorUnitTests 18 | { 19 | /// 20 | /// Provides application-specific behavior to supplement the default Application class. 21 | /// 22 | ref class App sealed 23 | { 24 | protected: 25 | virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs ^ e) override; 26 | 27 | internal : App(); 28 | 29 | private: 30 | void OnSuspending(Platform::Object ^ sender, Windows::ApplicationModel::SuspendingEventArgs ^ e); 31 | void OnNavigationFailed(Platform::Object ^ sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^ e); 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) Microsoft Corporation. All rights reserved. 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/CalculatorUITests/CalculatorUITests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6.0 4 | false 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | PreserveNewest 18 | 19 | 20 | PreserveNewest 21 | 22 | 23 | PreserveNewest 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/Automation/NarratorAnnouncementHostFactory.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | #include "INarratorAnnouncementHost.h" 6 | 7 | // Declaration of the NarratorAnnouncementHostFactory class. 8 | // This class exists to hide the construction of a concrete INarratorAnnouncementHost. 9 | // Depending on the version of the OS the app is running on, the factory will return 10 | // an announcement host appropriate for that version. 11 | 12 | namespace CalculatorApp::ViewModel::Common::Automation 13 | { 14 | class NarratorAnnouncementHostFactory 15 | { 16 | public: 17 | static INarratorAnnouncementHost ^ MakeHost(); 18 | 19 | private: 20 | NarratorAnnouncementHostFactory() 21 | { 22 | } 23 | 24 | static int Initialize(); 25 | static void RegisterHosts(); 26 | static INarratorAnnouncementHost ^ GetHostProducer(); 27 | 28 | private: 29 | static int s_init; 30 | static INarratorAnnouncementHost ^ s_hostProducer; 31 | static std::vector s_hosts; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /src/GraphingInterfaces/IGraph.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common.h" 7 | #include "IGraphAnalyzer.h" 8 | #include "IGraphingOptions.h" 9 | #include "IGraphRenderer.h" 10 | #include "IEquation.h" 11 | #include 12 | 13 | namespace Graphing 14 | { 15 | struct IGraph : public NonCopyable, public NonMoveable 16 | { 17 | virtual ~IGraph() = default; 18 | 19 | virtual std::optional>> TryInitialize(const IExpression* graphingExp = nullptr) = 0; 20 | 21 | virtual HRESULT GetInitializationError() = 0; 22 | 23 | virtual IGraphingOptions& GetOptions() = 0; 24 | 25 | virtual std::vector> GetVariables() = 0; 26 | 27 | virtual void SetArgValue(std::wstring variableName, double value) = 0; 28 | 29 | virtual std::shared_ptr GetRenderer() const = 0; 30 | 31 | virtual bool TryResetSelection() = 0; 32 | 33 | virtual std::shared_ptr GetAnalyzer() const = 0; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /src/GraphControl/pch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | //C4453: A '[WebHostHidden]' type should not be used on the published surface of a public type that is not '[WebHostHidden]' 7 | // This warning is disabled because the types in this app will not be published for use in javascript environment 8 | #pragma warning(disable:4453) 9 | 10 | // Windows headers define a min/max macro. 11 | // Include the below #def to avoid this behavior. 12 | #define NOMINMAX 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | // DirectX headers 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | 37 | // C++/WinRT 38 | #include "winrtHeaders.h" 39 | 40 | #include "Control/Grapher.h" 41 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/CalculatorButtonPressedEventArgs.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "CalculatorButtonUser.h" 7 | #include "Utils.h" 8 | 9 | namespace CalculatorApp::ViewModel 10 | { 11 | namespace Common 12 | { 13 | public 14 | ref class CalculatorButtonPressedEventArgs sealed 15 | { 16 | public: 17 | PROPERTY_R(Platform::String ^, AuditoryFeedback); 18 | PROPERTY_R(CalculatorApp::ViewModel::Common::NumbersAndOperatorsEnum, Operation); 19 | 20 | CalculatorButtonPressedEventArgs(Platform::String ^ feedback, CalculatorApp::ViewModel::Common::NumbersAndOperatorsEnum operation) 21 | : m_AuditoryFeedback(feedback) 22 | , m_Operation(operation) 23 | { 24 | } 25 | 26 | static CalculatorApp::ViewModel::Common::NumbersAndOperatorsEnum GetOperationFromCommandParameter(_In_ Platform::Object ^ commandParameter); 27 | static Platform::String ^ GetAuditoryFeedbackFromCommandParameter(_In_ Platform::Object ^ commandParameter); 28 | }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/CalcViewModel/MemoryItemViewModel.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common/Utils.h" 7 | 8 | namespace CalculatorApp 9 | { 10 | namespace ViewModel 11 | { 12 | ref class StandardCalculatorViewModel; 13 | 14 | /// 15 | /// Model representation of a single item in the Memory list 16 | /// 17 | [Windows::UI::Xaml::Data::Bindable] public ref class MemoryItemViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged 18 | { 19 | public: 20 | MemoryItemViewModel(StandardCalculatorViewModel ^ calcVM) 21 | : m_Position(-1) 22 | , m_calcVM(calcVM) 23 | { 24 | } 25 | OBSERVABLE_OBJECT(); 26 | OBSERVABLE_PROPERTY_RW(int, Position); 27 | OBSERVABLE_PROPERTY_RW(Platform::String ^, Value); 28 | 29 | void Clear(); 30 | void MemoryAdd(); 31 | void MemorySubtract(); 32 | 33 | private: 34 | StandardCalculatorViewModel ^ m_calcVM; 35 | }; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/CalcViewModel/pch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "targetver.h" 7 | 8 | #ifndef WIN32_LEAN_AND_MEAN 9 | #define WIN32_LEAN_AND_MEAN 10 | #endif 11 | 12 | // Windows headers define min/max macros. 13 | // Disable it for project code. 14 | #define NOMINMAX 15 | 16 | #include 17 | 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | // C++\WinRT Headers 37 | #include "winrt/base.h" 38 | #include "winrt/Windows.Foundation.Diagnostics.h" 39 | #include "winrt/Windows.Globalization.h" 40 | #include "winrt/Windows.Globalization.DateTimeFormatting.h" 41 | #include "winrt/Windows.System.UserProfile.h" 42 | #include "winrt/Windows.UI.Xaml.h" 43 | #include "winrt/Windows.Foundation.Metadata.h" 44 | #include "winrt/Windows.Management.Policies.h" 45 | -------------------------------------------------------------------------------- /src/Calculator/Converters/VisibilityNegationConverter.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | 6 | using Windows.UI.Xaml; 7 | 8 | namespace CalculatorApp 9 | { 10 | namespace Common 11 | { 12 | /// 13 | /// Value converter that translates Visible to Collapsed and vice versa 14 | /// 15 | [Windows.Foundation.Metadata.WebHostHidden] 16 | public sealed class VisibilityNegationConverter : Windows.UI.Xaml.Data.IValueConverter 17 | { 18 | public object Convert(object value, Type targetType, object parameter, string language) 19 | { 20 | if (value is Visibility boxedVisibility && boxedVisibility == Visibility.Collapsed) 21 | { 22 | return Visibility.Visible; 23 | } 24 | return Visibility.Collapsed; 25 | } 26 | 27 | public object ConvertBack(object value, Type targetType, object parameter, string language) 28 | { 29 | return Convert(value, targetType, parameter, language); 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/CalculatorButtonPressedEventArgs.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "CalculatorButtonPressedEventArgs.h" 6 | 7 | using namespace CalculatorApp; 8 | using namespace CalculatorApp::ViewModel; 9 | using namespace CalculatorApp::ViewModel::Common; 10 | using namespace Platform; 11 | 12 | NumbersAndOperatorsEnum CalculatorButtonPressedEventArgs::GetOperationFromCommandParameter(_In_ Object ^ commandParameter) 13 | { 14 | auto eventArgs = dynamic_cast(commandParameter); 15 | if (eventArgs != nullptr) 16 | { 17 | return eventArgs->Operation; 18 | } 19 | else 20 | { 21 | return safe_cast(commandParameter); 22 | } 23 | } 24 | 25 | String ^ CalculatorButtonPressedEventArgs::GetAuditoryFeedbackFromCommandParameter(_In_ Object ^ commandParameter) 26 | { 27 | auto eventArgs = dynamic_cast(commandParameter); 28 | if (eventArgs != nullptr) 29 | { 30 | return eventArgs->AuditoryFeedback; 31 | } 32 | else 33 | { 34 | return nullptr; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/build/Calculator.StampAssemblyInfo.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | StampAssemblyInfo;$(CompileDependsOn) 12 | 13 | 14 | 15 | 16 | 17 | <_Parameter1>$(Version) 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Calculator/Utils/DispatcherTimerDelayer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | 6 | using Windows.UI.Xaml; 7 | 8 | namespace CalculatorApp 9 | { 10 | public sealed class DispatcherTimerDelayer 11 | { 12 | public event EventHandler Action; 13 | 14 | public DispatcherTimerDelayer(TimeSpan timeSpan) 15 | { 16 | m_timer = new DispatcherTimer 17 | { 18 | Interval = timeSpan 19 | }; 20 | var interval = m_timer.Interval; 21 | m_timer.Tick += Timer_Tick; 22 | } 23 | 24 | public void Start() 25 | { 26 | m_timer.Start(); 27 | } 28 | 29 | public void ResetAndStart() 30 | { 31 | m_timer.Stop(); 32 | m_timer.Start(); 33 | } 34 | 35 | public void Stop() 36 | { 37 | m_timer.Stop(); 38 | } 39 | 40 | private void Timer_Tick(object sender, object e) 41 | { 42 | m_timer.Stop(); 43 | Action?.Invoke(this, null); 44 | } 45 | 46 | private readonly DispatcherTimer m_timer; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/Automation/LiveRegionHost.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | #include "INarratorAnnouncementHost.h" 6 | 7 | // Declaration of the LiveRegionHost class. 8 | // This class announces NarratorAnnouncements using the LiveRegionChanged event. 9 | // This event is unreliable and should be deprecated in favor of the new 10 | // RaiseNotification API in RS3. 11 | 12 | namespace CalculatorApp::ViewModel::Common::Automation 13 | { 14 | // This class exists so that the app can run on RS2 and use LiveRegions 15 | // to host notifications on those builds. 16 | // When the app switches to min version RS3, this class can be removed 17 | // and the app will switch to using the Notification API. 18 | // TODO - MSFT 12735088 19 | public 20 | ref class LiveRegionHost sealed : public INarratorAnnouncementHost 21 | { 22 | public: 23 | LiveRegionHost(); 24 | 25 | virtual bool IsHostAvailable(); 26 | virtual INarratorAnnouncementHost ^ MakeHost(); 27 | 28 | virtual void Announce(NarratorAnnouncement ^ announcement); 29 | 30 | private: 31 | Windows::UI::Xaml::UIElement ^ m_host; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /src/CalcManager/Header Files/ICalcDisplay.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "../ExpressionCommandInterface.h" 7 | 8 | // Callback interface to be implemented by the clients of CCalcEngine 9 | class ICalcDisplay 10 | { 11 | public: 12 | virtual void SetPrimaryDisplay(const std::wstring& pszText, bool isError) = 0; 13 | virtual void SetIsInError(bool isInError) = 0; 14 | virtual void SetExpressionDisplay( 15 | _Inout_ std::shared_ptr>> const& tokens, 16 | _Inout_ std::shared_ptr>> const& commands) = 0; 17 | virtual void SetParenthesisNumber(_In_ unsigned int count) = 0; 18 | virtual void OnNoRightParenAdded() = 0; 19 | virtual void MaxDigitsReached() = 0; // not an error but still need to inform UI layer. 20 | virtual void BinaryOperatorReceived() = 0; 21 | virtual void OnHistoryItemAdded(_In_ unsigned int addedItemIndex) = 0; 22 | virtual void SetMemorizedNumbers(const std::vector& memorizedNumbers) = 0; 23 | virtual void MemoryItemChanged(unsigned int indexOfMemory) = 0; 24 | virtual void InputChanged() = 0; 25 | }; 26 | -------------------------------------------------------------------------------- /src/Calculator/Views/CalculatorStandardOperators.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | // 5 | // CalculatorStandardOperators.xaml.h 6 | // Declaration of the CalculatorStandardOperators class 7 | // 8 | 9 | using Windows.UI.Xaml; 10 | 11 | namespace CalculatorApp 12 | { 13 | [Windows.Foundation.Metadata.WebHostHidden] 14 | public sealed partial class CalculatorStandardOperators 15 | { 16 | public CalculatorStandardOperators() 17 | { 18 | m_isErrorVisualState = false; 19 | InitializeComponent(); 20 | } 21 | 22 | public bool IsErrorVisualState 23 | { 24 | get => m_isErrorVisualState; 25 | set 26 | { 27 | if (m_isErrorVisualState != value) 28 | { 29 | m_isErrorVisualState = value; 30 | string newState = m_isErrorVisualState ? "ErrorLayout" : "NoErrorLayout"; 31 | VisualStateManager.GoToState(this, newState, false); 32 | NumberPad.IsErrorVisualState = m_isErrorVisualState; 33 | } 34 | } 35 | } 36 | private bool m_isErrorVisualState; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/AsyncHelper.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "AsyncHelper.h" 6 | #include 7 | #include 8 | 9 | using namespace std; 10 | using namespace concurrency; 11 | using namespace Platform; 12 | using namespace CalculatorApp; 13 | using namespace Windows::UI::Core; 14 | using namespace Windows::ApplicationModel::Core; 15 | 16 | task AsyncHelper::RunOnUIThreadAsync(function&& action) 17 | { 18 | auto callback = ref new DispatchedHandler([action]() { action(); }); 19 | 20 | return create_task(CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, callback)); 21 | } 22 | 23 | void AsyncHelper::RunOnUIThread(function&& action, DWORD timeout) 24 | { 25 | task waitTask = RunOnUIThreadAsync([action]() { action(); }); 26 | 27 | WaitForTask(waitTask, timeout); 28 | } 29 | 30 | void AsyncHelper::Delay(DWORD milliseconds) 31 | { 32 | thread timer(bind(CalculatorApp::AsyncHelper::Sleep, milliseconds)); 33 | timer.join(); 34 | } 35 | 36 | void AsyncHelper::Sleep(DWORD milliseconds) 37 | { 38 | this_thread::sleep_for(chrono::milliseconds(milliseconds)); 39 | } 40 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/Automation/LiveRegionHost.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "LiveRegionHost.h" 6 | 7 | using namespace CalculatorApp::ViewModel::Common::Automation; 8 | using namespace Windows::UI::Xaml::Automation; 9 | using namespace Windows::UI::Xaml::Automation::Peers; 10 | using namespace Windows::UI::Xaml::Controls; 11 | 12 | LiveRegionHost::LiveRegionHost() 13 | : m_host(nullptr) 14 | { 15 | } 16 | 17 | bool LiveRegionHost::IsHostAvailable() 18 | { 19 | // LiveRegion is always available. 20 | return true; 21 | } 22 | 23 | INarratorAnnouncementHost ^ LiveRegionHost::MakeHost() 24 | { 25 | return ref new LiveRegionHost(); 26 | } 27 | 28 | void LiveRegionHost::Announce(NarratorAnnouncement ^ announcement) 29 | { 30 | if (m_host == nullptr) 31 | { 32 | m_host = ref new TextBlock(); 33 | AutomationProperties::SetLiveSetting(m_host, AutomationLiveSetting::Assertive); 34 | } 35 | 36 | AutomationProperties::SetName(m_host, announcement->Announcement); 37 | AutomationPeer ^ peer = FrameworkElementAutomationPeer::FromElement(m_host); 38 | if (peer != nullptr) 39 | { 40 | peer->RaiseAutomationEvent(AutomationEvents::LiveRegionChanged); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Calculator/Controls/CalculationResultAutomationPeer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Windows.UI.Xaml; 5 | using Windows.UI.Xaml.Automation.Peers; 6 | 7 | namespace CalculatorApp 8 | { 9 | namespace Controls 10 | { 11 | public sealed class CalculationResultAutomationPeer : Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer, 12 | Windows.UI.Xaml.Automation.Provider.IInvokeProvider 13 | { 14 | public CalculationResultAutomationPeer(FrameworkElement owner) : base(owner) 15 | { 16 | } 17 | 18 | protected override AutomationControlType GetAutomationControlTypeCore() 19 | { 20 | return AutomationControlType.Text; 21 | } 22 | 23 | protected override object GetPatternCore(PatternInterface pattern) 24 | { 25 | return pattern == PatternInterface.Invoke ? this : base.GetPatternCore(pattern); 26 | } 27 | 28 | public void Invoke() 29 | { 30 | var owner = (CalculationResult)this.Owner; 31 | owner.ProgrammaticSelect(); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/Automation/NotificationHost.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | #include "INarratorAnnouncementHost.h" 6 | 7 | // Declaration of the NotificationHost class. 8 | // This class announces NarratorAnnouncements using the RaiseNotification API 9 | // available in RS3. 10 | 11 | namespace CalculatorApp::ViewModel::Common::Automation 12 | { 13 | public 14 | ref class NotificationHost sealed : public INarratorAnnouncementHost 15 | { 16 | public: 17 | NotificationHost(); 18 | 19 | virtual bool IsHostAvailable(); 20 | virtual INarratorAnnouncementHost ^ MakeHost(); 21 | 22 | virtual void Announce(NarratorAnnouncement ^ announcement); 23 | 24 | private: 25 | static Windows::UI::Xaml::Automation::Peers::AutomationNotificationKind 26 | GetWindowsNotificationKind(CalculatorApp::ViewModel::Common::Automation::AutomationNotificationKind customKindType); 27 | 28 | static Windows::UI::Xaml::Automation::Peers::AutomationNotificationProcessing 29 | GetWindowsNotificationProcessing(CalculatorApp::ViewModel::Common::Automation::AutomationNotificationProcessing customProcessingType); 30 | 31 | private: 32 | Windows::UI::Xaml::UIElement ^ m_host; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /src/Calculator/Selectors/NavViewMenuItemTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using CalculatorApp.ViewModel.Common; 5 | 6 | using System; 7 | 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | 11 | namespace CalculatorApp.TemplateSelectors 12 | { 13 | internal sealed class NavViewMenuItemTemplateSelector : DataTemplateSelector 14 | { 15 | public DataTemplate CategoryItemTemplate { get; set; } 16 | public DataTemplate CategoryGroupItemTemplate { get; set; } 17 | 18 | protected override DataTemplate SelectTemplateCore(object item) 19 | { 20 | if (item is NavCategory) 21 | { 22 | return CategoryItemTemplate; 23 | } 24 | else if (item is NavCategoryGroup) 25 | { 26 | return CategoryGroupItemTemplate; 27 | } 28 | else 29 | { 30 | throw new NotSupportedException($"typeof(item) must be {nameof(NavCategory)} or {nameof(NavCategoryGroup)}."); 31 | } 32 | } 33 | 34 | protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) 35 | { 36 | return SelectTemplateCore(item); 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/UnitTestApp.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/TraceLogging/TraceLoggingCommon.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | namespace TraceLogging 7 | { 8 | public ref class TraceLoggingCommon sealed 9 | { 10 | public: 11 | static TraceLoggingCommon ^ GetInstance(); 12 | 13 | // As mentioned in Microsoft's Privacy Statement(https://privacy.microsoft.com/en-US/privacystatement#maindiagnosticsmodule), 14 | // sampling is involved in Microsoft's diagnostic data collection process. 15 | // These keywords provide additional input into how frequently an event might be sampled. 16 | // The lower the level of the keyword, the higher the possibility that the corresponding event may be sampled. 17 | void LogLevel1Event(Platform::String ^ eventName, Windows::Foundation::Diagnostics::LoggingFields ^ fields); 18 | void LogLevel2Event(Platform::String ^ eventName, Windows::Foundation::Diagnostics::LoggingFields ^ fields); 19 | void LogLevel3Event(Platform::String ^ eventName, Windows::Foundation::Diagnostics::LoggingFields ^ fields); 20 | 21 | bool GetTraceLoggingProviderEnabled(); 22 | 23 | private: 24 | TraceLoggingCommon(); 25 | 26 | Windows::Foundation::Diagnostics::LoggingChannel ^ g_calculatorProvider; 27 | Windows::Foundation::Diagnostics::LoggingActivity ^ m_appLaunchActivity; 28 | GUID sessionGuid; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /src/CalcManager/Header Files/RationalMath.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Rational.h" 7 | 8 | namespace CalcEngine::RationalMath 9 | { 10 | Rational Frac(Rational const& rat); 11 | Rational Integer(Rational const& rat); 12 | 13 | Rational Pow(Rational const& base, Rational const& pow); 14 | Rational Root(Rational const& base, Rational const& root); 15 | Rational Fact(Rational const& rat); 16 | Rational Mod(Rational const& a, Rational const& b); 17 | 18 | Rational Exp(Rational const& rat); 19 | Rational Log(Rational const& rat); 20 | Rational Log10(Rational const& rat); 21 | 22 | Rational Invert(Rational const& rat); 23 | Rational Abs(Rational const& rat); 24 | 25 | Rational Sin(Rational const& rat, AngleType angletype); 26 | Rational Cos(Rational const& rat, AngleType angletype); 27 | Rational Tan(Rational const& rat, AngleType angletype); 28 | Rational ASin(Rational const& rat, AngleType angletype); 29 | Rational ACos(Rational const& rat, AngleType angletype); 30 | Rational ATan(Rational const& rat, AngleType angletype); 31 | 32 | Rational Sinh(Rational const& rat); 33 | Rational Cosh(Rational const& rat); 34 | Rational Tanh(Rational const& rat); 35 | Rational ASinh(Rational const& rat); 36 | Rational ACosh(Rational const& rat); 37 | Rational ATanh(Rational const& rat); 38 | } 39 | -------------------------------------------------------------------------------- /src/CalcViewModel/GraphingCalculator/GraphingCalculatorViewModel.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "../Common/Utils.h" 7 | #include "EquationViewModel.h" 8 | #include "VariableViewModel.h" 9 | 10 | namespace CalculatorApp::ViewModel 11 | { 12 | [Windows::UI::Xaml::Data::Bindable] public ref class GraphingCalculatorViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged 13 | { 14 | public: 15 | GraphingCalculatorViewModel(); 16 | 17 | OBSERVABLE_OBJECT(); 18 | OBSERVABLE_PROPERTY_R(bool, IsDecimalEnabled); 19 | OBSERVABLE_PROPERTY_R(Windows::Foundation::Collections::IObservableVector ^, Equations); 20 | OBSERVABLE_PROPERTY_R(Windows::Foundation::Collections::IObservableVector ^, Variables); 21 | OBSERVABLE_PROPERTY_R(EquationViewModel ^, SelectedEquation); 22 | 23 | COMMAND_FOR_METHOD(ButtonPressed, GraphingCalculatorViewModel::OnButtonPressed); 24 | 25 | event Windows::Foundation::EventHandler ^ VariableUpdated; 26 | 27 | void UpdateVariables(Windows::Foundation::Collections::IMap ^ variables); 28 | 29 | void SetSelectedEquation(EquationViewModel ^ equation); 30 | private: 31 | void OnButtonPressed(Platform::Object ^ parameter); 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /src/CalculatorUITestFramework/WindowsElementExtensions.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using Microsoft.VisualStudio.TestTools.UnitTesting; 5 | using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; 6 | 7 | using OpenQA.Selenium.Appium.Windows; 8 | 9 | using System.Diagnostics; 10 | using System.Threading; 11 | 12 | namespace CalculatorUITestFramework 13 | { 14 | public static class WindowsElementExtensions 15 | { 16 | /// 17 | /// Waits for an element to be displayed until the timeout is reached. 18 | /// 19 | /// WindowsElement in the Calculator application. 20 | /// Timeout in ms. 21 | public static void WaitForDisplayed(this WindowsElement element, int timeout = 2000) 22 | { 23 | Stopwatch timer = new Stopwatch(); 24 | timer.Reset(); 25 | timer.Start(); 26 | while (timer.ElapsedMilliseconds < timeout) 27 | { 28 | if (element.Displayed) 29 | { 30 | timer.Stop(); 31 | return; 32 | } 33 | Logger.LogMessage("Waiting for 10ms in WaitForDisplayed"); 34 | Thread.Sleep(10); 35 | } 36 | timer.Stop(); 37 | Assert.Fail($"{element} was not displayed in {timeout} ms"); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/GraphingInterfaces/IEquationOptions.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common.h" 7 | #include "GraphingEnums.h" 8 | 9 | namespace Graphing 10 | { 11 | struct IEquationOptions : public NonCopyable, public NonMoveable 12 | { 13 | virtual ~IEquationOptions() = default; 14 | 15 | virtual Graphing::Color GetGraphColor() const = 0; 16 | virtual void SetGraphColor(const Graphing::Color& color) = 0; 17 | virtual void ResetGraphColor() = 0; 18 | 19 | virtual Graphing::Renderer::LineStyle GetLineStyle() const = 0; 20 | virtual void SetLineStyle(Graphing::Renderer::LineStyle value) = 0; 21 | virtual void ResetLineStyle() = 0; 22 | 23 | virtual float GetLineWidth() const = 0; 24 | virtual void SetLineWidth(float value) = 0; 25 | virtual void ResetLineWidth() = 0; 26 | 27 | virtual float GetSelectedEquationLineWidth() const = 0; 28 | virtual void SetSelectedEquationLineWidth(float value) = 0; 29 | virtual void ResetSelectedEquationLineWidth() = 0; 30 | 31 | virtual float GetPointRadius() const = 0; 32 | virtual void SetPointRadius(float value) = 0; 33 | virtual void ResetPointRadius() = 0; 34 | 35 | virtual float GetSelectedEquationPointRadius() const = 0; 36 | virtual void SetSelectedEquationPointRadius(float value) = 0; 37 | virtual void ResetSelectedEquationPointRadius() = 0; 38 | }; 39 | } -------------------------------------------------------------------------------- /Tools/Scripts/clang-format/clang-format-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function usage { 4 | echo "Usage: $0 DIR..." 5 | exit 1 6 | } 7 | 8 | # Variable that will hold the name of the clang-format command 9 | FMT="" 10 | 11 | # Some distros just call it clang-format. Others (e.g. Ubuntu) are insistent 12 | # that the version number be part of the command. We prefer clang-format if 13 | # that's present, otherwise we work backwards from highest version to lowest 14 | # version. 15 | for clangfmt in clang-format{,-{4,3}.{9,8,7,6,5,4,3,2,1,0}}; do 16 | if which "$clangfmt" &>/dev/null; then 17 | FMT="$clangfmt" 18 | break 19 | fi 20 | done 21 | 22 | # Check if we found a working clang-format 23 | if [ -z "$FMT" ]; then 24 | echo "failed to find clang-format" 25 | exit 1 26 | fi 27 | 28 | SRC_PATH="$@" 29 | if [ -z "$SRC_PATH" ]; then 30 | SRC_PATH="../../../src" 31 | fi 32 | 33 | # Check all of the arguments first to make sure they're all directories 34 | for dir in "$SRC_PATH"; do 35 | if [ ! -d "${dir}" ]; then 36 | echo "${dir} is not a directory" 37 | usage 38 | fi 39 | done 40 | 41 | # Run clang-format -i on all of the things 42 | for dir in "$SRC_PATH"; do 43 | pushd "${dir}" &>/dev/null 44 | find . \ 45 | \( -name '*.c' \ 46 | -o -name '*.cc' \ 47 | -o -name '*.cpp' \ 48 | -o -name '*.h' \ 49 | -o -name '*.hh' \ 50 | -o -name '*.hpp' \) \ 51 | -exec "${FMT}" -style=file -i '{}' \; 52 | popd &>/dev/null 53 | done 54 | -------------------------------------------------------------------------------- /src/Calculator/Converters/ItemSizeToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System; 5 | 6 | namespace CalculatorApp 7 | { 8 | namespace Converters 9 | { 10 | [Windows.Foundation.Metadata.WebHostHidden] 11 | public sealed class ItemSizeToVisibilityConverter : Windows.UI.Xaml.Data.IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | var boolValue = (value is int items && (items == 0)); 16 | return BooleanToVisibilityConverter.Convert(boolValue); 17 | } 18 | 19 | public object ConvertBack(object value, Type targetType, object parameter, string language) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | 25 | public sealed class ItemSizeToVisibilityNegationConverter : Windows.UI.Xaml.Data.IValueConverter 26 | { 27 | public object Convert(object value, Type targetType, object parameter, string language) 28 | { 29 | var boolValue = (value is int items && (items > 0)); 30 | return BooleanToVisibilityConverter.Convert(boolValue); 31 | } 32 | 33 | public object ConvertBack(object value, Type targetType, object parameter, string language) 34 | { 35 | throw new NotImplementedException(); 36 | } 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/CalcViewModel/HistoryItemViewModel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "HistoryItemViewModel.h" 6 | #include "Common/LocalizationService.h" 7 | 8 | using namespace CalculatorApp::ViewModel::Common; 9 | using namespace CalculatorApp::ViewModel; 10 | using namespace std; 11 | using namespace Platform; 12 | 13 | HistoryItemViewModel::HistoryItemViewModel( 14 | String ^ expression, 15 | String ^ result, 16 | _In_ const shared_ptr>>& spTokens, 17 | _In_ const shared_ptr>>& spCommands) 18 | : m_expression(expression) 19 | , m_result(result) 20 | , m_spTokens(spTokens) 21 | , m_spCommands(spCommands) 22 | { 23 | // updating accessibility names for expression and result 24 | m_accExpression = HistoryItemViewModel::GetAccessibleExpressionFromTokens(spTokens, m_expression); 25 | m_accResult = LocalizationService::GetNarratorReadableString(m_result); 26 | } 27 | 28 | String 29 | ^ HistoryItemViewModel::GetAccessibleExpressionFromTokens( 30 | _In_ shared_ptr>> const& spTokens, 31 | _In_ String ^ fallbackExpression) 32 | { 33 | // updating accessibility names for expression and result 34 | wstring accExpression{}; 35 | 36 | for (const auto& tokenItem : *spTokens) 37 | { 38 | accExpression += LocalizationService::GetNarratorReadableToken(StringReference(tokenItem.first.c_str()))->Data(); 39 | } 40 | 41 | return ref new String(accExpression.c_str()); 42 | } 43 | -------------------------------------------------------------------------------- /src/Calculator/Selectors/KeyGraphFeaturesTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using CalculatorApp.ViewModel; 5 | 6 | using Windows.UI.Xaml; 7 | 8 | namespace CalculatorApp 9 | { 10 | namespace TemplateSelectors 11 | { 12 | public sealed class KeyGraphFeaturesTemplateSelector : Windows.UI.Xaml.Controls.DataTemplateSelector 13 | { 14 | public KeyGraphFeaturesTemplateSelector() 15 | { 16 | } 17 | 18 | public Windows.UI.Xaml.DataTemplate RichEditTemplate { get; set; } 19 | public Windows.UI.Xaml.DataTemplate GridTemplate { get; set; } 20 | public Windows.UI.Xaml.DataTemplate TextBlockTemplate { get; set; } 21 | 22 | protected override DataTemplate SelectTemplateCore(object item) 23 | { 24 | var kgfItem = (KeyGraphFeaturesItem)item; 25 | 26 | if (!kgfItem.IsText) 27 | { 28 | if (kgfItem.DisplayItems.Count != 0) 29 | { 30 | return RichEditTemplate; 31 | } 32 | else if (kgfItem.GridItems.Count != 0) 33 | { 34 | return GridTemplate; 35 | } 36 | } 37 | 38 | return TextBlockTemplate; 39 | } 40 | 41 | protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) 42 | { 43 | return SelectTemplateCore(item); 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | *.cs diff=csharp 14 | 15 | ############################################################################### 16 | # behavior for image files 17 | # 18 | # image files are treated as binary by default. 19 | ############################################################################### 20 | *.jpg binary 21 | *.png binary 22 | *.gif binary 23 | 24 | ############################################################################### 25 | # diff behavior for common document formats 26 | # 27 | # Convert binary document formats to text before diffing them. This feature 28 | # is only available from the command line. Turn it on by uncommenting the 29 | # entries below. 30 | ############################################################################### 31 | *.doc diff=astextplain 32 | *.DOC diff=astextplain 33 | *.docx diff=astextplain 34 | *.DOCX diff=astextplain 35 | *.dot diff=astextplain 36 | *.DOT diff=astextplain 37 | *.pdf diff=astextplain 38 | *.PDF diff=astextplain 39 | *.rtf diff=astextplain 40 | *.RTF diff=astextplain 41 | -------------------------------------------------------------------------------- /src/CalcViewModel/DataLoaders/CurrencyHttpClient.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "CurrencyHttpClient.h" 6 | 7 | #ifdef USE_MOCK_DATA 8 | #include "DataLoaderMockConstants.h" 9 | #else 10 | #include "DataLoaderConstants.h" 11 | #endif 12 | 13 | using namespace CalculatorApp::DataLoaders; 14 | using namespace CalculatorApp::ViewModel::DataLoaders; 15 | using namespace Platform; 16 | using namespace std; 17 | using namespace Windows::Foundation; 18 | using namespace Windows::Web::Http; 19 | 20 | CurrencyHttpClient::CurrencyHttpClient() 21 | : m_client(ref new HttpClient()) 22 | , m_responseLanguage(L"en-US") 23 | { 24 | } 25 | 26 | void CurrencyHttpClient::SetSourceCurrencyCode(String ^ sourceCurrencyCode) 27 | { 28 | m_sourceCurrencyCode = sourceCurrencyCode; 29 | } 30 | 31 | void CurrencyHttpClient::SetResponseLanguage(String ^ responseLanguage) 32 | { 33 | m_responseLanguage = responseLanguage; 34 | } 35 | 36 | IAsyncOperationWithProgress ^ CurrencyHttpClient::GetCurrencyMetadata() 37 | { 38 | wstring uri = wstring{ sc_MetadataUriLocalizeFor } + m_responseLanguage->Data(); 39 | auto metadataUri = ref new Uri(StringReference(uri.c_str())); 40 | 41 | return m_client->GetStringAsync(metadataUri); 42 | } 43 | 44 | IAsyncOperationWithProgress ^ CurrencyHttpClient::GetCurrencyRatios() 45 | { 46 | wstring uri = wstring{ sc_RatiosUriRelativeTo } + m_sourceCurrencyCode->Data(); 47 | auto ratiosUri = ref new Uri(StringReference(uri.c_str())); 48 | 49 | return m_client->GetStringAsync(ratiosUri); 50 | } 51 | -------------------------------------------------------------------------------- /src/CalcManager/CalculatorHistory.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | #include "ExpressionCommandInterface.h" 6 | #include "Header Files/IHistoryDisplay.h" 7 | 8 | namespace CalculationManager 9 | { 10 | struct HISTORYITEMVECTOR 11 | { 12 | std::shared_ptr>> spTokens; 13 | std::shared_ptr>> spCommands; 14 | std::wstring expression; 15 | std::wstring result; 16 | }; 17 | 18 | struct HISTORYITEM 19 | { 20 | HISTORYITEMVECTOR historyItemVector; 21 | }; 22 | 23 | class CalculatorHistory : public IHistoryDisplay 24 | { 25 | public: 26 | CalculatorHistory(const size_t maxSize); 27 | unsigned int AddToHistory( 28 | _In_ std::shared_ptr>> const& spTokens, 29 | _In_ std::shared_ptr>> const& spCommands, 30 | std::wstring_view result); 31 | std::vector> const& GetHistory(); 32 | std::shared_ptr const& GetHistoryItem(unsigned int uIdx); 33 | void ClearHistory(); 34 | unsigned int AddItem(_In_ std::shared_ptr const& spHistoryItem); 35 | bool RemoveItem(unsigned int uIdx); 36 | size_t MaxHistorySize() const 37 | { 38 | return m_maxHistorySize; 39 | } 40 | 41 | private: 42 | std::vector> m_historyItems; 43 | const size_t m_maxHistorySize; 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/CalculatorDisplay.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "CalcManager/Header Files/ICalcDisplay.h" 7 | 8 | namespace CalculatorApp::ViewModel::Common 9 | { 10 | // Callback interface to be implemented by the CalculatorManager 11 | class CalculatorDisplay : public ICalcDisplay 12 | { 13 | public: 14 | CalculatorDisplay(); 15 | void SetCallback(Platform::WeakReference callbackReference); 16 | void SetHistoryCallback(Platform::WeakReference callbackReference); 17 | 18 | private: 19 | void SetPrimaryDisplay(_In_ const std::wstring& displayString, _In_ bool isError) override; 20 | void SetIsInError(bool isError) override; 21 | void SetExpressionDisplay( 22 | _Inout_ std::shared_ptr>> const& tokens, 23 | _Inout_ std::shared_ptr>> const& commands) override; 24 | void SetMemorizedNumbers(_In_ const std::vector& memorizedNumbers) override; 25 | void OnHistoryItemAdded(_In_ unsigned int addedItemIndex) override; 26 | void SetParenthesisNumber(_In_ unsigned int parenthesisCount) override; 27 | void OnNoRightParenAdded() override; 28 | void MaxDigitsReached() override; 29 | void BinaryOperatorReceived() override; 30 | void MemoryItemChanged(unsigned int indexOfMemory) override; 31 | void InputChanged() override; 32 | 33 | private: 34 | Platform::WeakReference m_callbackReference; 35 | Platform::WeakReference m_historyCallbackReference; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /docs/Roadmap.md: -------------------------------------------------------------------------------- 1 | # Windows Calculator Roadmap 2 | 3 | Windows Calculator is under active development by Microsoft. 4 | 5 | ## Focus 6 | 7 | In 2021, the Windows Calculator team is focused on: 8 | * Iterating upon the existing app design based on the latest guidelines for [Fluent Design](https://developer.microsoft.com/en-us/windows/apps/design) and [WinUI](https://github.com/microsoft/microsoft-ui-xaml). 9 | * Unblocking community contributions by identifying and addressing bottlenecks affecting developers, including: 10 | * Migrating the codebase to C# ([#893](https://github.com/microsoft/calculator/issues/893)) 11 | * Releasing infinite-precision engine as standalone package ([#1545](https://github.com/microsoft/calculator/issues/1545)) and adding support for arbitrary expression parsing ([#526](https://github.com/microsoft/calculator/issues/526)) 12 | * Adding a settings page ([#596](https://github.com/microsoft/calculator/issues/596)) 13 | * [Your feature idea here] - please review our [new feature development process](https://github.com/Microsoft/calculator/blob/main/docs/NewFeatureProcess.md) to get started! 14 | 15 | We welcome contributions of all kinds from the community, but especially those that support the efforts above. Please see our [contributing guidelines](https://github.com/Microsoft/calculator/blob/main/CONTRIBUTING.md) for more information on how to get involved. 16 | 17 | ## Releases 18 | 19 | Windows Calculator is included in every Windows 10 release as a [provisioned Windows app](https://docs.microsoft.com/en-us/windows/application-management/apps-in-windows-10#provisioned-windows-apps). We also deliver updates through the [Microsoft Store](https://www.microsoft.com/store/productId/9WZDNCRFHVN5) approximately monthly. 20 | -------------------------------------------------------------------------------- /src/CalcManager/CEngine/Number.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | 3 | #include 4 | #include "Header Files/Number.h" 5 | 6 | using namespace std; 7 | 8 | namespace CalcEngine 9 | { 10 | Number::Number() noexcept 11 | : Number(1, 0, { 0 }) 12 | { 13 | } 14 | 15 | Number::Number(int32_t sign, int32_t exp, vector const& mantissa) noexcept 16 | : m_sign{ sign } 17 | , m_exp{ exp } 18 | , m_mantissa{ mantissa } 19 | { 20 | } 21 | 22 | Number::Number(PNUMBER p) noexcept 23 | : m_sign{ p->sign } 24 | , m_exp{ p->exp } 25 | { 26 | m_mantissa.reserve(p->cdigit); 27 | copy_n(p->mant, p->cdigit, back_inserter(m_mantissa)); 28 | } 29 | 30 | PNUMBER Number::ToPNUMBER() const 31 | { 32 | PNUMBER ret = _createnum(static_cast(this->Mantissa().size()) + 1); 33 | ret->sign = this->Sign(); 34 | ret->exp = this->Exp(); 35 | ret->cdigit = static_cast(this->Mantissa().size()); 36 | 37 | MANTTYPE* ptrRet = ret->mant; 38 | for (auto const& digit : this->Mantissa()) 39 | { 40 | *ptrRet++ = digit; 41 | } 42 | 43 | return ret; 44 | } 45 | 46 | int32_t const& Number::Sign() const 47 | { 48 | return m_sign; 49 | } 50 | 51 | int32_t const& Number::Exp() const 52 | { 53 | return m_exp; 54 | } 55 | 56 | vector const& Number::Mantissa() const 57 | { 58 | return m_mantissa; 59 | } 60 | 61 | bool Number::IsZero() const 62 | { 63 | return all_of(m_mantissa.begin(), m_mantissa.end(), [](auto&& i) { return i == 0; }); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/ExpressionCommandSerializer.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "Common/ExpressionCommandSerializer.h" 6 | 7 | using namespace CalculatorApp::ViewModel::Common; 8 | using namespace Windows::Storage::Streams; 9 | 10 | SerializeCommandVisitor::SerializeCommandVisitor(_In_ DataWriter ^ dataWriter) 11 | : m_dataWriter(dataWriter) 12 | { 13 | } 14 | 15 | void SerializeCommandVisitor::Visit(_In_ COpndCommand& opndCmd) 16 | { 17 | m_dataWriter->WriteBoolean(opndCmd.IsNegative()); 18 | m_dataWriter->WriteBoolean(opndCmd.IsDecimalPresent()); 19 | m_dataWriter->WriteBoolean(opndCmd.IsSciFmt()); 20 | 21 | const auto& opndCmds = opndCmd.GetCommands(); 22 | unsigned int opndCmdSize = static_cast(opndCmds->size()); 23 | m_dataWriter->WriteUInt32(opndCmdSize); 24 | for (int eachOpndcmd : *opndCmds) 25 | { 26 | m_dataWriter->WriteInt32(eachOpndcmd); 27 | } 28 | } 29 | 30 | void SerializeCommandVisitor::Visit(_In_ CUnaryCommand& unaryCmd) 31 | { 32 | const auto& cmds = unaryCmd.GetCommands(); 33 | unsigned int cmdSize = static_cast(cmds->size()); 34 | m_dataWriter->WriteUInt32(cmdSize); 35 | for (int eachOpndcmd : *cmds) 36 | { 37 | m_dataWriter->WriteInt32(eachOpndcmd); 38 | } 39 | } 40 | 41 | void SerializeCommandVisitor::Visit(_In_ CBinaryCommand& binaryCmd) 42 | { 43 | int cmd = binaryCmd.GetCommand(); 44 | m_dataWriter->WriteInt32(cmd); 45 | } 46 | 47 | void SerializeCommandVisitor::Visit(_In_ CParentheses& paraCmd) 48 | { 49 | int parenthesisCmd = paraCmd.GetCommand(); 50 | m_dataWriter->WriteInt32(parenthesisCmd); 51 | } 52 | -------------------------------------------------------------------------------- /src/CalcViewModel/GraphingCalculator/GraphingCalculatorViewModel.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "GraphingCalculatorViewModel.h" 6 | 7 | using namespace CalculatorApp::ViewModel; 8 | using namespace Platform; 9 | using namespace Platform::Collections; 10 | using namespace Windows::Foundation; 11 | using namespace Windows::Foundation::Collections; 12 | using namespace Windows::UI::Xaml::Data; 13 | using namespace GraphControl; 14 | 15 | namespace CalculatorApp::ViewModel 16 | { 17 | GraphingCalculatorViewModel::GraphingCalculatorViewModel() 18 | : m_IsDecimalEnabled{ true } 19 | , m_Equations{ ref new Vector() } 20 | , m_Variables{ ref new Vector() } 21 | { 22 | } 23 | 24 | void GraphingCalculatorViewModel::OnButtonPressed(Object ^ parameter) 25 | { 26 | } 27 | 28 | void GraphingCalculatorViewModel::UpdateVariables(IMap ^ variables) 29 | { 30 | Variables->Clear(); 31 | for (auto variablePair : variables) 32 | { 33 | auto variable = ref new VariableViewModel(variablePair->Key, variablePair->Value); 34 | variable->VariableUpdated += ref new EventHandler([this, variable](Object ^ sender, VariableChangedEventArgs e) { 35 | VariableUpdated(variable, VariableChangedEventArgs{ e.variableName, e.newValue }); 36 | }); 37 | Variables->Append(variable); 38 | } 39 | } 40 | 41 | void GraphingCalculatorViewModel::SetSelectedEquation(EquationViewModel ^ equation) 42 | { 43 | SelectedEquation = equation; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Calculator/Converters/ExpressionItemTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using CalculatorApp.ViewModel.Common; 5 | 6 | using System; 7 | 8 | using Windows.UI.Xaml; 9 | 10 | namespace CalculatorApp 11 | { 12 | namespace Converters 13 | { 14 | [Windows.UI.Xaml.Data.Bindable] 15 | public sealed class ExpressionItemTemplateSelector : Windows.UI.Xaml.Controls.DataTemplateSelector 16 | { 17 | protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) 18 | { 19 | DisplayExpressionToken token = (item as DisplayExpressionToken); 20 | if (token != null) 21 | { 22 | CalculatorApp.ViewModel.Common.TokenType type = token.Type; 23 | 24 | switch (type) 25 | { 26 | case TokenType.Operator: 27 | return OperatorTemplate; 28 | case TokenType.Operand: 29 | return OperandTemplate; 30 | case TokenType.Separator: 31 | return SeparatorTemplate; 32 | default: 33 | throw new Exception("Invalid token type"); 34 | } 35 | } 36 | 37 | return SeparatorTemplate; 38 | } 39 | 40 | public Windows.UI.Xaml.DataTemplate OperatorTemplate { get; set; } 41 | 42 | public Windows.UI.Xaml.DataTemplate OperandTemplate { get; set; } 43 | 44 | public Windows.UI.Xaml.DataTemplate SeparatorTemplate { get; set; } 45 | } 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Package.appxmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CalculatorUnitTests 7 | Microsoft Corporation 8 | Assets\StoreLogo.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/CalcManager/ExpressionCommandInterface.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include // for std::shared_ptr 7 | #include 8 | #include "Command.h" 9 | #include "sal_cross_platform.h" 10 | 11 | class ISerializeCommandVisitor; 12 | 13 | class IExpressionCommand 14 | { 15 | public: 16 | virtual CalculationManager::CommandType GetCommandType() const = 0; 17 | virtual void Accept(_In_ ISerializeCommandVisitor& commandVisitor) = 0; 18 | }; 19 | 20 | class IOperatorCommand : public IExpressionCommand 21 | { 22 | public: 23 | virtual void SetCommand(int command) = 0; 24 | }; 25 | 26 | class IUnaryCommand : public IOperatorCommand 27 | { 28 | public: 29 | virtual const std::shared_ptr>& GetCommands() const = 0; 30 | virtual void SetCommands(int command1, int command2) = 0; 31 | }; 32 | 33 | class IBinaryCommand : public IOperatorCommand 34 | { 35 | public: 36 | virtual void SetCommand(int command) override = 0; 37 | virtual int GetCommand() const = 0; 38 | }; 39 | 40 | class IOpndCommand : public IExpressionCommand 41 | { 42 | public: 43 | virtual const std::shared_ptr>& GetCommands() const = 0; 44 | virtual void AppendCommand(int command) = 0; 45 | virtual void ToggleSign() = 0; 46 | virtual void RemoveFromEnd() = 0; 47 | virtual bool IsNegative() const = 0; 48 | virtual bool IsSciFmt() const = 0; 49 | virtual bool IsDecimalPresent() const = 0; 50 | virtual const std::wstring& GetToken(wchar_t decimalSymbol) = 0; 51 | virtual void SetCommands(std::shared_ptr> const& commands) = 0; 52 | }; 53 | 54 | class IParenthesisCommand : public IExpressionCommand 55 | { 56 | public: 57 | virtual int GetCommand() const = 0; 58 | }; 59 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/DisplayExpressionToken.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Utils.h" 7 | 8 | namespace CalculatorApp::ViewModel::Common 9 | { 10 | public 11 | enum class TokenType 12 | { 13 | Operator, 14 | Operand, 15 | Separator 16 | }; 17 | 18 | [Windows::UI::Xaml::Data::Bindable] public ref class DisplayExpressionToken sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged 19 | { 20 | internal : DisplayExpressionToken(Platform::String ^ token, int tokenPosition, bool fEditable, TokenType type) 21 | : m_Token(token) 22 | , m_TokenPosition(tokenPosition) 23 | , m_IsTokenEditable(fEditable) 24 | , m_Type(type) 25 | , m_OriginalToken(token) 26 | , m_InEditMode(false) 27 | { 28 | } 29 | 30 | public: 31 | OBSERVABLE_OBJECT(); 32 | OBSERVABLE_PROPERTY_RW(Platform::String ^, Token); 33 | OBSERVABLE_PROPERTY_RW(int, TokenPosition); 34 | OBSERVABLE_PROPERTY_RW(bool, IsTokenEditable); 35 | OBSERVABLE_PROPERTY_RW(int, CommandIndex); 36 | OBSERVABLE_PROPERTY_RW(TokenType, Type); 37 | OBSERVABLE_PROPERTY_R(Platform::String ^, OriginalToken); 38 | 39 | property bool IsTokenInEditMode 40 | { 41 | bool get() 42 | { 43 | return m_InEditMode; 44 | } 45 | void set(bool val) 46 | { 47 | if (!val) 48 | { 49 | m_OriginalToken = ref new Platform::String(m_Token->Data()); 50 | } 51 | m_InEditMode = val; 52 | } 53 | } 54 | 55 | private: 56 | bool m_InEditMode; 57 | }; 58 | } 59 | -------------------------------------------------------------------------------- /src/GraphingInterfaces/IGraphRenderer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "Common.h" 7 | 8 | struct ID2D1Factory; 9 | struct ID2D1RenderTarget; 10 | 11 | namespace Graphing 12 | { 13 | struct IBitmap; 14 | } 15 | 16 | namespace Graphing::Renderer 17 | { 18 | struct IGraphRenderer : public NonCopyable, public NonMoveable 19 | { 20 | virtual ~IGraphRenderer() = default; 21 | 22 | virtual HRESULT SetGraphSize(unsigned int width, unsigned int height) = 0; 23 | virtual HRESULT SetDpi(float dpiX, float dpiY) = 0; 24 | 25 | virtual HRESULT DrawD2D1(ID2D1Factory* pDirect2dFactory, ID2D1RenderTarget* pRenderTarget, bool& hasSomeMissingDataOut) = 0; 26 | virtual HRESULT GetClosePointData( 27 | double inScreenPointX, 28 | double inScreenPointY, 29 | double precision, 30 | int& formulaIdOut, 31 | float& xScreenPointOut, 32 | float& yScreenPointOut, 33 | double& xValueOut, 34 | double& yValueOut, 35 | double& rhoValueOut, 36 | double& thetaValueOut, 37 | double& tValueOut) = 0; 38 | 39 | virtual HRESULT ScaleRange(double centerX, double centerY, double scale) = 0; 40 | virtual HRESULT ChangeRange(ChangeRangeAction action) = 0; 41 | virtual HRESULT MoveRangeByRatio(double ratioX, double ratioY) = 0; 42 | virtual HRESULT ResetRange() = 0; 43 | virtual HRESULT GetDisplayRanges(double& xMin, double& xMax, double& yMin, double& yMax) = 0; 44 | virtual HRESULT SetDisplayRanges(double xMin, double xMax, double yMin, double yMax) = 0; 45 | virtual HRESULT PrepareGraph() = 0; 46 | 47 | virtual HRESULT GetBitmap(std::shared_ptr& bitmapOut, bool& hasSomeMissingDataOut) = 0; 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/pch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | // 5 | // pch.h 6 | // Header for standard system include files. 7 | // 8 | 9 | #pragma once 10 | 11 | #ifndef WIN32_LEAN_AND_MEAN 12 | #define WIN32_LEAN_AND_MEAN 13 | #endif 14 | 15 | // Windows headers define min/max macros. 16 | // Disable it for project code. 17 | #define NOMINMAX 18 | 19 | #define UNIT_TESTS 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | 44 | // C++\WinRT Headers 45 | #include "winrt/base.h" 46 | #include "winrt/Windows.Foundation.Diagnostics.h" 47 | #include "winrt/Windows.Globalization.h" 48 | #include "winrt/Windows.Globalization.DateTimeFormatting.h" 49 | #include "winrt/Windows.System.UserProfile.h" 50 | 51 | // CalcManager Headers 52 | #include "CalcManager/ExpressionCommand.h" 53 | #include "CalcManager/CalculatorResource.h" 54 | #include "CalcManager/CalculatorManager.h" 55 | #include "CalcManager/UnitConverter.h" 56 | 57 | // CalcViewModel Headers 58 | #include "CalcViewModel/Common/DelegateCommand.h" 59 | #include "CalcViewModel/Common/Utils.h" 60 | #include "CalcViewModel/Common/MyVirtualKey.h" 61 | #include "CalcViewModel/Common/NavCategory.h" 62 | #include "CalcViewModel/Common/CalculatorButtonUser.h" 63 | #include "CalcViewModel/Common/NetworkManager.h" 64 | 65 | #include "Mocks/CurrencyHttpClient.h" 66 | #include "Helpers.h" 67 | 68 | #include "UnitTestApp.xaml.h" 69 | -------------------------------------------------------------------------------- /src/CalculatorUITestFramework/UnitConverterResults.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | using Microsoft.VisualStudio.TestTools.UnitTesting; 4 | 5 | using OpenQA.Selenium.Appium.Windows; 6 | 7 | using System.Text.RegularExpressions; 8 | 9 | namespace CalculatorUITestFramework 10 | { 11 | public class UnitConverterResults 12 | { 13 | private WindowsDriver session => WinAppDriver.Instance.CalculatorSession; 14 | private WindowsElement CalculationResult1 => this.session.TryFindElementByAccessibilityId("Value1"); 15 | 16 | private WindowsElement CalculationResult2 => this.session.TryFindElementByAccessibilityId("Value2"); 17 | 18 | /// 19 | /// Gets the text from the Value1 control and removes the narrator text that is not displayed in the UI. 20 | /// 21 | /// The string shown in the UI. 22 | public string GetCalculationResult1Text() 23 | { 24 | return Regex.Replace(this.CalculationResult1.Text.Trim(), "[^0-9.]", ""); 25 | } 26 | 27 | /// 28 | /// Verifies that CalculationResult1 and CalculationResult2 are not null 29 | /// 30 | /// The string shown in the UI. 31 | public void IsResultsDisplayPresent() 32 | { 33 | Assert.IsNotNull(this.CalculationResult1); 34 | Assert.IsNotNull(this.CalculationResult2); 35 | } 36 | 37 | /// 38 | /// Gets the text from the Value2 control and removes the narrator text that is not displayed in the UI. 39 | /// 40 | /// The string shown in the UI. 41 | public string GetCalculationResult2Text() 42 | { 43 | return Regex.Replace(this.CalculationResult2.Text.Trim(), "[^0-9.]", ""); 44 | } 45 | 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/EngineResourceProvider.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "EngineResourceProvider.h" 6 | #include "Common/LocalizationSettings.h" 7 | 8 | using namespace CalculatorApp::ViewModel::Common; 9 | using namespace Platform; 10 | using namespace Windows::ApplicationModel::Resources; 11 | using namespace std; 12 | 13 | namespace CalculatorApp 14 | { 15 | EngineResourceProvider::EngineResourceProvider() 16 | { 17 | m_resLoader = ResourceLoader::GetForViewIndependentUse("CEngineStrings"); 18 | } 19 | 20 | wstring EngineResourceProvider::GetCEngineString(wstring_view id) 21 | { 22 | LocalizationSettings^ localizationSettings = LocalizationSettings::GetInstance(); 23 | 24 | if (id.compare(L"sDecimal") == 0) 25 | { 26 | return localizationSettings->GetDecimalSeparatorStr(); 27 | } 28 | 29 | if (id.compare(L"sThousand") == 0) 30 | { 31 | return localizationSettings->GetNumberGroupingSeparatorStr(); 32 | } 33 | 34 | if (id.compare(L"sGrouping") == 0) 35 | { 36 | // The following groupings are the onces that CalcEngine supports. 37 | // 0;0 0x000 - no grouping 38 | // 3;0 0x003 - group every 3 digits 39 | // 3;2;0 0x023 - group 1st 3 and then every 2 digits 40 | // 4;0 0x004 - group every 4 digits 41 | // 5;3;2;0 0x235 - group 5, then 3, then every 2 42 | wstring numberGroupingString = localizationSettings->GetNumberGroupingStr(); 43 | return numberGroupingString; 44 | } 45 | 46 | StringReference idRef(id.data(), id.length()); 47 | String ^ str = m_resLoader->GetString(idRef); 48 | return str->Begin(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/CalcViewModel/Common/Automation/NarratorNotifier.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | // Declaration of the NarratorNotifier class. 5 | 6 | #pragma once 7 | #include "NarratorAnnouncement.h" 8 | 9 | namespace CalculatorApp::ViewModel::Common::Automation 10 | { 11 | public 12 | ref class NarratorNotifier sealed : public Windows::UI::Xaml::DependencyObject 13 | { 14 | public: 15 | NarratorNotifier(); 16 | 17 | void Announce(NarratorAnnouncement ^ announcement); 18 | 19 | property NarratorAnnouncement^ Announcement 20 | { 21 | NarratorAnnouncement^ get() { return GetAnnouncement(this); } 22 | void set(NarratorAnnouncement^ value) 23 | { 24 | SetAnnouncement(this, value); 25 | } 26 | } 27 | 28 | static void RegisterDependencyProperties(); 29 | 30 | static property Windows::UI::Xaml::DependencyProperty 31 | ^ AnnouncementProperty { Windows::UI::Xaml::DependencyProperty ^ get() { return s_announcementProperty; } } 32 | 33 | static NarratorAnnouncement 34 | ^ GetAnnouncement( 35 | Windows::UI::Xaml::DependencyObject ^ element) { return safe_cast(element->GetValue(s_announcementProperty)); } 36 | 37 | static void SetAnnouncement(Windows::UI::Xaml::DependencyObject ^ element, NarratorAnnouncement ^ value) 38 | { 39 | element->SetValue(s_announcementProperty, value); 40 | } 41 | 42 | private: 43 | static void OnAnnouncementChanged( 44 | _In_ Windows::UI::Xaml::DependencyObject ^ dependencyObject, 45 | _In_ Windows::UI::Xaml::DependencyPropertyChangedEventArgs ^ eventArgs); 46 | 47 | static Windows::UI::Xaml::DependencyProperty ^ s_announcementProperty; 48 | 49 | private: 50 | Windows::UI::Xaml::UIElement ^ m_announcementElement; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Report a problem with Calculator 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 14 | 15 | **Describe the bug** 16 | 17 | 18 | **Steps To Reproduce** 19 | 26 | 27 | **Expected behavior** 28 | 29 | 30 | **Screenshots** 31 | 32 | 33 | **Device and Application Information** 34 | - OS Build: 35 | - Architecture: 36 | - Application Version: 37 | - Region: 38 | - Dev Version Installed: 39 | 40 | 48 | 49 | **Additional context** 50 | 51 | 52 | **Requested Assignment** 53 | 59 | If possible, I would like to fix this. 60 | I'm just reporting this problem. I don't want to fix it. 61 | -------------------------------------------------------------------------------- /src/Calculator/Views/GraphingCalculator/KeyGraphFeaturesPanel.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | using System.ComponentModel; 5 | 6 | using Windows.UI.Xaml; 7 | 8 | namespace CalculatorApp 9 | { 10 | public sealed partial class KeyGraphFeaturesPanel : System.ComponentModel.INotifyPropertyChanged 11 | { 12 | public KeyGraphFeaturesPanel() 13 | { 14 | InitializeComponent(); 15 | this.Loaded += KeyGraphFeaturesPanel_Loaded; 16 | } 17 | 18 | public event PropertyChangedEventHandler PropertyChanged; 19 | internal void RaisePropertyChanged(string p) 20 | { 21 | #if !UNIT_TESTS 22 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(p)); 23 | #endif 24 | } 25 | 26 | public CalculatorApp.ViewModel.EquationViewModel ViewModel 27 | { 28 | get => m_viewModel; 29 | set 30 | { 31 | if (m_viewModel != value) 32 | { 33 | m_viewModel = value; 34 | RaisePropertyChanged(nameof(ViewModel)); 35 | } 36 | } 37 | } 38 | 39 | public event Windows.UI.Xaml.RoutedEventHandler KeyGraphFeaturesClosed; 40 | 41 | public static Windows.UI.Xaml.Media.SolidColorBrush 42 | ToSolidColorBrush(Windows.UI.Color color) 43 | { 44 | return new Windows.UI.Xaml.Media.SolidColorBrush(color); 45 | } 46 | 47 | private void KeyGraphFeaturesPanel_Loaded(object sender, RoutedEventArgs e) 48 | { 49 | BackButton.Focus(FocusState.Programmatic); 50 | } 51 | 52 | private void BackButton_Click(object sender, RoutedEventArgs e) 53 | { 54 | KeyGraphFeaturesClosed?.Invoke(this, new RoutedEventArgs()); 55 | } 56 | 57 | private CalculatorApp.ViewModel.EquationViewModel m_viewModel; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/Calculator/DesignData/DesignAppViewModel.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #include "DesignStandardCalculatorViewModel.h" 7 | #include "DesignUnitConverterViewModel.h" 8 | 9 | namespace Numbers 10 | { 11 | namespace DesignData 12 | { 13 | #ifdef _DEBUG 14 | // These class are to be consumed exclusively by Blend and the VS designer 15 | // with these classes Blend will be able to populate the controls 16 | // with the hardcoded strings so whoever is working on the UI can actually see how the app would look like 17 | // with semi-realistic data. 18 | // This data is to only be compiled in the debug build and it will not affect app functionality at all 19 | // so it does not need to be tested. It will have to be kept in sync with UnitConverterViewModel though 20 | // to ensure that the design experience is correct. 21 | // This class's code is run in the designer process so the less code it has the better. 22 | 23 | public 24 | ref class AppViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged 25 | { 26 | public: 27 | AppViewModel() 28 | : m_IsStandardMode(true) 29 | , m_IsScientificMode(false) 30 | , m_IsConverterMode(false) 31 | , m_CalculatorViewModel(ref new StandardCalculatorViewModel()) 32 | , m_ConverterViewModel(ref new UnitConverterViewModel()) 33 | { 34 | } 35 | 36 | OBSERVABLE_OBJECT(); 37 | 38 | OBSERVABLE_PROPERTY_RW(StandardCalculatorViewModel ^, CalculatorViewModel); 39 | OBSERVABLE_PROPERTY_RW(UnitConverterViewModel ^, ConverterViewModel); 40 | OBSERVABLE_PROPERTY_RW(bool, IsStandardMode); 41 | OBSERVABLE_PROPERTY_RW(bool, IsScientificMode); 42 | OBSERVABLE_PROPERTY_RW(bool, IsConverterMode); 43 | }; 44 | #endif 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/CalculatorUnitTests/Mocks/CurrencyHttpClient.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "pch.h" 5 | #include "CurrencyHttpClient.h" 6 | 7 | #include "CalcViewModel/Common/NetworkManager.h" 8 | 9 | using namespace CalculatorApp::ViewModel::DataLoaders; 10 | using namespace Platform; 11 | using namespace Windows::Foundation; 12 | using namespace Windows::System::UserProfile; 13 | using namespace Windows::Web::Http; 14 | 15 | // Generic responses so unit tests will pass. 16 | static constexpr auto STATIC_DATA_RESPONSE = 17 | LR"([{"CountryCode":"USA","CountryName":"United States","CurrencyCode":"USD","CurrencyName":"Dollar","CurrencySymbol":"$"},{"CountryCode":"EUR","CountryName":"Europe","CurrencyCode":"EUR","CurrencyName":"Euro","CurrencySymbol":"€"}])"; 18 | static constexpr auto ALL_RATIOS_RESPONSE = 19 | LR"([{"An":"USD","Ch":0,"Pc":0,"Rt":1},{"An":"EUR","Ch":0.003803,"Pc":0.4149,"Rt":0.920503,"Yh":0.9667,"Yl":0.86701}])"; 20 | 21 | CurrencyHttpClient::CurrencyHttpClient() 22 | { 23 | } 24 | 25 | String ^ CurrencyHttpClient::GetRawStaticDataResponse() 26 | { 27 | return StringReference(STATIC_DATA_RESPONSE); 28 | } 29 | 30 | String ^ CurrencyHttpClient::GetRawAllRatiosDataResponse() 31 | { 32 | return StringReference(ALL_RATIOS_RESPONSE); 33 | } 34 | 35 | IAsyncOperationWithProgress ^ CurrencyHttpClient::GetCurrencyMetadata() 36 | { 37 | return ref new MockAsyncOperationWithProgress(StringReference(STATIC_DATA_RESPONSE)); 38 | } 39 | 40 | IAsyncOperationWithProgress ^ CurrencyHttpClient::GetCurrencyRatios() 41 | { 42 | return ref new MockAsyncOperationWithProgress(StringReference(ALL_RATIOS_RESPONSE)); 43 | } 44 | 45 | MockAsyncOperationWithProgress::MockAsyncOperationWithProgress(String ^ result) 46 | : m_result(result) 47 | { 48 | } 49 | 50 | HResult MockAsyncOperationWithProgress::ErrorCode::get() 51 | { 52 | HResult okayResult; 53 | okayResult.Value = S_OK; 54 | return okayResult; 55 | } 56 | -------------------------------------------------------------------------------- /src/CalcManager/CEngine/CalcUtils.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. All rights reserved. 2 | // Licensed under the MIT License. 3 | 4 | #include "Header Files/CalcEngine.h" 5 | #include "Header Files/CalcUtils.h" 6 | 7 | bool IsOpInRange(OpCode op, uint32_t x, uint32_t y) 8 | { 9 | return ((op >= x) && (op <= y)); 10 | } 11 | 12 | bool IsBinOpCode(OpCode opCode) 13 | { 14 | return IsOpInRange(opCode, IDC_AND, IDC_PWR) || IsOpInRange(opCode, IDC_BINARYEXTENDEDFIRST, IDC_BINARYEXTENDEDLAST); 15 | } 16 | 17 | // WARNING: IDC_SIGN is a special unary op but still this doesn't catch this. Caller has to be aware 18 | // of it and catch it themselves or not needing this 19 | bool IsUnaryOpCode(OpCode opCode) 20 | { 21 | return (IsOpInRange(opCode, IDC_UNARYFIRST, IDC_UNARYLAST) || IsOpInRange(opCode, IDC_UNARYEXTENDEDFIRST, IDC_UNARYEXTENDEDLAST)); 22 | } 23 | 24 | bool IsDigitOpCode(OpCode opCode) 25 | { 26 | return IsOpInRange(opCode, IDC_0, IDC_F); 27 | } 28 | 29 | // Some commands are not affecting the state machine state of the calc flow. But these are more of 30 | // some gui mode kind of settings (eg Inv button, or Deg,Rad , Back etc.). This list is getting bigger & bigger 31 | // so we abstract this as a separate routine. Note: There is another side to this. Some commands are not 32 | // gui mode setting to begin with, but once it is discovered it is invalid and we want to behave as though it 33 | // was never inout, we need to revert the state changes made as a result of this test 34 | bool IsGuiSettingOpCode(OpCode opCode) 35 | { 36 | if (IsOpInRange(opCode, IDM_HEX, IDM_BIN) || IsOpInRange(opCode, IDM_QWORD, IDM_BYTE) || IsOpInRange(opCode, IDM_DEG, IDM_GRAD)) 37 | { 38 | return true; 39 | } 40 | 41 | switch (opCode) 42 | { 43 | case IDC_INV: 44 | case IDC_FE: 45 | case IDC_MCLEAR: 46 | case IDC_BACK: 47 | case IDC_EXP: 48 | case IDC_STORE: 49 | case IDC_MPLUS: 50 | case IDC_MMINUS: 51 | return true; 52 | } 53 | 54 | // most of the commands 55 | return false; 56 | } 57 | -------------------------------------------------------------------------------- /src/Settings.XamlStyler: -------------------------------------------------------------------------------- 1 | { 2 | "AttributesTolerance": 2, 3 | "KeepFirstAttributeOnSameLine": true, 4 | "MaxAttributeCharatersPerLine": 0, 5 | "MaxAttributesPerLine": 1, 6 | "NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransfom, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter", 7 | "SeparateByGroups": false, 8 | "EnableAttributeReordering": true, 9 | "AttributeOrderingRuleGroups": [ 10 | "x:Class*", 11 | "xmlns, xmlns:x", 12 | "xmlns:*", 13 | "x:Key, Key, x:Name, Name, x:Uid, Uid, Title", 14 | "Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom", 15 | "Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight", 16 | "Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex", 17 | "Style, Background, Foreground, Fill, BorderBrush, BorderThickness, Stroke, StrokeThickness, Opacity", 18 | "FontFamily, FontSize, LineHeight, FontWeight, FontStyle, FontStretch", 19 | "*:*, *", 20 | "PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint", 21 | "mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText", 22 | "IsEnabled, x:Load, Load", 23 | "Value, Maximum, Minimum" 24 | ], 25 | "OrderAttributesByName": true, 26 | "PutEndingBracketOnNewLine": false, 27 | "RemoveEndingTagOfEmptyElement": true, 28 | "SpaceBeforeClosingSlash": false, 29 | "RootElementLineBreakRule": 0, 30 | "ReorderVSM": 1, 31 | "ReorderGridChildren": false, 32 | "ReorderCanvasChildren": false, 33 | "ReorderSetters": 0, 34 | "FormatMarkupExtension": true, 35 | "NoNewLineMarkupExtensions": "x:Bind, Binding", 36 | "ThicknessSeparator": 2, 37 | "ThicknessAttributes": "Margin, Padding, BorderThickness, ThumbnailClipMargin", 38 | "FormatOnSave": true, 39 | "CommentPadding": 1, 40 | "IndentSize": 4 41 | } --------------------------------------------------------------------------------