binding/c: more compatible with C compiler.

Change-Id: I9fea4817cc913913f65c4b228cb0a42aae2cb2f8
This commit is contained in:
Hermet Park 2018-08-21 19:20:53 +09:00 committed by Subhransu Mohanty
parent 388736bfbe
commit 830ef02827
5 changed files with 89 additions and 66 deletions

View File

@ -56,7 +56,7 @@ void LottieView::createVgNode(LOTNode *node, Efl_VG *parent)
//evas_vg_shape_stroke_meter_limit_set(shape, node->mStroke.meterLimit); //evas_vg_shape_stroke_meter_limit_set(shape, node->mStroke.meterLimit);
} }
// update paint info // update paint info
if (node->mType == LOTNode::BrushSolid) { if (node->mType == LOTBrushType::BrushSolid) {
int r = (node->mColor.r * node->mColor.a)/255; int r = (node->mColor.r * node->mColor.a)/255;
int g = (node->mColor.g * node->mColor.a)/255; int g = (node->mColor.g * node->mColor.a)/255;
int b = (node->mColor.b * node->mColor.a)/255; int b = (node->mColor.b * node->mColor.a)/255;
@ -67,7 +67,7 @@ void LottieView::createVgNode(LOTNode *node, Efl_VG *parent)
evas_vg_node_color_set(shape, r, g, b, a); evas_vg_node_color_set(shape, r, g, b, a);
} }
} else if (node->mType == LOTNode::BrushGradient) { } else if (node->mType == LOTBrushType::BrushGradient) {
//TODO fill the gradient info //TODO fill the gradient info
} }
} }

View File

