Точные размеры окон

Kernel-side graphics support
  • diamond wrote:Так вот, правильные размеры этого массива должны быть (xsize+1)>>scale * (ysize+1)>>scale, что совершенно нетривиально.
    А можно переписать эту формулу в нормальном виде?
  • diamond
    Нумерация везде ведется от 0 до Nmax-1 (например, от 0 до 799), по этому вполне очевидно, что возвращаемое значение на 1 меньше. Возвращается то значение, с которым работает ядро.
    Я так понимаю, ты исходил из расчета нумерации от 1 до Xmax. Но нуль в данном случае тоже единица измерения.
  • Violinier
    В ассемблерном варианте: ((xsize+1) shr scale) mul ((ysize+1) shr scale)
    Mario79
    В документации четко сказано: "размер", а не "максимальная координата". Но чтобы создать окно размером 100*100 пикселей, нужно передавать 0-й функции значение 99. Когда сказано "eax = (размер по оси x)*65536 + (размер по оси y)", естественно ожидать, что будет возвращаться что-нибудь типа 800*65536+600.
    Подход с возвращением/установкой не размера, а максимальной координаты абсолютно законен, но при этом все-таки в документации надо писать именно о максимальной координате, а не размере.
  • diamond
    Документацию мы, конечно, пытаемся исправить своими небольшими силами. Писалась она не нами, так что ошибки могут быть.
    Мне собственно интересно, а как ты выяснил, что рисуется именно 99, а не 100 или не 98 или не 101 пиксель?
    Линейкой измерял экран? Считал по увеличенному скриншоту?
  • Я об этом узнал, когда писал MeOSEmul :) Там оказалось, что что-то не сходится, и я понял, в чём дело
  • Смотрел в исходниках ядра, когда разбирался для своего эмулятора, как работает нестандартная форма окон. Заодно и стандартную форму изучил.
  • Who is online

    Users browsing this forum: No registered users and 24 guests