Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

Autor Téma: lua, cairo, conky sirka ciary.  (Přečteno 265 krát)

TIBOR

  • Guru
  • *****
  • Příspěvků: 5655
  • Karma: +420/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
lua, cairo, conky sirka ciary.
« kdy: 04 Únor 2017, 15:36:36 »
Zdravim.
Hrajem sa zasa trocha s lua skriptom vykreslovanym v conky a narazil som na to ze mi nespravne vykresluje sirku ciary. Vid. obrazok. (niesom programator a kod vacsinou kopirujem z navodov)
Krajne grafy su vykreslovane priamo cez conky. Stredny je ten co som robil ja. Nakreslil som oramovanie pomocou ciar a vyplnil som ho pomocou fill. Vtedy ho vykresluje spravne. Sirka panelu je 20px, graf sa zacina vykreslovat na vyske 19px cize je 1px od spodneho kraju panela.
Ak zrusim vyplnenie stvorca tak mi ho vykresli ako je na spodnej casti obrazku. Cize zmeni sa hrubka ciary o 1px smerom von a neviem zistit preco. Tie cierne body su spravne rohy stvorca a taka mala byt aj sirka ciary.
Vedel by niekto kde robim chybu?
Vykreslujem to takto
Kód: [Vybrat]
cairo_set_line_width (cr,1)
cairo_set_source_rgb (cr,0,0,0)
--vykreslenie ramu a pozadia
cairo_move_to(cr,xpozicia,ypozicia)
cairo_line_to(cr,xpozicia+(dlzkagrafu+1),ypozicia)
cairo_line_to(cr,xpozicia+(dlzkagrafu+1),ypozicia-vyskagrafu)
cairo_line_to(cr,xpozicia,ypozicia-vyskagrafu)
cairo_line_to(cr,xpozicia,ypozicia)
cairo_fill (cr)
cairo_stroke (cr)
Skusal som aj uzavriet obdlznik pomocou cairo_close_path (cr) ale to nemalo ziadny vplyv na hrubku ciary. Rovnaku hrubku mi to kresli aj pri nakresleni rovnej ciary o hrubke 1. Pri pokuse o kreslenie tensej ciary (0.x) to kresli rovnaku hrubku ale slabne intenzita farby.
Snad je to zrozumitelne.

Kod celeho skriptu
Kód: [Vybrat]
--vyziadanie potrebnej funkcie cairo
require 'cairo'
--vytvorenie a naplnenie zasobnikov 
zasobnik={}
zasobnik_net_down={}
zasobnik_net_up={}
for a=1,31,1
  do
    zasobnik[a]=0
    zasobnik_net_down[a]=0
    zasobnik_net_up[a]=0
end

-- hlavna funkcia
function conky_graf_cpu()
if conky_window == nil then return end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
-- definicia lokalnych premennych pre graf cpu
local xpozicia, ypozicia, posuv, krok, bac, dlzkagrafu, vyskagrafu, kreslenie, rozsahgrafu, sirka_ciary
 cr = cairo_create(cs)
-- Start of output
--  GRAF CPU
--pozicia a velkost grafu
xpozicia,ypozicia=1067,19
dlzkagrafu=40
vyskagrafu=18
rozsahgrafu=100
sirka_ciary=dlzkagrafu/30
--nacitanie hodnoty cpu
cpu=tonumber((conky_parse("${cpu}"))*(vyskagrafu/rozsahgrafu))
--zapis do zasobnika a posunutie starsich hodnot o 1
zasobnik[31]=cpu
for krok=1,30,1
  do
    zasobnik[krok]=zasobnik[krok+1]
end
--nastavenie sirky a farby ciary oramovania grafu a vyplnenie pozadia
cairo_set_line_width (cr,1)
cairo_set_source_rgb (cr,0,0,0)
--vykreslenie ramu a pozadia
cairo_move_to(cr,xpozicia,ypozicia)
cairo_line_to(cr,xpozicia+(dlzkagrafu+1),ypozicia)
cairo_line_to(cr,xpozicia+(dlzkagrafu+1),ypozicia-vyskagrafu)
cairo_line_to(cr,xpozicia,ypozicia-vyskagrafu)
cairo_line_to(cr,xpozicia,ypozicia)
cairo_fill (cr)
cairo_stroke (cr)
--nastavenie sirky a farby grafu
cairo_set_line_width (cr,sirka_ciary)
cairo_set_source_rgb (cr,1,0.65,0.3)
--vykreslenie obsahu zasobnika do grafu
for posuv=1,30,1
  do
    if ( zasobnik[posuv] > vyskagrafu )
      then
        kreslenie=vyskagrafu-1
    else
        kreslenie=zasobnik[posuv]
    end
  cairo_move_to(cr,(xpozicia+(posuv*(sirka_ciary))-(sirka_ciary/2)),ypozicia)
  cairo_line_to(cr,(xpozicia+(posuv*(sirka_ciary))-(sirka_ciary/2)),ypozicia-kreslenie)