@ -29,6 +29,7 @@
*/ */
typedef enum typedef enum
{ {
//TODO: Coding convention??
LOT_PLAYER_ERROR_NONE = 0, LOT_PLAYER_ERROR_NONE = 0,
LOT_PLAYER_ERROR_NOT_PERMITTED, LOT_PLAYER_ERROR_NOT_PERMITTED,
LOT_PLAYER_ERROR_OUT_OF_MEMORY, LOT_PLAYER_ERROR_OUT_OF_MEMORY,
@ -36,8 +37,39 @@ typedef enum
LOT_PLAYER_ERROR_RESULT_OUT_OF_RANGE, LOT_PLAYER_ERROR_RESULT_OUT_OF_RANGE,
LOT_PLAYER_ERROR_ALREADY_IN_PROGRESS, LOT_PLAYER_ERROR_ALREADY_IN_PROGRESS,
LOT_PLAYER_ERROR_UNKNOWN LOT_PLAYER_ERROR_UNKNOWN
} lotplayer_error_e; } LOTErrorType;
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 LOTNode { typedef struct LOTNode {
@ -46,50 +78,40 @@ typedef struct LOTNode {
#define ChangeFlagPaint 0x0010 #define ChangeFlagPaint 0x0010
#define ChangeFlagAll (ChangeFlagPath & ChangeFlagPaint) #define ChangeFlagAll (ChangeFlagPath & ChangeFlagPaint)
enum BrushType { BrushSolid, BrushGradient }; struct {
enum FillRule { EvenOdd, Winding };
enum JoinStyle { MiterJoin, BevelJoin, RoundJoin };
enum CapStyle { FlatCap, SquareCap, RoundCap };
struct PathData {
const float *ptPtr; const float *ptPtr;
int ptCount; int ptCount;
const char* elmPtr; const char* elmPtr;
int elmCount; int elmCount;
}; } mPath;
struct Color { struct {
unsigned char r, g, b, a; unsigned char r, g, b, a;
}; } mColor;
struct Stroke { struct {
bool enable; bool enable;
int width; int width;
CapStyle cap; LOTCapStyle cap;
JoinStyle join; LOTJoinStyle join;
int meterLimit; int meterLimit;
float* dashArray; float* dashArray;
int dashArraySize; int dashArraySize;
}; } mStroke;
struct Gradient { struct {
enum Type { Linear = 1, Radial = 2 }; LOTGradientType type;
Gradient::Type type;
struct { struct {
float x, y; float x, y;
} start, end, center, focal; } start, end, center, focal;
float cradius; float cradius;
float fradius; float fradius;
}; } mGradient;
int mFlag; int mFlag;
BrushType mType; LOTBrushType mType;
FillRule mFillRule; LOTFillRule mFillRule;
PathData mPath; } LOTNode;
Color mColor;
Stroke mStroke;
Gradient mGradient;
} lotnode;
typedef struct LOTBuffer { typedef struct LOTBuffer {
uint32_t *buffer; uint32_t *buffer;
@ -97,6 +119,6 @@ typedef struct LOTBuffer {
int height; int height;
int bytesPerLine; int bytesPerLine;
bool clear; bool clear;
} lotbuf; } LOTBuffer;
#endif // _LOT_COMMON_H_ #endif // _LOT_COMMON_H_

View File

@ -1,23 +1,26 @@
#ifndef _LOTPLAYER_CAPI_H_ #ifndef _LOTPLAYER_CAPI_H_
#define _LOTPLAYER_CAPI_H_ #define _LOTPLAYER_CAPI_H_
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <lotcommon.h> #include <lotcommon.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
typedef struct lotplayer_s lotplayer; typedef struct lotplayer_s LOTPlayer;
LOT_EXPORT lotplayer *lotplayer_create(void); LOT_EXPORT LOTPlayer *lotplayer_create(void);
LOT_EXPORT int lotplayer_destroy(lotplayer *player); LOT_EXPORT int lotplayer_destroy(LOTPlayer *player);
LOT_EXPORT int lotplayer_set_file(lotplayer *player, const char *file); LOT_EXPORT int lotplayer_set_file(LOTPlayer *player, const char *file);
LOT_EXPORT int lotplayer_set_size(lotplayer *player, int w, int h); LOT_EXPORT int lotplayer_set_size(LOTPlayer *player, int w, int h);
LOT_EXPORT int lotplayer_get_size(const lotplayer *player, int* w, int* h); LOT_EXPORT int lotplayer_get_size(const LOTPlayer *player, int* w, int* h);
LOT_EXPORT float lotplayer_get_playtime(const lotplayer *player); LOT_EXPORT float lotplayer_get_playtime(const LOTPlayer *player);
LOT_EXPORT float lotplayer_get_pos(const lotplayer *player); LOT_EXPORT float lotplayer_get_pos(const LOTPlayer *player);
LOT_EXPORT size_t lotplayer_get_node_count(const lotplayer *player, float pos); LOT_EXPORT size_t lotplayer_get_node_count(const LOTPlayer *player, float pos);
LOT_EXPORT const lotnode* lotplayer_get_node(lotplayer *player, float pos, size_t idx); LOT_EXPORT const LOTNode* lotplayer_get_node(LOTPlayer *player, float pos, size_t idx);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,22 +1,20 @@
#include <lotplayer.h> #include <lotplayer.h>
#include "vdebug.h" #include "vdebug.h"
extern "C" {
using namespace lottieplayer; using namespace lottieplayer;
using lotplayer = LOTPlayer; extern "C" {
LOT_EXPORT lotplayer *lotplayer_create(void) LOT_EXPORT LOTPlayer *lotplayer_create(void)
{ {
lotplayer* p = new LOTPlayer(); LOTPlayer* p = new LOTPlayer();
if (!p) { if (!p) {
vCritical << "Failed to initialize lotplayer"; vCritical << "Failed to initialize lotplayer";
} }
return p; return p;
} }
LOT_EXPORT int lotplayer_destroy(lotplayer *player) LOT_EXPORT int lotplayer_destroy(LOTPlayer *player)
{ {
if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER; if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER;
delete(player); delete(player);
@ -24,7 +22,7 @@ LOT_EXPORT int lotplayer_destroy(lotplayer *player)
return LOT_PLAYER_ERROR_NONE; return LOT_PLAYER_ERROR_NONE;
} }
LOT_EXPORT int lotplayer_set_file(lotplayer *player, const char *file) LOT_EXPORT int lotplayer_set_file(LOTPlayer *player, const char *file)
{ {
if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER; if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER;
bool ret = player->setFilePath(file); bool ret = player->setFilePath(file);
@ -34,7 +32,7 @@ LOT_EXPORT int lotplayer_set_file(lotplayer *player, const char *file)
return LOT_PLAYER_ERROR_NONE; return LOT_PLAYER_ERROR_NONE;
} }
LOT_EXPORT int lotplayer_set_size(lotplayer *player, int w, int h) LOT_EXPORT int lotplayer_set_size(LOTPlayer *player, int w, int h)
{ {
if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER; if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER;
@ -43,7 +41,7 @@ LOT_EXPORT int lotplayer_set_size(lotplayer *player, int w, int h)
return LOT_PLAYER_ERROR_NONE; return LOT_PLAYER_ERROR_NONE;
} }
LOT_EXPORT int lotplayer_get_size(const lotplayer *player, int* w, int* h) LOT_EXPORT int lotplayer_get_size(const LOTPlayer *player, int* w, int* h)
{ {
if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER; if (!player) return LOT_PLAYER_ERROR_INVALID_PARAMETER;
@ -52,7 +50,7 @@ LOT_EXPORT int lotplayer_get_size(const lotplayer *player, int* w, int* h)
return LOT_PLAYER_ERROR_NONE; return LOT_PLAYER_ERROR_NONE;
} }
LOT_EXPORT float lotplayer_get_pos(const lotplayer *player) LOT_EXPORT float lotplayer_get_pos(const LOTPlayer *player)
{ {
if (!player) { if (!player) {
vWarning << "Invalid parameter player = nullptr"; vWarning << "Invalid parameter player = nullptr";
@ -62,14 +60,14 @@ LOT_EXPORT float lotplayer_get_pos(const lotplayer *player)
return player->pos(); return player->pos();
} }
LOT_EXPORT size_t lotplayer_get_node_count(const lotplayer *player, float pos) LOT_EXPORT size_t lotplayer_get_node_count(const LOTPlayer *player, float pos)
{ {
if (!player) return LOT_PLAYER_ERROR_NONE; if (!player) return LOT_PLAYER_ERROR_NONE;
return player->renderList(pos).size(); return player->renderList(pos).size();
} }
LOT_EXPORT float lotplayer_get_playtime(const lotplayer *player) LOT_EXPORT float lotplayer_get_playtime(const LOTPlayer *player)
{ {
if (!player) { if (!player) {
vWarning << "Invalid parameter player = nullptr"; vWarning << "Invalid parameter player = nullptr";
@ -79,7 +77,7 @@ LOT_EXPORT float lotplayer_get_playtime(const lotplayer *player)
return player->playTime(); return player->playTime();
} }
LOT_EXPORT const lotnode* lotplayer_get_node(lotplayer *player, float pos, size_t idx) LOT_EXPORT const LOTNode* lotplayer_get_node(LOTPlayer *player, float pos, size_t idx)
{ {
if (!player) { if (!player) {
vWarning << "Invalid parameter player = nullptr"; vWarning << "Invalid parameter player = nullptr";

View File

@ -979,40 +979,40 @@ void LOTDrawable::sync()
switch (mFillRule) { switch (mFillRule) {
case FillRule::EvenOdd: case FillRule::EvenOdd:
mCNode.mFillRule = LOTNode::EvenOdd; mCNode.mFillRule = LOTFillRule::FillEvenOdd;
break; break;
default: default:
mCNode.mFillRule = LOTNode::Winding; mCNode.mFillRule = LOTFillRule::FillWinding;
break; break;
} }
switch (mStroke.cap) { switch (mStroke.cap) {
case CapStyle::Flat: case CapStyle::Flat:
mCNode.mStroke.cap = LOTNode::FlatCap; mCNode.mStroke.cap = LOTCapStyle::CapFlat;
break; break;
case CapStyle::Square: case CapStyle::Square:
mCNode.mStroke.cap = LOTNode::SquareCap; mCNode.mStroke.cap = LOTCapStyle::CapSquare;
break; break;
case CapStyle::Round: case CapStyle::Round:
mCNode.mStroke.cap = LOTNode::RoundCap; mCNode.mStroke.cap = LOTCapStyle::CapRound;
break; break;
default: default:
mCNode.mStroke.cap = LOTNode::FlatCap; mCNode.mStroke.cap = LOTCapStyle::CapFlat;
break; break;
} }
switch (mStroke.join) { switch (mStroke.join) {
case JoinStyle::Miter: case JoinStyle::Miter:
mCNode.mStroke.join = LOTNode::MiterJoin; mCNode.mStroke.join = LOTJoinStyle::JoinMiter;
break; break;
case JoinStyle::Bevel: case JoinStyle::Bevel:
mCNode.mStroke.join = LOTNode::BevelJoin; mCNode.mStroke.join = LOTJoinStyle::JoinBevel;
break; break;
case JoinStyle::Round: case JoinStyle::Round:
mCNode.mStroke.join = LOTNode::RoundJoin; mCNode.mStroke.join = LOTJoinStyle::JoinRound;
break; break;
default: default:
mCNode.mStroke.join = LOTNode::MiterJoin; mCNode.mStroke.join = LOTJoinStyle::JoinMiter;
break; break;
} }
@ -1025,23 +1025,23 @@ void LOTDrawable::sync()
switch (mBrush.type()) { switch (mBrush.type()) {
case VBrush::Type::Solid: case VBrush::Type::Solid:
mCNode.mType = LOTNode::BrushSolid; mCNode.mType = LOTBrushType::BrushSolid;
mCNode.mColor.r = mBrush.mColor.r; mCNode.mColor.r = mBrush.mColor.r;
mCNode.mColor.g = mBrush.mColor.g; mCNode.mColor.g = mBrush.mColor.g;
mCNode.mColor.b = mBrush.mColor.b; mCNode.mColor.b = mBrush.mColor.b;
mCNode.mColor.a = mBrush.mColor.a; mCNode.mColor.a = mBrush.mColor.a;
break; break;
case VBrush::Type::LinearGradient: case VBrush::Type::LinearGradient:
mCNode.mType = LOTNode::BrushGradient; mCNode.mType = LOTBrushType::BrushGradient;
mCNode.mGradient.type = LOTNode::Gradient::Linear; mCNode.mGradient.type = LOTGradientType::GradientLinear;
mCNode.mGradient.start.x = mBrush.mGradient->linear.x1; mCNode.mGradient.start.x = mBrush.mGradient->linear.x1;
mCNode.mGradient.start.y = mBrush.mGradient->linear.y1; mCNode.mGradient.start.y = mBrush.mGradient->linear.y1;
mCNode.mGradient.end.x = mBrush.mGradient->linear.x2; mCNode.mGradient.end.x = mBrush.mGradient->linear.x2;
mCNode.mGradient.end.y = mBrush.mGradient->linear.y2; mCNode.mGradient.end.y = mBrush.mGradient->linear.y2;
break; break;
case VBrush::Type::RadialGradient: case VBrush::Type::RadialGradient:
mCNode.mType = LOTNode::BrushGradient; mCNode.mType = LOTBrushType::BrushGradient;
mCNode.mGradient.type = LOTNode::Gradient::Radial; mCNode.mGradient.type = LOTGradientType::GradientRadial;
mCNode.mGradient.center.x = mBrush.mGradient->radial.cx; mCNode.mGradient.center.x = mBrush.mGradient->radial.cx;
mCNode.mGradient.center.y = mBrush.mGradient->radial.cy; mCNode.mGradient.center.y = mBrush.mGradient->radial.cy;
mCNode.mGradient.focal.x = mBrush.mGradient->radial.fx; mCNode.mGradient.focal.x = mBrush.mGradient->radial.fx;