Спецификация RAW

При загрузке gif-файла функция START возвращает указатель на следующую структуру:

Смещение, байт

Длинна, байт

Описание

0

4

Заголовок 'RAW1'

4

4

n = число изображений

8

4

ширина логического экрана (на котором будут показываться все изображения), в пикселах

12

4

высота логического экрана (на котором будут показываться все изображения), в пикселах

Repeat 0 ; repeat n — повторяющиеся блоки, 1 в случае статичного GIF, нумерация N начинается с 0

16+N*16

4

указатель на очередное изображение - с заголовком 'RAW '**3

20+N*16

4

x-координата изображения на логическом экране, в пикселах

24+N*16

4

y-координата изображения на логическом на экране, в пикселах

28+N*16

2

задержка, измеряется в 0.01 секунды**2

30+N*16

1

<Packed Fields>

0 bit - Прозрачность
0 - нет прозрачного цвета, 1 - есть прозрачный цвет

1 bit — Флаг пользователя
Значения:

    0 - Не ожидать ввод от пользователя для продолжения.

1 - Ожидать ввод от пользователя.

2,3,4 bit — Метод размещения
Значения:
0 - Никакое размещение не определено. Декодер не обязан предпринимать любое действие.
1 - Не располагать. Графику нужно оставить на месте
2 - Восстановить к цвет фона. Область, используемая графикой, должна быть восстановлена к цвету фона.
3 - Восстановить к предыдущему. Декодер обязан восстанавливать область, записанную поверх графическим символом с тем, что было там до предоставления графического символа.
4-7 -Зарезервировано.

5,6,7 bit - Зарезервировано

31+N*16

1

индекс прозрачного цвета**1 (игнорируется, если предыдущее поле нулевое)

end repeat 0

Repeat 1

Repeat 2

Repeat 3

...

Repeat Nmax


Примечания:
  1. **1 индекс прозрачного цвета - пиксели с таким цветом нужно не закрашивать, а оставлять прозрачными. Если следующий экран начинается не со смещения 0, а прозрачного цвета нет, то незатрагиваемая область влюбом случае отсается незатрагиваемой.
  2. **2 задержка - задержка для кадого кадра индивидуальна
  3. **3 указатели на RAW — абсолютные адреса, каждый RAW независимая от заголовка область, при смене файла их все надо освобождать.