Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Графика    >>    vcrt
   
 
 VCRT - Замена CRT с поддержкой графики   Виктор Вагнер 12.05.1993

Модифицированный модуль CRT для текстового и графического режима для Turbo Pascal 5.5,6.0, корректно работающий с цветами в графических режимах. Включает: рисование рамочек, сохранение/восстановление областей экрана



13k 
 

Модуль CRT, корректно работающий с цветами в графических режимах. Включает ряд расширений, как то: рисование рамочек сохранение/восстановление областей экрана Задумано было больше, но не доделано, из-за устарелости CRT-based интерфейсов. -- Phone: 230-80-61 Victor B.Wagner E-Mail:vitus@agropc.msk.su Dokuchaev Soil Institute 7, Pyzhevsky lane, Moscow, Russia {> Cut here. FileName= VCRT.DOC } Модуль VCRT Модуль представляет собой модифицированный стандартный модуль CRT для Turbo Pascal 6.0,5.5 в который не добавлено практически ни одной новой функции, но работа некоторых весьма стандартных функций изменена так, как это казалось автору более логичным. Кроме того ряд функций, бывших внутренними выведен в интерфейс. Изменение первое - драйвер текстовых файлов : 1. В графических режимах CGA 320x200, EGA и VGA атрибуты символов обрабатываются так же как и в текстовых. 2. Процедуры READ и READLN допускают редактирование с помощью стрелок, клавиш Home, End, BackSpace и Delete. 3. Процедуры READ и Readln в графических режимах эмулируют курсор Изменуние второе: Процедуры InsLine, DelLine, ClrEol, ClrScr обрабатывают атрибуты во всех графических режимах Изменение третье Добавлены процедуры ReInitCrt - инициализация внутренних переменных необходимо вызывать после изменения режима экрана не средствами VCRT для корректной работы. ReadKeyWord - возвращает двухбайтовый код нажатой клавиши Старший байт - скэнкод. Beep - выдает стандартный звуковой сигнал. Эквивалент Write(#7) Изменение третье: Переменная DirectVideo инициализируется в False, если текущий режим графический. Ограничения: 1. Вывод на экран всегда через Bios, независимо от значения DirectVideo 2. Процедура Readln не позволяет вводить строки, превышающие расстояние до правой границы экрана. Модуль VCRTEXT Содержит расширения CRT, весьма полезные и отчасти повторяющие процедуры tpCrt и opCrt (Copyright by TurboPower Software), но, как и VCRT, корректно работающие в графике. Procedure FrameWindow(X1,Y1,X2,Y2) - рисует рамку. Символы задаются в переменной Frame. Определены константны SingleFrame и DoubleFrame; Procedure SaveWindow(X1,y1,X2,y2:byte;var SavePtr:Pointer); Работает только в текстовом режиме Динамическую память для буфера окна выделяет сама Procedure RestoreWindow(X1,Y1:Byte;Var SavePtr:Pointer); Восстанавливает окно, сохраненное SaveWindow даже и в граф. режимах Procedure DisposeWindow(var SavePtr:Pointer); Освобождает буфер окна Procedure Inverse(Count:Byte); в текстовых режимах заменаяет атрибуты Count символов слева от курсора на атрибут, хранящийся в переменной InverseAttr, в гра- фике делает XOR c ним. В режиме CGA монохром просто инвертирует символы не думая об атрибутах Function ReadScreen(X,Y:Byte):Char; Читает символ с 0 страницы (через BIOS) Function ReadAttr(X,Y:Byte):Byte;{Works in text mode only} Читает атрибут (только в текстовом режиме) Далее пошли инструменты более высокого уровня (пока не реализованы, а потому и не описаны. Три варианта меню. 1. Меню с произвольным расположением строк на экране {Clears all internal data for menu} Procedure ClearMenu; {Adds string to menu} Procedure Prompt(S:String;Row,Col:Byte); {Allows selection from ClipperLike menu and returns Choice number or 0 if Escaped} Function Menu:Integer; 2 Вертикальное меню в текущем окне (должно быть заполнено до вызова процедуры) Function VertMenu:Integer; 3. Прокручиваемое меню в текущем окне Function LongMenu(ItemFuns:MenuItemType):Integer;