Рабочая область окна
-
Здравствуйте. Пытаюсь программировать под KolibriOS, и у меня возник вопрос: имеется ли возможность функциями ядра определить некую "рабочую область окна", при определении которой программа могла рисовать только в ней? Пытался сделать это через функцию 0, но не получилось.
Ограничение области рисования внутри окна программы - это проблема программиста пишущего программу, а не проблема ядра операционной.
Если нужно ограничить область рисования, то делай это програмно, ограничивая значения координат X,Y и размер.
Если нужно ограничить область рисования, то делай это програмно, ограничивая значения координат X,Y и размер.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
Интересно, тогда как, например, ограничить область рисования строки, выводимой через системную функцию без вычисления её длины, я уж не говорю, если она не влазит по вертикали... А если контрол содержит 100 таких строк и лишь одна "не влазит"? С помощью такой функции можно было бы легко избавиться от таких трудностей в программе.andrew_programmer wrote:Ограничение области рисования внутри окна программы - это проблема программиста пишущего программу, а не проблема ядра операционной.
Если нужно ограничить область рисования, то делай это програмно, ограничивая значения координат X,Y и размер.
Также, можно легко реализовать, например, "гладкую прокрутку" и т.п.
ну можешь сделать это, лично я не против
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Gluk, я не могу ограничить область рисования внутри своей программы, а ты просишь меня реализовать функцию для этого в ядре
тогда это сюда наверное)
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Доволен?Gluk wrote:тогда это сюда наверное)
ChE
Посмотри код KFM - я там сделал расчет динны выводимой строки символов, окно то по сути резиновое. Однако это будет работать только для шрифта с фиксированной шириной символов, который не жирный.
Посмотри код KFM - я там сделал расчет динны выводимой строки символов, окно то по сути резиновое. Однако это будет работать только для шрифта с фиксированной шириной символов, который не жирный.
Mario, спасибо за ответ.
1. А разве код kfm открыт?
2. Насчёт трудности реализации: функция 0, по сути, устанавливает эту область и отрисовывает окно. Можно попробовать сделать функцию установки области отдельной и включить её в код других функций. Примерно так (для функции 0): устанавливаем рабочую область "по умолчанию", вызываем отрисовку окна. После отрисовки окон со скином, можно сделать область поменьше, это, кстати, решит некоторые "ляпы" таких окон.
После этого не потребуется даже переписывать имеющиеся программы, ведь новую функцию никого не заставляют использовать
1. А разве код kfm открыт?
2. Насчёт трудности реализации: функция 0, по сути, устанавливает эту область и отрисовывает окно. Можно попробовать сделать функцию установки области отдельной и включить её в код других функций. Примерно так (для функции 0): устанавливаем рабочую область "по умолчанию", вызываем отрисовку окна. После отрисовки окон со скином, можно сделать область поменьше, это, кстати, решит некоторые "ляпы" таких окон.
После этого не потребуется даже переписывать имеющиеся программы, ведь новую функцию никого не заставляют использовать
То, что ты хочеш реализовать, реализуется в программе, но не как не в ядре операционной системы. Ядро операционной системы - это не графическая библиотека. А то, о чём ты пишеш, реализуется посредством библиотеки GUI компонентов. Конкретно при помощи control-а (ну или widget-а это кому как угодно) ScrolledWindow(.....). Я сейчас пишу для KolibriOS библиотеку GUI компонентов(называется libGUI). И как раз в данный момент пишу контрол ScrolledWindow(.....). Подождите с недельку или в крайнем случае две. И я выложу библиотеку.Интересно, тогда как, например, ограничить область рисования строки, выводимой через системную функцию без вычисления её длины, я уж не говорю, если она не влазит по вертикали... А если контрол содержит 100 таких строк и лишь одна "не влазит"? С помощью такой функции можно было бы легко избавиться от таких трудностей в программе.
Также, можно легко реализовать, например, "гладкую прокрутку" и т.п.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
andrew_programmer, в корне не согласен с Вашим последним постом, почему - писал уже, не хочу повторяться.
ChE
Я написал всё правильно. Библиотека GUI должна учитывать высоту скина, и рисовать control-ы внутри окна программы. А на скине рисовать только заголовок и иконку. И то, только с разрешения GUI библиотеки(то есть при помощи неё).
ChE, ты давно программируеш? На каких языках программирования можеш писать?
Я написал всё правильно. Библиотека GUI должна учитывать высоту скина, и рисовать control-ы внутри окна программы. А на скине рисовать только заголовок и иконку. И то, только с разрешения GUI библиотеки(то есть при помощи неё).
ChE, ты давно программируеш? На каких языках программирования можеш писать?
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
andrew_programmer
Я не прошу ядро рисовать мне контрол, я прошу ядро определить мне участок памяти, в котором я могу нарисовать этот контрол и всё.
Я не прошу ядро рисовать мне контрол, я прошу ядро определить мне участок памяти, в котором я могу нарисовать этот контрол и всё.
Last edited by ChE on Fri Aug 14, 2009 8:31 am, edited 1 time in total.
То, что Вы предлагаете отлично прокатывает в ДОСе с текстовым режимом, в графике же всё немного сложнее.andrew_programmer wrote: То, что ты хочеш реализовать, реализуется в программе, но не как не в ядре операционной системы. Ядро операционной системы - это не графическая библиотека. А то, о чём ты пишеш, реализуется посредством библиотеки GUI компонентов. Конкретно при помощи control-а (ну или widget-а это кому как угодно) ScrolledWindow(.....). Я сейчас пишу для KolibriOS библиотеку GUI компонентов(называется libGUI). И как раз в данный момент пишу контрол ScrolledWindow(.....). Подождите с недельку или в крайнем случае две. И я выложу библиотеку.
ChE
Программы вообще не должны работать с видеопамятью. Ни сами, ни через вызовы ядра. Весь вывод должен рендериться в битмап в user-mode. А оконный менеджер уже отображать битмапы на экране.Я не прошу ядро рисовать мне контрол, я прошу ядро определить мне участок видеопамяти, в котором я могу нарисовать этот контрол и всё.
Who is online
Users browsing this forum: No registered users and 1 guest