Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
QChart прошел по той же схеме подключения
Вложения: |
qt2.png [ 182.89 Кб | Просмотров: 18660 ]
|
QChart прошел по той же схеме подключения
|
|
|
|
Добавлено: Вт июн 16, 2020 04:39 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Victor__v писал(а): Ну так что? Есть 64-битный Кварк в виде DLL? Нет, он такой пока не нужен. Он в виде forth.h и компилируется в составе проекта - например, с GUI. Соответственно, и dll создает пускай внешняя программа.
[quote="Victor__v"]Ну так что? Есть 64-битный Кварк в виде DLL?[/quote] Нет, он такой пока не нужен. Он в виде forth.h и компилируется в составе проекта - например, с GUI. Соответственно, и dll создает пускай внешняя программа.
|
|
|
|
Добавлено: Сб сен 28, 2019 17:32 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Ну так что? Есть 64-битный Кварк в виде DLL?
Если есть, то какие конвенции вызозов поддерживаются. И может ли Кварк пересохранить себя в виде DLL c записью новых функций в секцию экспорта?
Ну так что? Есть 64-битный Кварк в виде DLL?
Если есть, то какие конвенции вызозов поддерживаются. И может ли Кварк пересохранить себя в виде DLL c записью новых функций в секцию экспорта?
|
|
|
|
Добавлено: Сб сен 28, 2019 10:23 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Да, вот тут написано, что ppm поддерживается. https://doc.qt.io/qt-5/qimage.html#reading-and-writing-image-filesВ принципе да, получается просто еще одна разновидность двумерного массива пикселов (что и нужно), просто с другим заголовком.
Да, вот тут написано, что ppm поддерживается. [url]https://doc.qt.io/qt-5/qimage.html#reading-and-writing-image-files[/url]
В принципе да, получается просто еще одна разновидность двумерного массива пикселов (что и нужно), просто с другим заголовком.
|
|
|
|
Добавлено: Вт июл 09, 2019 00:33 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
В P6 только заголовок текстовый, rgb - это обычные бинарные байты по байту на каждый цвет.
В P6 только заголовок текстовый, rgb - это обычные бинарные байты по байту на каждый цвет.
|
|
|
|
Добавлено: Пн июл 08, 2019 23:50 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
vikt писал(а): Возможно не к месту, я использовал простой формат ppm https://ru.wikipedia.org/wiki/Portable_anymapон элементарно пишется и читается всем, чем угодно Действительно, интересная штука. Вот возможность записи/чтения в очевидной текстовой форме как раз и подкупает. Только боюсь, на обработку придется тратить больше времени. bmp все-таки самый простой вариант с точки зрения представления пикселов, причем достаточно фиксированного заголовка. Пока тестирую написанное, и скорость у bmp более или менее приемлемая. Понятно, что игровая графика при такой реализации получается с натяжкой, но для нее есть OpenGL.
[quote="vikt"]Возможно не к месту, я использовал простой формат ppm https://ru.wikipedia.org/wiki/Portable_anymap он элементарно пишется и читается всем, чем угодно[/quote] Действительно, интересная штука. Вот возможность записи/чтения в очевидной текстовой форме как раз и подкупает. Только боюсь, на обработку придется тратить больше времени. bmp все-таки самый простой вариант с точки зрения представления пикселов, причем достаточно фиксированного заголовка. Пока тестирую написанное, и скорость у bmp более или менее приемлемая. Понятно, что игровая графика при такой реализации получается с натяжкой, но для нее есть OpenGL.
|
|
|
|
Добавлено: Пн июл 08, 2019 21:46 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Возможно не к месту, я использовал простой формат ppm https://ru.wikipedia.org/wiki/Portable_anymapон элементарно пишется и читается всем, чем угодно P6 #тут возможна строка комментариев это текстовый заголовок X Y 255 тут конец текстового заголовка, идут байты rgb в количестве X*Y
Возможно не к месту, я использовал простой формат ppm [url]https://ru.wikipedia.org/wiki/Portable_anymap[/url] он элементарно пишется и читается всем, чем угодно
P6 #тут возможна строка комментариев это текстовый заголовок X Y 255 тут конец текстового заголовка, идут байты rgb в количестве X*Y
|
|
|
|
Добавлено: Пн июл 08, 2019 15:49 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Уфф. Создание в памяти bmp, похоже, работает. И с учетом того, что момент обновления выбирается в программе, скорость вполне приличная. Остается еще один интересный вопрос - ведь с таким подходом "экранов" в программе становится много - столько, сколько будет создано QImage для вывода картинок.
Вложения: |
neutron001.png [ 3.01 Кб | Просмотров: 24293 ]
|
Уфф. Создание в памяти bmp, похоже, работает. И с учетом того, что момент обновления выбирается в программе, скорость вполне приличная. Остается еще один интересный вопрос - ведь с таким подходом "экранов" в программе становится много - столько, сколько будет создано QImage для вывода картинок.
|
|
|
|
Добавлено: Пн июл 08, 2019 02:08 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
В принципе, какого-то специального требования нет. Однако аналог объекта Canvas очень даже удобен. Достаточно просто ставить пиксели и другие объекты куда-то в буфер, а они оттуда сами забираются. Так сделано в Кварке, где вся графика рисуется без всякого знания о GDI со стороны программиста, просто буфер регулярно забирается движком Кварка и посылается на экран (с самостоятельным определением реального размера и прочего). По сравнение с написанием обработчика wm_paint это существенно проще, потому что при необходимости вывода чего-то другого в другой части программы уже не нужно думать, как это будет стыковаться с уже написанным для wm_paint кодом.
Я уже посматриваю в сторону QImage.loadFromData, который может принимать на вход указатель на массив, содержащий графический файл. В принципе, нет ничего сложного в подготовке bmp в самой программе, достаточно сделать фиксированный заголовок. Чуть неудобнее то, что инициировать отрисовку этого bmp придется программисту же, каждый раз, когда он захочет увидеть на экране сделанные изменения.
В принципе, какого-то специального требования нет. Однако аналог объекта Canvas очень даже удобен. Достаточно просто ставить пиксели и другие объекты куда-то в буфер, а они оттуда сами забираются. Так сделано в Кварке, где вся графика рисуется без всякого знания о GDI со стороны программиста, просто буфер регулярно забирается движком Кварка и посылается на экран (с самостоятельным определением реального размера и прочего). По сравнение с написанием обработчика wm_paint это существенно проще, потому что при необходимости вывода чего-то другого в другой части программы уже не нужно думать, как это будет стыковаться с уже написанным для wm_paint кодом.
Я уже посматриваю в сторону QImage.loadFromData, который может принимать на вход указатель на массив, содержащий графический файл. В принципе, нет ничего сложного в подготовке bmp в самой программе, достаточно сделать фиксированный заголовок. Чуть неудобнее то, что инициировать отрисовку этого bmp придется программисту же, каждый раз, когда он захочет увидеть на экране сделанные изменения.
|
|
|
|
Добавлено: Сб июл 06, 2019 21:04 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Hishnik писал(а): ... каждый пиксель ... А - зачем каждый и - по одному? Или - задачей диктуется?
[quote="Hishnik"]... каждый пиксель ...[/quote] А - зачем каждый и - по одному? Или - задачей диктуется?
|
|
|
|
Добавлено: Сб июл 06, 2019 12:11 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Немного предсказуемый, но все равно неприятный эффект - никакие ухищрения с QImage и отложенным обновлением отрисовки не помогают привести двумерную графику к приемлемому уровню производительности. Проблема в отсылке сообщений из Форта в Qt - каждый пиксель надо "обернуть" в сообщение, поместить в FIFO, а оттуда его заберет основной поток приложения. А это все существенно медленнее, чем просто писать в массив. Так что еще одно препятствие образовалось на пути к красивым приложениям...
Немного предсказуемый, но все равно неприятный эффект - никакие ухищрения с QImage и отложенным обновлением отрисовки не помогают привести двумерную графику к приемлемому уровню производительности. Проблема в отсылке сообщений из Форта в Qt - каждый пиксель надо "обернуть" в сообщение, поместить в FIFO, а оттуда его заберет основной поток приложения. А это все существенно медленнее, чем просто писать в массив. Так что еще одно препятствие образовалось на пути к красивым приложениям...
|
|
|
|
Добавлено: Пн июл 01, 2019 01:08 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Начал работать TextEdit. Загрузка, сохранение, подсчет строк и отправка i-й строки в форт-машину.
Вложения: |
screen02.png [ 39.05 Кб | Просмотров: 25742 ]
|
Начал работать TextEdit. Загрузка, сохранение, подсчет строк и отправка i-й строки в форт-машину.
|
|
|
|
Добавлено: Вс фев 24, 2019 18:44 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Hishnik писал(а): В целом там форт-машина упакована в два массива - код и данные. Если их сохранить и потом загрузить, компиляцию можно будет пропустить. Правда, возможен вариант, когда при старте будет генерироваться много данных, и попытка записи непомерно раздует сохраняемые файлы. Отлично, думаю вполне нормальное решение. Генерацию больших объемов данных можно и отложить. Да и при современных объемах и характеристиках ПК даже несколько мегабайт данных это ничтожно мало. Hishnik писал(а): Свой экран есть у форт-машины, его можно достать в Qt при необходимости. Виджеты создаются движком Qt, но их параметрами управляет форт-машина. Наложение виджетов на экран Форта может быть некоторой проблемой из-за особенностей отрисовки, но можно будет делать виджет "изображение" и связывать его с экраном Форта. Вот как. В таком случае, думаю виджет вполне подходящее решение. Тогда, возможно, имеет смысл сделать экран не один, а инстансом — т.е. вот есть экран по умолчанию, но если надо — то можно еще наклепать сколько надо и сделать их виджетами? Чтобы можно было сделать несколько виджетов и/или окон. Например при наличии двух мониторов можно будет на один вывести красивую 3D графику, а на втором разные элементы управления, виджеты или еще что-то нужное. Или для каждого экрана лучше просто делать отдельную форт-машину форком в отдельном потоке?
[quote="Hishnik"]В целом там форт-машина упакована в два массива - код и данные. Если их сохранить и потом загрузить, компиляцию можно будет пропустить. Правда, возможен вариант, когда при старте будет генерироваться много данных, и попытка записи непомерно раздует сохраняемые файлы.[/quote] Отлично, думаю вполне нормальное решение. Генерацию больших объемов данных можно и отложить. Да и при современных объемах и характеристиках ПК даже несколько мегабайт данных это ничтожно мало. [quote="Hishnik"]Свой экран есть у форт-машины, его можно достать в Qt при необходимости. Виджеты создаются движком Qt, но их параметрами управляет форт-машина. Наложение виджетов на экран Форта может быть некоторой проблемой из-за особенностей отрисовки, но можно будет делать виджет "изображение" и связывать его с экраном Форта.[/quote] Вот как. В таком случае, думаю виджет вполне подходящее решение. Тогда, возможно, имеет смысл сделать экран не один, а инстансом — т.е. вот есть экран по умолчанию, но если надо — то можно еще наклепать сколько надо и сделать их виджетами? Чтобы можно было сделать несколько виджетов и/или окон. Например при наличии двух мониторов можно будет на один вывести красивую 3D графику, а на втором разные элементы управления, виджеты или еще что-то нужное. Или для каждого экрана лучше просто делать отдельную форт-машину форком в отдельном потоке?
|
|
|
|
Добавлено: Чт фев 21, 2019 00:29 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
VoidVolker писал(а): Думаю, компиляции в ШК и проходом каким-нибудь шифром сверху для большинства задач упаковки приложения будет вполне достаточно. В целом там форт-машина упакована в два массива - код и данные. Если их сохранить и потом загрузить, компиляцию можно будет пропустить. Правда, возможен вариант, когда при старте будет генерироваться много данных, и попытка записи непомерно раздует сохраняемые файлы. VoidVolker писал(а): Какие еще ожидаются новые функции по сравнению с предыдущей версией кварка? А как работает и взаимодействует виртуальный экрана совместно с Qt и его виджетами? Я так понимаю Qt создает этот виртуальный экран и отдает его кварку? При этом в него можно рендерить как OpenGL и отдельные пиксели как раньше, так и виджеты Qt? Или это несколько разных слоев? Свой экран есть у форт-машины, его можно достать в Qt при необходимости. Виджеты создаются движком Qt, но их параметрами управляет форт-машина. Наложение виджетов на экран Форта может быть некоторой проблемой из-за особенностей отрисовки, но можно будет делать виджет "изображение" и связывать его с экраном Форта.
[quote="VoidVolker"]Думаю, компиляции в ШК и проходом каким-нибудь шифром сверху для большинства задач упаковки приложения будет вполне достаточно.[/quote] В целом там форт-машина упакована в два массива - код и данные. Если их сохранить и потом загрузить, компиляцию можно будет пропустить. Правда, возможен вариант, когда при старте будет генерироваться много данных, и попытка записи непомерно раздует сохраняемые файлы.
[quote="VoidVolker"]Какие еще ожидаются новые функции по сравнению с предыдущей версией кварка? А как работает и взаимодействует виртуальный экрана совместно с Qt и его виджетами? Я так понимаю Qt создает этот виртуальный экран и отдает его кварку? При этом в него можно рендерить как OpenGL и отдельные пиксели как раньше, так и виджеты Qt? Или это несколько разных слоев?[/quote]
Свой экран есть у форт-машины, его можно достать в Qt при необходимости. Виджеты создаются движком Qt, но их параметрами управляет форт-машина. Наложение виджетов на экран Форта может быть некоторой проблемой из-за особенностей отрисовки, но можно будет делать виджет "изображение" и связывать его с экраном Форта.
|
|
|
|
Добавлено: Ср фев 20, 2019 23:48 |
|
|
|
|
|
Заголовок сообщения: |
Re: Quark C64 |
|
|
Ага, в целом понятно. Думаю, компиляции в ШК и проходом каким-нибудь шифром сверху для большинства задач упаковки приложения будет вполне достаточно. Hishnik писал(а): На Qt делается то, что "пишется один раз", а вот размеры виджетов, положение, текст, да и действие - это все меняется от проекта к проекту и даже в рамках модификаций одного проекта Это да, тут полностью согласен. Какие еще ожидаются новые функции по сравнению с предыдущей версией кварка? А как работает и взаимодействует виртуальный экрана совместно с Qt и его виджетами? Я так понимаю Qt создает этот виртуальный экран и отдает его кварку? При этом в него можно рендерить как OpenGL и отдельные пиксели как раньше, так и виджеты Qt? Или это несколько разных слоев?
Ага, в целом понятно. Думаю, компиляции в ШК и проходом каким-нибудь шифром сверху для большинства задач упаковки приложения будет вполне достаточно. [quote="Hishnik"]На Qt делается то, что "пишется один раз", а вот размеры виджетов, положение, текст, да и действие - это все меняется от проекта к проекту и даже в рамках модификаций одного проекта[/quote] Это да, тут полностью согласен. Какие еще ожидаются новые функции по сравнению с предыдущей версией кварка? А как работает и взаимодействует виртуальный экрана совместно с Qt и его виджетами? Я так понимаю Qt создает этот виртуальный экран и отдает его кварку? При этом в него можно рендерить как OpenGL и отдельные пиксели как раньше, так и виджеты Qt? Или это несколько разных слоев?
|
|
|
|
Добавлено: Ср фев 20, 2019 23:36 |
|
|
|
|