From 39abfb5f91337fdce12e7f99100bc463ab361995 Mon Sep 17 00:00:00 2001 From: Syoyo Fujita Date: Wed, 11 Jul 2018 02:46:52 +0900 Subject: [PATCH] Consider Data URI buffers in binary. Fixes #79. --- models/box01.glb | Bin 0 -> 3816 bytes test_runner.py | 2 +- tests/tester.cc | 16 ++++++++++++++++ tiny_gltf.h | 18 ++++++++++++++---- 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 models/box01.glb diff --git a/models/box01.glb b/models/box01.glb new file mode 100644 index 0000000000000000000000000000000000000000..7477e897f06a5ae6d09311da18ca66a3f4bcead0 GIT binary patch literal 3816 zcmb_e>rxvx6jsvombU5rehH($HDv8Il(>_IV*`m(z}(6-!(>|7$jeUcUC*wJ!!VxV zN8c-boIXa+kyc)@m_Sn2BaXgv`_7S;m4e>x>P^Pjzjqk>`!-`wc3K-JTy#1zP2(ix zwfz&`9(KDj*$d@}*Sr#MA1m4Fc2lV|?8N;+9LY%S9uFk1&6g{FiFe{*gl2!C#QWko zX7S6C)NFW+gv8f^1%=`2b43M81>l2j~-H#c9(#)NH_6q7$W_1;RuKSzw2 zF756tan{JxY`6}uovp&hSgT0&DxdH`Mlum9PIwI$^jORWxNj@Z2XUf!i66-%4P#te zUYYZ-DQCyr9h~gmnv4Q<$ZJ2H?^lT=ppEsb_ZR$pU(SX4i`BE;Q7$*Q@+!gAd0f@2 zMpww$UD(AczLjUAaqY}ooAr;ctZlmN-N*Q065?_l2qkJ_FzAIHp>PH7#T_NpY^o9| z`aictDi^9H0H^~r0Roci&;WP>utnfkfZw1oLM1$fdH@>$9as)vlZ-1{umkmVSOwUF z`cqgPk<(xBD1bK9NAP$HB-9r%J;2cj|E%fxJ;Iv>tnJGMyMuFkBahd1gY*23UGq71 zC!gkj3BHUkk9YDre0hIGJLvlJdJQi6=eTGuVyEAi^poc+`WNdfVyE8XdKa;?zxn!^ zc-nLQG+!SFrazkrirC~g^-r9dIWGENhA+!kvsyW+%)@*{x%-{Z9L|i8n5kj9k1<>=Z6Wu z$*=8A&8PVTswd;$!Wv9Ge(11tsz=*(e)>9Q_38Jyp4n}GhF{mO`*ZA%s2*bn;?wcA zKmGl~{vErHckH@8vOjpBPtd+lG6_Y`oCC5SrfGO2S4BskrTgBThc^a2@W>dnlXa;? z508WGco-Z;cnRV)yqn-b(1?3+;>1mE8YO+R$-=Ay<>ZOYk!yY5qo?eb%f44BFV2tY znD5KiB`|ieXRfXqUVk4+Fig_6~cO-NN5(_9lCez0cml-v{h%c87h)K4KrUPuQpIGxj(byteLength); if (is_binary) { - // Still binary glTF accepts external dataURI. First try external resources. - + // Still binary glTF accepts external dataURI. if (!buffer->uri.empty()) { - // External .bin file. - LoadExternalFile(&buffer->data, err, buffer->uri, basedir, bytes, true, fs); + // First try embedded data URI. + if (IsDataURI(buffer->uri)) { + std::string mime_type; + if (!DecodeDataURI(&buffer->data, mime_type, buffer->uri, bytes, true)) { + if (err) { + (*err) += "Failed to decode 'uri' : " + buffer->uri + " in Buffer\n"; + } + return false; + } + } else { + // External .bin file. + LoadExternalFile(&buffer->data, err, buffer->uri, basedir, bytes, true, fs); + } } else { // load data from (embedded) binary data