Выбрать главу

Ряд st - имя вашего .bmp-файла, в который будет записана биткарта.

Индикатор результата операции i может принимать одно из следующих значений:

global constant BMP_SUCCESS = 0,-- успех операции

BMP_OPEN_FAILED = 1,-- файл не открылся на запись

BMP_INVALID_MODE = 4 -- неверный графический формат

-- или неверный аргумент

Комментарии:

save_screen() вырабатывает биткарты с 2, 4, 16, или 256 цветами, которые могут быть прочитаны с помощью read_bitmap(). Программа Paintbrush из пакета Windows и некоторые другие графические редакторы не поддерживают 4-х цветные биткарты.

save_screen() работает только в пиксельно-графических режимах, но не в текстовых.

Пример 1:

-- записывается весь экран:

code = save_screen(0, "c:\\example\\a1.bmp")

Пример 2:

-- записывается часть экрана:

err = save_screen({{0,0},{200, 15}}, "b1.bmp")

См. также:

save_image, read_bitmap, save_bitmap

save_text_image

Синтаксис:

include image.e

s3 = save_text_image(s1, s2)

Описание:

Записывает в ряд прямоугольную область экрана в текстовом режиме. Результатом будет ряд рядов, содержащий символы ASCII и их атрибуты с экрана. Вы сможете затем перевывести этот текст с помощью процедуры display_text_image(). s1 является двухэлементным рядом вида {строка1, колонка1}, в котором определена позиция (знакоместо) верхнего левого символа. s2 - ряд вида {строка2, колонка2}, определяющий позицию (знакоместо) правого нижнего символа.

Комментарии:

Поскольку сохраняются и атрибуты, вы будете получать правильные цвета фона, символов и другие свойства для каждого символа при перевыводе сохранённого текста.

Под DOS32 байт атрибута состоит из двух 4-битных полей, в которых содержится информация о цвете фона и символа для каждого знакоместа. Старшие 4 бита определяют цвет фона, а младшие 4 бита дают цвет символа на этом фоне.

Эта подпрограмма работает только в текстовых режимах.

Вы можете использовать эту функцию в графическом пользовательском интерфейсе текстового режима для сохранения участков экрана перед выводом выпадающих меню, диалогов, предупреждений и других элементов управления.

Под DOS32, если вы применяете чередование видеостраниц, имейте в виду, что данная функция производит чтение с текущей активной страницы.

Пример:

Если на двух верхних строках экрана имеется:

Hello

World

и вы исполните:

s = save_text_image({1,1}, {2,5})

тогда s будет иметь вид:

{"H-e-l-l-o-",

"W-o-r-l-d-"}

символ '-' здесь обозначает некие байты атрибутов.

См. также:

display_text_image, save_image, set_active_page, get_screen_char

scroll

Синтаксис:

include graphics.e

scroll(i1, i2, i3)

Описание:

Прокручивает участок текста на экране вверх (если i1 положительное) или вниз (если i1 отрицательное) на i1 строк. Участок текста - это последовательность строк на экране от i2 (верхняя строка) до i3 (нижняя строка) включительно. Сверху или снизу будут появляться новые пустые строки.

Комментарии:

Вы могли бы выполнять прокручивание экрана, используя серии вызовов puts(), но scroll() работает намного быстрее.

Позиция курсора после прокрутки не определена.

Пример программы:

bin\ed.ex

См. также:

clear_screen, text_rows

seek

Синтаксис:

include file.e

i1 = seek(fn, a1)

Описание:

Переход на позицию байта с номером a1 в файле fn или в конец файла, если a1 равно -1. Для каждого из открытых файлов у системы имеется информация о текущей байтовой позиции, которая обновляется в результате выполнения на файле операций ввода/вывода. Начальная позиция равна 0 для файлов, открытых на чтение, запись или обновление. Начальная позиция равна концу файла для файлов, открытых на добавление. Величина i1, выдаваемая функцией seek(), равна 0, если переход в заданную позицию завершился успешно, и не равна 0, если переходу что-то помешало. Возможен переход за границу имеющегося файла, в некоторую позицию за его концом. Если вы перешли за конец файла и записываете данные, в зазор между имевшимся концом файла и вашими новыми данными будут вставлены неопределённые байты.

Комментарии:

После перехода в заданную позицию и чтения (записи) последовательности байтов вам может потребоваться новый явный вызов seek() непосредственно перед переключением на запись (чтение) байтов, даже если позиция в файле уже была именно та, которая вам необходима.

Эта функция обычно используется с файлами, открытыми в двоичном режиме. В текстовом режиме DOS преобразует CR LF в LF на входе, и LF в CR LF на выходе, что может вызывать великую путаницу, когда вы пытаетесь подсчитывать байты.

Пример:

include file.e

integer fn

fn = open("mydata", "rb")

-- читает и отображает первую строку файла 3 раза:

for i = 1 to 3 do

puts(1, gets(fn))

if seek(fn, 0) then

puts(1, "перемотка не сработала!\n")

end if

end for

См. также:

where, open

sequence

Синтаксис:

i = sequence(x)

Описание:

Выдаёт 1, если x является рядом, иначе выдаёт 0.

Комментарии:

Основное назначение команды - определение переменных типа ряд. Но вы можете вызывать её как обычную функцию, чтобы проверить, является ли объект действительно рядом.

Пример 1:

sequence s

s = {1,2,3}

Пример 2:

if sequence(x) then

sum = 0

for i = 1 to length(x) do

sum = sum + x[i]

end for

else

-- x должен быть атомом

sum = x

end if

См. также:

atom, object, integer, atoms and sequences

set_active_page

Платформа:

DOS32

Синтаксис:

include image.e

set_active_page(i)

Описание:

Выбирает видеостраницу номер i для всех выводов на экран.

Комментарии:

Используя несколько видеостраниц, вы можете одновременно изменять содержимое всего экрана сразу без каких бы то ни было визуальных подёргиваний и мельканий. Вы можете также сначала записать информацию на невидимую страницу экрана, а потом быстро, практически мгновенно, переменить страницы и вывести эту новую информацию.

Функция video_config() сообщит вам, как много видео страниц доступно в текущем графическом режиме на вашей видеоплате.

По умолчанию активная страница и отображаемая страница обе имеют номер 0.

Всё это работает под DOS или в полноэкранном окне DOS. В окнах, занимающих часть экрана, вы не можете манипулировать номерами активной страницы.

Пример:

include image.e

-- активная и отображаемая страницы сначала обе имеют номер 0

puts(1, "\nЭто страница 0\n")

set_active_page(1) -- экранный вывод теперь пойдёт на страницу 1