Beispiel #1
0
    size_t CelFile::getFrame(const std::vector<uint8_t>& frame, size_t frameNum, std::vector<Colour>& rawImage)
    {
        if(mIsCl2)
            return cl2Decode(frame, mPal, rawImage);

        if(mIsTileCel)
            return decodeTileFrame(frame, mPal, rawImage);

        return normalDecode(frame, frameNum, mPal, rawImage);
    }
Beispiel #2
0
size_t decodeTileFrame(const std::vector<uint8_t>& frame, const Pal& pal, std::vector<Colour>& rawImage)
{
    if(frame.size() == 1024 /*&& frame_num != 2593*/) // It's a fully opaque raw frame, width 32, from a level tileset
        decodeRaw32(frame, pal, rawImage);

    else if(isLessThan(frame))
        decodeLessThan(frame, pal, rawImage);

    else if(isGreaterThan(frame))
        decodeGreaterThan(frame, pal, rawImage);
    else
        normalDecode(frame, 0, pal, rawImage, true); // pass zero as frameNum because it's only used for width calculation and width of tile frames is always 32

    return 32;
}