Эти мысли возникают у меня почти каждый раз, когда я программирую что-то на java-script. Еще возникают мысли, что в отличие от добрых времен, когда компьютеры были большими, а программы маленькими и писать их могли только действительно умные люди, с начала 90х в разработчики почти везде понабирали каких-то деффективных обезьян и девелоперы javascript явно состояли из таких чуть менее, чем полностью.
Вот сейчас был очередной раз. Попробовал я использовать html5 canvas вместо вывода графика в png через php, была у меня мысль написать одну фигню и таки для нее очень криво было бы перегружать png все время.
Первое ощущение было, что мне сломали глаза. Вот кусочек, чтобы не взрывать вам мозг, выглядит не так страшно, но когда его много на экране, смотрится как сущий пиздец. Жуткий блюр.
Оказалось, что есть простое решение вида contex.translate(0.5, 0.5); Эта строка заставляет все рисовать не с координат х,y, а с координат x+0.5,у+0.5. Т.е. как бы не с точно целочисленных позиций, а с промежутков между ними. Больше я не менял ничего, ни толщину линий, ни цвет, ни тип заливки. Почувствуйте разницу:
Возникает вопрос, какого хуя????? Координаты пикселей же, блядь, целые числа. Обычно их нужно было грамотно округлять и плясать с бубном, чтобы на экране не было пиздеца. Сглаживание шрифтов, сглаживание кривых и т.д. А тут надо наоборот, специально сдвигать на 0.5 чтобы не было пиздеца с линиями заведомо прямыми, которые точно ложатся на целочисленные координаты пикселей. И хорошо еще что есть функция, которая ставит этот сдвиг для всех последующих операций. Было бы намного хуже, если бы добавлять 0.5 к координатам приходилось при всех вызовах функций отрисовки.
P.S. В данном случае я правда не уверен, криворукость это разработчиков javascript вообще или конкретной имплеметации рендера canvas под FF. Что не отменяет того, что я весь javascript считаю кривым.
P.P.S. Отдельные лучи поноса за "плоттерную" концепцию canvas-а, типа "опустить перо", "вести линию до следующей точки", "поднять перо" да еще и сюрприз-сюрприз, "заштриховать линию", потому как она на самом деле невидимая. Не, я и не в таком разбирался и даже определенные преимущества в этом есть, но это контр-интуитивно после многих лет работы с дефолтными сишными библиотеками. Почему было не сделать оба варианта? Пишут, что эту концепцию маководы придумали.
В апреле 2014 году, Сандро Милер провел три дня со своим хорошим другом Джоном Малковичем. Спустя 7 месяцев после съемок, в ноябре 2014, откроется галерея, посвященная репродукциям самых знаменитых портретных фотографий, которые когда–то вдохновили Сандро. Но, как водится последние дни, все уже в сети.