Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Графика    >>    vgipcx
   
 
 PCX - VGIPCX: Модуль для работы с PCX   Виктор Вагнер 12.11.1994

Данный модуль позволяет читать (выводить на экран) и записывать (с экрана) PCX файлы во всех режимах, на которые есть BGI драйверы.



8k 
 

Модуль VGIPCX Модуль VGIPCX предназначен для работы с картинками в PCX-формате из программ на Turbo Pascal. Поддерживаются две основные группы функций - вывод PCX на экран и запись экрана в PCX. Основные особенности: 1. Используется ввод-вывод через объекты-наследники TStream, что позволяет хранить картинки не только на диске, но и в памяти, в том числе и в EMS. 2. Поддерживаются все графические режимы CGA/EGA/VGA, режим Hercules и все 16 и 256-цветные режимы SuperVGA (при наличии соответствующих BGI-драйверов) 3. Поддерживаются все BitBlt операции, поддерживаемые драйвером (в том числе такие экзотические как XNOR и Transparent copy в SVGA256.BGI) 4. Не поддерживается вывод на экран изображений выходящих за его пределы по горизонтали (по вертикали вниз - пожалуйста) 5. Поддерживается работа с 256-цветной палитрой 6. В 16-цветных режимах VGA/VESA/SVGA поддерживается палитра 16 из 262144, а не 16 из 64 как в большинстве известных библиотек. 7. поддерживается Protected Mode 8. Поддерживается чтение из библиотек в формате PCX programmer toolkit 9. Вывод картинки производится в том случае, если она совместима с текущим графическим режимом (совпадает число битов на пиксел и число битовых плоскостей). Поэтому не поддерживаются такие экзотические версии PCX-формата, как 4 бита на пиксел при одной плоскости (такой файл мне как-то сделала Scan Gallery). Особенности компиляции: vgipcx рассчитан на работу с интерфуйсной библиотекой SoftWeyr Graphic Interface и использует модуль VGILOW оттуда. Однако он с успехом может быть применен и без этой библиотеки, так как единственное, что ему нужно из этого модуля, это две глобальные переменные типа Integer с именами GraphDriver и GraphMode, в которых SWGI хранит текущий графический драйвер и режим драйвера, а также константы VGA256, VESA16 и VESA256, задающие номера нестандартных графических драйверов (в смысле, отсутствующих во внутренних таблицах модуля Graph. VESA16.BGI входит в поставку Borland Pascal 7.0) Процедуры и функции: 1. ShowPcx(var S:TStream;X,Y:Integer;BitBlt:Word); Базовая процедура вывода PCX на экран. Получает в качестве параметров поток, позиционированный на начало заголовка PCX, координаты левого верхнего угла и код растровой операции (XorPut,CopyPut и т.д.) Выводит изображение на экран. 2. ShowPcxFile(FileName:String;X,Y:Integer;BitBlt:Word); То же самое, но сама открывает и закрывает файлы. Даже расширение PCX по умолчанию подставлаяет. 3. Function OpenPcxLib(FileName:String):PStream; Открывает библиотеку PCL и возвращает указатель на поток. Если вернула nil, значит что-то не так. 4. Function FindPcxInLib(Lib:PStream;ImageName:String):Boolean; Возвращает True, если картинка с указанным именем есть в библиотеке. При этом позиционирует поток на начало картинки, так что вам остается только сделать ShowPcx(Lib^....) 5.ShowPcxFromLib(LibName,ImageId:String;X,Y:Integer;BitBlt:Word); Показывает картинку из библиотеки, заданной именем файла. Если вам лень возиться с потоками, но не лень каждый раз закрывать и открывать файл, можете ею пользоваться. 6.WritePcx(var S:TStream;X1,Y1,X2,Y2:Integer); Записывает содержимое области экрана в поток в PCX формате. 7. SaveScreen(FileName:String); Создает PCX файл, содержащий копию текущего ViewPort'а. Если файл уже существует, перезаписывает безжалостно. Переменные и константы PcxError : Integer ; место, куда все процедуры помещают коды возникших ошибок. Коды ошибок могут быть следующими: pcxOk = 0; {Эти коды ошибок совпадают с теми, что возвращает IOResult} pcxFileNotFound = 2; pcxPathNotFound = 3 ; pcxTooManyFiles = 4; pcxAccessDenied = 5; pcxReadError = 100; pcxWriteError = 101; {Эти коды ошибок уникальны для VGIPCX} pcxInvalidFileFormat = -1; { Файл не является PCX или PCL файлом} pcxFileTooLarge = -2; { Файл не влезает на экран} pcxIncompatibleDisplay = -3; { Файл создан для другого графического адаптера} pcxImageNotFound = -4; { Файл библиотеки существует, но нужной картинки нет } Рекомендуется ознакомиться с содержимым этой переменной после вызова каждой процедуры модуля. SaveMono : boolean = false; Предполагается, что если вы сохраните экран с черно-белой картинкой на EGA/VGA установив эту переменную в True, она запишется в монохромном формате. Не отлаживалось. EnablePcxPalette : Boolean = true; Установив эту переменную в False, вы запретите процедурам вывода PCX на экран менять палитру. Copyright (c) by SoftWeyr,1992-94. Aвтор - Vitus Wagner. E-Mail: vitus@agropc.msk.su FIDO 2:5020/358.5