1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
|
/*
* Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _RLOTTIE_COMMON_H_
#define _RLOTTIE_COMMON_H_
#if defined _WIN32 || defined __CYGWIN__
#ifdef LOT_BUILD
#define LOT_EXPORT __declspec(dllexport)
#else
#define LOT_EXPORT __declspec(dllimport)
#endif
#else
#ifdef LOT_BUILD
#define LOT_EXPORT __attribute__ ((visibility ("default")))
#else
#define LOT_EXPORT
#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_
|