Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб ноя 17, 2018 4:18 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 30 сообщений ]  На страницу Пред. 1 2
Автор Сообщение
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Ср апр 11, 2018 12:42 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
DTP Editor
by veliant

Вложение:
dtp.png
dtp.png [ 22.03 КБ | 1572 просмотра ]

Вложение:
DTP_Editor.7z [160.5 КБ]
29 скачиваний

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Ср апр 11, 2018 9:43 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср апр 15, 2015 11:13 pm
Сообщения: 251
Ого!! Классно!)


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 1:26 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Появилась реакция на кнопки закрытия и минимизации.
Теперь название скина выводится в заголовок.
Спойлер: Показать
Вложение:
skins_with_caption.PNG
skins_with_caption.PNG [ 75.84 КБ | 1514 просмотров ]
Вложение:
skins_with_caption1.PNG
skins_with_caption1.PNG [ 82.88 КБ | 1514 просмотров ]
Вложение:
sknview.7z [38.1 КБ]
30 скачиваний


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 1:54 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
Мм, жир. Идея с названием в заголовке отличная.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 1:57 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
Мне кажется заголовок на пару пикселей выше чем в системе. Я сужу по win 3.11. Или мне кажется?

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 2:50 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Leency, да, так и есть.
Спойлер: Показать
Вложение:
1.PNG
1.PNG [ 21.35 КБ | 1500 просмотров ]
Только странно, что при этом позиция по горизонтали — верная, а не на 2 пикселя левее.
Функция dtext ожидает координаты в ebx
Код:
; ebx = output coordinates XXXXYYYY h
Вот код из DrawCaption
Код:
    movzx ebx, Skin.Margins.Left
    shl ebx, 16
    mov bx, Skin.Margins.Top
Я беру ровно значения из Skin.Margins, ничего от себя не прибавляя.
Для меня это больше похоже на баг с выводом заголовка в самой KolibriOS.
Ну а скины, возможно, потом стали просто "подгонять" лишь бы работало, не обращая внимания на возможный баг в системе.

Если это действительно баг — нужно править Margins в скинах или написать в документации, что реальные координаты Margins.Top на 2 пикселя ниже, первое сделать будет правильнее, хотя и дольше.


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 3:33 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
Я понял. Скорее всего это "костыль" в ядре добавленный после увеличения шрифта в заголовке, чтобы не фиксить сами скины.
Я бы этот костыль убрал.

P.S. Любой эмуль должен эмулировать также баги системы)

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 4:09 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Leency писал(а):
Скорее всего это "костыль" в ядре добавленный после увеличения шрифта в заголовке
Возможно, что так. Или просто проблемы с расчётом координаты Top.
Смотрим вот тут: http://websvn.kolibrios.org/blame.php?r ... #line-2234
Фактически, формула примерно такая:
Код:
Top = (_skinh - _skinmargins.bottom - _skinmargins.top) / 2 + _skinmargins.top - 8
Причём, для некоторых скинов работает правильно
Спойлер: Показать
Вложение:
1.PNG
1.PNG [ 11.63 КБ | 1492 просмотра ]
Для окна без скина http://websvn.kolibrios.org/blame.php?r ... #line-2250
Код:
5926    pathoswith    2250   mov     ebx, 80002h
В координату Top заранее заносится значение 2.
Leency писал(а):
P.S. Любой эмуль должен эмулировать также баги системы)
Тогда нужно постоянно следить за обновлениями в коде системы — баги могут когда-то и пофиксить.


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 8:46 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
0CodErr
Выделение кнопки скошено на углах http://prntscr.com/j6jawa по 1 пикселю.
В оригинале там прямоугольник.

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 9:04 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
Обнови плиз иконку. Там в 16х16 правый верхний угол был не прозрачным http://prntscr.com/j6jla4
Ну и битность понизил до 256 цветов, иконка стала чуть легче.


Вложения:
skin.zip [1.19 КБ]
27 скачиваний

_________________
Через тернии к звездам
Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Вт апр 17, 2018 10:25 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Leency писал(а):
Обнови плиз иконку.
Обновил
Вложение:
sknview.7z [37.95 КБ]
26 скачиваний
Leency писал(а):
иконка стала чуть легче
Не так уж и принципиально по сравнению с размером программы :) Там, кстати, в этом файле не 1 иконка, а целых 3
Спойлер: Показать
Вложение:
2.PNG
2.PNG [ 3.8 КБ | 1469 просмотров ]
Одна иконка 16x16 весила бы чуть больше 1 Kb.


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Ср апр 18, 2018 1:53 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Leency писал(а):
Мне кажется заголовок на пару пикселей выше чем в системе. Я сужу по win 3.11. Или мне кажется?
Кстати, внезапно, http://websvn.kolibrios.org/filedetails ... asm#line-5
Код:
  margins         = [5:1:44:1],\                            ; margins [left:top:right:bottom]
Ядерная формула, видимо пытается как-то разрешить такую ситуацию, но, имхо, проблема всё же в скине.


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Ср апр 18, 2018 2:01 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Хотя, если bottom — количество пикселей от нижнего края заголовка(а не от верхнего), то похоже мне просто нужно было учитывать bottom при расчёте, а я учитывал только Top. Тогда в ядре, наверное, правильно сделано.


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Ср апр 18, 2018 2:11 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
Теперь верхняя координата считается вот так:
Код:
CaptionTop := (LongInt(Skin.Height) - Skin.Margins.Bottom - Skin.Margins.Top) Div 2 + Skin.Margins.Top - 8;
Вложение:
sknview.7z [38.01 КБ]
29 скачиваний


Вернуться к началу
 Заголовок сообщения: Re: Смотрелка скинов под Windows
СообщениеДобавлено: Ср окт 24, 2018 9:27 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1503
В skninfo и sknview есть такие строки:
Код:
  Windows.HeapFree(GetProcessHeap, 0, PFileBuffer);
  PFileBuffer := Windows.HeapAlloc(GetProcessHeap, 0, PPackedFile(PFileBuffer)^.UnpackedSize);
сначала освобождается PFileBuffer, а затем происходит чтение оттуда UnpackedSize. И как оно ещё работает :)
Хмм.. судя по https://docs.microsoft.com/en-us/window ... i-heapfree
Цитата:
You should not refer in any way to memory that has been freed by HeapFree.
After that memory is freed, any information that may have been in it is gone forever.
If you require information, do not free memory containing the information.
Читать оттуда не запрещается, но информация там уже будет не актуальная.
Проверил, что прочитанное из PPackedFile(PFileBuffer)^.UnpackedSize значение(более 1 мегабайта) вполне достаточное для работы программы.
Файлы скинов не настолько большие(менее 10 килобайтов), потому и работает.
Но, конечно, всё равно это нужно исправить.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 30 сообщений ]  На страницу Пред. 1 2

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB