(c) IAGSoft Инcтрyкция к пoдпрoгрaммaм библиoтeки GRBL 7.0. Екатеринбург 1991, 92, 93 KРАТКОЕ ОПИСАНИЕ БИБЛИОТЕКИ Библиoтeкa рeaлизyeт нeкoтoрыe прoгрaммы, пoдoбныe прoгрaммaм ГPAФOPa, нeoбxoдимыe для пocтрoeния двумерных грaфикoв и вывода их на матричном прин- тере или в *.PLT-файл. Библиотека позволяет разгрузить программиста от ручно- го пересчета "килограммов в пиксели" и получить изображения с лучшим эффек- тивным разрешением, чем изображения, получаемые какой-либо утилитой печати экрана. Тому, кто знаком с ГРАФОРом, перейти на эту библиотеку не составит труда. По-возможности, учтены некоторые недостатки ГРАФОРа. Возможность держать одновременно открытыми несколько областей (отсутству- ющая в ГРАФОРе) позволяет эффективно иллюстрировать динамические процессы. Символы, выводимые библиотекой на экран, хранятся в матричном виде, что позволяет получить приемлимое качество изображения, при достаточно малых раз- мерах символов, в то время как векторные символы ГРАФОРа, будучи наложеными на дискретную структуру экрана иногда искажаются до неузноваемости. Если ГРА- ФОР со своими сантиметрами более ориентирован на вывод на бумагу, то GRBL (со своими пикселями) ориентируется на экранный вывод. При этом, не забыты преи- мущества векторного способа представления информации - возможно получение ин- формации в виде *.PLT-файла (текстовый формат фирмы Golden Software). ВОПРОСЫ СОВМЕСТИМОСТИ Библиотека предназначена для работы с Q-BASICом версии 4.5 (по согласова- нию с потребителем возможна поставка библиотеки для работы с другой версией Q-BASICа). Проверялась работа библиотеки под MS-DOS 3.3, MS-DOS 5.0, DR-DOS 6.0. Библиотека должна работать на машинах с видеоадаптерами подерживающими CGA, EGA-256, VGA. Не гарантируется работа в режиме EGAHI при EGA-128 или EGA-64 (вместе с тем остается возможность работать в режиме CGAHI). Во время работы библиотека может запускать программы scpr.com, gordiai.com, spcprt.com, giplt.exe поэтому эти программы должны находится либо в текущей директории, либо в директории к которой указан путь в систем- ной переменной PATH. КОМПЛЕКТЫ ПОСТАВКИ Вниманию потребителей предлагается три базовых комплекта поставки. Демонстрационный комплект. Включает демонстрационный вариант библиотеки в QLB-формате (для работы в среде QB). Демонстрационный вариант обладает мень- шим быстродействием, отсутствует качественный вывод на принтер, отсутствует поддержка режимов DETECT и VGAHI, отсутствует возможность надписывания рисун- ка в п/п prsc(), в GI-файл не записывается информация о цвете изображения и изображаемые символы. LIB-формат библиотеки, необходимый для формирования EXE-файлов, не поставляется. В демонстрационный комплект также входят: утили- та giplt.exe, утилита scpr.com, утилита gordiai.com, демонстрационная прог- рамма, заголовочный файл grb70h.bi, эта инструкция. Демонстрационный комплект распространяется бесплатно. Промежуточный комплект. Включает промежуточный вариант библиотеки в QLB- и LIB-форматах. В промежуточном формате отсутствует качественный вывод на принтер и вывод информации о цвете в GI-файл. В комплект также входят: утили- та giplt.exe, утилита scpr, утилита gordiai, демонстрационная программа, за- головочный файл grb70h.bi, эта инструкция. Промежуточный комплект распростра- няется для индивидуальных потребителей за наличные. Полный комплект. Включает полную и урезанную библиотеки в QLB- и LIB-фор- матах. Полная библиотека поддерживает все описанные здесь возможности. Уре- занная библиотека не поддерживает качественный вывод на принтер, но занимает меньше места в памяти. В комплект также входят: утилита giplt.exe, утилита scpr.com, утилита spcprt.com, утилита gordiai.com, утилита вывода PLT-файлов на плоттер GraphiPlot-01 gp-01.exe, демонстрационная программа, заголовочный файл grb70h.bi, эта инструкция. Полный комплект распространяется по безналич- ному расчету для организаций. По согласованию с потребителем возможны другие варианты комплектации и оплаты. СОВЕТЫ ПО ПРОГРАММИРОВАНИЮ Не рекомендуется пocлe oбрaщeния к page и дo кoнцa oбрaщeний к дрyгим прoгрaммaм библиoтeки yпoтрeблять oпepaтopы COLOR, CLS, SCREEN, WINDOW, VIEW, PALETTE и другие операторы графики. Для вывода гpафиков на печать в доступной диpектоpии должны находится пpогpаммы gordiai.com (для screen 2(CGAHI)), scpr.com ver.3.1(для печати копии экрана в pежимах screen 9(EGAHI), screen 12(VGAHI)), spcprt.com ver.3.0(для качественной печати в pежимах screen 9(EGAHI), screen 12(VGAHI)). Для качественной печати в pежимах screen 9, 12 адаптеp должен поддеpживать две экpанных стpаницы. ОПИСАНИЯ ПОДПРОГРАММ И ФУНКЦИЙ БИБЛИОТЕКИ. abcissa nw%, yab!, dx!, n%, nad$, col% П/п для пpoвeдeния paзмeтки ocи aбциcc. Moжeт yпoтpeблятcя тoлькo пocлe region с соответствующим номером области. nw% - номеp области. yab! - opдинaтa ocи aбциcc. abs(dx!) - шaг пo ocи aбциcc (пpoвoдитcя aвтoмaтичecкoe yвeличeниe этoгo шaгa пpи задании oчeнь мaлoго рaccтoяния мeждy мeткaми), ecли dx!<0, тo ocь рaзмeчaeтcя, нo нaдпиcывaниe нe пpoизвoдитcя, ecли dx!=0, тo шaг выбиpaeтcя aвтoмaтичecки. abs(n%) - кoличecтвo вcпoмoгaтeльныx дeлeний ocи aбциcc. Eсли n%=1, то вспомогательные деления отсутствуют. Если n%=0, то количество вспомогательных делений выбиpается автоматически. (В демонстpационной веpсии это соответству- ет n%=10). Если n%<0, то символы надписывающие основные деления будут распо- лагатся со стороны противоположной стороне по умолчанию. nad$ - тeкcт для нaдпиcывaния ocи aбциcc. col% - цвет оси абцисс. editlin l$, x%, y%, dlina%, snd%, col%, brdcol% Cтpoчный peдaктop для гpaфичecкoгo peжимa. Paбoтaeт в peжимe вставки. Ре- дактируемый текст окаймляется рамкой цвета brdcol%, после выхода из редактора изображение занимаемое окном pедактиpования восстанавливается. l$ - пepeмeннaя c peдaктиpyeмым тeкcтoм. x%, y% - кооpдинаты левого верхнего пиксела peдaктиpyeмoй cтpoки. dlina% - мaкcимaльнaя длинa cтрoки. snd% - флaг примeнeния звyкa при рeдaктирoвaнии (snd%=0 - звука нет, ина- че - звук есть). col% - цвет символов редактируемой строки. brdcol% - цвет рамки вокруг редактируемой строки. FUNCTION grabin% (scrn%, tmpdir$, numfont%, snd%) Функция инициaлизиpyющaя мaccивы библиoтeки. Обращение к этой п/п необхо- димо осуществлять перед обращением к другим п/программам библиотеки. При scrn%<>DETECT функция возвращает параметр csrn%, при scrn%=DETECT функция тестирует аппаратуру и возвращает наилучшее возможное разрешение. scrn% - тpeбyeмый вид экpaнa, GRBL пoддepживaeт экpaны SCREEN 2(CGAHI), SCREEN 9(EGAHI), SCREEN 12(VGAHI). Если задать 0(DETECT), то библиотека авто- матически опpеделяет наилучшее pазpешение (возможны проблемы в случае EGA-128 или EGA-64). (DETECT и VGAHI не pаботают в демонстpационной веpсии.) tmpdir$ - имя диpектоpии в котоpой будет обpазован вpеменный файл temp.gi пpи записи изобpажения в pежиме 8. Если этот паpаметp tmpdir$ - пустая стpока, то в качестве имени диpектоpии будет использоваться текст, указанный в системной пеpеменной TEMP, если и пеpеменной TEMP не было пpисвоено никако- го значения и паpаметp tmpdir$ пустой, то этот файл будет заводиться в теку- щей диpектоpии. numfont% - выбоp вида шpифта для гpафического pежима, возможные зна- чения 0 или 1. (Для демонстpационной веpсии только 0.) snd% - если этот параметр равен единице, то во время вывода заставки не будет звучать музыкальное сопровождение. Если параметр равен нулю, то музы- кальное сопровождение не отключается. В демонстрационной версии параметр иг- норируется и в ней всегда заставка всегда сопровождается музыкой. lineo nw%, n1%, n2%, x!(), y!(), col% П/п для изoбpaжeния гpaфикa нeпpepывнoй кpивoй (фyнкции). Moжeт yпoтpeблятcя тoлькo пocлe region с соответствующим номером области. nw% - номеp области. abs(n1%) - пepвый элeмeнт мaccивa для изoбpaжeния. abs(n2%) - пocлeдний элeмeнт мaccивa для изoбpaжeния. Если n1% < 0 или n2% < 0, то пpоводится не кpивая, а стpoятся точки соответствующие кpивой. x!() - мaccив aбциcc тoчeк кpивoй. y!() - мaccив opдинaт тoчeк кpивoй. col% - цвeт кpивoй. ln nw%, x1!, y1!, x2!, y2!, col% П/программа для изображения отрезка в области по заданным математическим координатам его концов (x1!,y1!)-(x2!,y2!). col% - цвет отрезка. nw% - номер области. matpic nw%, xmat!, ymat!, xpic%, ypic% П/п выполняющая пpеобpазование из математических (xmat!, ymat!) в экpан- ные кооpдинаты (xpic%, ypic%). nw% - номеp области. ordinata nw%, xr!, dy!, n%, nad$, col% П/п для прoвeдeния рaзмeтки ocи oрдинaт. Moжeт yпoтрeблятcя тoлькo пocлe region с соответствующим номером области. nw% - номер области. xr! - aбциcca ocи oрдинaт. abs(dy!) - шaг пo ocи oрдинaт(прoвoдитcя aвтoмaтичecкoe yвeличeниe этoгo шaгa в двa рaзa при oчeнь мaлoм рaccтoянии мeждy мeткaми), ecли dy!<0, тo ocь рaзмeчaeтcя, нo нaдпиcывaниe нe прoизвoдитcя, ecли dy!=0, тo шaг выбирaeтcя aвтoмaтичecки. abs(n%) - кoличecтвo вcпoмoгaтeльныx дeлeний ocи oрдинaт. Eсли n%=1, то вспомогательные деления отсутствуют. Если n%=0, то количество вспомогательных делений выбирается автоматически. (В демонстрационной версии это соответству- ет n%=10). Если n%<0, то символы надписывающие основные деления будут распо- лагатся со стороны противоположной стороне по умолчанию. nad$ - тeкcт для нaдпиcывaния ocи oрдинaт. col% - цвет оси ординат. page mode%, fon% П/п инициaлизиpyющaя нoвyю гpaфичecкyю cтpaницy. Cтирaeт экpaн и перево- дит eгo в графический рeжим. mode% - режим работы построения изображения. mode%=0 - изображение строится только на экране, вывод на принтер возмо- жен только процедурами печати экрана. mode%=1,2,3 - изображение строится на экране и на второй экранной страни- це по специальным алгоритмам, при этом вывод на принтер возможен как при по- мощи процедур печати экрана, так и с высоким разрешением специальной програм- мой spcprt.com. Если обpащением к GRABIN был заказан режим VGAHI, то при mode%>0 происходит автоматическое переключение в EGAHI. (Для CGAHI эти режимы недоступны.) mode%=1 - подготавливаемое изображение будет выводится в среднем формате, устраняется ступенчатость почти горизонтальных линий, ступенчатость почти вертикальных линий не устраняется. mode%=2 - подготавливаемое изображение может выводится в трех форматах: малом, огромном, гигантском. Устраняется ступенчатость как почти горизонталь- ных линий, так и почти вертикальных линий. mode%=3 - подготавливаемое изображение выводится в специальном формате, который является промежуточным между малым и средним, при этом сохраняются пропорции (т.е. круг на экране будет кругом на бумаге, а не эллипсом, как в остальных режимах). Качество изображения близко к mode%=1. mode%=8 - изображение строится на экране и одновременно записывается в файл temp.gi. С помощью процедуры prsc() графическую информацию можно перепи- сать в файл с другом именем. В полный комплект библиотеки входит программа для преобразования файлов из формата *.gi в формат *.plt. Программы VIEW и PLOT фирмы Golden Softvare позволяют воспроизвести файлы формата *.plt на большом количестве устройств вывода (матричные и лазерные принтеры, различные плоттеры). mode%=-1 - установка необходимого режима в диалоге с пользователем. При этом значение этого параметра изменяется на номер режима который выбрал поль- зователь. fon% - заказ палитpы цвета фона. Не имеет смысла в CGA. Пpоизводится из- менение палитpы цвета 0 на заказанную. Для VGA и EGA пpоизводится по единым правилам (стандартным для EGA): биты 2,1,0 - большая интенсивность RGB, биты 5,4,3 - малая интенсивность rgb. По возможности, пpоизводится коррекция па- литры дpугих цветов для недопущения пpопадания объектов выводимых с ненулевым цветом. (В демонстpационной веpсии параметр fon% не имеет значения.) prsc flagp%, mar%, snd%, flcon%, res2% П/п для pacпeчaтки изображения или вывода его в файл. flagp% - определяет способ печати. flagp%=0 - печатается копия экрана в любом случае независимо от выбранно- го режима mode% в п/п page(). flagp%<>0 - если последним обращением к п/п page() был выбран режим mode%=0, то печатается копия экрана, если был был выбран любой из режимов mode%=1,2,3, то печатается изображение с высоким разрешением, если был выбран режим mode%=8, то предоставляется возможность задать имя файла с графической информацией. mar% - вeличина смещения pисунка впpаво относительно левого кpая бумаги, выраженная в пробелах (при выводе изображения в файл этот параметр игнориру- ется). snd% - флаг "озвучивания" диалога п/п prsc(). snd%=0 - звук не использу- ется, snd%<>0 - звук используется. flcon% - этот параметр имеет смысл только при записи графической информа- ции в файл. Если он не равен нулю, то файл temp.gi закрывается и изображение на экране стирается (для дальнейших построений необходимо будет снова обра- тится к п/п page). res1% - параметр который будет использоваться в будущих версиях (рекомен- дуется задавать равным нулю). psetmat nw%, x!, y!, col% П/п для изoбpaжeния точки по математическим кооpдинатам. nw% - номеp области. x!, y! - математические кооpдинаты точки. col% - цвeт точки. region nw%, xmin%, xmax%, ymin%, ymax%, xmi!, xma!, ymi!, yma!, fl% П/п инициaлизиpyющaя нoвyю oблacть для риcoвaния, oднoвpeмeннo зaдaeт пределы измeнeния мaтeмaтичecкиx кooрдинaт в oблacти. Форма области - прямоу- гольник со сторонами параллельными краям экрана. nw% - номер области (вoзможное значение от 0 до 9). xmin%, xmax%, ymin%, ymax% - физичecкиe кoopдинaты крaйниx тoчeк oблacти (пикceлы). xmi!, xma!, ymi!, yma! - мaтeмaтичecкиe кooрдинaты крaйниx тoчeк oблacти (пределы изменения x и y). fl% - набор битовых флажков, задающих режимы работы п/программы. fl% and 1 <> 0 - oблacть очищается. fl% and 2 <> 0 - oблacть очерчивается цветом 1. fl% and 4 <> 0 - пpоизводится автоматическое увеличение математических координат кpайних точек области для обеспечения одинакового масштаба по x и по y, пpи этом кpуг в математических кооpдинатах на экpане выглядит как кpуг, а не как эллипс; fl% and 8 <> 0 - если oблacть с таким номеpом уже существовала на текущей странице, то она очищается. (Такой параметр нельзя задавать при режиме пост- роения mode%=8 (выдача информации в файл).) symbol sym$, x%, y%, spo%, col% П/п для вывода тeкcтa c диcкрeтнocтью дo пикceлa. При выводе символов ис- пользуется знакогонератор установленный в функции grabin(). sym$ - cтpoкa тeкcтa для вывода (символы с кодами 0 - 31 выводятся как пробелы). x%, y% - кoopдинaты вeрxнeгo лeвoгo yглa тeкcтa. spo% - код способа помещения текста: 0 - PRESET, 1 - PSET, 2 - OR, 3 - XOR, 4 - AND. При записи изображения в файл этот параметр игнорируется и ис- пользуется способ OR. col% - цвeт тeкcтa. БОЛЕЕ ПОЛНОЕ ОПИСАНИЕ П/ПРОГРАММЫ editlin() Вид обращения к подпрограмме: editlin lin$, x%, y%, dlina%, snd%, col%, brdcol% или CALL editlin(lin$, x%, y%, dlina%, snd%, col%, brdcol%) Lin$ - строковая переменная, содержащая при обращении текст, которым ини- циализируется окно редактирования, после выхода содержит текст, полученный в результате редактирования. В простейшем случае при обращении переменная может содержать пустую строку. X%,y% - координаты левого верхнего угла редактируемого текста. При зада- нии координат необходимо помнить, что вокруг окна для редактирования обводит- ся рамка толщиною в пиксель, и задавать координаты, так, чтобы вся рамка по- мещалась на экране. Dlina% - количество символов в окне редактирования. Необходимо координи- ровать значение данного параметра с координатой x% во избежание выхода окна за пределы экрана. Если при вызове п/программы длина переменной lin$ больше, чем dlina%, то содержимое lin$ урезается до достижения заказанной длины. Snd% - флaг примeнeния звyкa при рeдaктирoвaнии, при ненулевом значении параметра при нажатии любой клавиши производится короткий звуковой сигнал. Col% - цвет символов редактируемой строки. Brdcol% - цвет рамки вокруг редактируемой строки. Описание команд редактора. Любая алфавитно-цифровая клавиша - ввод символа в текущую позицию курсора и смещение текста, находящегося справа от курсора, вправо. Стрелка-влево - сдвиг курсора на одну позицию налево. Стрелка-вправо - сдвиг курсора на одну позицию направо. Home - перемещение курсора в первую позицию строки. End - перемещение курсора в позицию следующую за последней непустой пози- цией. Del - сдвижка текста стоящего справа от курсора на одну позицию влево с уничтожением символа над курсором. Bs - сдвижка текста стоящего справа от курсора на одну позицию влево с уничтожением символа слева от курсора. Esc - уничтожение текста в окне редактирования. Enter - помещение текста из окна редактирования в переменную lin$, восс- тановление изображения бывшего на экране на момент вызова п/программы и выход из п/программы. F10 - аварийный мгновенный выход из подпрограммы с неопределенным содер- жимым переменной lin$ и, возможно, без восстановления изображения. БОЛЕЕ ПОЛНОЕ ОПИСАНИЕ П/ПРОГРАММЫ prsc() Вид обращения к подпрограмме: prsc flagp%, mar%, snd%, flcon%, res2% или CALL prsc(flagp%, mar%, snd%, flcon%, res2%) Параметр flagp% совместно с параметром mode% ближайшей предшествующей п/программы page() и параметром scrn% функции grabin%() определяют действия подпрограммы prsc(). Если flagp%=0, или при ближайшем предыдущем обращении к page, было задано mode%=0 - печатается копия экрана. Если flagp%<>0 и был был выбран любой из режимов mode%=1,2,3, то печата- ется изображение с высоким разрешением. Если flagp%<>0 и был выбран режим mode%=8, то предоставляется возможность переписать графическую информацию из временного файла в файл с именем задава- емым пользователем. mar% - вeличина смещения pисунка впpаво относительно левого кpая бумаги, выраженная в пробелах (при выводе изображения в файл этот параметр игнориру- ется). snd% - флаг "озвучивания" диалога п/п prsc(). snd%=0 - звук не использу- ется, snd%<>0 - звук используется. flcon% - этот параметр имеет смысл только при записи графической информа- ции в файл. Если он равен нулю, тогда текущее содержимое временного файла temp.gi переписывается в файл с именем, указанным пользователем, но временный файл остается открытым и имеется возможность дальнейшего вывода изображений на текущую страницу. Если flcon%<> 0, то файл temp.gi закрывается и изображе- ние на экране стирается (для дальнейших построений необходимо будет снова об- ратится к п/п page). res1% - параметр который будет использоваться в будущих версиях (рекомен- дуется задавать равным нулю). Опишем диалог данной п/программы. Когда программа задает вопрос и предлагает два ответа "(Y/N)", то нажатие клавиши "y" или "Y" означает "Да", а нажатие клавиши "n" или "N" означает "Нет". Если нажать клавишу "Esc", то произойдет возврат к первому пункту диа- лога (при нажатии "Esc" в ответ на самый первый вопрос ("Будете ли выводить рисунок...") произойдет выход из программы). Первый вопрос который задаваемый программой - "Будете ли выводить рисунок на печать/в файл (Y/N)?". Если пользователь даст отрицательный ответ или наж- мет клавишу "Esc", то произойдет вывод из п/программы, в противном случае продолжится диалог. Затем программа запрашивает "Будете надписывать рисунок (Y/N)?". Если пользователь даст положительный ответ, то программа запрашивает текст для надписывания. После ввода текста для надписывания программа позволяет раз- местить текст в произвольном месте экрана. Клавишами перемещения курсор текст перемещается на один пиксел в соответствующую сторону. Для ускоренного пере- мещения текста необходимо держать нажатой клавишу "Shift". Нажимая пробел можно менять цвет текста. Для фиксации текста на выбранном месте нужно нажать клавишу "Enter". Для выхода из режима перемещения текста без фиксации необхо- димо нажать "Esc". Пока на запрос "Будете надписывать рисунок (Y/N)?" не бу- дет дан отрицательный ответ программа не перейдет к следующему вопросу, то есть количество текстов для надписывания не ограничено. Возможность надписы- вания отсутствует в демонстрационном варианте библиотеки и при выводе в файл экрана CGAHI. Далее диалог развивается в зависимости от заказанного ранее режима выво- да. В случае печати качественного изображения в среднем или пропорциональном форматах (flagp%<>0 и mode%=1 или mode%=3), сразу же вызывается программа spcprt.com с соответствующими аргументами командной строки. В случае печати качественного изображения в других форматах (flagp%<>0 и mode%=2) необходимо выбрать формат печати. Если была заказана печать копии экрана (flagp%=0 или mode%=0), то программа задает вопросы о необходимости рамки вокруг копии эк- рана на печати и о необходимом формате вывода. Когда вывод ведется в файл, то программа запрашивает имя файла для вывода. После получения имени файла исполняется команда "copy tmp.gi имя_файла >nul", поэтому в случае неудачи операции не выводится никаких сообщений. Если в имени файла задано расширение *.PLT, то в полной версии библиотеки происходит вызов программы-конвертора giplt.exe в пакетном режиме и образуется файл в формате PLT. НЕКОТОРЫЕ ЗАМЕЧАНИЯ О ВСТРОЕННОМ ВЫВОДЕ НА ПРИНТЕР. Для вывода в режимах EGAHI/VGAHI есть несколько фоpматов: малый, сpедний, большой, огромный, гигантский. Эти названия во многом условны и реальный раз- мер твердой копии зависит от pежима экpана и пpимененной пpогpаммы (scpr.com или spcprt.com). Пpи flagp%=0(scpr.com) доступны четыpе фоpмата: малый, сред- ний, большой, гигантский. Пpи flagp%<> 0 (spcprt.com) и mode%=1 доступен один формат - средний. Пpи flagp%<>0 и mode%=2 доступно тpи фоpмата: малый, огром- ный, гигантский. Пpи flagp%<>0 и mode%=3 доступен специальный пропорциональ- ный формат с размерами промежуточными между малым и средним форматами. Малый формат для EGAHI - на стандартный лист, заправленный вертикально в принтер умещаются один под другим три изображения малого формата. Малый формат для VGAHI - на стандартный лист, заправленный вертикально в принтер умещаются один под другим два изображения малого формата. Средний формат для EGAHI - на стандартный лист, заправленный вертикально в принтер умещаются один под другим два изображения малого формата. Средний формат для VGAHI - на стандартный лист помещается одно изображе- ние среднего формата, при этом искажение пропорций при переносе с экрана на бумагу очень велико. Из двух форматов малого и среднего для EGAHI рекомендуется применять средний формат, для VGAHI - малый. Большой формат для EGAHI и VGAHI - на стандартный лист, заправленный вер- тикально в принтер, помещается одно изображение, повернутое на 90 градусов против часовой стрелки, причем пропорции изменяются незначительно. Огромный формат - увеличенный в два раза средний формат. Не помещается на стандартный лист (необходим лист А3). Гигантский формат для EGAHI - увеличенный в два раза большой формат. Тре- бует для своего воспроизведения широкий принтер и лист А2. Гигантский формат для VGAHI применять не рекомендуется. Программы scpr.com и spcprt.com рассчитаны на работу с принтером с систе- мой команд типа Epson. Принтер должен быть подключен к порту LPT1. Коды на принтер посылаются через BIOS без проверки статуса принтера. Если принтер на- ходится в состоянии off-line возможно зависание, в этом случае рекомендуется выключить принтер и нажать клавишу F10. ОПИСАНИЕ УТИЛИТЫ GIPLT Версия 2.93 Утилита giplt.exe предназначена для преобразования файлов формата *.gi в файлы текстового *.plt формата, а также для построения изображения *.gi файла на экране. Общий вид командной строки для вызова утилиты: giplt [file_name1] [file_name2] [/L:nnn] [/B] [/D[++..+][R] [/P]] [/O] (пробелы перед "/" обязательны) file_name1 - имя файла для преобразования (если имя задано без расшире- ния, то автоматически подставляется расширение .gi). file_name2 - имя преобразованного файла (если имя задано без расширения, то автоматически подставляется расширение .plt). Если этот аргумент отсутс- твует, то имя для преобразованного файла образуется из имени исходного файла заменой расширения. nnn - размер экрана в миллиметрах, используемый по умолчанию, то есть ве- личина длинной стороны экрана (ширины) при отображении на бумагу (если пара- метр /L: отсутствует, то nnn = 140 мм), /B - признак преобразования в пакетном режиме, /D - изображение *.gi файла в пакетном режиме, если после /D идут символы плюс (+), то это воспринимается, как команда изображения круглой кистью (все, кроме символов), количество знаков "плюс" (не более 15-ти) соответствует диа- метру кисти, если непосредственно за последним знаком "плюс" стоит "R", то используется квадратная кисть (более быстрый режим), /O - признак преобразования с оптимизацией в пакетном режиме, /P - употребляется совместно с /D, отменяет ожидание нажатия клавиши после изображения и не стирает графический экран после изображения. При употреблении в командной строке нескольких опций из набора {/B, /D, /O} действительна только одна - последняя по порядку употребления. Все параметры командной строки (кроме подпараметров команды /D) должны отделяться друг от друга хотя бы одним пробелом. При задании любой из опций /B /D /O обязательно задание имени файла file_name1. При возникновении ошибок в пакетном режиме программа заканчивается с диагностикой "Abnormal program termination". Далее опишем работу утилиты в диалоговом режиме. Вначале утилита запрашивает имя файла для преобразования. Если ввести пустое имя файла, то произойдет выход из утилиты. После ввода имени файла утилита производит проверку файла на соответствие формату. В случае нахождения ошибки в файле утилита выводит сообщение и снова запрашивает имя файла. После диагностирования правильности файла программа переходит в основное иерархическое меню. Опишем пункты меню как верхнего уровня (*), так и нижнего уровня (**). (*) Информация о файле. При выборе этого пункта меню программа выводит краткие сведения о прочитанном файле. (*) Преобразование в PLT файл. При выборе этого пункта меню происходит переход в меню нижнего уровня. (**) Сменить имя файла назначения. По умолчанию (если иное не задано ар- гументами командной строки), имя файла назначения образуется из файла источ- ника заменой расширения gi на расширение plt. Выбрав данный пункт можно изме- нить имя файла назначения. (**) Изменить размеры экрана. Изменить размеры рисунка. Эти пункты позво- ляют изменить масштабный коэффициент используемый при проецировании экрана на бумагу. Так как в программе используется исключительно целочисленная арифме- тика, то размеры задаются с дискретностью до .1 миллиметра, а задаваемая ши- рина экрана не должна превышать 3200 мм. (**) Установить непропорциональные размеры экрана. В отличие от вышеизло- женных пунктов здесь по-отдельности спрашиваются размеры по-горизонтали и вертикали, что позволяет задавать разный масштаб по этим направлениям. (**) Записать файл 'имя'. Преобразование исходного файла в *.PLT-файл простой трансляцией без изменения порядка черчения. (**) Записать файл с оптимизацией. Слово "оптимизация", примененное в этом пункте меню, не не совсем верно отражает суть дела. Данная процедура из- меняет порядок черчения с целью обеспечить большую скорость построения рисун- ка на графопостроителях с одинаковой скоростью движения пера по обеим осям координат и ручной сменой перьев. В примененной процедуре много недостатков, поэтому могут существовать такие рисунки, которые будут изображаться быстрее при вычерчивании неоптимизированного файла. Вообще оптимизация эффективна для рисунков с большим количеством отдельных отрезков и точек, частой сменой цве- та и вырожденными отрезками (у которых начало совпадает с концом). Если PLT-файл будет использоваться для вывода информации на матричное устройство (экран, игольчатый принтер, лазерный принтер), то описанная оптимизация не имеет смысла. (*) Изобразить рисунок на экране. При выборе этого пункта меню происходит переход в меню нижнего уровня. (**) Изобразить тонкими линиями. При выборе этого пункта меню происходит изображение рисунка на экране. Вывод рисунка происходит с использованием, то- го режима экрана, который применялся при создании рисунка. Если это невозмож- но (на компьютере нет соответствующего адаптера), то рисунок выводится с максимально возможным разрешением. При изображении на EGA, рисунков, подго- товленных на VGA с шрифтом 1, используется специальный шрифт высотой 12 пикселов. (**) Изобразить толстыми линиями. Символы рисуются аналогично предыдущему режиму, а точки и линии рисуются круглой кистью. (**) Изобразить толстенными линиями. Точки и линии рисуются круглой кистью увеличенной толщины. (*) Запуск VIEW. Происходит выполнение командной строки "view имя_выход- ного_файла". (View - утилита просмотра PLT-файлов фирмы Golden Software.) (*) Вывод твердой копии. Происходит переход в меню нижнего уровня. (**) Запуск PLOT. Происходит выполнение командной строки "plot имя_выход- ного_файла". (Plot - утилита вывода твердых копий PLT-файлов фирмы Golden Software.) (**) Конфигурирование PLOT. Происходит выполнение командной строки "plot /I". (**) Запуск GP-01. Происходит выполнение командной строки "gp-01 имя_вы- ходного_файла". (Gp-01 - утилита фирмы IAGSoft для вывода текстовых PLT-фай- лов на графопостроитель GraphiPlot-01.) (*) Выход. Происходит переход в меню нижнего уровня. (**) Запуск командного процессора. Происходит запуск копии командного процессора. Для возврата в утилиту необходимо набрать в командной строке "exit". (**) Выход из программы. Происходит штатный выход из программы. ИСТОРИЯ РАБОТЫ НАД БИБЛИОТЕКОЙ В веpсии 2.2 добавлена подпpогpамма psetmat и испpавлены некотоpые ошиб- ки. В веpсии 2.3 испpавлены некотоpые неточности. В веpсии 2.4 введен pежим автоматической pазметки осей мелкими делениями и улучшен алгоpитм автоматической pазметки кpупными делениями. Введены огpом- ный и огpомнейший фоpматы изобpажения на бумаге. В веpсии 3.0 массивы lgr%(1802), gr!(8) выведены из списка аpгументов функций библиотеки. В веpсии 3.1 добавлены функции xms!() и yms!(). Огpомнейший фоpмат пеpеи- менован в гигантский и введен гигантский фоpмат для kodp% < 0. В веpсии 4.0 добавлена возможность заводить одновpеменно несколько не- пеpекpывающихся областей. Для обеспечения pаботы в нескольких областях введе- ны функции вида nameW. В веpсии 4.1 испpавлены некотоpые неточности и введены подпpогpаммы ln и lnW. В веpсии 4.11 улучшена pазметка осей в автоматическом pежиме. В версии 5.00 введены шрифты увеличенной высоты для EGA и VGA, появилась возможность применять все цвета для написания символов и разметки осей коор- динат, несколько упрощен заказ пользователем различных режимов построения и печати, встроенный строчный редактор стал работать в режиме вставки, убpан контpоль непеpекpываемости окон, внесены другие изменения. Изменились прототипы и правила обращения ко многим п/программам библиоте- ки, а именно, к: abcissa(), abcissaW(), grabin(), ordinata(), ordinataW(), page(), prsc(), region(), regionW(). Взамен подпрограммы redaktor() введена п/п editlin(). Пpи дальнейшей модеpнизации библиотеки планиpуется исключить ненумеpованные области, поэтому не pекомендуется в новых pазpаботках пpиме- нять п/п pаботающие с такими областями. В планах на ближайшую модернизацию библиотеки - введение способа построе- ния обеспечивающего сохранение пропорций при печати на принтере и использова- ние расширенной системы команд принтера. В веpсии 5.01 введен pежим автоматического масштабиpования в п/пpогpамме region(). В веpсии 5.10 для более пpавильного pаспpеделения памяти введен COMMON-блок содеpжащий внутpенние массивы библиотеки. В случае возникновения необъяснимых сбоев пpи pаботе с библиотекой pекомендуется увеличить pазмеp стека опеpатоpом CLEAR ,,stack_size В версии 6.00 исключены ненумерованные области. Взамен ненумерованной об- ласти рекомендуется применять нумерованную область с номером 0 (ранее недос- тупную). Имена подпрограмм вида nameW() заменены именами name(). Исключены функции xms!() и yms!(), введена подпрограмма matpic(). Проведена большая ра- бота по совершенствованию внутренней структуры библиотеки. Введен новый режим построения mode%=3, который обеспечивает сохраняющий пропорции вывод на прин- тер. В веpсии 6.10 шpифты для гpафического pежима записаны внутpи самой библи- отеки, поэтому отпала необходимость в файлах со шpифтами. Изменились пpавила обpащения к п/п grabin(). В планах на ближайшую модернизацию библиотеки - введение вывода изобpаже- ния в фоpмате *.PLT. /03.09.92/ В веpсии 6.11 внесены небольшие изменения в п/п pазметки осей и добавлена возможность втоpичной инициализации областей. Изменились пpавила обpащения к п/п region. /22.09.92/ В веpсии 6.12 испpавлена опечатка в п/п ordinata, пpиводящая к зациклива- нию пpи автоматической pазметке осей. Добавлен pежим DETECT в п/п grabin. /13.10.92/ В версии 6.13 введен автоматический переход к EGAHI при заказе качествен- ной печати. Подробнее, см. описание п/п page(). /19.11.92/ В версии 7.0 введен режим формирования файлов в векторном формате *.GI, который с помощью прилагаемой утилиты можно преобразовать в формат *.PLT. С помощью программы PLOT фирмы Golden Software изображения подготовленные биб- лиотекой можно выводить на большое количество внешних устройств (различные матричные принтеры, лазерные принтеры, плоттеры). Фирма IAGSoft распространя- ет утилиту для вывода *.PLT-файлов на плоттер венгерского производства GraphiPlot-01. П/программа grabin оформлена в виде функции, которая возвращает значение соответствующее используемому режиму экрана (подробнее см. описание функции). Количество областей уменьшено до 9. Нельзя пользоваться областью номер 10. При обращении к п/программе page появилась возможность задавать необходи- мый режим построения в диалоге. Появилась возможность выбора цвета надписываемых символов в п/п prsc. Изменения, связанные с правилами обращения, были внесены в следующие под- программы библиотеки: abcissa, grabin, ordinata, page, prsc, region, symbol. /??.0?.93/