summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Benau/go_rlottie/rlottiecommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/Benau/go_rlottie/rlottiecommon.h')
-rw-r--r--vendor/github.com/Benau/go_rlottie/rlottiecommon.h231
1 files changed, 231 insertions, 0 deletions
diff --git a/vendor/github.com/Benau/go_rlottie/rlottiecommon.h b/vendor/github.com/Benau/go_rlottie/rlottiecommon.h
new file mode 100644
index 00000000..784fbe28
--- /dev/null
+++ b/vendor/github.com/Benau/go_rlottie/rlottiecommon.h
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd. All rights reserved.
+
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _RLOTTIE_COMMON_H_
+#define _RLOTTIE_COMMON_H_
+
+#if defined _WIN32 || defined __CYGWIN__
+ #ifdef RLOTTIE_BUILD
+ #define RLOTTIE_API __declspec(dllexport)
+ #else
+ #define RLOTTIE_API __declspec(dllimport)
+ #endif
+#else
+ #ifdef RLOTTIE_BUILD
+ #define RLOTTIE_API __attribute__ ((visibility ("default")))
+ #else
+ #define RLOTTIE_API
+ #endif
+#endif
+
+
+/**
+ * @defgroup Lottie_Animation Lottie_Animation
+ *
+ * Lottie Animation is a modern style vector based animation design. Its animation
+ * resource(within json format) could be generated by Adobe After Effect using
+ * bodymovin plugin. You can find a good examples in Lottie Community which
+ * shares many free resources(see: www.lottiefiles.com).
+ *
+ * This Lottie_Animation is a common engine to manipulate, control Lottie
+ * Animation from the Lottie resource - json file. It provides a scene-graph
+ * node tree per frames by user demand as well as rasterized frame images.
+ *
+ */
+
+/**
+ * @ingroup Lottie_Animation
+ */
+
+typedef enum
+{
+ BrushSolid = 0,
+ BrushGradient
+} LOTBrushType;
+
+typedef enum
+{
+ FillEvenOdd = 0,
+ FillWinding
+} LOTFillRule;
+
+typedef enum
+{
+ JoinMiter = 0,
+ JoinBevel,
+ JoinRound
+} LOTJoinStyle;
+
+typedef enum
+{
+ CapFlat = 0,
+ CapSquare,
+ CapRound
+} LOTCapStyle;
+
+typedef enum
+{
+ GradientLinear = 0,
+ GradientRadial
+} LOTGradientType;
+
+typedef struct LOTGradientStop
+{
+ float pos;
+ unsigned char r, g, b, a;
+} LOTGradientStop;
+
+typedef enum
+{
+ MaskAdd = 0,
+ MaskSubstract,
+ MaskIntersect,
+ MaskDifference
+} LOTMaskType;
+
+typedef struct LOTMask {
+ struct {
+ const float *ptPtr;
+ size_t ptCount;
+ const char* elmPtr;
+ size_t elmCount;
+ } mPath;
+ LOTMaskType mMode;
+ unsigned char mAlpha;
+}LOTMask;
+
+typedef enum
+{
+ MatteNone = 0,
+ MatteAlpha,
+ MatteAlphaInv,
+ MatteLuma,
+ MatteLumaInv
+} LOTMatteType;
+
+typedef struct LOTMarker {
+ char *name;
+ size_t startframe;
+ size_t endframe;
+} LOTMarker;
+
+typedef struct LOTMarkerList {
+ LOTMarker *ptr;
+ size_t size;
+} LOTMarkerList;
+
+typedef struct LOTNode {
+
+#define ChangeFlagNone 0x0000
+#define ChangeFlagPath 0x0001
+#define ChangeFlagPaint 0x0010
+#define ChangeFlagAll (ChangeFlagPath & ChangeFlagPaint)
+
+ struct {
+ const float *ptPtr;
+ size_t ptCount;
+ const char *elmPtr;
+ size_t elmCount;
+ } mPath;
+
+ struct {
+ unsigned char r, g, b, a;
+ } mColor;
+
+ struct {
+ unsigned char enable;
+ float width;
+ LOTCapStyle cap;
+ LOTJoinStyle join;
+ float miterLimit;
+ float *dashArray;
+ int dashArraySize;
+ } mStroke;
+
+ struct {
+ LOTGradientType type;
+ LOTGradientStop *stopPtr;
+ size_t stopCount;
+ struct {
+ float x, y;
+ } start, end, center, focal;
+ float cradius;
+ float fradius;
+ } mGradient;
+
+ struct {
+ unsigned char *data;
+ size_t width;
+ size_t height;
+ unsigned char mAlpha;
+ struct {
+ float m11; float m12; float m13;
+ float m21; float m22; float m23;
+ float m31; float m32; float m33;
+ } mMatrix;
+ } mImageInfo;
+
+ int mFlag;
+ LOTBrushType mBrushType;
+ LOTFillRule mFillRule;
+
+ const char *keypath;
+} LOTNode;
+
+
+
+typedef struct LOTLayerNode {
+
+ struct {
+ LOTMask *ptr;
+ size_t size;
+ } mMaskList;
+
+ struct {
+ const float *ptPtr;
+ size_t ptCount;
+ const char *elmPtr;
+ size_t elmCount;
+ } mClipPath;
+
+ struct {
+ struct LOTLayerNode **ptr;
+ size_t size;
+ } mLayerList;
+
+ struct {
+ LOTNode **ptr;
+ size_t size;
+ } mNodeList;
+
+ LOTMatteType mMatte;
+ int mVisible;
+ unsigned char mAlpha;
+ const char *keypath;
+
+} LOTLayerNode;
+
+/**
+ * @}
+ */
+
+#endif // _RLOTTIE_COMMON_H_