Помогите новичку
-
Ага, и человеку придется изучать еще больше премудростей. Впрочем каждый набивает свои шишки - лично я убунту не использую совсем.
Да я люблю и премудрости изучать, и шишки набивать. Убунту получил "в наследство", с тех пор ею и пользуюсь, ибо привык. Даже не в курсе, в чем ее отличие от Debian, к примеру. Просто не разбирался. Для десктопа подходит, главное - вирусня с флешек из внешнего мира не лезет и легко убивается ручками. А глубже я пока не копал.
Еще вопрос. Есть среди системных функция типа delay? Чтобы выполнять последовательность каких-то команд с задержкой. Нужно обрабатывать массив, попутно визуализируя это на экране таким образом, чтобы пользователь визуально видел процесс обработки, а не получал готовый результат, возможно, не имея понятия, каким образом он получился.
Вопрос нубский, может, что-то такое есть даже не в системных командах.
Вопрос нубский, может, что-то такое есть даже не в системных командах.
Функция 51. Один поток делает и оставляет отметки, второй отображает. Оба имеют доступ к одному адресному пространству.
ф.5
eax = 5 - номер функции
ebx = время в сотых долях секунды
eax = 5 - номер функции
ebx = время в сотых долях секунды
Serge
Насколько я понял человеку нужна не просто задержка, а именно параллельная обработка и отображение.
Насколько я понял человеку нужна не просто задержка, а именно параллельная обработка и отображение.
Mario,
Спс, но сойдет и так. Размер матрицы, которую нужно обрабатывать, небольшой - от 5 до 10 ячеек.
Нужно просто сделаать несколько циклов, во время которых распределить определенным образом содержимое ячеек по матрице (числа). Привести матрицу в устойчивое положение, когда изменять значения ячеек будет не нужно. И даже лучше, если будет одной функцией (потоком) и обрабатываться, и отображаться. Из соображений наглядности. Либо затормаживать оба потока... В данном случае в этом просто нет необходимости, задача простенькая.
http://scampada.blogspot.com/
Спасибо всем ответившим.
ЗЫ Хотя насчет двух потоков я подумаю, возможно, так будет оптимальнее.
Дело двигается понемногу
Спс, но сойдет и так. Размер матрицы, которую нужно обрабатывать, небольшой - от 5 до 10 ячеек.
Нужно просто сделаать несколько циклов, во время которых распределить определенным образом содержимое ячеек по матрице (числа). Привести матрицу в устойчивое положение, когда изменять значения ячеек будет не нужно. И даже лучше, если будет одной функцией (потоком) и обрабатываться, и отображаться. Из соображений наглядности. Либо затормаживать оба потока... В данном случае в этом просто нет необходимости, задача простенькая.
http://scampada.blogspot.com/
Спасибо всем ответившим.
ЗЫ Хотя насчет двух потоков я подумаю, возможно, так будет оптимальнее.
Дело двигается понемногу
Spoiler:
Нарыл в интернете алгоритм для генерации случайных чисел.
Можно ли ему доверять или в среде КоОС есть более "общепринятый" алгоритм? И что-то я не пойму, зачем цифра 16 после ret. Возвращать в любом случае должен 32 бит...
Code: Select all
;xorshift a,b,c,d
;generate random 32-bit number based on seeds a,b,c and d
;returns new seeds a,b,c,d in eax,ebx,ecx,edx respectively
;edx is usable as random result
;proc xorshift,.a,.b,.c,.d
xorshift:
.a equ esp+4
.b equ esp+8
.c equ esp+12
.d equ esp+16
mov eax,[esp+4]
shl eax,15
xor eax,[esp+4]
mov edx,[esp+16]
shr edx,21
xor edx,[esp+16]
mov ebx,eax
shr eax,4
mov ecx,[esp+16]
xor eax,ebx
mov ebx,[esp+12]
xor edx,eax
mov eax,[esp+8]
ret 16
В Колибри нет стандартного генератора псевдослучайных чисел.
ret 16 - увеличивает указатель стека (содержимое регистра ESP) на 16 байт, а потом берет значение для возврата к вызвавшему его коду.
В приведенном примере четыре значения, размером в dword, передаются процедуре через стек. Значения заносятся перед вызовом процедуры.
ret 16 - увеличивает указатель стека (содержимое регистра ESP) на 16 байт, а потом берет значение для возврата к вызвавшему его коду.
В приведенном примере четыре значения, размером в dword, передаются процедуре через стек. Значения заносятся перед вызовом процедуры.
> ret 16 - увеличивает указатель стека (содержимое регистра ESP) на 16 байт, а потом берет значение для возврата к вызвавшему его коду.
Разве не наоборот? Сначала выталкивает значение, а потом увеличивает указатель стека на это число байт.
Разве не наоборот? Сначала выталкивает значение, а потом увеличивает указатель стека на это число байт.
А да, точно, чет я тормознул.
По поводу перерисовки окна:
Можно ли перерисовывать не всё окно, а лишь некоторую часть?
Например, при активации\деактивации окна надо перерисовать только заголовок и границы,
а клиентскую часть не всегда нужно.
Насчёт libimg:
Я только в Wiki нашёл один пример, но многое ещё не понятно.
Нет ли где подробного описания?
Моя программа пока работает только с bmp 24 bpp. Она открывает файл с изображением,
далее можно применить к нему выбранный фильтр(или несколько фильтров),
а затем уже обработанное изображение можно сохранить в файл.
Я бы хотел иметь возможность работать с форматами изображений, поддерживаемыми libimg.
Тогда программа могла бы работать даже просто как конвертер.
Некоторые скриншоты этой программы:
Можно ли перерисовывать не всё окно, а лишь некоторую часть?
Например, при активации\деактивации окна надо перерисовать только заголовок и границы,
а клиентскую часть не всегда нужно.
Насчёт libimg:
Я только в Wiki нашёл один пример, но многое ещё не понятно.
Нет ли где подробного описания?
Моя программа пока работает только с bmp 24 bpp. Она открывает файл с изображением,
далее можно применить к нему выбранный фильтр(или несколько фильтров),
а затем уже обработанное изображение можно сохранить в файл.
Я бы хотел иметь возможность работать с форматами изображений, поддерживаемыми libimg.
Тогда программа могла бы работать даже просто как конвертер.
Некоторые скриншоты этой программы:
Нет гарантии, что поверх окна не было выведено другого окна. Потому потере/возврате фокуса окну его нужно перерисовывать полностью.0CodErr wrote:По поводу перерисовки окна:
Можно ли перерисовывать не всё окно, а лишь некоторую часть?
Например, при активации\деактивации окна надо перерисовать только заголовок и границы,
а клиентскую часть не всегда нужно.
Однако с целью уменьшения эффекта "моргания" можно не выводить фон окна установив флаг:
Code: Select all
C = 1 - не закрашивать рабочую область при отрисовке окна
смотреть описание функции 0 в документации.
Рабочую же область заполнять самостоятельно. Т.е. там где раньше рисовался фон придется самостоятельно зарисовывать прямоугольные области функцией 13.
По поводу libimg ничего не скажу, потому что не пользовался. Мои программы zSea и OpenDialog, а также доработанный мной Icon используют альтернативные плагины. Один формат - один плагин.
libimg поддерживает на сегодня больше форматов, чем у меня есть плагинов и применение в вышеприведенной программе именно libimg пожалуй более оправдано.
Могу лишь посоветовать посмотреть исходники KIV.
Обновил тег с кодом в этой странице, после изменений на вики тэг asm стал писатся по другому и все слипалось в сплошной кусок текста.0CodErr wrote:Я только в Wiki нашёл один пример, но многое ещё не понятно.Нет ли где подробного описания?
Более понятного объяснения нет, потому что автор библиотеки покинул проэкт, на странице записано все что я успел узнать.
На сколько я знаю libimg только раскодирует изображения из разных форматов в RBG, насчет обратной перекодировки точно не знаю есть ли она там. Потому возможен вариант, что открывать можно будет разные форматы а сохранять все преобразованные изображения в bmp.0CodErr wrote:Она открывает файл с изображением,далее можно применить к нему выбранный фильтр(или несколько фильтров), а затем уже обработанное изображение можно сохранить в файл.
Ещё есть пример совместного использования libio и libimg. Я буквально в ревизии 2405 привёл его в рабочее состояние. Думаю, это именно то, что тебе нужно.0CodErr wrote:Я только в Wiki нашёл один пример, но многое ещё не понятно.
Пока нет. Статья ещё не готова. Ты можешь написать мне в джаббер (указан в профиле) или ЛС, а также спросить в соответствующей теме. Всё-таки совсем без разработчиков libimg не осталась.0CodErr wrote:Нет ли где подробного описания?
С открытием и декодированием libimg поможет. Можно также встроенными функциями преобразовать изображение в RGB форму. Для этого есть схожие функции do_rgb, to_rgb, to_rgb2.0CodErr wrote:Моя программа пока работает только с bmp 24 bpp. Она открывает файл с изображением,
далее можно применить к нему выбранный фильтр(или несколько фильтров),
а затем уже обработанное изображение можно сохранить в файл.
Кодирования на данный момент нет никакого. Обещать сейчас ничего не буду. Функции кодирования все как одна делают
Code: Select all
xor eax, eax
ret
Как я уже написал, дело может встать только за кодированием. Разберись пока с общей логикой работы libimg, а там посмотрим. Чем чёрт не шутит.0CodErr wrote:Я бы хотел иметь возможность работать с форматами изображений, поддерживаемыми libimg.
Тогда программа могла бы работать даже просто как конвертер.
Если это не курсовая, которую нужно сдать и забыть, думаю, имеет смысл создать отдельную тему.
Who is online
Users browsing this forum: No registered users and 7 guests