|
b = bitmap 160 120 filename:"c:\\t.avi" -- Создадим битовую карту
for i =1 to 10 do -- Организуем цикл по кадрам
(at time i -- Устанавливаем временной
-- контекст,
render 160 120 to:b -- выводим результат в
-- битовую карту,
Save b -- и сохраняем ее.
) -- Если сохранить ПОСЛЕ цикла,
-- запишется только последний кадр.
Close b -- Закроем выходной файл. Это так же
-- освободит ссылку на битовую карту
-- и занимаемую ей память.
Второй пример читает битовую карту из файла и выводит в окно интерпретатора программу, которая сама создает такую же карту, что и прочитанная. Вы можете скопировать полученную программу в свой скрипт и использовать, например, при создании кнопки с картинкой
(
b = selectbitmap () -- Откроем исходный файл
bname="bitmap_"+(getfilenamefile b.filename) -- Определим имя функции
w=b.width -- Определим высоту и ширину картинки
h=b.height
format "----------\nfn load_% = (\n" bname -- Определение функции
format "local % = bitmap % %\n" bname w h -- Создание карты в
--функции
-- запись функции, распаковывающей данные о пикселях
format "fn unpack val = for p in val collect (r = p/256^2; g = p/256-r*256; b = mod p 256; color r g b)\n"
for r = 0 to h-1 do -- Для каждой строки карты
-- получим функцию для записи колонок карты
(format "setpixels % [0,%] (unpack #(" bname r
pixels=getpixels b [0,r] w -- чтение колонки карты
for c=1 to w do -- цикл по пикселям
(p=pixels[c] -- получим пиксель
-- Упакуем цветовые данные в целое число
format "%" (((p.r as integer)*256+(p.g as integer))*256+(p.b as integer))
if c!= w then -- Если пиксель не последний
format ", " -- поставим запятую
Else
format "))\n" -- иначе перейдем на новую строку
)
)
format "return %\n" bname -- возврат битовой карты
format ")\n----------\n" -- завершение функции
)
Потоки
Файловый поток
Класс файловый поток предоставляет средства для ввода и вывода в текстовый файл.
Литералы
Литералов для файлового потока не предусмотрено
Конструкторы
Функция
createFile Символьная_строка
создает новый файл с именем, заданным символьной строкой, и возвращает файловый поток в случае успешного завершения. В противном случае возвращается значение undefined. Открытие уже существующего файла осуществляется с помощью функции
openFile Символьная_строка_1 mode: Символьная_строка_2
Первая строка – имя открываемого файла, вторая – необязательный именованный параметр, означающий режим открытия. Второй параметр может принимать одно из двух значений. “a” означает открытие для добавления записей в файл, “r” – открытие только для чтения.
Можно открыть зашифрованный файл, используя функцию
openEncryptedFile Символьная_строка Целое_число
Символьная строка задает имя файла, число – ключ шифровки. О том, как создаются зашифрованные файлы, речь еще впереди.
Свойства
Свойств у файловых потоков нет.
Методы
Для чтения данных из файлового потока предусмотрен целый ряд функций.
readLine Файловый_поток
читает и возвращает очередную строку из файлового потока.
readChar Файловый_поток
читает из файлового потока очередной символ и возвращает его в виде символьной строки.
readChars Файловый_поток Число
читает из указанного файлового потока количество символов, указанное вторым параметром.
readDelimitedString Файловый_поток Символьная_строка
читает символы из файлового потока до тех пор, пока не встретит указанную вторым параметром строку или конец файла.
skipToString Файловый_поток Символьная_строка
просматривает файл до тех пор, пока не встретит символьную строку, заданную вторым параметром и позиционирует указатель чтения/записи за ней. Если строка в файле не встретилась, возвращает undefined.
skipToNextLine Файловый_поток
позиционирует указатель чтения/записи на начало следующей строки.
filePos Файловый_поток
возвращает текущую позицию указателя чтения/записи.
seek Файловый_поток Число
устанавливает указатель чтения/записи в позицию, указанную вторым параметром.
eof Файловый_поток
возвращает true, если достигнут конец файла, в противном случае false.
flush Файловый_поток
записывает все данные, содержащиеся в буфере, на диск.
close Файловый_поток
записывает все данные, содержащиеся в буфере, на диск и закрывает файл.
readValue Файловый_поток
читает и возвращает значение операнда из текстового файла.
readExpr Файловый_поток
читает и выполняет выражение из текстового файла.
execute Файловый_поток
читает и выполняет все выражения, содержащиеся в текстовом файле, начиная с текущей позиции.
Разница между readValue и readExpr иллюстрируется следующим примером. Роль файлового потока для простоты будет играть строковый
s = stringstream “random 0.0 1.0; random red blue”
readValue s
readValue s
seek s 0
readExpr s
readExpr s
seek s 0
execute s
Результаты выполнения
random () читается и возвращается название функции
random
0.0 читается и возвращается ноль
OK результат выполнения функции seek
0.494995 читается и выполняется выражение
random 0.0 1.0
(color 94.1571 0 25.2922) читается и выполняется выражение
random red blue
OK результат выполнения функции seek
(color 39.3391 0 137.636) читается и выполняется весь поток,
возвращается результат последнего выражения
Для вывода в файловый поток применяются функции print и format. Файловый поток при этом указывается именованным параметром to. Например
s = createFile “MyFile.txt”
str = “MyString”
print str to:s
close s
Дата добавления: 2015-10-31; просмотров: 117 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Методы для работы с g-буфером | | | Строковый поток |