1

Тема: Информация о высоте и ширине рабочей области

Не смогли найти как программно извлечь информацию о высоте и ширине рабочей области.

2

Re: Информация о высоте и ширине рабочей области

Здравствуйте.
Ширина и высота рабочей области задаётся в профиле проекта, и предполагается, что тем, кто работает со сгенерированным программным кодом, она должна быть известна.

3

Re: Информация о высоте и ширине рабочей области

Боюсь что в нашем случае это предположение не верно, т.к. наша программа пишется без зависимости от конкретного объекта. То есть наша программа подключает динамически библиотеки с объектами и отображает их (по несколько на одной форме) в указанном оператором месте.

4

Re: Информация о высоте и ширине рабочей области

Да, но сгенерированный программный код по сути является чёрным ящиком. Он не предоставляет по запросу никому никакой информации, и с нашей точки зрения, и не должен этого делать. Работа с ним происходит по принципу: его вызвали, и он что-то сделал.
С другой стороны, мы не знаем, как организовано ваше ПО, но его ведь что-то вызывает. Что-то знает для какого объекта и с какими размерами экрана происходит вызов вашего ПО. Соответственно, указание на объект или непосредственно размеры индикационного кадра могут быть им переданы в ваше ПО. Т.е. некоторая управляющая часть может при вызове ведомых передать им определённую дополнительную информацию.

5

Re: Информация о высоте и ширине рабочей области

Для того чтобы "черный ящик" корректно отрисовал изображение предварительно надо задать его ширину и высоту. То есть нам вместо того чтобы использовать 1 динамическую библиотеку придется рядышком еще создавать файл в котором руками прописывать размеры объектов.
Взять хотя бы тестовое приложение, которому даешь библиотеку, а оно, соблюдая масштаб и пропорции, отрисовывает то что в библиотеке находится. Этому приложению тоже каждый раз размеры вручную указывать? Не логичнее ли брать эту информацию из самой библиотеки, как мы это делаем в том же Scade?

6

Re: Информация о высоте и ширине рабочей области

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

7

Re: Информация о высоте и ширине рабочей области

Да, верно, мы очень хотим чтобы при кодогенерации была информация, позволяющая отображать объекты без каких-либо дополнительных знаний. В случае со Scade это было реализовано в файлах target_configuration. Например:
в target_configuration.h:

extern unsigned long target_screen_width;
extern unsigned long target_screen_height;
extern const double ratio_x;
extern const double ratio_y;
extern const unsigned char target_rotation_mode;
extern const char *specification_name;

в target_configuration.c файле соответственно

unsigned long target_screen_width = 96;
unsigned long target_screen_height = 194;
const double ratio_x = 1.0;
const double ratio_y = 1.0;
const unsigned char target_rotation_mode = 0;
const char *specification_name = "button_cower";

Реально из этого мы использовали только target_screen_width и target_screen_height

8

Re: Информация о высоте и ширине рабочей области

Здравствуйте!
Данная функциональность реализована в новой версии САПР.
В интерфейсе модуля CGFormatPro 2.X в группу Paint.c/Paint.h закладки Файлы введено новое свойство Информация о профиле. Установка его в значение true позволяет в файлах Paint.c и Paint.h получить группу переменных с некоторой информацией из профиля проекта.