You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
5.1 KiB
231 lines
5.1 KiB
/* |
|
* 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_
|
|
|