Определение классов, чтобы содержать специфичную для устройства информацию

Вы можете хотеть хранить больше информации об устройстве или формате, чем IDeviceInfo и объекты IDeviceFormat позволяют. Один способ сделать это должно задать новый класс, который содержит эту дополнительную информацию. Затем в вашем адаптере инстанцируйте объекта этого класса и сохраните его в данных об адаптере объектов IDeviceFormat или IDeviceInfo. Используя адаптер данные являются хорошим способом раздать важную информацию в вашем адаптере, потому что IDeviceInfo и объекты IDeviceFormat передаются другим функциям адаптера.

Используя адаптер данные являются процессом с тремя шагами:

  1. Задайте класс, чтобы содержать информацию об устройстве или данные о формате. Смотрите Определение Класса Информации об устройстве или Данных о формате для получения дополнительной информации.

  2. Инстанцируйте объекта этого класса в вашем адаптере. Используйте конструктора, которого вы задаете для своего класса.

  3. Храните объект в данных об адаптере объекта 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());