Forth http://fforum.winglion.ru/ |
|
Графическая консоль http://fforum.winglion.ru/viewtopic.php?f=18&t=823 |
Страница 3 из 4 |
Автор: | Гость [ Пн окт 15, 2007 07:02 ] |
Заголовок сообщения: | |
Решил спросить здесь. т.к. тема близкая. Имеется файл в lib\win\spfgui\spfgui.f Например если даю ему на вход Код: 16 CONSTANT a
: r a ; DIS-OPT lib/ext/disasm.f SEE r то курсор после вывода остается в конце строки, а нажатие Enter приводит к Исключению. Если нажать ESC, то нормально. Как это исправить? |
Автор: | mrack [ Вт окт 23, 2007 08:49 ] |
Заголовок сообщения: | |
вернулся тут на днях к графической консоли, столкнулся с такой проблемой из исполняемого файла папытка вывести картинку заканчивается падением, а в при не посредственом исполнении работает. Код: REQUIRE Point ~pi/lib/wincon/graph.f тоесть с закаментированой строкой все работает нормально, толи я чегото в сохранении в exe непонимаю толи фиг его знает
REQUIRE _TEXT ~pi/lib/wincon/text.f : t1 300 100 ConCreate 0xCC0000 ColorText 0xAA0000 BackgroundText 500 PAUSE 10 30 S" TEST ТЕСТ " Print ConRefresh \ 500 PAUSE S" disketa.bmp" 44 10 Image 2000 PAUSE BYE ; FALSE TO SPF-INIT? TRUE TO ?GUI FALSE TO ?CONSOLE ' t1 TO <MAIN> S" t1.exe" SAVE BYE |
Автор: | Варнак [ Вт ноя 13, 2007 12:31 ] |
Заголовок сообщения: | |
Когда соданное окно консоли перекрывается с окном консоли SPF, то след окна консоли из окна СПФ уже не исчезает. А если потаскать окно СПФ по экрану так, чтобы оно наезжало на окно графическрй консоли, то совсем интересная картинка получается. На другие окна открытые в Windows (XP SP2) не влияет. |
Автор: | Варнак [ Ср ноя 14, 2007 12:16 ] |
Заголовок сообщения: | |
Pretorian, а как правильно "по-виндовски" в этой графической консоли отобразить заранее подготовленный растр? Не по точкам же его рисовать ... должен же быть способ, вроде того как сделано с отображением bmp-файла, но чтобы растр брался из памяти, а не из файла. |
Автор: | Hishnik [ Ср ноя 14, 2007 12:25 ] |
Заголовок сообщения: | |
Для GDI существует блиттинг - быстрое копирование прямоугольных картинок. Однако оно требует подготовительной работы по описанию разнообразных структур. В OpenGL удобнее - формат вызова функции копирования достаточно прямой. |
Автор: | Варнак [ Ср ноя 14, 2007 13:16 ] |
Заголовок сообщения: | |
Вот я и надеюсь, что эта подготовительная работа будет этим модулем от меня скрыта, так же как она скрыта словом Image, выводящим в консоль битмап-файл (полагаю, что там этой работы не меньше). Еще вопрос: Когда я выполняю ConCreate, не сделав ConDestroy для предыдущей, снимается с выполнения весь СПФ. Это принциально, или есть (будет) возможность создавать несколько консолей и "параллельно" с ними работать? И наконец: а что посмотреть из OpenGL оберток для СПФ, чтобы, опять-таки, не углубляться в дебри Win-программирования? Мне графика нужна в основном для быстрого визуального контроля данных и правильности их обработки, поэтому хотелось бы проще и прямолинейнее. |
Автор: | profiT [ Ср ноя 14, 2007 16:58 ] |
Заголовок сообщения: | |
--- |
Автор: | Варнак [ Чт ноя 15, 2007 14:05 ] |
Заголовок сообщения: | |
profiT писал(а): Варнак писал(а): И наконец: а что посмотреть из OpenGL оберток для СПФ, чтобы, опять-таки, не углубляться в дебри Win-программирования? basicdraw -- openGL-обёртка для пиксельного рисования[/url] А нельзя ли сопроводить это списком слов, предоставляющих конечный функционал, со их стековой нотацией и хотя бы кратким описанием функций. А пока я никак не могу сказать, что то, что я вижу в basicdraw.f , помогает использовать OpenGL из SPF. |
Автор: | profiT [ Чт ноя 15, 2007 14:59 ] |
Заголовок сообщения: | |
--- |
Автор: | Варнак [ Пт ноя 16, 2007 13:08 ] |
Заголовок сообщения: | |
profiT писал(а): Код: CLS ( -- ) PIXEL ( x y -- ) SET-COLOR ( r g b -- ) SET-SIZE ( w h -- ) START-DRAW ( xt -- ) Смотрите также пример. Код: :NONAME \ здесь рисовать ; START-DRAW Есть ещё обработка клавиш, но тут по-любому смотрите пример -- там очень коротко и ничего такого страшного. Ну что ж: не обращаясь к дополнительным источникам информации и потратив около получаса, с использованием basicdraw не сумел написать слово, которое бы создало окно для рисования, что-то нарисовало и закрыло окно. Примерно даже понимаю почему не сумел: поленился разбираться в хитросплетениях передачи параметров слову STAR-DRAW для случая когда если необходимо скомпилировать в форт систему слово, которое будет что-то рисовать, когда его вызовут. Может когда-ниубдь и разберусь, но сейчас, увы, не до этого. Обратился после этого к ~pi/lib/opengl. За это же время сумел создать слово, которое открыло окно, что-то нарисовало и закрыло окно. Но возникли следующие вопросы: 1) как создать окно нужного размера в нужном месте экрана? 1') как создавать несколько окон и рисовать в разные, переключаясь между ними по мере необходимости? 2) как добиться того, чтобы после закрытия окна не закрывался и СПФ, откуда это слово запускалось? 3) в чем сакральный смысл слова "ShiftMatrix", удаление которого из текста примера (слова "main"), приводит к прекращению отрисовки (к этому же приводит и передача ему трех нулевых параметров)? 4) можно ли как "одним махом" отобразить поготовленный растр? Если эти (1' и 4) проблемы будет решены в рамках модуля ~pi/lib/wincon/..., то и это вполне устроило бы. Пока что им и пользуюсь, отрисовывая растр по точкам. |
Автор: | Kopa [ Пт ноя 16, 2007 14:20 ] |
Заголовок сообщения: | |
Варнак писал(а): ...
4) можно ли как "одним махом" отобразить поготовленный растр? Если эти (1' и 4) проблемы будет решены в рамках модуля ~pi/lib/wincon/..., то и это вполне устроило бы. Пока что им и пользуюсь, отрисовывая растр по точкам. Может Вам попробовать пакетный графический редактор ( находится на странице forth.org.ru/~yz ) На базе этого кода и еще tprint этого же автора н-ое время назад накидал проект Простого Node редактора ( найти можно в разделе подфорума SPF) По Приведенным Вам пунктам у него еще не вся функциональность, но попробовать его возможности уже можно. P.S. Проект, пока сырой и как обычно говорят:) нет много времени, что бы продолжить его развитие. Пока рисует в монохроме и есть еще недоработанные места. |
Автор: | profiT [ Пт ноя 16, 2007 16:53 ] |
Заголовок сообщения: | |
--- |
Автор: | ygrek [ Сб ноя 17, 2007 16:26 ] |
Заголовок сообщения: | |
Можно также попробовать ~ygrek/lib/wfl/opengl - либа берёт на себя создание окна и встраивание окна как контрола в диалог WFL. В частности basicdraw есть надстройкой над этой либой. Варнак писал(а): 1) как создать окно нужного размера в нужном месте экрана?
1') как создавать несколько окон и рисовать в разные, переключаясь между ними по мере необходимости? 2) как добиться того, чтобы после закрытия окна не закрывался и СПФ, откуда это слово запускалось? 3) в чем сакральный смысл слова "ShiftMatrix", удаление которого из текста примера (слова "main"), приводит к прекращению отрисовки (к этому же приводит и передача ему трех нулевых параметров)? 4) можно ли как "одним махом" отобразить поготовленный растр? Применительно к basicdraw 1) 200 100 SET-SIZE 1') создавать окна из нескольких потоков, или проще разбить одно окно на логические области, или сделать эти окна child'ами 2) из коробки 4) есть ~profit/lib/wfl/opengl/GLImage.f, но он грузит растр тоже из BMP. Суть в том что у этого растра может быть миллион с хвостиком форматов. Если вы скажем подготовите растр чтобы он совпадал с форматом который принимают gl-функции то думаю проблем добавить его обработку в glimage не будет. |
Автор: | Варнак [ Вс ноя 18, 2007 09:07 ] |
Заголовок сообщения: | |
ygrek писал(а): Можно также попробовать ~ygrek/lib/wfl/opengl - либа берёт на себя создание окна и встраивание окна как контрола в диалог WFL. В частности basicdraw есть надстройкой над этой либой. Спасибо. посмотрю. Может там найдутся слова более очевидные для использования. (Я чуть позже опишу подробнее, почему у меня не получается использовать basicdraw в привычной для меня манере) Цитата: 1') создавать окна из нескольких потоков, ... или сделать эти окна child'ами Вот об этом подробнее, пожалуйста. Цитата: 2) из коробки этой реплики вообще не понял Цитата: 4) Если вы скажем подготовите растр чтобы он совпадал с форматом который принимают gl-функции то думаю проблем добавить его обработку в glimage не будет.
Подготовлю, а каковы эти форматы? |
Автор: | ygrek [ Вс ноя 18, 2007 11:17 ] |
Заголовок сообщения: | |
Варнак писал(а): Цитата:1') создавать окна из нескольких потоков, ... или сделать эти окна child'ами Вот об этом подробнее, пожалуйста. У каждого главного окна есть цикл обработки сообщений, который крутится всё время жизни окна. Если вам надо 2 toplevel окна то нужны два цикла. Единственный способ чтобы эти два цикла работали одновременно и независимо - запустить их в разных потоках. Если же вы создаёте окна child'ами по отношению к какому либо другому окну то у них нет своего цикла обработки, за них получение сообщений делает родитель. Пример GL окон встроенных в диалог - ~ygrek/prog/wfl/grid.f. Но как я понял вы хотите чтобы окна были перекрывающимися. Это наверное можно сделать и для child'ов.. Но вариант с потоками по-моему проще. Вот, где-то так, если не ошибаюсь. Варнак писал(а): Цитата: 4) Если вы скажем подготовите растр чтобы он совпадал с форматом который принимают gl-функции то думаю проблем добавить его обработку в glimage не будет.
Подготовлю, а каковы эти форматы? http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawpixels.html |
Страница 3 из 4 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |