Иллюстрированный самоучитель по SVGA

Курсоры для Windows

Наиболее доступными являются файлы, содержащие рисунки курсоров, подготовленные в стандарте Windows. Операционные системы Windows используют курсоры различной формы: стрелка, вертикальная черта, рука, песочные часы и пр. Конкретный рисунок курсора зависит от выполняемых действий и выбирается системой автоматически. Windows 9X позволяет изменять рисунки курсора при выборе "темы рабочего стола".

Windows 3.X работают с черно-белыми курсорами, заготовки рисунков которых хранятся в специальном файле и извлечь их из него не так просто. Однако существует специальное приложение MouseWarp, которое позволяет оператору выбирать рисунок курсора по своему усмотрению. В комплект этого приложения входит 19 файлов с заготовками рисунков курсоров, которые можно использовать для наших целей.

Windows 9X не только сама изменяет форму курсора, но и позволяет это сделать оператору. Прилагаемые к ней заготовки рисунков курсоров хранятся в отдельном каталоге (cursors) и вы можете их использовать.

Структура файлов Icon

Семейство Windows использует один общий стандарт icon для хранения файлов с заготовками рисунков курсоров и пиктограмм (значков). Спецификации файлов имеют тип (расширение) cur для курсоров и ico для пиктограмм.

К сожалению, автор не встречал точного описания структуры таких файлов, даже в справочнике Борна содержатся явные неточности. Если вам попадется описание стандарта icon для Windows, то ему не следует слепо доверять. Обязательно распечатайте дамп одного из доступных вам файлов и сравните распечатку с вариантом описания. В качестве эталона можно взять файл nc.ico, входящий в комплект Norton Commander. Для версии NC 5.0 он содержит заготовку рисунка капитанской фуражки с красными цифрами 5.0.

Стандартный файл формата icon состоит из четырех основных частей: заголовка, палитры цветов, заготовки рисунка и маски.

Первые восемь байтов заголовка содержат следующие данные:

  • слово со смещением 0 всегда очищено (пустое), это признак формата icon;
  • слово со смещением 2 содержит тип рисунка: 1 – пиктограмма, 2 – курсор;
  • слово со смещением 4 содержит количество хранящихся в файле рисунков (обычно 1);
  • байт со смещением 6 содержит количество точек в строке (обычно 20h);
  • байт со смещением 7 содержит количество строк в рисунке (обычно 20h).

Из других полей заголовка следует отметить слово с адресом 36 (24h), содержащее размер точки рисунка, выраженный в битах. Он равен 1 для черно-белых и 4 для цветных рисунков. Эта величина указывает способ распаковки рисунка и размер палитры.

Палитра используемых цветов располагается в файле, начиная с адреса ЗЕf. Она содержит 2 или 16 строк, в которых хранятся коды цветов в формате b, g, r, 0. Заметим, что в таком формате хранится палитра в ВМР-файлах для Windows (см. Приложение А). В зависимости от количества цветов палитра занимает 8 (2 цвета) или 64 (16 цветов) байта.

Сразу после палитры размещается образ рисунка. Адрес его начала зависит от размера палитры и равен 46h для черно-белых рисунков или 7Eh для 16-цветных. Количество точек в рисунке фиксировано и составляет 32x32 = 1024 точки. Черно-белые рисунки упакованы по 8 точек в байте, а цветные – по 2 точки в байте. Соответственно, образ рисунка занимает в файле 128 или 512 байтов.

После образа рисунка располагается маска. Адрес ее начала СБЬ для черно-белых рисунков или 27Eh для цветных. Маска – это черно-белый рисунок, упакованный по 8 точек в байте и занимающий 128 байтов. Адрес ее начала отстоит от конца файла на 128 байтов.

Образ рисунка и маска хранятся в перевернутом виде: первой записана последняя строка, второй – предпоследняя и т. д., последней в файле хранится первая строка рисунка или маски. Такой способ хранения данных используется в файлах формата BMP (см. Приложение А).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.