LinuxForum.Fans
Тема

Универсальный способ получить значение пикселей на дюйм

Автор: u_________10 18 сообщений 3379 просмотров
#381480

Есть в системах такие характеристики... либо плотность пикселей на дюйм (XFCE) либо индекс масштабирования шрифтов (Cinnamon)... в программе на объект паскале нужно получить это значение... универсального способа вероятно нет, тогда какие есть варианты? Вызвать какие то команды? Определять систему лесть читать конфиги? В общем подскажите пожалуйста как решить эту задачу.

#381496

Димитрий, Вы кислое с круглым сравниваете. Вам что в итоге-то надо? Что бы там ни называлось в Циннамоне, масштабирование шрифтов всегда dpi - точек на дюйм. В Маке всегда 72, в Винде 96, в Линуксе тоже, но потенциально - как угодно. Проще и лучше всего регулируется в KDE, попробуйте поискать в их конфигах.

#381527

stranger Может я что то путаю... Но во первых у меня в XFCE выставлено значение 180 (вручную конечно), а в цинамуне штатное "1" - потомучто не в ПДИ считает видимо. Вот собственно эти значения я и хотел бы получить...

Из мыслей (в чём пожалуй и хочу услышать подсказку):

1. Возможно есть какая то системная команда которая вернёт значение ПДИ. Тогда правда возникает вопрос, она штатная или какой пакет должен в системе стоять.
2. Каким то образом идентифицировать рабочее окружение и исходя из этого лесть в соответствующие конфиги и читать значение оттудова.
3. Забить на получение значения из системы, добавить соответствующий параметр в настройки программы и хранить это значение в конфиге программы (в ходе сегодняшних размышлений склоняюсь к этому).

Есть хорошие предложения как получить количество пикселей на дюйм из системы?

#381529
Димитрий написал:
Есть в системах такие характеристики... либо плотность пикселей на дюйм (XFCE) либо индекс масштабирования шрифтов (Cinnamon)... в программе на объект паскале нужно получить это значение... универсального способа вероятно нет, тогда какие есть варианты? Вызвать какие то команды? Определять систему лесть читать конфиги? В общем подскажите пожалуйста как решить эту задачу.

Я бы измерил видимую область экрана линейкой и поделил число точек по горизонтали на его ширину.

Пётр.

#381530

Peter, хохми уж до конца... просвети как в коде "померить видимую область" линейкой...

#381531

Димитрий, открываем /var/log/Xorg.0.log и смотрим "DPI set"

#381534
"Димитрий" написал:
хохми уж до конца... просвети как в коде "померить видимую область" линейкой...
text
xdpyinfo | grep dimension 
  dimensions:    1366x768 pixels (256x144 millimeters)
#381538
Lupo Alberto написал:
[quote="Димитрий"]хохми уж до конца... просвети как в коде "померить видимую область" линейкой...
text
xdpyinfo | grep dimension 
  dimensions:    1366x768 pixels (256x144 millimeters)

[/quote]
А если монитор без EDID?

Пётр.

#381539
"Peter" написал:
А если монитор без EDID?

А они есть сейчас? Я в самом деле не знаю.

#381540

Lupo Alberto, сколько угодно.

#381542

Интересно, xrandr тоже информацию из EDID берёт?

#381543

Lupo Alberto, неа

#381544
stranger написал:
Lupo Alberto, неа
text
xrandr      
Screen 0: minimum 8 x 8, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 256mm x 144mm
   1366x768      60.02*+
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
#381545

Lupo Alberto, и что?

#381557
text
$ xdpyinfo | grep dots
  resolution:    93x95 dots per inch

А можно полюбопытствовать зачем оно вам?

#381580

Команды:

text
xdpyinfo | grep dimension 
xdpyinfo | grep dots

возвращают ошибочные данные,

text
xrandr

возвращает верные данные.
В файле /var/log/Xorg.0.log то же не верное значение...

А можно полюбопытствовать зачем оно вам?

Отрисовка шрифтов на канве не масштабируется под монитор высокого разрешения. Видимо LCL то же получает не верное значение, постоянно возвращает эти 96, но если я вручную в TFont передаю верное значение пикелей на дюйм всё рисуется как надо.

#381583
"stranger" написал:
Lupo Alberto, и что?
"Димитрий" написал:
Peter, хохми уж до конца... просвети как в коде "померить видимую область" линейкой...
#381588

Lupo Alberto написал:
[quote="stranger"]Lupo Alberto, и что?
"Димитрий" написал:
Peter, хохми уж до конца... просвети как в коде "померить видимую область" линейкой...
[/quote]
В коде можно предусмотреть ввод ширины и высоты из файла или по запросу,
если монитор их не даёт.

Пётр.
Войдите или зарегистрируйтесь, чтобы ответить.