Работа с отдельными точками
Видеорежимы стандарта VESA различаются по разрешающей способности и размерам палитры цветов, которые можно одновременно изобразить на экране. В данной, а также в трех последующих главах изложен материал, относящийся, в первую очередь, к режимам packed pixel graphics (упакованная точечная графика), которые в дальнейшем будут сокращенно обозначаться как PPG. При работе в этих режимах код точки занимает один байт и является номером строки палитры, содержащей описание цвета. В палитре может быть описано только 256 цветов. Работа с цветом во многом отличается от построения графических объектов, поэтому ее описание вынесено в отдельную (следующую) главу.
В этой главе рассмотрены способы построения простейших графических объектов. В ней описано, как выводить на экран точки, рисовать линии, прямоугольники, рамки и заранее заготовленные рисунки. В большинстве графических приложений эти действия являются основными, и автор счел целесообразным описать логику их выполнения независимо от манипуляций с цветом точек создаваемого изображения.
При построении графических объектов надо учитывать разрешающую способность режима и размер кода точки изображения. Все приведенные примеры будут выполняться независимо от разрешающей способности режима при условии, что код точки занимает один байт. При работе в полноцветных режимах direct color размер кода точки изменяется, он занимает 2 или 4 байта. Для того чтобы примеры могли выполняться в этих режимах, в них придется внести незначительные изменения.
Стандарт VESA допускает использование палитры, содержащей 16 цветов (EGA graphics), но мы не будем рассматривать такие режимы. Они описаны в многочисленных руководствах, где рассмотрены особенности всех режимов, соответствующих стандарту IBM, и приведены примеры программ.
Компьютерная графика, независимо от ее сложности, в конечном итоге сводится к работе с отдельными точками изображения. В режимах PPG каждой точке экрана соответствует байт видеобуфера. При неизменной палитре цвет точки зависит от содержимого этого байта.