Помогите новичку

Applications development, KoOS API questions
  • Да я люблю и премудрости изучать, и шишки набивать. Убунту получил "в наследство", с тех пор ею и пользуюсь, ибо привык. Даже не в курсе, в чем ее отличие от Debian, к примеру. :) Просто не разбирался. Для десктопа подходит, главное - вирусня с флешек из внешнего мира не лезет и легко убивается ручками. А глубже я пока не копал. :mrgreen:
  • Еще вопрос. Есть среди системных функция типа delay? Чтобы выполнять последовательность каких-то команд с задержкой. Нужно обрабатывать массив, попутно визуализируя это на экране таким образом, чтобы пользователь визуально видел процесс обработки, а не получал готовый результат, возможно, не имея понятия, каким образом он получился.
    Вопрос нубский, может, что-то такое есть даже не в системных командах. :)
  • Функция 51. Один поток делает и оставляет отметки, второй отображает. Оба имеют доступ к одному адресному пространству.
  • ф.5
    eax = 5 - номер функции
    ebx = время в сотых долях секунды
  • Serge
    Насколько я понял человеку нужна не просто задержка, а именно параллельная обработка и отображение.
  • Mario,
    Спс, но сойдет и так. Размер матрицы, которую нужно обрабатывать, небольшой - от 5 до 10 ячеек.
    Нужно просто сделаать несколько циклов, во время которых распределить определенным образом содержимое ячеек по матрице (числа). Привести матрицу в устойчивое положение, когда изменять значения ячеек будет не нужно. И даже лучше, если будет одной функцией (потоком) и обрабатываться, и отображаться. Из соображений наглядности. Либо затормаживать оба потока... В данном случае в этом просто нет необходимости, задача простенькая. :)
    http://scampada.blogspot.com/

    Спасибо всем ответившим.

    ЗЫ Хотя насчет двух потоков я подумаю, возможно, так будет оптимальнее.

    Дело двигается понемногу :)
    Spoiler:Image
  • Нарыл в интернете алгоритм для генерации случайных чисел.

    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
    Можно ли ему доверять или в среде КоОС есть более "общепринятый" алгоритм? И что-то я не пойму, зачем цифра 16 после ret. :roll: Возвращать в любом случае должен 32 бит...
  • В Колибри нет стандартного генератора псевдослучайных чисел.

    ret 16 - увеличивает указатель стека (содержимое регистра ESP) на 16 байт, а потом берет значение для возврата к вызвавшему его коду.
    В приведенном примере четыре значения, размером в dword, передаются процедуре через стек. Значения заносятся перед вызовом процедуры.
  • > ret 16 - увеличивает указатель стека (содержимое регистра ESP) на 16 байт, а потом берет значение для возврата к вызвавшему его коду.
    Разве не наоборот? Сначала выталкивает значение, а потом увеличивает указатель стека на это число байт.
  • А да, точно, чет я тормознул. :?
  • По поводу перерисовки окна:
    Можно ли перерисовывать не всё окно, а лишь некоторую часть?
    Например, при активации\деактивации окна надо перерисовать только заголовок и границы,
    а клиентскую часть не всегда нужно.

    Насчёт libimg:
    Я только в Wiki нашёл один пример, но многое ещё не понятно.
    Нет ли где подробного описания?

    Моя программа пока работает только с bmp 24 bpp. Она открывает файл с изображением,
    далее можно применить к нему выбранный фильтр(или несколько фильтров),
    а затем уже обработанное изображение можно сохранить в файл.

    Я бы хотел иметь возможность работать с форматами изображений, поддерживаемыми libimg.
    Тогда программа могла бы работать даже просто как конвертер.

    Некоторые скриншоты этой программы:
    ImageImage
    ImageImageImageImage
    ImageImageImageImage
  • 0CodErr wrote:По поводу перерисовки окна:
    Можно ли перерисовывать не всё окно, а лишь некоторую часть?
    Например, при активации\деактивации окна надо перерисовать только заголовок и границы,
    а клиентскую часть не всегда нужно.
    Нет гарантии, что поверх окна не было выведено другого окна. Потому потере/возврате фокуса окну его нужно перерисовывать полностью.
    Однако с целью уменьшения эффекта "моргания" можно не выводить фон окна установив флаг:

    Code: Select all

    C = 1 - не закрашивать рабочую область при отрисовке окна

    смотреть описание функции 0 в документации.
    Рабочую же область заполнять самостоятельно. Т.е. там где раньше рисовался фон придется самостоятельно зарисовывать прямоугольные области функцией 13.

    По поводу libimg ничего не скажу, потому что не пользовался. Мои программы zSea и OpenDialog, а также доработанный мной Icon используют альтернативные плагины. Один формат - один плагин.

    libimg поддерживает на сегодня больше форматов, чем у меня есть плагинов и применение в вышеприведенной программе именно libimg пожалуй более оправдано.

    Могу лишь посоветовать посмотреть исходники KIV.
  • 0CodErr wrote:Я только в Wiki нашёл один пример, но многое ещё не понятно.Нет ли где подробного описания?
    Обновил тег с кодом в этой странице, после изменений на вики тэг asm стал писатся по другому и все слипалось в сплошной кусок текста.
    Более понятного объяснения нет, потому что автор библиотеки покинул проэкт, на странице записано все что я успел узнать.
    0CodErr wrote:Она открывает файл с изображением,далее можно применить к нему выбранный фильтр(или несколько фильтров), а затем уже обработанное изображение можно сохранить в файл.
    На сколько я знаю libimg только раскодирует изображения из разных форматов в RBG, насчет обратной перекодировки точно не знаю есть ли она там. Потому возможен вариант, что открывать можно будет разные форматы а сохранять все преобразованные изображения в bmp.
  • 0CodErr wrote:Я только в Wiki нашёл один пример, но многое ещё не понятно.
    Ещё есть пример совместного использования libio и libimg. Я буквально в ревизии 2405 привёл его в рабочее состояние. Думаю, это именно то, что тебе нужно.
    0CodErr wrote:Нет ли где подробного описания?
    Пока нет. Статья ещё не готова. Ты можешь написать мне в джаббер (указан в профиле) или ЛС, а также спросить в соответствующей теме. Всё-таки совсем без разработчиков libimg не осталась.
    0CodErr wrote:Моя программа пока работает только с bmp 24 bpp. Она открывает файл с изображением,
    далее можно применить к нему выбранный фильтр(или несколько фильтров),
    а затем уже обработанное изображение можно сохранить в файл.
    С открытием и декодированием libimg поможет. Можно также встроенными функциями преобразовать изображение в RGB форму. Для этого есть схожие функции do_rgb, to_rgb, to_rgb2.

    Кодирования на данный момент нет никакого. Обещать сейчас ничего не буду. Функции кодирования все как одна делают

    Code: Select all

    xor     eax, eax
    ret
    0CodErr wrote:Я бы хотел иметь возможность работать с форматами изображений, поддерживаемыми libimg.
    Тогда программа могла бы работать даже просто как конвертер.
    Как я уже написал, дело может встать только за кодированием. Разберись пока с общей логикой работы libimg, а там посмотрим. Чем чёрт не шутит.

    Если это не курсовая, которую нужно сдать и забыть, думаю, имеет смысл создать отдельную тему.
  • Who is online

    Users browsing this forum: No registered users and 7 guests