Каталог статей
Главная » Статьи » S3DecoderLib |
S3DecoderLib: Приложение 4. ResourceType THUM, SNAP, ICON, TWNI
|
Приложение 4: ResourceType THUM, SNAP, ICON, TWNI [ Стабильный билд • Sims3: File Types • Википедия: PNG ]
Програмный модуль и версия DBPF2PNG.pas, rev.120825
Краткий обзор Типы данных THUM, SNAP, ICON, TWNI используются для хранения изображений в формате PNG (Portable Network Graphics) – растровом формате хранения графической информации, использующем сжатие без потерь. В The Sims 3 применяется формат RGBA (красный-зеленый-синий-альфа) с глубиной цвета 8 бит на канал (если есть другие варианты, то я не встречал)
Идентификация данных Версия игры The Sims 3 (DBPF v.2.0)
ResourceType
ResourceGroup ResourceGroup = $xxxxxxxx Группа ресурса, по-видимому, является набором флагов
Instance Instance = $yyyyyyyyyyyyyyyy Экземпляр любой
Реализация на Pascal
"enum" TDBPF2PNGType - перечисление типов изображений type TDBPF2PNGType = (TS3ResByePNG, TS3ResBldPNG, TS3ResSimPNG, TS3ResFamPNG, TS3ResCASPNG, TS3ResLotPNG, TS3ResWrdPNG, TS3ResPatPNG, TS3ResGrdPNG, TS3ResPntPNG, TS3ResIntPNG); set TDBPF2PNGTypes - множество типов изображений type TDBPF2PNGTypes = set of TDBPF2PNGType;
Функции function IsPNG(AResourceType: DWORD): boolean; overload; // возвращает true, если AResourceType - PNG function IsPNG(AResourceType: DWORD; PNGTypes: TDBPF2PNGTypes): boolean; overload; // возвращает true, если AResourceType - PNG входящий во множество PNGTypes function IsBestPNG(const Decoder: TDBPF2Decoder; Index: integer): boolean; // возвращает true, если запись содержит PNG с наилучшим разрешением В Delphi 2009 работа с форматом PNG поддерживается практически не документированным классом TPNGImage, наследником класса TGraphic. Использование примерно такое: uses PNGImage, siDBPF2Decoder; ... var DBPF2Decoder: TDBPF2Decoder; img: TPNGImage; ... DBPF2Decoder.Create(nil); DBPF2Decoder.Decode(... ... with DBPF2Decoder.Items[i] do begin img:= TPNGImage.Create; Decode(TMemoryStream.Create); Stream.Seek(0, soBeginning); // обязательно встали на начало потока try img.LoadFromStream(Stream); // здесь можно чего-нибудь сделать с рисунком PNG except on E: Exception do Error(E.Message); // ошибочка вышла end; FreeStream; img.Free end; ... DBPF2Decoder.Free; ... | |
Категория: S3DecoderLib | Добавил: crazylab (27.09.2013) | |
Просмотров: 719 |