mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-04 14:24:53 +08:00
[c][cpp] Port 687260a384df3461f72738d08be85993fb83ec70
This commit is contained in:
parent
687260a384
commit
e99899e819
@ -51,7 +51,6 @@ typedef struct spSlotData {
|
|||||||
spColor *darkColor;
|
spColor *darkColor;
|
||||||
spBlendMode blendMode;
|
spBlendMode blendMode;
|
||||||
int/*bool*/ visible;
|
int/*bool*/ visible;
|
||||||
char *path;
|
|
||||||
} spSlotData;
|
} spSlotData;
|
||||||
|
|
||||||
SP_API spSlotData *spSlotData_create(const int index, const char *name, spBoneData *boneData);
|
SP_API spSlotData *spSlotData_create(const int index, const char *name, spBoneData *boneData);
|
||||||
|
|||||||
@ -57,35 +57,6 @@ typedef struct {
|
|||||||
_spLinkedMesh *linkedMeshes;
|
_spLinkedMesh *linkedMeshes;
|
||||||
} _spSkeletonBinary;
|
} _spSkeletonBinary;
|
||||||
|
|
||||||
static int string_lastIndexOf(const char *str, char needle) {
|
|
||||||
if (!str) return -1;
|
|
||||||
int lastIndex = -1;
|
|
||||||
for (int i = 0; str[i] != '\0'; i++) {
|
|
||||||
if (str[i] == needle) {
|
|
||||||
lastIndex = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return lastIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *string_substring(const char *str, int start, int end) {
|
|
||||||
if (str == NULL || start > end || start < 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int len = end - start;
|
|
||||||
char *substr = MALLOC(char, len + 1);
|
|
||||||
if (substr == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy(substr, str + start, len);
|
|
||||||
substr[len] = '\0';
|
|
||||||
|
|
||||||
return substr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int string_starts_with(const char *str, const char *needle) {
|
static int string_starts_with(const char *str, const char *needle) {
|
||||||
int lenStr, lenNeedle, i;
|
int lenStr, lenNeedle, i;
|
||||||
if (!str) return 0;
|
if (!str) return 0;
|
||||||
@ -1437,14 +1408,6 @@ spSkeletonData *spSkeletonBinary_readSkeletonData(spSkeletonBinary *self, const
|
|||||||
skeletonData->slots = MALLOC(spSlotData *, skeletonData->slotsCount);
|
skeletonData->slots = MALLOC(spSlotData *, skeletonData->slotsCount);
|
||||||
for (i = 0; i < skeletonData->slotsCount; ++i) {
|
for (i = 0; i < skeletonData->slotsCount; ++i) {
|
||||||
char *slotName = readString(input);
|
char *slotName = readString(input);
|
||||||
char *pathName = NULL;
|
|
||||||
if (nonessential) {
|
|
||||||
int slash = string_lastIndexOf(slotName, '/');
|
|
||||||
if (slash != -1) {
|
|
||||||
pathName = string_substring(slotName, 0, slash);
|
|
||||||
slotName = string_substring(slotName, slash + 1, strlen(slotName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
spBoneData *boneData = skeletonData->bones[readVarint(input, 1)];
|
spBoneData *boneData = skeletonData->bones[readVarint(input, 1)];
|
||||||
spSlotData *slotData = spSlotData_create(i, slotName, boneData);
|
spSlotData *slotData = spSlotData_create(i, slotName, boneData);
|
||||||
FREE(slotName);
|
FREE(slotName);
|
||||||
@ -1464,7 +1427,6 @@ spSkeletonData *spSkeletonBinary_readSkeletonData(spSkeletonBinary *self, const
|
|||||||
slotData->blendMode = (spBlendMode) readVarint(input, 1);
|
slotData->blendMode = (spBlendMode) readVarint(input, 1);
|
||||||
if (nonessential) {
|
if (nonessential) {
|
||||||
slotData->visible = readBoolean(input);
|
slotData->visible = readBoolean(input);
|
||||||
slotData->path = pathName;
|
|
||||||
}
|
}
|
||||||
skeletonData->slots[i] = slotData;
|
skeletonData->slots[i] = slotData;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1041,34 +1041,6 @@ static int string_starts_with(const char *str, const char *needle) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int string_lastIndexOf(const char *str, char needle) {
|
|
||||||
if (!str) return -1;
|
|
||||||
int lastIndex = -1;
|
|
||||||
for (int i = 0; str[i] != '\0'; i++) {
|
|
||||||
if (str[i] == needle) {
|
|
||||||
lastIndex = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return lastIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *string_substring(const char *str, int start, int end) {
|
|
||||||
if (str == NULL || start > end || start < 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int len = end - start;
|
|
||||||
char *substr = MALLOC(char, len + 1);
|
|
||||||
if (substr == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy(substr, str + start, len);
|
|
||||||
substr[len] = '\0';
|
|
||||||
|
|
||||||
return substr;
|
|
||||||
}
|
|
||||||
|
|
||||||
spSkeletonData *spSkeletonJson_readSkeletonData(spSkeletonJson *self, const char *json) {
|
spSkeletonData *spSkeletonJson_readSkeletonData(spSkeletonJson *self, const char *json) {
|
||||||
int i, ii;
|
int i, ii;
|
||||||
spSkeletonData *skeletonData;
|
spSkeletonData *skeletonData;
|
||||||
@ -1192,13 +1164,7 @@ spSkeletonData *spSkeletonJson_readSkeletonData(spSkeletonJson *self, const char
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *pathName = NULL;
|
|
||||||
char *slotName = (char *) Json_getString(slotMap, "name", NULL);
|
char *slotName = (char *) Json_getString(slotMap, "name", NULL);
|
||||||
int slash = string_lastIndexOf(slotName, '/');
|
|
||||||
if (slash != -1) {
|
|
||||||
pathName = string_substring(slotName, 0, slash);
|
|
||||||
slotName = string_substring(slotName, slash + 1, strlen(slotName));
|
|
||||||
}
|
|
||||||
data = spSlotData_create(i, slotName, boneData);
|
data = spSlotData_create(i, slotName, boneData);
|
||||||
|
|
||||||
color = Json_getString(slotMap, "color", 0);
|
color = Json_getString(slotMap, "color", 0);
|
||||||
@ -1234,7 +1200,6 @@ spSkeletonData *spSkeletonJson_readSkeletonData(spSkeletonJson *self, const char
|
|||||||
}
|
}
|
||||||
|
|
||||||
data->visible = Json_getInt(slotMap, "visible", -1);
|
data->visible = Json_getInt(slotMap, "visible", -1);
|
||||||
data->path = pathName;
|
|
||||||
skeletonData->slots[i] = data;
|
skeletonData->slots[i] = data;
|
||||||
skeletonData->slotsCount++;
|
skeletonData->slotsCount++;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -109,10 +109,6 @@ namespace spine {
|
|||||||
|
|
||||||
void setVisible(bool inValue);
|
void setVisible(bool inValue);
|
||||||
|
|
||||||
String &getPath() { return _path; }
|
|
||||||
|
|
||||||
void setPath(const String &inValue) { _path = inValue; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const int _index;
|
const int _index;
|
||||||
String _name;
|
String _name;
|
||||||
@ -124,7 +120,6 @@ namespace spine {
|
|||||||
String _attachmentName;
|
String _attachmentName;
|
||||||
BlendMode _blendMode;
|
BlendMode _blendMode;
|
||||||
bool _visible;
|
bool _visible;
|
||||||
String _path;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -176,14 +176,6 @@ SkeletonData *SkeletonBinary::readSkeletonData(const unsigned char *binary, cons
|
|||||||
skeletonData->_slots.setSize(slotsCount, 0);
|
skeletonData->_slots.setSize(slotsCount, 0);
|
||||||
for (int i = 0; i < slotsCount; ++i) {
|
for (int i = 0; i < slotsCount; ++i) {
|
||||||
String slotName = String(readString(input), true);
|
String slotName = String(readString(input), true);
|
||||||
String pathName = "";
|
|
||||||
if (nonessential) {
|
|
||||||
int slash = slotName.lastIndexOf('/');
|
|
||||||
if (slash != -1) {
|
|
||||||
pathName = slotName.substring(0, slash);
|
|
||||||
slotName = slotName.substring(slash + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BoneData *boneData = skeletonData->_bones[readVarint(input, true)];
|
BoneData *boneData = skeletonData->_bones[readVarint(input, true)];
|
||||||
SlotData *slotData = new (__FILE__, __LINE__) SlotData(i, slotName, *boneData);
|
SlotData *slotData = new (__FILE__, __LINE__) SlotData(i, slotName, *boneData);
|
||||||
|
|
||||||
@ -200,7 +192,6 @@ SkeletonData *SkeletonBinary::readSkeletonData(const unsigned char *binary, cons
|
|||||||
slotData->_blendMode = static_cast<BlendMode>(readVarint(input, true));
|
slotData->_blendMode = static_cast<BlendMode>(readVarint(input, true));
|
||||||
if (nonessential) {
|
if (nonessential) {
|
||||||
slotData->_visible = readBoolean(input);
|
slotData->_visible = readBoolean(input);
|
||||||
slotData->_path = pathName;
|
|
||||||
}
|
}
|
||||||
skeletonData->_slots[i] = slotData;
|
skeletonData->_slots[i] = slotData;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -241,13 +241,7 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
String pathName = "";
|
|
||||||
String slotName = String(Json::getString(slotMap, "name", 0));
|
String slotName = String(Json::getString(slotMap, "name", 0));
|
||||||
int slash = slotName.lastIndexOf('/');
|
|
||||||
if (slash != -1) {
|
|
||||||
pathName = slotName.substring(0, slash);
|
|
||||||
slotName = slotName.substring(slash + 1);
|
|
||||||
}
|
|
||||||
data = new (__FILE__, __LINE__) SlotData(i, slotName, *boneData);
|
data = new (__FILE__, __LINE__) SlotData(i, slotName, *boneData);
|
||||||
|
|
||||||
color = Json::getString(slotMap, "color", 0);
|
color = Json::getString(slotMap, "color", 0);
|
||||||
@ -281,7 +275,6 @@ SkeletonData *SkeletonJson::readSkeletonData(const char *json) {
|
|||||||
data->_blendMode = BlendMode_Screen;
|
data->_blendMode = BlendMode_Screen;
|
||||||
}
|
}
|
||||||
data->_visible = Json::getBoolean(slotMap, "visible", true);
|
data->_visible = Json::getBoolean(slotMap, "visible", true);
|
||||||
data->_path = pathName;
|
|
||||||
skeletonData->_slots[i] = data;
|
skeletonData->_slots[i] = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user