Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Графика    >>    vesa2
   
 
 VESA Graphic Unit for BP7 and SVGA   Victor Shantar 04.01.1997

VESA UNIT BY ROMANOFF V2.5, changed by Victor Shantar. Данный модуль предназначается для работы с графикой в весовских режимах средствами BGI (VESA.BGI поставляется вместе с модулем в виде .OBJ файла и линкуется вместе с модулем). Для работы доступны следующие режимы: 320x200x256, 640x400x256, 640x480x256, 800x600x256, 1024x768x256, 1280x1024x256. Кроме средств предоставляемых модулем GRAPH, данный модуль позволяет работать с мышкой во всех поддерживаемых режимах. Кроме того используемый драйвер SVGA256.BGI немного подпатчен на предмет увеличения системного шрифта с 8x8 до 8x16 пикселов. К модулю подлинковывается свой шрифт (русифицированый, т.е. вам можно обойтись без услуг русификатора экрана).



18k 
 

{ Идея взята от : { ********************************************************************* } { ********** VESA UNIT BY ROMANOFF V2.5 ********** } { ********************************************************************* И вновь реализованна Шантар В.В. } (*) КРАТКОЕ ОПИСАНИЕ Данный модуль предназначается для работы с гарфикой в весовских режимах средствами BGI (VESA.BGI поставляется вместе с модулем в виде .OBJ файла и линкуется вместе с модулем). Для работы доступны следу- ющие режимы: 320x200x256, 640x400x256, 640x480x256, 800x600x256, 1024x768x256, 1280x1024x256. Кроме средств предоставляемых модулем GRAPH из стандартной постав- ки Turbo Pascalя данный модуль позволяет работать с мышкой во всех поддерживаемых режимах. Кроме того используемый драйвер SVGA256.BGI немного мною подпатчен на предмет увеличения системного шрифта с 8x8 до 8x16 пикселов (в режимах с высоким разрешением старый шрифт смотрелся очень мелко и как следствие трудно читался). К модулю подлинковывается свой шрифт (русифицированый, т.е. вам можно обойтись без услуг русификатора экрана). Для начала работы с весовской графикой вам необходимо выполнить процедуру SetVesa. Эта процедура производит инициализацию графики и мышки (если есть), а затем включает графический режим 0 с разрешением 320x200. Для изменения резрешения необходимо воспользоваться процеду- рой SetGraphMode, из модуля Graph, с одной из констант: _320x200x256 _640x400x256 _640x480x256 _800x600x256 _1024x768x256 _1280x1024x256 Для завершения работы с графикой следуе вызвать процедуру VesaDone, которая производит деактивизацию обработчика событий от мышки, закры- тие графики и восстановления значений используемых векторов прерыва- ний. Для своих нужд программа изменяет вектора: 61h и 62h. Для работы с графикой следует пользоваться стандартными проце- дурами и функциями из модуля GRAPH. Как отмечалось выше, данный модуль может работать с мышкой, для инициализации которой в существует процедура InitMouse, ко- торая проверяет наличие в памяти драйвера мышки и в зависимости от этого утсанавливается значение переменной MousePresent. Кроме того эта процедура производит устанвку обработчика событий от мышки, кото- рый вызывается при перемещении мышки или при нажатии или отпускании кнопок на ней. Обработчик событий от мышки GetMouseXY, при каждом вы- зове, производит перерисовку курсора мышки и заполняет значения пере- менных: Mx, My - координаты левого верхнего угла мышкиного курсора; MButtons - состояние кнопок мышки. Причем все это можно сразу поме- стить в ваши переменные путем их передачи в процедуру GetMouseXY. Для работы с мышкой предусмотрено еще несколько процедур назна- чение которых можно узнать ниже. И еще, для изменения вида курсора необходимо сформировать в некотором буфере Image размером не более 150x150 и вызвать процедуру NewCursor(PCursor), где PCursor - адрес буфера с новым курсором. При проэктировании курсора следует учитывать, что прозрачным является только нулевой цвет. В курсоре, который идет с модулем используются цвета 254 и 255. История: VesaUnit : 1.0 Первая версия, нет мышки, есть только включение графики, руссий шрифт и своя палитра. 2.0 Появилась слабая поддержка мышки (с кучей ошибок). Убрана заг- рузка своей палитры. 2.1 Добавлена процедура SetMouseBox для задания области перемещения для мышки, исправлены некоторые ошибки. 2.2 В процедуры ShowCursor и HideCursor добавлены проверки на нали- чие мышки вообще, чтобы было меньше глюков. 2.3 Исправлена ошибка из-за которой курсор оставлял след в случае одновременного перемещения курсора и перерисовки по событию от нажимаемой клавиши. 2.4 Переделан алгоритм вывода курсора, раньше курсор накладывался на фон по принцыпу AndPut т.е. нормально работал если был на- рисован 255ым цветом, теперь курсор может быть многоцветным (прозрачным является только нулевой цвет). Переделана процедура добавления новых курсоров. 2.5 Добавлены процедуры работы с палитрой и ведение исторических записей. 2.6 Append by Victor Shantar 2:5054/2.44@fidonet: Переработаны процедуры работы с мышой. Появилась процедура GetMouseXY. И возможность вешать мышу на таймер InitTimeMouse , DoneTimeMouse. Vesa2 : 1.0 Добавлен нормальный обработчик событий от мышки и убран теперь уже не нужный обработчик на таймере. P.S. Автор сего труда Виктор Шантар, если у вас возникнут некоторые вопросы или пожелания, то меня можно найти по адресу: 2:5054/26@FidoNet (Victor Shantar) (*)