Yoksel: 20071201БулевыСвойстваВEscher ...
SourceForge.net Logo

Home Page | Изменения / НовыеКомментарии / Справка / Помочь проекту | Вход:  Пароль:  

Блог Булевы свойства в Escher


Каждая escher-фигура имеет некую таблицу свойств. При сохранении данных в файл эти свойства сохраняются в некотором формате. Сейчас рассмотрим только сохранение булевых свойств.


Цитата из документации:

Boolean properties are grouped in bitfields by property set; note that the Boolean properties in each property set below are contiguous. They are saved under the property ID of the last Boolean property in the set, and are placed in the value field in reverse order starting with the last property in the low bit.

На практике это означает следующее. Все возможные свойства фигуры разбиты на ряд групп. Все булевы свойства каждой группы располагаются в конце группы (имеют наибольшие порядковые номера). Все булевы свойства при записи в файл схлопываются в битсет. Этот битсет записывается как одно свойство (значение DWORD). Это свойство имеет номер, равный номеру последнего булева свойства в группе. Последнее свойство записывается в самый младший бит битсета (нулевой), предпоследнее в первый бит и так далее.


К сожалению, из документации ускользнул еще один факт. А именно признак наличия установленных булевых свойств. Все значения булевых свойств записываются в двух младших байтах. А два старших байта являются маской, указывающей, какие именно свойства установлены. Правила формирования этой маски полностью аналогичны правилам записи значений свойств.


Ссылок на эту страницу нет


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]