Вы можете хотеть хранить больше информации об устройстве или формате, чем IDeviceInfo и IDeviceFormat объекты позволяют. Один способ сделать это должно задать новый класс, который содержит эту дополнительную информацию. Затем в вашем адаптере инстанцируйте объекта этого класса и сохраните его в данных об адаптере IDeviceInfo или IDeviceFormat объекты. Используя адаптер данные являются хорошим способом раздать важную информацию в вашем адаптере потому что IDeviceInfo и IDeviceFormat объекты передаются другим функциям адаптера.
Используя адаптер данные являются процессом с тремя шагами:
Задайте класс, чтобы содержать информацию об устройстве или данные о формате. Смотрите Определение Класса Информации об устройстве или Данных о формате для получения дополнительной информации.
Инстанцируйте объекта этого класса в вашем адаптере. Используйте конструктора, которого вы задаете для своего класса.
Храните объект в данных об адаптере IDeviceInfo или IDeviceFormat объект. Смотрите Хранящие Данные об Адаптере для получения дополнительной информации.
Класс, который вы задаете, чтобы сохранить дополнительное устройство или данные о формате, должен быть выведен из IMAQinterface класс. Разделение на подклассы IMAQInterface класс гарантирует, что все освобождение памяти для этих классов направляется через механизм тулбокса.
Для примера такого класса смотрите DemoDeviceFormat класс в демонстрационном адаптере, заданном в файле DemoDeviceFormat.h.
Сохранить ваше устройство или класс формата в данных об адаптере IDeviceInfo или IDeviceFormat объект, используйте setAdaptorData() функция членства объекта.
Примечание
Объекты, которые вы храните в данных об адаптере, автоматически уничтожаются когда IDeviceInfo и IDeviceFormat объекты уничтожаются. Если вы храните объект в данных об адаптере, не пытайтесь уничтожить объекты сами.
Демонстрационный адаптер обеспечивает пример, задавая класс, чтобы содержать дополнительные данные о формате. Этот класс, названный DemoDeviceFormat, данные о формате хранилищ, такие как ширина, высота и цветовое пространство. Следующий пример, взятый из демонстрационного адаптера, показывает, как инстанцировать объекта этого производного класса, значений присвоения к элементам данных класса, и затем хранить объект в данных об адаптере IDeviceFormat объект.
DemoDeviceFormat* rgbFormatInfo = new DemoDeviceFormat(); rgbFormatInfo->setFormatWidth(demo::RGB_FORMAT_WIDTH); rgbFormatInfo->setFormatHeight(demo::RGB_FORMAT_HEIGHT); rgbFormatInfo->setFormatNumBands(demo::RGB_FORMAT_BANDS); rgbFormatInfo->setFormatColorSpace(imaqkit::colorspaces::RGB); deviceFormat->setAdaptorData(rgbFormatInfo);
Получить доступ к данным об адаптере, хранимым в IDeviceInfo или IDeviceFormat объект, используйте getAdaptorData() функция членства объекта.
Следующий пример, взятый из демонстрационного адаптера, показывает, как получить данные об адаптере от IDeviceFormat объект. В примере, selectedFormat DemoDeviceFormat объект. Обратите внимание на то, что, потому что getAdaptorData() функция членства возвращает указатель на IMAQInterface класс, необходимо бросить возвращенный объект к заданному классу.
dynamic_cast<DemoDeviceFormat*>(selectedFormat->getAdaptorData());