Page 1 of 2

Рабочая область окна

Posted: Thu Aug 13, 2009 10:57 am
by ChE
Здравствуйте. Пытаюсь программировать под KolibriOS, и у меня возник вопрос: имеется ли возможность функциями ядра определить некую "рабочую область окна", при определении которой программа могла рисовать только в ней? Пытался сделать это через функцию 0, но не получилось.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 3:02 pm
by andrew_programmer
Ограничение области рисования внутри окна программы - это проблема программиста пишущего программу, а не проблема ядра операционной.
Если нужно ограничить область рисования, то делай это програмно, ограничивая значения координат X,Y и размер.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 3:14 pm
by ChE
andrew_programmer wrote:Ограничение области рисования внутри окна программы - это проблема программиста пишущего программу, а не проблема ядра операционной.
Если нужно ограничить область рисования, то делай это програмно, ограничивая значения координат X,Y и размер.
Интересно, тогда как, например, ограничить область рисования строки, выводимой через системную функцию без вычисления её длины, я уж не говорю, если она не влазит по вертикали... А если контрол содержит 100 таких строк и лишь одна "не влазит"? С помощью такой функции можно было бы легко избавиться от таких трудностей в программе.
Также, можно легко реализовать, например, "гладкую прокрутку" и т.п.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 3:59 pm
by Gluk
ну можешь сделать это, лично я не против

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 4:06 pm
by ChE
Gluk, я не могу ограничить область рисования внутри своей программы, а ты просишь меня реализовать функцию для этого в ядре ;-)

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 4:14 pm
by Gluk
тогда это сюда наверное)

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 4:30 pm
by ChE
Gluk wrote:тогда это сюда наверное)
Доволен?

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 6:38 pm
by Mario
ChE
Посмотри код KFM - я там сделал расчет динны выводимой строки символов, окно то по сути резиновое. Однако это будет работать только для шрифта с фиксированной шириной символов, который не жирный.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 6:55 pm
by ChE
Mario, спасибо за ответ.
1. А разве код kfm открыт?
2. Насчёт трудности реализации: функция 0, по сути, устанавливает эту область и отрисовывает окно. Можно попробовать сделать функцию установки области отдельной и включить её в код других функций. Примерно так (для функции 0): устанавливаем рабочую область "по умолчанию", вызываем отрисовку окна. После отрисовки окон со скином, можно сделать область поменьше, это, кстати, решит некоторые "ляпы" таких окон.
После этого не потребуется даже переписывать имеющиеся программы, ведь новую функцию никого не заставляют использовать :-)

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 6:59 pm
by andrew_programmer
Интересно, тогда как, например, ограничить область рисования строки, выводимой через системную функцию без вычисления её длины, я уж не говорю, если она не влазит по вертикали... А если контрол содержит 100 таких строк и лишь одна "не влазит"? С помощью такой функции можно было бы легко избавиться от таких трудностей в программе.
Также, можно легко реализовать, например, "гладкую прокрутку" и т.п.
То, что ты хочеш реализовать, реализуется в программе, но не как не в ядре операционной системы. Ядро операционной системы - это не графическая библиотека. А то, о чём ты пишеш, реализуется посредством библиотеки GUI компонентов. Конкретно при помощи control-а (ну или widget-а это кому как угодно) ScrolledWindow(.....). Я сейчас пишу для KolibriOS библиотеку GUI компонентов(называется libGUI). И как раз в данный момент пишу контрол ScrolledWindow(.....). Подождите с недельку или в крайнем случае две. И я выложу библиотеку.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 7:02 pm
by ChE
andrew_programmer, в корне не согласен с Вашим последним постом, почему - писал уже, не хочу повторяться.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 7:15 pm
by andrew_programmer
ChE

Я написал всё правильно. Библиотека GUI должна учитывать высоту скина, и рисовать control-ы внутри окна программы. А на скине рисовать только заголовок и иконку. И то, только с разрешения GUI библиотеки(то есть при помощи неё).
ChE, ты давно программируеш? На каких языках программирования можеш писать?

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 7:20 pm
by ChE
andrew_programmer

Я не прошу ядро рисовать мне контрол, я прошу ядро определить мне участок памяти, в котором я могу нарисовать этот контрол и всё.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 7:24 pm
by ChE
andrew_programmer wrote: То, что ты хочеш реализовать, реализуется в программе, но не как не в ядре операционной системы. Ядро операционной системы - это не графическая библиотека. А то, о чём ты пишеш, реализуется посредством библиотеки GUI компонентов. Конкретно при помощи control-а (ну или widget-а это кому как угодно) ScrolledWindow(.....). Я сейчас пишу для KolibriOS библиотеку GUI компонентов(называется libGUI). И как раз в данный момент пишу контрол ScrolledWindow(.....). Подождите с недельку или в крайнем случае две. И я выложу библиотеку.
То, что Вы предлагаете отлично прокатывает в ДОСе с текстовым режимом, в графике же всё немного сложнее.

Re: Рабочая область окна

Posted: Thu Aug 13, 2009 8:16 pm
by Serge
ChE
Я не прошу ядро рисовать мне контрол, я прошу ядро определить мне участок видеопамяти, в котором я могу нарисовать этот контрол и всё.
Программы вообще не должны работать с видеопамятью. Ни сами, ни через вызовы ядра. Весь вывод должен рендериться в битмап в user-mode. А оконный менеджер уже отображать битмапы на экране.