Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб июл 20, 2019 01:25

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Чт фев 21, 2019 00:29 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Hishnik писал(а):
В целом там форт-машина упакована в два массива - код и данные. Если их сохранить и потом загрузить, компиляцию можно будет пропустить. Правда, возможен вариант, когда при старте будет генерироваться много данных, и попытка записи непомерно раздует сохраняемые файлы.

Отлично, думаю вполне нормальное решение. Генерацию больших объемов данных можно и отложить. Да и при современных объемах и характеристиках ПК даже несколько мегабайт данных это ничтожно мало.
Hishnik писал(а):
Свой экран есть у форт-машины, его можно достать в Qt при необходимости. Виджеты создаются движком Qt, но их параметрами управляет форт-машина. Наложение виджетов на экран Форта может быть некоторой проблемой из-за особенностей отрисовки, но можно будет делать виджет "изображение" и связывать его с экраном Форта.

Вот как. В таком случае, думаю виджет вполне подходящее решение. Тогда, возможно, имеет смысл сделать экран не один, а инстансом — т.е. вот есть экран по умолчанию, но если надо — то можно еще наклепать сколько надо и сделать их виджетами? Чтобы можно было сделать несколько виджетов и/или окон. Например при наличии двух мониторов можно будет на один вывести красивую 3D графику, а на втором разные элементы управления, виджеты или еще что-то нужное. Или для каждого экрана лучше просто делать отдельную форт-машину форком в отдельном потоке?

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Вс фев 24, 2019 18:44 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6719
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Начал работать TextEdit. Загрузка, сохранение, подсчет строк и отправка i-й строки в форт-машину.


Вложения:
screen02.png
screen02.png [ 39.05 Кб | Просмотров: 1306 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Пн июл 01, 2019 01:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6719
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Немного предсказуемый, но все равно неприятный эффект - никакие ухищрения с QImage и отложенным обновлением отрисовки не помогают привести двумерную графику к приемлемому уровню производительности. Проблема в отсылке сообщений из Форта в Qt - каждый пиксель надо "обернуть" в сообщение, поместить в FIFO, а оттуда его заберет основной поток приложения. А это все существенно медленнее, чем просто писать в массив. Так что еще одно препятствие образовалось на пути к красивым приложениям...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Сб июл 06, 2019 12:11 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 279
Благодарил (а): 11 раз.
Поблагодарили: 10 раз.
Hishnik писал(а):
... каждый пиксель ...

А - зачем каждый и - по одному?
Или - задачей диктуется?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Сб июл 06, 2019 21:04 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6719
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
В принципе, какого-то специального требования нет. Однако аналог объекта Canvas очень даже удобен. Достаточно просто ставить пиксели и другие объекты куда-то в буфер, а они оттуда сами забираются. Так сделано в Кварке, где вся графика рисуется без всякого знания о GDI со стороны программиста, просто буфер регулярно забирается движком Кварка и посылается на экран (с самостоятельным определением реального размера и прочего). По сравнение с написанием обработчика wm_paint это существенно проще, потому что при необходимости вывода чего-то другого в другой части программы уже не нужно думать, как это будет стыковаться с уже написанным для wm_paint кодом.

Я уже посматриваю в сторону QImage.loadFromData, который может принимать на вход указатель на массив, содержащий графический файл. В принципе, нет ничего сложного в подготовке bmp в самой программе, достаточно сделать фиксированный заголовок. Чуть неудобнее то, что инициировать отрисовку этого bmp придется программисту же, каждый раз, когда он захочет увидеть на экране сделанные изменения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Пн июл 08, 2019 02:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6719
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Уфф. Создание в памяти bmp, похоже, работает. И с учетом того, что момент обновления выбирается в программе, скорость вполне приличная. Остается еще один интересный вопрос - ведь с таким подходом "экранов" в программе становится много - столько, сколько будет создано QImage для вывода картинок.


Вложения:
neutron001.png
neutron001.png [ 3.01 Кб | Просмотров: 319 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Пн июл 08, 2019 15:49 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 244
Откуда: Москва
Благодарил (а): 25 раз.
Поблагодарили: 2 раз.
Возможно не к месту, я использовал простой формат ppm
https://ru.wikipedia.org/wiki/Portable_anymap
он элементарно пишется и читается всем, чем угодно

P6
#тут возможна строка комментариев это текстовый заголовок
X Y
255
тут конец текстового заголовка, идут байты rgb в количестве X*Y

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Пн июл 08, 2019 21:46 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6719
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
vikt писал(а):
Возможно не к месту, я использовал простой формат ppm
https://ru.wikipedia.org/wiki/Portable_anymap
он элементарно пишется и читается всем, чем угодно

Действительно, интересная штука. Вот возможность записи/чтения в очевидной текстовой форме как раз и подкупает. Только боюсь, на обработку придется тратить больше времени. bmp все-таки самый простой вариант с точки зрения представления пикселов, причем достаточно фиксированного заголовка. Пока тестирую написанное, и скорость у bmp более или менее приемлемая. Понятно, что игровая графика при такой реализации получается с натяжкой, но для нее есть OpenGL.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Пн июл 08, 2019 23:50 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 244
Откуда: Москва
Благодарил (а): 25 раз.
Поблагодарили: 2 раз.
В P6 только заголовок текстовый, rgb - это обычные бинарные байты
по байту на каждый цвет.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark C64
СообщениеДобавлено: Вт июл 09, 2019 00:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6719
Благодарил (а): 15 раз.
Поблагодарили: 107 раз.
Да, вот тут написано, что ppm поддерживается.
https://doc.qt.io/qt-5/qimage.html#reading-and-writing-image-files

В принципе да, получается просто еще одна разновидность двумерного массива пикселов (что и нужно), просто с другим заголовком.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB