МОДУЛЬ GRAPH
 Графическая Библиотека для TMT Pascal v3.50SP2
 Часть 8
Copyright (c) 1997,98  TMT Development Corp.
 
All Rights Reserved
 
Если вы заметили в документе
 опечатки или неточности перевода,
  просьба сообщить о них!
 Перевод на русский язык и оформление:
 Валерий Вотинцев
 
К Содержанию
 
 
 Процедуры и Функции
  
 
 SetScreenStart (процедура)
- 
 Задает стартовый адрес на логической странице,
 начиная с которого изображение выводится на экран.
 Sets the CRTC display starting address to the specified value.
 
 Объявление:
 procedure SetScreenStart (X,Y: DWord; WaitForRetrace: Boolean);
 
- 
 Пояснения:
- 
 Эта процедура задает координаты пиксела (X,Y) на логической странице, который
 будет выведен на экран в качестве левого верхнего пиксела.
 Эту процедуру Вы можете использовать для выполнения аппаратного скроллинга
 и панорамирования изображения, размеры которого превышают физические размеры
 экрана.
- 
 Кроме того, ее можно использовать для быстрого переключения между двум
 экранами для двойного буферирования анимационных эффектов.
 (Более подробную информацию можно найти в VBE Core Standard).
 
 Если параметр WaitForRetrace установлен в True, то перед переключением адреса
 процедура будет ожидать обратного вертикального хода луча. В противном
 случае синхронизация не производится. Такое поведение процедуры гарантировано
 только при наличии VBE 2.0. Если установленная видео-карта поддерживает
 только VBE 1.2, то нет никаких гарантий, что синхронизация будет выполнена.
 
     
 SetSVGAMode (процедура)
- 
 Устанавливает SVGA видео режим с заданным разрешением и количеством цветов.
 
 Объявление:
 procedure SetSVGAMode (XRes, YRes, BPP, VMode: Word);
 
- 
 Пояснения:
- 
 Параметры XRes и YRes задают требуемое разрешение;
  Параметр BPP определяет "глубину цвета", т.е. количество бит на 1 пиксел
 и должен иметь значение [8,15,16,24,32].
 
 Параметр VMode может принимать следующие значения в дипазоне [1..3]:
|  Константа  |  Значение  |  Пояснение  |  
|  LFBorBanked  |  0  |  Установить режим LFB или с переключением банков  |  
|  BankedOnly   |  1  |  Установить режим только с переключением банков  |  
|  LFBOnly      |  2  |  Установить только LFB режим                     |  
 
 
 Так, следующий пример:
 SetSVGAMode(640,480,8,LfbOrBanked);
 
- 
 приведет к установке SVGA режима с разрешение 640x480, 8 бит на пиксел
 (т.е. всего 256 цветов). Если режим LFB поддерживается, то он будет
 установлен; если же нет - то будет установлен режим переключения банков.
 
     
 SetTextJustify (процедура)
- 
 Устанавливает режим выравнивания текста для процедур OutText и OutTextXY.
 
 Объявление:
 procedure SetTextJustify(Horiz, Vert: DWord);
 
- 
 Пояснения:
- 
 Процедура SetTextJustify устанавливает параметры выравнивания текста
 по горизонтали (параметр Horiz) и по вертикали (параметр Vert) относительно
 текущего указателя или указанной точки.
 
 Рассмотрим следующий пример:
  SetTextJustify(CenterText, CenterText);
  OutTextXY(100, 100, 'ABC');
 
- 
 В данном случае текстовая строка "ABC" будет центрирована по горизонтали и
 вертикали относительно точки (100, 100), т.е. эта точка будет находитьс
 точно в середине буквы "B".
- 
 По умолчанию выравнивание текста происходит в соответствии с вызовом
 SetTextJustify(LeftText, TopText).
 
- 
 В случае задания недопустимых параметров выравнивания для SetTextJustify,
 в переменной GraphResult будет возвращено значение кода ошибки grError,
 и параметры выравнивания не изменятся.
 
       
 SetTextStyle (процедура)
- 
 Задает стиль вывода текста в графическом режиме.
 
 Объявление:
 procedure SetFontStyle(Font, Direction: DWord);
 
 
  
 SetTranspMode (процедура)
- 
 Устанавливает или сбрасывает режим прозрачности при выводе изображений.
 
 Объявление:
 procedure SetTranspMode(Mode: Boolean; Color: DWord);
 
- 
 Пояснения:
- 
 Модуль TMT Graph поддерживает прозрачность при выводе изображений (BitMaps).
 Если параметр Mode имеет значение True, то режими прозрачности используется.
 При этом параметр Color определяет, какой именно цвет в изображении
 является прозрачным. При выводе изображения на экран будут отображены
 только те пикселы, цвет которых отличается от Color; все же остальные
 пикселы, имеющие цвет Color, будут проигнорированы при выводе.
- 
 Такая технология вывода изображений очень удобна для программирования игр.
 Работа с прозрачными изображениями поддерживается в любом графическом режиме
 (MCGA/VGA, SVGA 256, 32K, 64K, 16M и 16M+Alpha цветов, как с LFB, так и с
 переключением банков)!
 
 Действие процедуры SetTranspMode оказывает влияние только на вывод
 изображений с помощью следующих процедур: PutPixel, PutSprite и PutImage.
 
     
 SetViewPort (процедура)
- 
 Устанавливает область видимости, или, другими словами, окно для вывода
 графики.
 
 Объявление:
 procedure SetViewPort(x1, y1, x2, y2: LongInt; Clip: Boolean);
 
- 
 Пояснения:
- 
 (X1,Y1) задают левый верхний угол окна, а (X2, Y2) - нижний правый угол.
 После задания окна, адресация точек в нем осуществляется с нуля, т.е.
 левый верхний угол внутри окна имеет координаты (0, 0).
 
 Логический параметр Clip определяет, будет ли использоваться в данном окне
 отсечение выводимых изображений, если они выходят за границы данного окна.
 Чтобы установить окно целиком на все изображение, следует выполнить
   SetViewPort(0, 0, GetMaxX, GetMaxY, True);
 
- 
 Если координаты окна заданы неверно, т.е. (X1 >= X2) или (Y1 >= Y2), то
 в переменной GraphResult будет возвращен код ошибки grError, и текущее
 окно не будет изменено. Модуль TMT Garph позволяет назначать окно
 (ViewPort) даже за пределами экрана!
 
 Все графические команды (например, GetX, OutText, Rectangle, MoveTo, и т.д.)
 осуществляют свой вывод именно в установленное окно (viewport).
 
 Если параметр Clip установлен в True, то все, что выходит за границы окна,
 будет отсечено. Однако, текущий указатель, естественно, никогда не
 отсекается. Рассмотрим следующий пример:
  SetViewPort(10, 10, 20, 20, ClipOn);
  Line(0, 5, 15, 5);
 
- 
 Здесь выводимая линия не будет полностью отрисована, поскольку часть ее
 выходит за пределы окна, и поэтому будет отсечена. Если бы режим
 отсечения не был задан, то линия начиналась бы в точке с абсолютными
 координатами (10,15) и заканчивалась в точке с абсолютными координатами
 (25, 15). Но, поскольку отсечение включено, будет отрисована только часть
 линии, а именно от точки с абсолютными координатами (10, 15) до точки
 с абсолютными координатами (20, 15).
 
 Обращение к процедурам SetSVGAMode, GraphDefaults, и SetGraphMode сбрасывает
 окно до размеров полного графического экрана.
 Параметры текущего окна можно получить посредством вызова процедуры
 GetViewSettings, которая возвращает структуру типа ViewPortType.
 
 После вызова SetViewPort текущий указатель сбрасывается в (0, 0).
 
      
 SetVirtualMode (процедура)
- 
 Устанавливает виртуальный графический режим.
 
 Объявление:
 procedure SetVirtualMode (BuffAddr: Pointer)
 
- 
 Пояснения:
- 
 Эта процедура переадресует все графические операции непосредственно в
 виртуальный видео буфер в памяти, на который ссылается указатель BuffAddr.
 Прежде, чем выводить что-либо в виртуальный буфер, необходимо выделить
 под него память с помощью процедуры GetMem. Для определения, какое
 количество памяти потребуется для виртуального видео буфера, используйте
 функцию GetPageSize.
- 
 Процедура SetVirtualMode не поддерживается в бесплатной версии компилятора
 TMT Pascal.
 
 См. также: SetNormalMode, FlipToScreen и FlipToMemory.
 
     
 SetVisualPage (процедура)
- 
 Делает указанную графическую страницу видимой.
 
 Объявление:
 procedure SetVisualPage(Page: DWord; WaitForRetrace: Boolean);
 
- 
 Пояснения:
- 
 После вызова процедуры становится видимой графическая страница с
 указанным номером.
 
 Несколько графических страниц могут поддерживаться только в SVGA графических
 режимах. При использовании нескольких графических страниц программа имеет
 возможность осуществлять прямой графический вывод на невидимую в данный
 момент страницу, а затем быстро переключиться, сделав эту страницу видимой
 с помощью процедуры SetVisualPage. Эта технология особенно полезна дл
 анимации изображений.
 
 Если параметр WaitForRetrace установлен в True, переключение будет
 произведено только в момент вертикального обратного хода луча.
 Флаг ожидания вертикального обратного хода луча входит в спецификацию
 VBE начиная с версии 2.0, поэтому, если Ваша видео-карта поддерживает
 только VBE 1.2, то нет никакой гарантии, что будет производитьс
 такая синхронизация.
 
    
 SetWriteMode (процедура)
- 
 Устанавливает режим записи при рисовании линии.
 
 Объявление:
 procedure SetWriteMode(WriteMode: DWord);
 
- 
 Пояснения:
- 
 Существует два режима записи при рисовании линии: простое копирование
 без учета того, что было раньше изображено под линией (CopyPut), и вывод с
 учетом изображения, перекрываемого линией (XORPut).
- 
 При использовании метода CopyPut для вывода пикселов используетс
 ассемблерная инструкция MOV, просто перезаписывающая то, что было ранее
 на экране. При использовании метода XORPut вывод пикселов осуществляетс
 с помощью инструкции XOR, которая позволяет комбинировать точкт линии с
 уже имеющимся изображением.
- 
 Заметим, что если дважды вывести линию в режиме XOR, то линия сотретс
 и восстановится предыдущее изображение под линией.
 
 Процедура SetWriteMode оказывает воздействие на результат вывода следующих
 процедур: DrawPoly, Line, Spline, LineRel, LineTo, Rectangle, Circle,
 Ellipse, Bar3D, Putpixel, PutSprite и PutImage.
 
      
 Spline (процедура)
- 
 Рисует сплайн.
 
 Объявление:
 Spline(Nodes: Byte; Points: array of PointType);
 
- 
 Пояснения:
- 
 Процедура формирует плавную кривую, проходящую через заданную
 последовательность точек. Параметр Nodes задает количество точек в массиве
 Points. Каждая точка задается парой координат X и Y типа LongInt.
 
 Для настройки плавности рисуемой сплайн-кривой используется процедура
 SetSplineSteps.
 
    
 Stretch (процедура)
- 
 Растягивает содержимое экрана по вертикали в Param раз.
 
 Объявление:
 procedure Stretch (Param: Byte);
 
 
  
 TextHeight (функция)
- 
 Возвращает высоту текста в пикселах.
 
 Объявление:
 function TextHeight(TextString: string): DWord;
 
- 
 Пояснения:
- 
 Функция использует высоту текущего фонта для вычисления высоты текстовой
 строки в пикселах. Эту возможность удобно использовать для настройки
 расстояний между линиями, вычисления высоты окна, содержащего текст,
 установления размера текстового заголовка при выводе его внутри
 прямоугольника или определенной области, и т.д.
 
 Например, если используется фонт 8x8 точек (устанавливается процедурой
 SetTextStyle), то высота текстовой строки будет равна 8 пикселов.
 
 Рекомендуем не вычислять высоту строки вручную, а использовать для этого
 функцию TextHeight. В этом случае не потребуется изменять исходный код
 программы при использовании различных фонтов.
 
    
 TextWidth (функция)
- 
 Возвращает длину строки текста в пикселах.
- 
 Объявление:
 function TextWidth(TextString: string): DWord;
 
- 
 Пояснения:
- 
 Функция использует ширину текущего фонта и количество символов в строке дл
 вычисления длины текстовой строки в пикселах. Эту возможность удобно
 использовать для вычисления ширины окна, содержащего текст, установлени
 размера текстового заголовка при выводе его внутри прямоугольника или
 определенной области, и т.д.
 
 Например, при использовании фонта 8x8 точек (установленного процедурой
 SetTextStyle), длина строки, содержащей 3 символа "TMT", будет равна 24
 пиксела.
 
 Рекомендуем не вычислять длину строки вручную, а использовать для этого
 функцию TextWidth. В этом случае не потребуется изменять исходный код
 программы при использовании различных фонтов.
 
     
 TotalVbeMemory (функция)
- 
 Возвращает количество установленной видео-памяти в байтах.
 
 Объявление:
 function TotalVbeMemory: DWord;
 
- 
 Пояснения:
- 
 Если VESA VBE 1.1+ не поддерживается, то функция вернет ноль.
 
    
 TotalVbeModes (функция)
- 
 Возвращает общее количество поддерживаемых VESA режимов.
 
 Объявление:
 function TotalVbeModes: Word;
 
- 
 Пояснения:
- 
 Для получения списка всех поддерживаемых VESA режимов можно воспользоватьс
 функцией GetVbeModesList.
 
    
 Triangle (процедура)
- 
 Рисует треугольник.
 
 Объявление:
 procedure Triangle (X1,Y1,X2,Y2,X3,Y3: LongInt);
 
- 
 Пояснения:
- 
 (X1,Y1), (X2,Y2), (X3,Y3) - координаты вершин треугольника.
 
             |