Mark unknown layer/cel/chunk/color profile types as incompatibility errors

This commit is contained in:
David Capello 2023-05-09 22:06:13 -03:00
parent 387b46d72b
commit 32ed6622d4

View File

@ -160,6 +160,11 @@ bool AsepriteDecoder::decode()
m_allLayers.push_back(newLayer); m_allLayers.push_back(newLayer);
last_object_with_user_data = newLayer; last_object_with_user_data = newLayer;
} }
else {
// Add a null layer only to match the "layer index" in cel chunk
m_allLayers.push_back(nullptr);
last_object_with_user_data = nullptr;
}
break; break;
} }
@ -172,6 +177,9 @@ bool AsepriteDecoder::decode()
last_cel = cel; last_cel = cel;
last_object_with_user_data = cel->data(); last_object_with_user_data = cel->data();
} }
else {
last_object_with_user_data = nullptr;
}
break; break;
} }
@ -284,7 +292,7 @@ bool AsepriteDecoder::decode()
} }
default: default:
delegate()->error( delegate()->incompatibilityError(
fmt::format("Warning: Unsupported chunk type {0} (skipping)", chunk_type)); fmt::format("Warning: Unsupported chunk type {0} (skipping)", chunk_type));
break; break;
} }
@ -583,6 +591,11 @@ doc::Layer* AsepriteDecoder::readLayerChunk(AsepriteHeader* header,
layer = new doc::LayerTilemap(sprite, tsi); layer = new doc::LayerTilemap(sprite, tsi);
break; break;
} }
default:
delegate()->incompatibilityError(
fmt::format("Unknown layer type found: {0}", layer_type));
break;
} }
if (layer) { if (layer) {
@ -975,6 +988,11 @@ doc::Cel* AsepriteDecoder::readCelChunk(doc::Sprite* sprite,
break; break;
} }
default:
delegate()->incompatibilityError(
fmt::format("Unknown cel type found: {0}", cel_type));
break;
} }
if (!cel) if (!cel)
@ -1038,6 +1056,11 @@ void AsepriteDecoder::readColorProfile(doc::Sprite* sprite)
} }
break; break;
} }
default:
delegate()->incompatibilityError(
fmt::format("Unknown color profile type found: {0}", type));
break;
} }
sprite->setColorSpace(cs); sprite->setColorSpace(cs);