Page 3 of 4

Posted: Wed Mar 29, 2006 11:38 am
by Heavyiron
Veliant, выложи где-нибудь свои скины для скачивания.

Posted: Wed Mar 29, 2006 11:40 am
by Veliant
Щас выложу. У меня нова трабла хотел сделать панель цвета A60000(красный), но заместо этого панель сверху нужного цвета, а бОльшая часть - голубая. Из-за чего так?
P.S.
И ещё:
если использовать последний скин то придется некоторые проги переделать т.к. они рисуют компоненты прямо по заголовку (т.к. он шире обычного)

Posted: Wed Mar 29, 2006 11:45 am
by willow
Попоробуй цвет без нулевых компонетов, скажем A60101

Posted: Wed Mar 29, 2006 11:48 am
by Veliant

Posted: Wed Mar 29, 2006 11:49 am
by Heavyiron
Тоже сталкивался с таким глюком. Для панели можно выставить не любой цвет :(

Posted: Wed Mar 29, 2006 12:12 pm
by mike.dld
Глюки с цветом панели связаны, видимо, с тем, что компоненты цвета уменьшаются/увеличиваются не по отдельности, а все вместе.
Пример кода:

Code: Select all

        sub eax,0x00010101
В таком случае, если в EAX находилось число 0x00A60000, то станет оно равным 0x00A4FEFF, что, естественно, больше похоже на синий/голубой, а не на красный.
Чтобы исправить ситуацию, обычно делают, например, так:

Code: Select all

        mov ecx,3
    @@: dec al
        jns .lp1
        xor al,al
  .lp1: ror eax,8
        loop @b
        shr eax,8

Posted: Wed Mar 29, 2006 6:33 pm
by Aqwas
подскажите как можно панельку пошире сделать??? если конечно это возможно...

Posted: Wed Mar 29, 2006 6:36 pm
by Veliant
В @Panel наверно где то зарыто. скорее всего рядом с цветом.

Posted: Wed Mar 29, 2006 7:20 pm
by mike.dld
AqwAS
Ты имеешь в виду по высоте? Пока что это невозможно. Ты, конечно, можешь увеличить высоту окна панели, но нижняя часть при этом отрисовываться не будет и панель будет выглядеть такой же узкой

Posted: Wed Mar 29, 2006 7:20 pm
by Mario79
mike.dld
Я спрашивал не тебя. Соответственно отвечать должен был автор.
И хватит уже играть роль суперцензора. Вот откроешь сайт http://www.kolibrios.org, вот там, пожалуйста, затыкай рот, кому хочешь и когда хочешь. Тем более это будет полностью твой сайт...
А здесь люди имеют право говорить все, что они думают. Если ты не перестанешь заниматься той деятельностью, которую ты развел здесь, то я могу и забанить тебя и без всяких опросов. Это крайняя мера и она будет использована лишь в последнюю очередь.

Veliant
Heavyiron
Для создания псевдотрехмерности панель рисуется не одним цветом. Сверху и снизу (по 2 линии) цвета изменены относительно цвета середины. Это приходиться учитывать, когда вы пытаетесь применять чистые цвета. Не для всех цветов правильно срабатывает изменение цвета.

AqwAS
А ты посмотри код внимательней и думаю, догадаешься, где поправить нужно, правда придется править код в нескольких местах сразу, так как панель состоит из нескольких частей.

Posted: Wed Mar 29, 2006 11:46 pm
by Aqwas
в версии ме 0.75 кажется (точно не помню) была панелька linux-подобная... я много раз код отрисовки смотрел..., но разницу не нашёл... в чём-то конечно есть, но все игры с цифрами илши вообще ничего не давали или панель не работала...

простите конечно за глупые вопросы, но я только начал вникать в систему...

Posted: Thu Mar 30, 2006 8:20 pm
by Mario79
Так я посмотрел код изменять нужно, в 4 местах. Это только чтобы окно рисовалось на другой размер, а уж высоту остальных деталей найдете сами, а то будет маразмом описывать все здесь.
1)
newline3:
add edx,[esi]
add esi,4

mov eax,38
int 0x40
add ecx,1*65536+1
cmp cx,15 - здесь рисуется центральная часть панели, начальное значение 5, отсюда 15-5=10
jb newline3
2)
stripe:
dd -0x010101
dd -0x010101
dd -0x020202
dd -0x010101
dd -0x000000

dd 0x000000
dd 0x010101
dd 0x020202
dd 0x010101
dd 0x010101
здесь должно быть столько строк сколько рисуется в первой процедуре. Они определяют псевдотрехмерность формы панели.

3)
set_variables:

pusha

mov [b_size_y],dword 38
cmp [graph_text],1
jne noy2
mov [b_size_y],dword 18 - тут нужно прописать высоту всей панели
noy2:
4)
no_def_width:

mov ebx,eax
mov [screenxy],ebx
shr ebx,16
sub ax,38
shl eax,16
mov ecx,eax
add ecx,0*65536+38
cmp [graph_text],1
jne no_text_1
mov cx, 18 - здесь желательно тоже прописать высоту
add ecx,20*65536 - а вот старшие 16 бит ecx определяют где будет начинаться окно, смотрите как это вычисляется в коде выше.
no_text_1:
mov eax, 0 ; DEFINE AND DRAW WINDOW
mov edx, [wcolor]
or edx, 0x01000000 ; do not draw the window
mov esi, [wcolor]
or esi, 0x01000000 ; unmovable window
mov edi, [wcolor]
int 0x40

Вот и все, вроде не особо сложно.
А для того чтобы было проще отлаживать код можно пользоваться отладчиком который написал Diamond.
http://meos.sysbin.com/viewtopic.php?t= ... sc&start=0
Тем более, что он написал для него весьма подробное руководство.

Posted: Thu Mar 30, 2006 9:54 pm
by Aqwas
огромное спасибо... буду пробовать...

Posted: Fri Mar 31, 2006 10:25 pm
by Aqwas
все сделал... работает... теперь хочу картинку поставить на кнопку меню, но почемуто она не отображается... вместо картинки разноцветные точки!

Posted: Sat Apr 01, 2006 2:52 pm
by Mario79
AqwAS
Чтобы вывести картинку тебе придется использовать формат BMP и к тому же перевернуть картинку по горизонтали и вертикали пред использованием, плюс учитывать сдвиг, так как в начале идут служебные данные.
Либо есть возможность использовать библиотеку Павлюшина Евгения ASCL - в ней кроме вывода BMP можно выводить и GIF картинки и там не нужно манипулировать с картинкой. Правда описание не очень подробное, так что придется смотреть реализацию кода в приложенных демках. Сама библиотека ASCL включена в исходники Колибри. Правда, там она в нескольких версиях, просто в более поздних отсутствовали некоторые демо приложения.