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

Вы можете хотеть хранить больше информации об устройстве или формате, чем IDeviceInfo и IDeviceFormat объекты позволяют. Один способ сделать это должно задать новый класс, который содержит эту дополнительную информацию. Затем в вашем адаптере инстанцируйте объекта этого класса и сохраните его в данных об адаптере IDeviceInfo или IDeviceFormat объекты. Используя адаптер данные являются хорошим способом раздать важную информацию в вашем адаптере потому что 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());