Графические вставки из bmp-файлов в DOS программах в режиме работы с видеостраницами

Как мы знаем, в задачах анимации работа программы становится более качественной, если использовать режим видеостраниц. Пока первая фаза движения изображена на первой видеостранице, вторая фаза движения рисуется на второй видеостранице. После некоторой задержки изображение второй видеостранице выбрасывается на экран, а следующая фаза движения рисуется снова на первой видеостранице. Затем процесс периодически повторяется.

Чтобы картину, полученную из bmp-файла выводить то на одну то на другую видеостраницу, необходимо эту картину где-то хранить. Для  хранения будем использовать оперативную память.

Здесь возникает определенная трудность, связанная с сегментацией оперативной памяти в DOS. Программа, работающая в DOS, может использовать оперативную память только определенными порциями, блоками в 64 килобайта. Оказывается, что для больших картин, все изображение может не поместиться в блоке в  64 килобайта. Поэтому надо предусмотреть ситуацию, когда изображение из bmp-файла будет храниться в нескольких отдельных блоках оперативной памяти. 

Код программы, которая поместит изображение в оперативную память по блочно, будет это изображение выводить на экран в нужный момент, и в конце работы очистит оперативную память, лучше всего организовать в виде класса.

Поместим этот код в класс ScreenMemory, и пусть этот класс находится в файле classmem.cpp. Ниже приводится определение этого класса. 

Ссылка на основную публикацию
Adblock detector