дополнение к OSD.cpf

Обсуждение программ nnCron и nnCron LITE

дополнение к OSD.cpf

Postby sorokin » Sun, 25 Feb 2007, 17:29

Предлагаю дополнить плагин OSD.cpf следующей функцией для вычисления ширины выводимой на экран строки:
Code: Select all
\   Author: Alexandr Sorokin
\   Usage:
\   S" Hi! Now %hh%:%mm%!" EVAL-SUBST OSD-WIDTH
\   (в стеке остается ширина строки в пикселях;
\    перед использованием нужно вызвать OSD-FONT
\    и задать нужный шрифт)

WINAPI: GetTextExtentPoint32A GDI32.DLL

USER-CREATE strsize 16 USER-ALLOT
USER-VALUE old_font

: OSD-WIDTH ( a u -- )
   ?OSD-INIT
   GetDesktopWindow GetWindowDC >R
   osd-font 0 0 0 0 1 0 0 0 0 0 0 0 osd-size CreateFontA
   R@ SelectObject old_font !
   strsize ROT ROT SWAP R@ GetTextExtentPoint32A DROP
   old_font @ R@ SelectObject DROP
   R> GetDesktopWindow ReleaseDC DROP
   strsize @
;

В крон-табе можно использовать эту функцию для центрования строки на экране, например так:
Code: Select all
#( lirc_show_time
SingleInstance
WatchLirc: OK
Action:
   OSD-FONT: "Arial" 150 0x00FF0000
   S" %hh%:%mm%" EVAL-SUBST OSD-WIDTH
   DESKTOP-WIDTH - NEGATE 2 /
   800 OSD-POS
   S" %hh%:%mm%" EVAL-SUBST OSD
   3000 PAUSE OSD-CLEAR
)#
sorokin
 
Posts: 7
Joined: Sat, 17 Feb 2007, 12:25
Location: Смоленск

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: VoidVolker and 3 guests