Signed-off-by: falkTX <falktx@falktx.com>tags/22.02
| @@ -64,6 +64,11 @@ Currently the following features are known NOT to work: | |||||
| If you want to try this out early, checkout the [GitHub actions tab](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml). | If you want to try this out early, checkout the [GitHub actions tab](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml). | ||||
| There is absolutely no warranty, use at your own risk and all that... | There is absolutely no warranty, use at your own risk and all that... | ||||
| ### Community chat | |||||
| Currently we are all on #cardinal IRC room in irc.libera.chat server. | |||||
| Come join us in your favorite IRC client or through a Matrix bridge. | |||||
| ## License | ## License | ||||
| Cardinal is licensed under GPLv3+, see [LICENSE](LICENSE) for more details. | Cardinal is licensed under GPLv3+, see [LICENSE](LICENSE) for more details. | ||||
| @@ -77,7 +77,7 @@ Below is a list of artwork licenses from plugins | |||||
| | AriaModules/lcd/piano/* | WTFPL | | | | AriaModules/lcd/piano/* | WTFPL | | | ||||
| | AriaModules/signature/* | Custom | Removal required if modifying other files without author's permission | | | AriaModules/signature/* | Custom | Removal required if modifying other files without author's permission | | ||||
| | AS/* | Custom | Derivative works may not use the AS logo or panel graphics including custom component graphics (knobs, switches, screws, caps,etc.) | | | AS/* | Custom | Derivative works may not use the AS logo or panel graphics including custom component graphics (knobs, switches, screws, caps,etc.) | | ||||
| | Atelier/* | Custom | Copyright © Emilie Gillet, used and distributed with permission | | |||||
| | Atelier/* | Custom | copyright © Pyer 2020, used and distributed with permission | | |||||
| | AudibleInstruments/* | Custom | Copyright © Emilie Gillet, used and distributed with permission | | | AudibleInstruments/* | Custom | Copyright © Emilie Gillet, used and distributed with permission | | ||||
| | BaconPlugs/* | GPL-3.0-or-later | No artwork specific license provided | | | BaconPlugs/* | GPL-3.0-or-later | No artwork specific license provided | | ||||
| | BaconPlugs/midi/* | CC-BY-SA-3.0-DE | | | | BaconPlugs/midi/* | CC-BY-SA-3.0-DE | | | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit b7bc0599c72681f834610c65fde773b65cb3169d | |||||
| Subproject commit f2d2a164d811c1d9700b26908db099f2f4cfe82b | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 888fd661eedff610798db016934949ed7e4c558b | |||||
| Subproject commit 00808b52bbcd446364414b1b01f3853afc8ed97a | |||||
| @@ -60,9 +60,16 @@ static const math::Vec minWindowSize = math::Vec(640, 480); | |||||
| void Font::loadFile(const std::string& filename, NVGcontext* vg) { | void Font::loadFile(const std::string& filename, NVGcontext* vg) { | ||||
| this->vg = vg; | this->vg = vg; | ||||
| handle = nvgCreateFont(vg, filename.c_str(), filename.c_str()); | |||||
| if (handle < 0) | |||||
| std::string name = system::getStem(filename); | |||||
| size_t size; | |||||
| // Transfer ownership of font data to font object | |||||
| uint8_t* data = system::readFile(filename, &size); | |||||
| // Don't use nvgCreateFont because it doesn't properly handle UTF-8 filenames on Windows. | |||||
| handle = nvgCreateFontMem(vg, name.c_str(), data, size, 0); | |||||
| if (handle < 0) { | |||||
| std::free(data); | |||||
| throw Exception("Failed to load font %s", filename.c_str()); | throw Exception("Failed to load font %s", filename.c_str()); | ||||
| } | |||||
| INFO("Loaded font %s", filename.c_str()); | INFO("Loaded font %s", filename.c_str()); | ||||
| } | } | ||||
| @@ -79,7 +86,9 @@ std::shared_ptr<Font> Font::load(const std::string& filename) { | |||||
| void Image::loadFile(const std::string& filename, NVGcontext* vg) { | void Image::loadFile(const std::string& filename, NVGcontext* vg) { | ||||
| this->vg = vg; | this->vg = vg; | ||||
| handle = nvgCreateImage(vg, filename.c_str(), NVG_IMAGE_REPEATX | NVG_IMAGE_REPEATY); | |||||
| std::vector<uint8_t> data = system::readFile(filename); | |||||
| // Don't use nvgCreateImage because it doesn't properly handle UTF-8 filenames on Windows. | |||||
| handle = nvgCreateImageMem(vg, NVG_IMAGE_REPEATX | NVG_IMAGE_REPEATY, data.data(), data.size()); | |||||
| if (handle <= 0) | if (handle <= 0) | ||||
| throw Exception("Failed to load image %s", filename.c_str()); | throw Exception("Failed to load image %s", filename.c_str()); | ||||
| INFO("Loaded image %s", filename.c_str()); | INFO("Loaded image %s", filename.c_str()); | ||||