FOnline Engine
Current master GitHub
Документация 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.

Введите запрос.