На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Сборка прикладных задач под linux

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 След.
RSS
Сборка прикладных задач под linux, Итересует кто как собирает прикладные задачи под Linux
 
Итересует кто как собирает прикладные задачи под Linux, написанные под c builder, это вообще возможно? Есть много прикладных задач написанных с использованием panapi и mapapi для windows платформы на c builder, сейчас столкнулись с неообходимостью разработки под linux системы, закупили ГИС Конструктор для qt, реализовали оболочку, загрузку и работу задач по panapi на qt, но теперь, получается, все задачи надо переписывать на qt? В той же легенде карты mapclass видел в объявления типа

#ifdef WIN32API
  #define HMESSAGE HWND
#else
  #define HMESSAGE MSGHANDLER
#endif
Вот и хотел узнать есть ли что-то, что позволит ускорить процесс миграции?

Изменено: Максим Казаровец - 31.03.2020 09:56:09
 
Здравствуйте!

Уточните, пожалуйста, Вы разрабатываете прикладные задачи для ГИС Оператор или автономные приложения на базе ГИС Конструктор?
 
Автономное приложение написанное на qt, не использую компоненты ГИС Конструктора, пишу на mapapi, которое имеет возможность загрузки задач написанных на panapi, тоже самое делал для windows на c builder, осталось много задач, в том числе и стандартные, типа легенды карты и т.д. Инетерестно, каким путем пошили Вы при разаработке Оператора и миграции прикладных задач?
Изменено: Максим Казаровец - 31.03.2020 10:27:28
 
Здравствуйте!

Реализация собственного функционала под Linux возможна одним из двух способов:
- разработка прикладной задачи для ГИС Оператор SE;
- написание автономного ГИС-приложения с помощью ГИС Конструктор.

Разработка прикладной задачи для ГИС Оператор SE производится на основе интерфейсов MAPAPI (взаимодействие с цифровыми картами) и PANAPI (взаимодействие с картой в окне - например, отклики на перемещение мыши, перерисовка карты).

Для того чтобы ознакомиться с процессом написания прикладной задачи для ГИС Оператор SE, можно использовать следующие материалы:
- SDK для ГИС Оператор SE с примерами ГИС-приложений (https://gisinfo.ru/download/download_linux.htm#13);
- ГИС Оператор SE (https://gisinfo.ru/download/download_linux.htm#9).

Написание автономного ГИС-приложения с помощью ГИС Конструктор производится на основе интерфейсов MAPAPI.
Для того чтобы ознакомиться с процессом написания автономного ГИС-приложения с помощью ГИС Конструктор, можно использовать следующие типовые материалы:
- Руководство программиста, Руководство системного программиста, Типовая программа и методика испытаний (https://gisinfo.ru/download/doc.htm#28);
- тестовые примеры, входящие в инсталляцию;
- руководство по применению и перечень функций MAPAPI (https://gisinfo.ru/download/doc.htm#18);
- описание функций в заголовочных файлах;
- поиск решений типовых задач на форуме.
 
Спасибо, это все знаю, давно с Вами сотрудничаем.))) Интересует путь перехода с windows версии на linux в плане разработки прикладных задач, которых на windows под c builder наработано и у Вас и у нас много. В частности есть вопросы по отрисовке,в Вашем примере SDK для ГИС Оператор SE cmline - измерение длины произвольной ломаной при обработке событий мыши используются функции типа mapViewUserObject, mapViewMapObject -  в качестве параметров HWND передаю структуруXCONTEXT которую получаю так
HWND makeXCONTEXTForWidget(QWidget *widget){
#ifdef __linux
   XCONTEXT *context = new XCONTEXT;
   context->xcDisplay = QX11Info::display();
   context->xcWindow = widget->winId();
   context->xcContext = XCreateGC(context->xcDisplay, context->xcWindow, 0, NULL);
   context->xcPoint.X = 0;
   context->xcPoint.Y = 0;
   return reinterpret_cast<HWND>(context);
#else
   return widget->winId();
#endif
}
Эти функции отрабатывают нормально,
в событии Paint Вы предлагаете использовать  

// Нарисовать объект
mapPaintMapObject95(HMap, dc.operator HDC(), &rect, &ObjectImage, Info); //mapDrawImageMapObject(dc.operator HDC(), HMap, &ObjectImage, Info);

// Нарисовать хвост
mapPaintUserObject95(HMap, dc.operator HDC(), &rect, &LineImage,
                     &LineData, PP_PLANE);
в Linux HWND =HDC и я передаю туда тоже самое, но отрисовать не получается, функции отрисовки возращают 0, что делаю не так? Использую ГИС конструктор 13.x для QT 5, CentOS 7, крайняя версия.
Изменено: Максим Казаровец - 24.04.2020 12:15:19
 
Странно получается, я вот помню что не было функции winID в Qt5. Но теперь смотрю, что она есть. Какое-то странное чувство)
Когда мы переводили ГИС Конструктор на Qt5, то сталкивались с похожей проблемой и в итоге перешли на функции рисования в XImage, чтобы:
1. было одинаково для всех систем
2. было независимо от поддержки Х-сервера ОС
3. была возможность буферизации.
Например, чтобы заменить mapPainMapObject95 можно использовать mapPaintUserObjectToXImage.
Рисование карты mapPaintToXImage. Отобразить выделение mapPaintSelectToXImage и т.д.
Если же Вы хотите придерживаться поддержки XWindow, то пришлите небольшой пример, который мы могли бы попробовать запустить с отладкой и попытаться найти что мешает :)
 
Спасибо, теперь картина прояснилась,  поддержки XWindow придерживаться, конечно, не хочу)) Еще вопрос по созданию панелей прикладных задач, а точнее, иконок кнопок, как-то использовать xpm в качестве иконок не очень прикольно, тем более, есть ресурсы (qrc) и QIcon, у себя пока передаю в основное окно указатель на QIcon в BUTTONINFOLX  butlx; butlx.hBitmap = (HBITMAP)&icon; интерестно как у Вас, может есть какое-то более хитрое решение?
 
В ГИС Конструктор вроде нет панелек. Если в ГИС Операторе, то описанный Вами вариант так же работает.
Изменено: Vladimir Letov - 24.04.2020 21:32:53
 
А что насчет задач, которые под windows представлены в SDK? Планируется ли их добавление в SDK linux ветки? Хотел еще уточнить, под linux вы используете MessageHandler а в windows реализации также или используете функционал Send/PostMessage в прикладных задачах на PanApi?
Изменено: Максим Казаровец - 25.04.2020 11:40:18
 
Цитата
Максим Казаровец написал:
А что насчет задач, которые под windows представлены в SDK? Планируется ли их добавление в SDK linux ветки?
Вы имеете в виду расширение SDK для ГИС Оператор под Linux задачами из SDK для ГИС Панорама для Windows?
Если Вы используете ГИС Конструктор, то можете использовать набор примеров, входящих в его состав.
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности