Вы можете хотеть хранить больше информации об устройстве или формате, чем 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());