Документация
Docs/ru/reference/image-format/validation.md
Проверка форматов изображений
Сгенерированный справочник. Не редактируйте его напрямую. Обновите
BuildTools/ImageFormatInterface.json, затем выполнитеpython BuildTools/docs_image_format.py --write.
| Индекс | Форматы | FOFRM | Параметры | Запекание | Runtime | Проверка | Канонический JSON | Руководство |
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
image-format.validation.fofrm-count |
Положительный count FOFRM | Отклоняйте descriptor, у которого count/Count равен нулю или отрицателен. | До существования runtime frame table descriptor должен разрешить хотя бы одну source reference. | Source/Tools/ImageBaker.cpp |
image-format.validation.fofrm-directions |
Полные равные направления | Отклоняйте частичные наборы направлений и любое последующее направление, чьё расплющенное число кадров отличается от нулевого. | Каждый direction sheet разделяет один frame-count и timing header. | Source/Tools/ImageBaker.cpp, Source/Tests/Test_ImageBaker.cpp |
image-format.validation.fofrm-nested-shared |
Без вложенных shared frame records | Отклоняйте ссылку FOFRM, чей дочерний кадр Main уже является shared record. | Реализация flattening копирует concrete child pixels и не перенумеровывает child shared indices. | Source/Tools/ImageBaker.cpp |
image-format.validation.rgba-payload |
Точный размер RGBA payload | Отклоняйте каждый concrete frame, чья byte payload не равна в точности width, умноженной на height и четыре. | Client читает фиксированное число байтов RGBA8 без отдельного поля payload length. | Source/Tools/ImageBaker.cpp |
image-format.validation.tga-subset |
Поддерживаемое подмножество TGA | Не используйте image ID; задавайте bottom-left orientation, TrueColor type 2 или 10 и 24 либо 32 bpp. Indexed/grayscale/другие входы отклоняются или не соответствуют реализованным допущениям orientation. | Loader непосредственно потребляет фиксированный header, затем всегда переворачивает строки и не ветвится по descriptor origin. | Source/Tools/ImageBaker.cpp, Source/Tests/Test_ImageBaker.cpp |
image-format.validation.malformed-inputs |
Повреждённые входы decoder | Сохраняйте focused failure coverage для повреждённых PNG, TGA, FRM/FRx/RIX/ART/ZAR/TIL/MOS/BAM, SPR и вложенных FOFRM. | Legacy binary parsers должны детерминированно завершаться ошибкой, а не создавать усечённые runtime containers. | Source/Tests/Test_ImageBaker.cpp |
image-format.validation.runtime-container |
Guards runtime container | Отклоняйте неверные header/footer magic, нулевые кадры/направления, неподдерживаемое число направлений, недопустимые shared records одного кадра и неверные shared-frame indices. | Повреждённые baked bytes не должны достигать выделения atlas или обновления анимации. | Source/Common/SpriteResource.cpp, Source/Client/DefaultSprites.cpp |
image-format.validation.playback-timing |
Ненулевая длительность кадра | Для проигрываемого многокадрового sheet задавайте timing так, чтобы полные AnimTicks, делённые на расплющенное число кадров, были не меньше одной миллисекунды; нулевой fps намеренно отключает playback. | SpriteSheet::Update делит прошедшее время на целые ticks_per_frame, а Play защищает только один кадр или нулевые полные ticks. | Source/Client/DefaultSprites.cpp |
image-format.validation.project-visible |
Визуальный gate встраиваемого проекта | После native/documentation checks перезапеките встраиваемый проект и в видимой сцене проверьте изменённые dimensions, alpha edges, mirrors, directions, cadence, offsets, hit masks и нужные client profiles. | Parser/container tests не доказывают framing графики, filtering, gait или выбор project resource pack. | Source/Tests/Test_ImageBaker.cpp, Source/Tests/Test_TextureAtlas.cpp |
Команды проверки
python BuildTools\docs_image_format.py --check
python -m unittest BuildTools.tests.test_docs_image_format
cmake --build <build-dir> --config RelWithDebInfo --target RunUnitTests
Встраиваемый проект также должен перезапечь затронутые ресурсы и проверить каждую изменённую анимацию, направление, alpha edge, hit mask и поддерживаемый client profile.