end
cairo_stroke (cr)
-- End of output
cairo_destroy(cr)
cairo_surface_destroy(cs)
cr=nil
end

kedze sa to vykresluje cez conky tak pre istotu aj nastavenie conkyrc
Kód: [Vybrat]
conky.config=
{
background=true,
use_xft=true,
xftalpha=0,
update_interval=1,
total_run_times=0,
own_window=true,
own_window_transparent=false,
own_window_colour="DFD7CF",
own_window_type="panel",
own_window_argb_visual=false,
own_window_argb_value=0,
own_window_hints="undecorated,below,sticky,skip_taskbar,skip_pager",
own_window_class="conky-semi",
double_buffer=true,
draw_shades=false,
draw_outline=false,
draw_borders=false,
draw_graph_borders=true,
default_shade_color="9999FF",
default_outline_color="b2b2FF",
alignment="top_left",
maximum_width=1600,
minimum_width=1600,
minimum_height=20,
gap_x=0,
gap_y=0,
text_buffer_size=2048,
no_buffers=true,
uppercase=false,
cpu_avg_samples=1,
net_avg_samples=1,
diskio_avg_samples=1,
override_utf8_locale=true,
border_inner_margin=0,
border_outer_margin=0,
border_width=0,
out_to_console=false,
lua_load="/home/t/.subory/moje_nastavenia/conky/conky_script.lua",
lua_draw_hook_pre = 'conky_graf_cpu',
}

conky.text=
[[
${alignr}\
${font Ubuntu:size=11}\
${alignr}\
${color FF0404} / \
${color F57900}\
${if_existing /home/t/.subory/moje_nastavenia/GK.txt Nvidia}\
Nvidia  ${nvidia temp} °C\
${endif}\
${if_existing /home/t/.subory/moje_nastavenia/GK.txt Intel}\
Intel   ${exec sensors | grep 'Physical id 0:' | cut -c18-24}\
${endif}\
${if_existing /home/t/.subory/moje_nastavenia/GK.txt AMD}\
${endif}\
${alignr}\
${color FF0404} / \
${color 1D611D}\
Swap: \
${if_existing /proc/swaps /dev/sdb4}\
${swap} \
z  ${swapmax}\
${else}\
vypnutý \
${endif}\
${alignr}\
${color FF0404} / \
${color 4E9A06}\
RAM: \
${mem} \
z  ${memmax} \
${alignr}\
${color FF0404} / \
${color 204A87}\
CPU: \
${lua_parse zarovnanie ${freq cpu1}} \
MHz \
${cpugraph 13,30 e72e2e e72e2e -s}               \
${diskiograph 13, 30 FD8800 FD8800 -t} \
nt: ${exec cat /sys/devices/system/cpu/intel_pstate/no_turbo}\
${color FF0404} / \
${alignr}\
${color DD1919}\
${if_existing /sys/class/net/wlp3s0/operstate up}\
Wifi: \
${lua_parse internet ${downspeedf wlp3s0}} \
${downspeedgraph wlp3s0 13,30 e72e2e e72e2e 1900 -l}                \
${upspeedgraph wlp3s0 13,30 66c92d 66c92d 800 -l} \
${lua_parse internet ${upspeedf wlp3s0}} \
${endif}\
${if_existing /sys/class/net/enp2s0f1/operstate up}\
LAN:\
${lua_parse internet ${downspeedf enp2s0f1}} \
${downspeedgraph enp2s0f1 13,30 e72e2e e72e2e 1900 -l}\
${upspeedgraph enp2s0f1 13,30 66c92d 66c92d 800 -l}\
${lua_parse internet ${upspeedf enp2s0f1}}\
${endif}\
${alignr}\
${color FF0404} / \
${color 000000}${time %H:%M} \
${color 000000}${time %a, %d %b, %Y}   \
]]

Vychadzal som z
https://www.cairographics.org/tutorial/
http://pclosmag.com/html/issues/201507/page01.html
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)

TIBOR

  • Guru
  • *****
  • Příspěvků: 5655
  • Karma: +420/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Re:lua, cairo, conky sirka ciary.
« Odpověď #1 kdy: 04 Únor 2017, 18:19:44 »
Podarilo sa mi najst odpoved a nepotesila ma.
https://cairographics.org/FAQ/#sharp_lines
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)