Как Vivaldi обрёл свет

Генрик Хельмерс, дизайнер

Я всегда был глубоко очарован цветом. Мне понравилось работать над движком для смены тем оформления в Vivaldi и я был восторге от того, как наши пользователи настраивали эту функцию по своему усмотрению. В релизе Vivaldi 1.5 мы зашли ещё дальше. После интеграции с системой беспородного освещения Philips Hue, темы вышли за рамки браузера и попали прямо к вам в дом.

В то время, как я заканчивал работу над сменой тем оформления по расписанию, я как раз искал новые лампы для дома. Волею случая мне попались на глаза лампы Philips Hue и я заказал стартовый комплект, чтобы посмотреть, что там к чему. Как и многим моим коллегам, мне сложно устоять перед соблазнами технологических новинок (да и вообще, перед всяческими блестящими штуками). Лампочки работали хорошо, и скоро моя коллекция «умного света» разрослась. Вокруг Philips Hue уже была целая экосистема приложений и я решил посмотреть на документацию для разработчиков. Оказалось, что ничего там сложного не было! С помощью разнообразных «грязных трюков» и изоленты я захардкодил поддержку Hue в Vivaldi.

По счастливому стечению обстоятельств, Йон фон Течнер – наш CEO – как раз приехал в наш офис в Осло. Я набил свой рюкзак с логотипом Vivaldi лампочками и всем необходимым для того, чтобы быстренько показать демку. Каким-то образом я умудрился это дело настроить так, чтобы всё работало, и показал своё «изобретение» Йону, просто ради прикола. К моему удивлению, Йон разделил мой энтузиазм. Он произнёс свои любимые слова «когда мы можем включить это в браузер?» и таким образом я получил возможность поработать над тем, чтобы полноценно интегрировать поддержку Hue в браузер.

Тут-то и началось самое трудное – собственно реализация! Когда я готовил демку, она состояла из одних «костылей» и множества слоёв «программной изоленты». И никакой логики для подсоединения системы – всё было захардкодено. Когда создаешь что-то новое, никогда не знаешь, будет ли всё работать при запуске. В этом и удовольствие, и риск.

К счастью, я был хорошо знаком с системой смены тем оформления в браузере Vivaldi. Это сэкономило мне кучу времени. Я точно знал, куда нужно было залезть, чтобы получить нужные данные. Более того, я довольно хорошо знаю теорию света, а также наши алгоритмы. Все это помогло мне конвертировать цвет на экране во что-то такое, что представляло бы интерес для лампочек Hue.

Цвета экрана представлены в RGB. В браузере Vivaldi мы работаем с LAB и LCH для большей точности. Philips Hue отдаёт предпочтение цветовому пространству под названием XYZ (я не шучу!). Преодолев лингвистический барьер, я обнаружил, что работа в этих трёх цветовых пространствах позволяет получить хорошее представление о рендеринге цветов. Надеюсь, что я ещё столкнусь с этим, работая с нашим движком для смены тем оформления.

Меня всегда тянуло к свету. Когда я был ребенком, почти всё освещение было ограничено довольно тусклыми вольфрамовыми лампочками с тёплыми жёлтыми тонами. Потом появились флуоресцентные лампы с жутковатыми фиолетовыми отсветами и периодическим мерцанием. Я до сих пор помню тот момент, когда я впервые увидел цветную лампочку. Кажется, она осталась с какой-то вечеринки. Если не ошибаюсь, она была зелёной. Я влюбился в эту лампочку. Разглядывая её, я словно на инстинктивном уровне осознал, что свет может быть любого цвета. Но в то время рынка для чего-то такого, в общем-то, не было.

В браузере Vivaldi мы настроили свет так, чтобы эффект от него был мягким. Мы не хотели, чтобы вы чувствовали себя в сети, как на какой-нибудь андеграундной рейв-вечеринке. Суть эффекта в том, чтобы создавать приятную атмосферу. Лично для меня этот эффект работает прекрасно, пусть мой опыт и вряд ли можно назвать чем-то большим, чем ограниченным тестированием. Когда я читаю о каких-нибудь технических задачах на Stack Overflow, пространство вокруг моего компьютера подсвечивается оранжевым. Поход в Твиттер – и свет уже ярко-бирюзовый. Я уже несколько недель использую эту функцию, и мягкие переходы света всё ещё меня радуют.

Есть много всего, что мы можем делать с этой функцией в будущем. Например, подсвечивать уведомления о новом письме или об окончании загрузки. Или, может, о том, что пришло письмо от кого-то конкретного человека. Например, от Йона, когда он пишет мне о том, что пора бы уже заканчивать работу над какой-нибудь функцией.

Ну, а теперь я возвращаюсь к работе над менее экзотическими функциями. Вы знали, что мы сейчас работаем над почтовым клиентом, основанным на веб-технологиях? Может, об этом я и напишу в следующий раз! ;-)

1 ответ
авторизуйтесь чтобы ответить