-
Notifications
You must be signed in to change notification settings - Fork 212
New Feature - Support loading Data URI files #3478
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
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: ```cpp @pic[11].show { "data:image/png;base64,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" .pos 160, 120 .center } ```
3f7fdc1
to
98583e8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds support for loading Data URI files by implementing Base64 decoding functionality. It integrates a third-party base64 library from https://github.com/tobiaslocker/base64/ under MIT license to enable loading files encoded as data URIs in base64 format.
- Adds base64 encoding/decoding library with comprehensive lookup tables for both little and big endian systems
- Implements Data URI parsing logic to extract mime type and decode base64 payload
- Integrates Data URI support into existing file loading infrastructure
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 9 comments.
File | Description |
---|---|
src/base64.h | Adds complete base64 encoding/decoding library with endianness support |
src/filefinder.cpp | Implements Data URI parsing and integrates it into file finding/opening logic |
Makefile.am | Adds base64.h header to build system |
CMakeLists.txt | Adds base64.h header to CMake build system |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Update filefinder.cpp
98583e8
to
1eb0293
Compare
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: