воскресенье, 3 октября 2010 г.

Почему размеры значков кратны 8?

Это перевод Why are icons multiples of 8 pixels in width? Автор: Реймонд Чен.

Значки всегда имеют размер кратный 8-ми пикселям. Это не просто потому, что компьютерщикам нравятся степени двойки.

Давным-давно видео-карты были чёрно-белыми (монохромными) или, если вам повезло: 16-ти цветными. Все эти режимы были планарными, механику которых мы обсуждали ранее. Теперь, представьте себе копирование растрового изображения на экран, когда и изображение и экран являются планарными. Если начальные координаты кратны 8, то растровое изображение может быть скопировано через команду блочного копирования. С другой стороны, если они были не точно кратны 8, то вас ожидало много веселья по смещению битов, чтобы вписать изображение на экран.

Это также является причиной для стиля окон CS_BYTEALIGNCLIENT. Когда установлен этот стиль, оконный менеджер будет пытаться установить позицию окна так, чтобы x-координата верхнего-левого угла клиентской области располагалась бы в точности по байтовой границе видео-памяти. Если вы работаете в видео-режиме 1 BPP (монохромный или 16-ти цветный), то это будет означать позиционирование x-координаты кратно 8. При таком позиционировании растровый рисунок клиентской области мог быть скопирован на экран быстрым блочным перемещением.

Если вы посмотрите на размеры диалоговых окон в Windows 95 или более ранней, то вы обнаружите, что все они имеют ширину, кратную 32 DLU. Поскольку 4 горизонтальных DLU равны в среднем ширине одного символа, то вы должны делать ваши диалоги шириной кратной 32, чтобы итоговый размер диалога был бы кратен 8 пикселям.

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

Конечно же, в современном мире режимов 32 BPP, всё это давно потеряло смысл.

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

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.