Comments: |
Тэсты:
ffkitStyle.color.background.active = "#526" ffkitStyle.color.background.active = "#523256fab" ffkitStyle.color.background.active = "CIEXYZ:0.3811/0.2073E0/0.213E-1" ffkitStyle.color.background.active = "RosyBrown1" X11.cmsColor = st.color.background.active
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 09:59 am |
---|
| | | (Link) |
|
там XParseColor внизу, да. всё, что оно разбирать умеет — то и разбирается. плюс я сверху ещё добавил «rgb(r,g,b)».
кстати, а ты не встречал случайно функции, чтобы цвет обратно в строку? ну, то есть, чтобы то, что уже allocated — назад в rgb, а rgb назад в строку, где красный назовут red и ты пы. по‐моему, нет такой.
кстати, синтаксис до боли напоминает X resources. думаю, это не просто совпадение, а Знак.
1) Это замечательно, что XParseColor. Но тэсты не помешают. 2) Нет. Учитывая, что если куда переводить, так в Pantone -- то в Xlib и не будет. 3) Ты заметил -- там ещё последняя строчка, намекающая, что у нас кроме XColor есть XcmsColor.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 10:15 am |
---|
| | | (Link) |
|
я заметил. насколько я пырил в исходники XParseColor — оно что‐то там пытается с cms делать. и при этом умудряется парзить вещи типа «#fff» как (0xf000, 0xf000, 0xf000), гениально, блядь. поэтому хекс‐парзер свой пришлось вкрутить.
мне, честно говоря, все эти cms и прочие извращения… у меня тулкит‐то на 80% состоит из одного god object, какие там уж cms…
Чем конкретно тебе не нравится #fff как 0xf000, 0xf000, 0xf000? Ты хотел 0xffff, 0xffff, 0xffff? Да ладно, кому какое дело!
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:14 am |
---|
| | | (Link) |
|
да, именно этим. белый, блядь, не белый!
А ты пишы нормально. Например, #ffffffffffff или rgb:f/f/f
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:24 am |
---|
| | | (Link) |
|
а может, xlib несколько приохуела просто — диктовать мне, как надо цвета задавать? тут вот авторы немного потеряли края: не я для xlib, а xlib для меня. общепринятая (и наиболее логичная) практика — как минимум для «#fff» вытягивать «f» на всю длину. для остальных цветов хуй с ними, делайте как знаете, но от «#fff» любой нормальный человек ожидает чётко белого, а не непонятной хуйни.
Тогда преобразуй в rgb:f/f/f, а не полностью парзи сам.
Ты, думаю, понимаешь почему.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:58 am |
---|
| | | (Link) |
|
ну да, по уму, конечно, надо всё, что XParseColor не умеет (или умеет не очень так), преобразовывать в то, что она умеет хорошо, а потом всё равно скармливать ей. а не заполнять сразу XColor, как я делаю сейчас.
но см. мой большой пост, который я только что накатал. это нудно и неинтересно на данном этапе. поэтому я с тобой совершенно согласен, но реализацию пока отложил в TODO.
И да, с Xcms не надо работать. Надо его просто возвращать -- чтобы потом не вставать на грабли.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:18 am |
---|
| | | (Link) |
|
я, честно говоря, никогда это не использовал. какой‐то leftover code у меня к этому есть, но я даже не уверен, что он работает. надо бы, конечно, допилить потом. раз уж я даже XIM поддерживаю, который много лет тупо игнорировал…
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:18 am |
---|
| | | (Link) |
|
в смысле — низкоуровневый код, стили про это пока ничего не знают и знать не хотят.
Кстати, а откуда приполз вариант rgb(r,g,b)?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:19 am |
---|
| | | (Link) |
|
а из css. rgb() и rgba().
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 10:03 am |
---|
| | | (Link) |
|
мне, в общем‐то, не лениво ещё один AA завести и имена запоминать, но мало ли. а вдруг получится соскочить?
Я думаю, что если преобразовывать -- то выдавать экранный цвет. Т.е. RGB с правильным числом бит на цвет (их можэт быть большэ 8, см. man XVisualInfo).
Альтэрнатива выдавать запомненную. Как чувак ввёл, так и выдавать.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 10:16 am |
---|
| | | (Link) |
|
ну, я сейчас так и делаю — плюю назад то, что засунули. просто хотел считерить: вдруг чувак засунет то, чему стиль не обучен? так тоже ж можно, тупо напрямую X11.Color присвоить. который был создан из uint, который был создан функцией rgb2col(). и вдруг ему в ответ внезапно: «blue», пидарас!
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 11:25 am |
---|
| | | (Link) |
|
кстати, у меня всё равно не поддерживается больше восьми бит на канал, гыгыгы.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 01:48 pm |
---|
| | | (Link) |
|
а зачем? ну реально, для тулкита, который нацелен исключительно на написание простеньких гуйпрограмм? тулкита, у которого основная идея — выглядеть как клон wings от window maker?
Тогда там вообще бит на канал не нужно. Три цвета сурфейса, у каждого вариацыи: активный/пассивный/теньлевая/теньправая. Итого 12 цветов, и никаких бит.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 02:35 pm |
---|
| | | (Link) |
|
ну так стиль примерно и выглядит таким образом. виджеты же срать хотели на цвета, они просят стиль вернуть что‐то, что называется, например, «text.active», и пригодно для последующей передачи в XSetForeground и компанию. а что именно это — виджету неинтересно вообще.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 02:37 pm |
---|
| | | (Link) |
|
ну да, они ещё могут попросить у стиля «#fff», например, если хотят именно цвет. опять же, это дело стиля — как такую хуйню в иксовый цвет преобразовать, надо ли вызывать XAllocColor или оно уже есть в кэше и подобное.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 01:53 pm |
---|
| | | (Link) |
|
никто, кстати, не запрещает радостно насрать на средства тулкита (которых всё равно нет) и дёргать иксы самостоятельно. Window, Drawable, GC, Display — всё это не укрыто в недрах, а бережно высунуто наружу. хочется рисовать с кучей цветов — забил на тулкитовые средства и спокойно дёргаешь иксы, никаких проблем.
собственно, тулкит даже не пытается делать вид, что он от иксов не зависит, и никаких враперов не даёт. ну, то есть, создание окна, выделение цвета — для этого есть функции‐обёртки, потому что это муторно. а для рисования — везде напрямую дёргается xlib и никто по этому поводу не парится вообще.
девиз такой: тулкит абсолютно кросплатформеннен, потому что работает на любой платформе, где есть X11.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | June 15th, 2015 - 02:03 pm |
---|
| | | (Link) |
|
то есть, тулкит занимается тем, чем ему и положено заниматься: еблей со скучными аспектами xlib. как‐то: создание окон, управление контекстом ввода, диспатчинг событий, поддержание в порядке информации о фокусе, общение с WM, добывание уникодных символов из нажатий кнопок и прочей мутотенью.
вдобавок он предоставляет умолчательные реализации для базовых виджетов — кнопок, рамок, скроллбаров, всей такой обычной мути.
но «кишки» никто никуда не прячет, и за них можно дёргать как угодно. хочешь — перекрой метод создания X11-окна и делай по‐своему. хочешь — перекрой обработку некоторых событий. хочешь — всё вообще перекрой нахуй. тулкит, типа, основан на xlib и гордится этим, не пытаясь стыдливо спрятать xlib за «высокоуровневыми обёртками». | |