It is a web port of Microsoft Calculator App engine, emulating the same UI on frontend.
This project exists to test the scope of porting Desktop utilities, written in native code, to Web so as to run everywhere #WebIsTheFuture.
Try it here https://muzam1l.github.io/mcalculator/ (new link)(faster)
https://mcalculator.herokuapp.com/ (old link)(slower)(still mantained)
UI is very responsive and fluent and loads super fast even on slower connections and low-end mobile devices. Once loaded for first time, sebsequent loads are even faster thanks to caching of of files like wasm assets.
App now can be installed like native app and is available offline, thanks to @NWylynko. On mobile devices use "Add to homescreen" and on desktop use plus icon in adress bar to install (new link).
As of now only Standard mode is available in this build
Features working as of now
- infinite precision (#as it is engine feature).
- Whole Standard Mode (#i know this isn't much, so using 'whole' to exaggerate) to meet basic calculator requirements.
- History panel, with NO copy paste as of now (#on both web and phones
- Memory list panel, WITH individual memory item change (MC, M+, M- on each list item, hover or tap list to show these buttons)
There ain't even any tests, so make it or break it, i just need your contri (and again, if i am only one reading, contri on me only
You'll need Emscripten to build.
- Download and install emscripten.
Then you may have emscripten installed on some path say /path/to/emscripten (for example my path to emcc looks like this
Then cd to engine/ (or copy engine/ to different location to play around) and enter following in terminal
</path/to/emscripten>/emcmake cmake .
</path/to/emscripten>/emcc -02 libEngine.a CalcManager/libCalcManager.a CalcModel/libCalcModel.a -o engine.js
First two lines genrates cmake files and lib.a files respectively in their respective folders. All this behavior is controlled in respective CmakeFiles.txt
Third one generates engine.js and engine.wasm in project root (-o flag), These files can be copied directly and pasted in public/js of server (which is not automated yet
if you are not using this on daily basis, dont report anything, contribute instaed
And ... nothing i am just ........