Исправил глюк с вылетом программы, теперь вроди работает нормально.
Документацию обновлю позже.
Функции рисования 2d графики (библиотеки vectors и buf2d)
-
- Attachments
-
-
vectors_090607b.7z (11.01 KiB)Downloaded 259 times
-
Заметил, что все программы использующие функцию рисующую кривую Безье из библиотеки не работают. А в эмуляторе KlbrInWin все функции работают. Что означает ошибка:
Page fault - Недостаток страницы
Page fault - Недостаток страницы
Возможно указатель вышел за пределы выделенного участка памяти.
У меня всё кроме самолёта не работает.
Так и есть, дело в том что там пока не используются функции рисования Безье.Атауальпа wrote:У меня всё кроме самолёта не работает
Недавно вычислил "глючное" место. Оказалось, что первая точка по координате Y имеет очень большое значение. Потому как сказал Mario, программа вылазила на чужую память. В эмуляторе этого глюка не заметно, т. к. WinAPI функции при неправильных координатах не вылетают (что с одной стороны хорошо, а с другой плохо: нельзя отлаживать программы если не видно глюков, тормозится рисование).
В общем проверял несколько раз алгоритм, и устранил глюк добавлением в функцию всего 1-й строки кода:
Code: Select all
finit
- Attachments
-
-
vectors.obj (2.73 KiB)
- с этим файлом работает
Downloaded 254 times
-
Теперь работает, но со странным глюком.
Когда запущены часы или самолёт, во всех других приложениях не работают клавиатура и мышь! Я не могу ничего сделать ни с каким другим окном, пока не закрою демку. По клавише Win запускается меню, но ни один из его пунктов ничего не запускает ни мышью, ни клавиатурой.
Когда запущены часы или самолёт, во всех других приложениях не работают клавиатура и мышь! Я не могу ничего сделать ни с каким другим окном, пока не закрою демку. По клавише Win запускается меню, но ни один из его пунктов ничего не запускает ни мышью, ни клавиатурой.
немного обновил библиотеку:
1) работает масштабирование контуров (раньше масштаб всегда был = 1.0, даже если на входе подавалось другое число)
2) добавил функцию вывода векторного шрифта (в своем формате, хотелось-бы сделать поддержку стандартных, но до этого пока наверное очень далеко)
---
В примерах самолет и часы пока не нашел как устранить проблемы связанные с таймером.
В общем изменений не много.
1) работает масштабирование контуров (раньше масштаб всегда был = 1.0, даже если на входе подавалось другое число)
2) добавил функцию вывода векторного шрифта (в своем формате, хотелось-бы сделать поддержку стандартных, но до этого пока наверное очень далеко)
---
В примерах самолет и часы пока не нашел как устранить проблемы связанные с таймером.
В общем изменений не много.
- Attachments
-
-
vectors_090915.7z (12.21 KiB)Downloaded 262 times
-
версия 17.09.09:
1) вызов функции vect_conv_cont делается перед прорисовкой контуров автоматически (это упрощает написание программ)
2) изменен способ задания размера текста, и сама функция вывода текста доработана (символ 13 работает как перевод строки)
из недостатков:
1) пока шрифт не в отдельном файле
2) в шрифте есть не все символы
1) вызов функции vect_conv_cont делается перед прорисовкой контуров автоматически (это упрощает написание программ)
2) изменен способ задания размера текста, и сама функция вывода текста доработана (символ 13 работает как перевод строки)
из недостатков:
1) пока шрифт не в отдельном файле
2) в шрифте есть не все символы
- Attachments
-
-
vectors_090917.7z (13.97 KiB)Downloaded 245 times
-
Самолет убил систему запущенную под Qemu. Я думал, что такое невозможно.
Итак ошибки:
1) samolot.asm
2) clock.asm
Вопрос на засыпку кто видит ошибки? Я вижу, но не скажу.
Как там было на bash.org.ru:
Итак ошибки:
1) samolot.asm
Code: Select all
draw_window:
push eax ebx ecx edx
mcall 12,1
xor eax,eax
mov ebx,50*65536+320
mov ecx,30*65536+250
mov edx,0
or edx,0x33000000
mov edi,hed
mcall
mov eax,4 ;рисование текста
mov ebx,5*65536+5
mov ecx,0xffff00
or ecx,0x80000000
mov edx,txtInfo
mcall
call draw_objects
mcall 12,1
pop edx ecx ebx eax
ret
Code: Select all
draw_window:
push eax ebx ecx edx
mcall 12,1
xor eax,eax
mov ebx,50*65536+320
mov ecx,30*65536+250
mov edx,0+0x33000000
mov edi,hed
mcall
mov eax,4 ;рисование текста
mov ebx,5*65536+5
mov ecx,0xffff00
or ecx,0x80000000
mov edx,txtInfo
mcall
call draw_objects
mcall 12,1
pop edx ecx ebx eax
ret
Как там было на bash.org.ru:
xxx: Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
Распространённый-то он распространённый, но это не влияет на тот факт, что этот способ не работает (неоднократно проверял... пришлось писать отладчик).Mario79 wrote:Как там было на bash.org.ru:xxx: Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
P.S. Да, а копипастить при программировании вообще не стоит. Хотя в данном случае скорее имеет место быть банальная опечатка.
Ушёл к умным, знающим и культурным людям.
Видим и намекнем. Незачем программам по 2 окна.
кажись я понял в чем юмор:
1)2)
1)
Code: Select all
push eax ebx ecx edx ;в начале функции
...
mov edi,hed ;в нутри функции, хотя edi не в стеке
Code: Select all
mcall 12,1 ;в начале
...
mcall 12,1 ;в конце, должно быть mcall 12,2
первое не критично, если по ходу программы ты в edi не хранишь нечто важное, хотя в твоем варианте, наверное проще написать pushad/popad
Исправил ошибки в примерах, немного изменил 2 функции в библиотеке. Самое главное перенес данные по шрифту в отдельный файл. Теперь можно создавать файлы шрифтов, не сидящие внутри kex файла.
Если разобрать формат ttf, то думаю можно сделать прогрмму для конвертирования этих файлов, в таком случае не нужно будет создавать свои шрифты с 0 (тем более что я так до конца не заполнил все символы).
Если разобрать формат ttf, то думаю можно сделать прогрмму для конвертирования этих файлов, в таком случае не нужно будет создавать свои шрифты с 0 (тем более что я так до конца не заполнил все символы).
- Attachments
-
-
vectors_090919.7z (15.48 KiB)Downloaded 252 times
-
Пример с отображением шрифта не очень удачный т.к. при непосредственном выводе без буферизации в ОЗУ глифов медленно. Конечно, лучше разобраться с существующими форматами шрифтов (хотя бы одним). У меня нет достаточно времени, что бы этим заняться...
Who is online
Users browsing this forum: Ahrefs [Bot] and 4 guests