target_compile_options(rlottie
PUBLIC
PRIVATE
- -std=c++14
+ -std=c++11
-fno-exceptions
-fno-unwind-tables
-fno-asynchronous-unwind-tables
closedir(d);
}
- std::sort(result.begin(), result.end(), [](auto & a, auto &b){return a < b;});
+ std::sort(result.begin(), result.end(), [](std::string & a, std::string &b){return a < b;});
return result;
}
switch (s) {
case Strategy::renderCpp: {
- mRenderDelegate = std::make_unique<RlottieRenderStrategy_CPP>(evas);
+ mRenderDelegate = std::unique_ptr<RlottieRenderStrategy_CPP>(new RlottieRenderStrategy_CPP(evas));
break;
}
case Strategy::renderCppAsync: {
- mRenderDelegate = std::make_unique<RlottieRenderStrategy_CPP_ASYNC>(evas);
+ mRenderDelegate = std::unique_ptr<RlottieRenderStrategy_CPP_ASYNC>(new RlottieRenderStrategy_CPP_ASYNC(evas));
break;
}
case Strategy::renderC: {
- mRenderDelegate = std::make_unique<RlottieRenderStrategy_C>(evas);
+ mRenderDelegate = std::unique_ptr<RlottieRenderStrategy_C>(new RlottieRenderStrategy_C(evas));
break;
}
case Strategy::renderCAsync: {
- mRenderDelegate = std::make_unique<RlottieRenderStrategy_C_ASYNC>(evas);
+ mRenderDelegate = std::unique_ptr<RlottieRenderStrategy_C_ASYNC>(new RlottieRenderStrategy_C_ASYNC(evas));
break;
}
case Strategy::eflVg: {
- mRenderDelegate = std::make_unique<EflVgRenderStrategy>(evas);
+ mRenderDelegate = std::unique_ptr<EflVgRenderStrategy>(new EflVgRenderStrategy(evas));
break;
}
default:
- mRenderDelegate = std::make_unique<RlottieRenderStrategy_CPP>(evas);
+ mRenderDelegate = std::unique_ptr<RlottieRenderStrategy_CPP>(new RlottieRenderStrategy_CPP(evas));
break;
}
}
private:
void show() {
- mView = std::make_unique<LottieView>(mApp->evas(), Strategy::renderCAsync);
+ mView = std::unique_ptr<LottieView>(new LottieView(mApp->evas(), Strategy::renderCAsync));
mView->setFilePath(mResourceList[mCurIndex].c_str());
mView->setPos(0, 0);
mView->setSize(mApp->width(), mApp->height());
project('rlottie',
'cpp',
- default_options : ['warning_level=3', 'werror=true', 'cpp_std=c++14', 'optimization=s'],
+ default_options : ['warning_level=3', 'werror=true', 'cpp_std=c++11', 'optimization=s'],
version : '0.0.1',
license : 'Apache')
for (const auto &layer : mLayers) {
int id = layer->parentId();
if (id >= 0) {
- auto search =
- std::find_if(mLayers.begin(), mLayers.end(),
- [id](const auto &val) { return val->id() == id; });
+ auto search = std::find_if(mLayers.begin(), mLayers.end(),
+ [id](const std::unique_ptr<LOTLayerItem>& val){ return val->id() == id;});
if (search != mLayers.end()) layer->setParentLayer((*search).get());
}
}
}
}
- if (comp->mVersion.empty()) {
+ if (comp->mVersion.empty() || !comp->mRootLayer) {
// don't have a valid bodymovin header
return;
}
// some resource has empty color string
// return a default color for those cases.
- if (!len) return color;
-
- RAPIDJSON_ASSERT(len == 7);
- RAPIDJSON_ASSERT(str[0] == '#');
+ if (len != 7 || str[0] != '#') return color;
char tmp[3] = {'\0', '\0', '\0'};
tmp[0] = str[1];
void LottieParserImpl::getValue(VPointF &pt)
{
- float val[4];
+ float val[4] = {0.f};
int i = 0;
if (PeekType() == kArrayType) EnterArray();
while (NextArrayValue()) {
- val[i++] = GetDouble();
+ const auto value = GetDouble();
+ if (i < 4) {
+ val[i++] = value;
+ }
}
pt.setX(val[0]);
pt.setY(val[1]);
void LottieParserImpl::getValue(LottieColor &color)
{
- float val[4];
+ float val[4] = {0.f};
int i = 0;
if (PeekType() == kArrayType) EnterArray();
while (NextArrayValue()) {
- val[i++] = GetDouble();
+ const auto value = GetDouble();
+ if (i < 4) {
+ val[i++] = value;
+ }
}
color.r = val[0];
color.g = val[1];
return cache_entry;
}
+private:
+ VGradientCache() = default;
+
VGradientColorTableHash mCache;
std::mutex mMutex;
};
#define VECTOR_FALLTHROUGH
#endif
+#if __cplusplus==201103L
+
+#include <memory>
+
+namespace std {
+
+template<class T> struct _Unique_if {
+ typedef unique_ptr<T> _Single_object;
+};
+
+template<class T> struct _Unique_if<T[]> {
+ typedef unique_ptr<T[]> _Unknown_bound;
+};
+
+template<class T, size_t N> struct _Unique_if<T[N]> {
+ typedef void _Known_bound;
+};
+
+template<class T, class... Args>
+ typename _Unique_if<T>::_Single_object
+ make_unique(Args&&... args) {
+ return unique_ptr<T>(new T(std::forward<Args>(args)...));
+ }
+
+template<class T>
+ typename _Unique_if<T>::_Unknown_bound
+ make_unique(size_t n) {
+ typedef typename remove_extent<T>::type U;
+ return unique_ptr<T>(new U[n]());
+ }
+
+template<class T, class... Args>
+ typename _Unique_if<T>::_Known_bound
+ make_unique(Args&&...) = delete;
+
+} //namespace std
+
+#endif //__cplusplus==201103L
+
#include <atomic>
class RefCount {
public: