Формат XBM, Star Wars, LOOSE

Добрый день! Мы продолжим.

Многие, наверное, уже видели 5K Wolfstein, написанный на JavaScript. Явление, само по себе, весьма любопытное, но меня оно интересует с несколько иной точки зрения - в программе использована графика в формате XBM.

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

Формат XBM является частью X Window System, хорошо знакомой юниксоидам. Внешне внутренность такого файла выглядит, как программа на C и имеет вот такой вот формат:

#define имя_width количество пикселей по горизонтали
#define имя_height количество пикселей по вертикали
static unsigned char имя_bits[] = {
последовательность чисел
}

XBM (0.2Kb) Какое значение имеет поле имя в браузере я не знаю, скорее всего никакого, думаю его можно оставить пустым - ничего от этого не меняется. Для того, чтобы лучше себе представить, как выглядят внутренности картинки в этом формате позволю себе небольшой пример. Если загрузить эту картинку в браузер вы увидите несколько черно-белых квадратов, заключенных один в другой:

#define _width 16
#define _height 16
static unsigned char _bits[] = {
  0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0x05, 0xa0, 0xf5, 0xaf, 0x15, 0xa8,
  0xd5, 0xab, 0x55, 0xaa, 0x55, 0xaa, 0xd5, 0xab, 0x15, 0xa8, 0xf5, 0xaf,
  0x05, 0xa0, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff}

Значение выражения "последовательность чисел" я, думаю, понятно - это перечисленные через запятую байты матрицы, каждый бит которых определяет цвет соответствующей точки. Мои эксперименты показали, что графику этого типа понимает широкий набор браузеров. Я проводил тесты под Opera 6.04, Microsoft Internet Explorer 6.0, Mozilla 1.01b, Netscape Navigator 4.79 и Netscape Navigator 7.0 - все они без проблем показали эту картинку.

Как я уже упоминал, генерацию графики этого типа под некоторыми браузерами можно поручить клиентским скриптам. Под Windows c этой задачей справляются IE 5, 6 и Mozilla, под Mac - Netscape 4.77 и выше, под Unix - Mozilla. По поводу остальных браузеров и платформ мне ничего не известно.

Метод выглядит несколько странно и заключается в записи содержимого файла в переменную с последующим вызовом в теге <IMG> через метод "javascript":

<script>
image_var = '#define _width 16\n#define _height 16\nstatic unsigned char _bits[] = { 0xff, 0xff, 0x01, 0x80, 0xfd, 0xbf, 0x05, 0xa0, 0xf5, 0xaf, 0x15, 0xa8, 0xd5, 0xab, 0x55, 0xaa, 0x55, 0xaa, 0xd5, 0xab, 0x15, 0xa8, 0xf5, 0xaf, 0x05, 0xa0, 0xfd, 0xbf, 0x01, 0x80, 0xff, 0xff}'
</script>


<img src='javascript:image_var' width="32" height="32" />

С GIF, JPEG и BMP такой фокус, к сожалению, не проходит - думаю, во всем виноват символ с кодом 0, который в изобилии встречается в файлах этих форматов.

R2-D2 (4.1Kb) В блуждании по страницам в Сети нашел прекрасный ресурс - Русская Энциклопедия "Звездных войн". С её помощью можно не только досконально изучить флору, фауну, персонажей, типы дроидов и прочее, но и узнать, например, как несладко приходилось актеру, игравшему Чубакка.

Кстати, при прочтении этого труда у меня возникло стойкое ощущение, что к созданию фильма приложили руку IT-монстры. Так общегалактический язык называется Basic (основной), в типах дроидов фигурирует ASP droid, а самих дроидах установлен процессор Intellex.

Кстати, если верить "Энциклопедии..." процессор дроида серии R1 (судя по всему - Intellex IV) выполняет 10000 операций в секунду, "Энциклопедия..." называет его "высококлассным". Видимо в 1977 году эта цифра казалось просто невероятной.

Увидел этот фокус на канале "Discovery" в передаче про проституток, перерыл весь Интернет и нашел его описание. Мне он показался весьма забавным и очень простым в исполнении, сейчас научу вас его показывать. Так как результат все равно представляет интерес только тем, кто знает английский, то и описание я переводить не буду, тем более, что оно немного неприличное. :)

Фокус нужно показывать на калькуляторе, одновременно рассказывая: "so, there was 1 girl, who was 16, and got 69ed 3 times. (11669x3) What was she? 35007".

Показываем, что получилось на табло вверх ногами: "LOOSE".

Для желающих попытать свои силы в придумывании собственного фокуса с калькулятором, даю ссылку на ресурс The Definitive Calculator Dictionary, где вы сможете найти все численные значения, которые соответствуют каким-либо словам в английском языке.

По поводу "фокуса" с почтовым клиентом "TheBAT!", опубликованного в прошлом номере. От читателя Вадима Колонцова поступила интересная теория, которая, хотя бы намекает на то, почему "TheBAT!" может себя так странно вести.

Скорее всего, дело во включенном антиалисинге шрифтов (отсюда и
"замыленность"). Но антиалиасятся только векторные шрифты; часть же
шрифтов в Windows до сих пор растровая. По-моему, Sans Serif как раз
присутствует в двух вариантах: векторном и растровом. Вероятно, в
зависимости от кодировки выбирается тот или иной шрифт (уж не знаю, почему).

Может написать разработчикам? :) И, кстати, неужели и в Windows XP сохранились еще растровые шрифты?

И, напоследок, картинка от digitalk.

Страшнее кошки зверя нет (55.6Kb)

6 июля 2002 16:53

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML: