Player
Player copied to clipboard
New Feature - Support loading Data URI files
This PR uses base64.hpp from https://github.com/tobiaslocker/base64/ under its MIT license.
Data URI is the most common format for encoding/decoding files as strings. This implementation uses Base64 encoder and can load files through commads such as:
@pic[11].show {
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAANmVYSWZNTQAqAAAAGAAAAEgAAAABAAAASAAAAAEAAgEaAAUAAAABAAAACAEbAAUAAAABAAAAEAAAAACQeO+8AAAACW9GRnMAAAAAAAAAAADaKrbOAAAACXBIWXMAAAsSAAALEgHS3X78AAAAD3RFWHRGaWxlADx1bnRpdGxlZD6Vs9eWAAAAGHRFWHREYXRlADIwMjUvMDkvMTcgMDE6Mjk6MzI3H5DqAAAAEHRFWHRUaW1lADAwOjAwOjAwOjAx7MMmwgAAAAh0RVh0RnJhbWUAMDFIZcm/AAAADXRFWHRDYW1lcmEAQ2FtZXJhaP/v6QAAAAt0RVh0U2NlbmUAU2NlbmXlIV2WAAAAE3RFWHRSZW5kZXJUaW1lADAwOjAwLjEwuSxvAAAAC45JREFUeAG9W1uTFVcV7jMMaOQWUKLAADGJFgkmL15eFB/EsmJp4XN+g/8Byzf/iaVPGq2UFsayQt40lpIYsEwqIsMlZXEbNBeQOe5v7/Pt/nqdtbt3nzOwycy6fetba6/e3aeHIU3zENdkMullH4ojWTGq9xHX4kocC+X3JdXEgOnDlZpd1P9IanlFPF/fJsbi+7gWjY3pYQz2kV5xbJ7NUepAan2asyW6Foau9iIFls0fqtnHvxX9u/W1KHVKTaCPUmMlfQwWHGPxpbpj/KWa2Z8V06D6UZA2JZuwNv0qFaO6YqgPxYlbRI7lLn4Og2g6neYe1FYdAGvnpB7F5pz80lOxGL4hdu7Nd4u99dAuFLK9KMmqGn26Dkt15Fjb47FNaM7J55+evvS9b+U0xMJ0pq9t4ZBsfWvn4kbpvUo1JCVMyW/qNyeff2r60vdPNdPNcHakG+T/9NevNq+/9d5Eh2nzYdfWYu4Y/AqTVIIAa6ixEmZMA3Eq8b5CQTBi4fzge/c2T7H576U+uQ/N8HrzcMxxB4QgkvoSSUCp2FLDHhaTiPPBRUHN+Gc2q9mFYt5Y6fUx5NN9oJ47IJJQ9jVGwhoseRQ7maCFMCScmHRw0sAiOB8ppj4UyT2AXHuD7Q4ICRYIsC6SejjGFF/U5ZMSmHRzF9ExMIZ/DNar6g6oZtMehgX6YsRkGSeCGwtXL54laPFPxswUbraWH3hgmWf5aJPPw7kDYqJKkqhvWR0NvXb+3cnPXvl9pMItls7QpPn5K3+IMa0xtgcOZ2ye1qwekDfduJ20K+UcvGLkYuOw06M60eQ5dVjHGbZGTTYHylzkVA+IybYQN6l+z1eKb99zZHrx/tPps0ueyfAhpnlj9KEeSlzI09zqAZUIddoljOdH3o69R6f7156Ln14/fvlfGcbThNj2PUdHD2mRnko56TTjiM8+TQCknjt+CMp2DOfws5E5lAw1y0VuXbnY3LtzKfZaRqXIVvcfT5AORPWhZhaJYwM79h6b6kY4HK3NU8QaOG3U+6RyoEbtKmGLt5gmqM6Cno+xPokN4GvfoeNzD3PlxAc/N7tv7XjvCSvVYz7jyk8fpcXSHweERJusCaoz0fMxZqVy4/TsX0u3FnDkIUYv+srK7PqFs4Mc3JaW29rkgV912KwF3S6LZbz+DDJjCYkHLjaKRtEQbqP4s1ecCk5WSw4X7CQRSK3euhqeR7cvRSNyaFKbXtRqc4jLA6KjyLxgALxYq+Ejmw9l2PBvbm52rnK3hzQUDjOMC1lxYDcuv93c37jc6R2c3gnpcgI1buVnkEfuUXHDXszzgXd199oUu9Ea0FdWure2xnliUC/VjAyzUzXpvCN187pd9MW6SN/KA/LD6UprbNGC+8JHuh3ujfULnaFpHejA377+jmDSsPB+9KjW4IC0Ed2g6oqxOk6Pt6GbYTjbVnd04LO7MfhwO81OXHDeunIh27hA+EovkWsJSGxE1X/z9mB9gwNCM0zS06N6X0ufPnKiEMYjOi0OJpSih0qUrMU+GNy/VuKeP/nMGZKsRdzggAC0SUy2DdNPuX1PusIWd2s9PWT5lG0Hw8wk+SmHBzJysDjMhGia7eGEUk/xxKo92/rEK4Y+K4sDKpEqQU0B4FvctMFG74UNg98ORmtiEOGJg+xYEjk3Qy65KO3Esj9kkU99kazyG/KLAwIpC1BW8gqMZ4QuvPuklfjpn/eVhsdeKPs2X4oxlxLVVWdXyI8D8oIApU20r/xM9CQ4LI++MSOHtxbzMSybYweTsSGAW+1meAdiDmT5GcfMecnBUQKhumbEAZWCfYlskmTgUJ70dzntLRK58vlJWR/feCf+zqvl4vkia9N8FDCtlW441sGLJtaOJf7eSLk9veo3q9gAmqIEEZv0SKMvH4W0Pzw/7m+sdzYL3O1r/2i++fiNDjc5z218hmqUqB9P0XqT/x4JgfmxdtIGDd2XBRefQQrkMCg1VtTjKLR11dusQ/cvRaPlbmd48F6KYQNYwFCPjtlDnLndWEIMffeGozxzA2KQsqaAh0nvKO1mvdPz5K5t0y88sTtsnAzAZ6N55sCu5smd28L+Wx90nKLZzGIin0OKI+OQZI4S0ofcuQExSMkCSkAfJHA29uJXn53+6PTRDLu5/rc5DIL4GE8/sBLaDoKeksQPrFj4xeOZ00ea737tufpkh5T7tXupegaBjwQOdzF2ZjakH/7kt+1REoJnDuwUq6tit+EJHk7Rzuaf/93oBoOFU3Tm9IsBlubS1x+SsfEhDHAWM3eCAFp2oeW4wTCWX736eqSzV+bYrtW0MymmGJ3osXCbCSyriRvI9v0qB41iN27Crol+egekDbsMjvM7Xzk+PX3q67gU6Z+0BAx42CA51fZ8oAYm/e5ex+UUDZfjB6e+0aC2F6WPdWCrzjglY6jfOyBugomQTFaf6mlTYUPhv1+G0/ObP17o/PsexI98atv0+GfTwxk264Db2jiLX3xiZ8zROtDB/fLvzkU3fm7rW+TuwzDGfmBXP4O8ZPpUnn3j77jcnd9aaBw6hxDmEXQMPSHg71wAAmY5CZUuEjeBsfzibBrSrDZhkSvjUEgW/eLq4OmftUZzvBxzZcj+7c/vjX/DSJvy4vv/iSpOF04OlvKffe/O0v1GUueb1tFwvsU6V04RA7p3JbwU8h9+bCUPJ/nSz3DgwUgSX3u1yQ/P4cf8h7VXr+RjHzbOOuoHNg/IAyh4WR38KMiTLiOIQ7kQTs/6Bw8m6x9uTt6+fneuHI6O9ljaqCZ6GOVQrKcDmwdEMkpN8Hwah04MJeOw6fvcJybTE4f2RNtuODAwJQ8xO2bKiYO7m4OfXImz7dsoayqGPVjOITsPiGSUmuj5NN6nIxdfaHATx2dma85b1+42Vz58kCd09aPNCXzeAsXQYk3F1e7BDjIPSMmGdEsCPBugtBj4Xwinx1vXwkCsX32cCThfOJxOoMXDtjU9jOfTPPSptjsgBZBQfRwCY560mAM7JtxnB/5mOCnKrcHzVzfy6YMfnPgqcWnuGN32Cps95QHRwUZsASVRrMXRrsH89erd5no4PcrNfMj3P55OzgdMmAr+y02X8CW/cqru9UgfufKA6CAARNQhqcNPLHQujcNnMdggF7EWw7jKnBZuwsgRelEuxZJXfZ5OnFdffcDlAZFIAdQhqRNn5VBcPqQiF5skj7Xph8RA0kMqHH3YGhSdPYBL+VQHnDhJjaqHmxsQkBZoiayt+JKuVx36ny/faf59L78zukNDHWD+Ep5FXPGTkIZIrYsB6BBUR4pihaKTQ38ekCYpIf2UTISkT/ElnWcg5ZVPgfJT53BRL56kIO1i3Yhx4ooHlr2r39PzgFjAgkhGqfFSjmKoh2tKddZceZMZmJWEZQ99dRGzcW8YFpNLGSUPyPg7JshQhLITdAx7FWF/ea19BwLPjfvz7z4OVXTd/F+6FdmDcgEAf9+qGUaJo2pAKM4ilF5DLAKM4vZuk+MTEv90uX2meDz0Kd8b6913osdX2/cqrcVcK8ll/bRLHO6AhshIamWpyBzOOips/P92y6yh3kp7dgc0RDa2Ue6NTdye3TLgoc/jZB/ApJx0mwNLTi/P+vpqWKy1OzcviNiUBdbYffm8zdrN1jB2Mbit0B+Gs/FA36y6uEdmLTL5mhyLsfbYDSJ/KzjG1h2NX7ZJW9Djo4+yJsdi1C7xKCZPX8Gqd8AzA/EhjM0r4dW/CC/rWB76VSpG/arPYeYcinb0sXiHYs5FTkoASvpccoVDuSrgw5CxhGPxwx0MI7ay5lZyDXc+gEAzQw3ZuLVRwvMNlO6EbT5tyg54WaOWtBZn+0HeormWq2STn7KEi36CKHvBSwS3mp98kNQXaW+Z3Op6Y4qMwaKBWnwtrnpTHhBFHkkhr/hD9nFflG45DqAX5GZ2nWPyS9iSv1tpnEVOyjHZ/weH/jAUnBqJawAAAABJRU5ErkJggg=="
.pos 160, 120 .center
}