| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Dizatorr 23.09.2004 14:08
Функции передается таблица любого размера оформленная следующим образом: первый столбец обязательно несет названия строк$tab[^table::create{name 2000 2001 2002 2003 2004
вова 1 10 30.3 30 40
лева 2 12.12 22 32 42
Леша 5 15 25 35 45}]
^grafik[$tab]Далее сама функция. несколько сумбурно оформлена и валит все в одну кучу, но кому надо разберется @grafik[tabname]
#константы и переменные
$x_size(200)
$y_size(200)
$spacer(3)
$color_bg(0xffffff)
$gif_img[^image::load[red.gif]]
#количество строк и столбцов
$columns_table[^tabname.columns[]]
$kol_strok[^tabname.count[]]
$kol_stolb[^columns_table.count[]]
#находим максимальное значение таблицы
^tabname.menu{
$column[$columns_table.column]
^for[stroka](0;$kol_strok+1){
^columns_table.offset(1)
$column[$columns_table.column]
$image_w($mnozit*$tabname.$column)
$valuer($tabname.$column)
$sum_znac($sum_znac+$valuer)
^if($valuer>$max){$max($valuer)}
}
^columns_table.offset(1)</ul></ul>
}
#еще парочка переменных
$mnozit($x_size/$max)
#рисуем таблицу
^tabname.menu{
<ul>
$column[$columns_table.column]
<li>$tabname.$column</li>
<ul>
^for[stroka](0;$kol_strok+1){
^columns_table.offset(1)
$column[$columns_table.column]
$image_w($mnozit*$tabname.$column)
<li>$columns_table.column <img src="red.gif" width="$image_w" height="10" /> $tabname.$column</li>
}
^columns_table.offset(1)</ul></ul>
}
#рисуем сектора создаем картинку
$sector_img[^image::create($x_size;$y_size;$color_bg)]
#рисуем
$start_in(0)
$color_sec(0xff1111)
^tabname.menu{
$sum_znacs(0)
^for[stroka](0;$kol_strok+1){
^columns_table.offset(1)
$column[$columns_table.column]
$sum_znacs($tabname.$column+$sum_znacs)
}
$uglov_mnoz(360/$sum_znacs)
$sector_img[^image::create($x_size;$y_size;$color_bg)]
$sector_img.line-width(1)
^columns_table.offset(1)
$start_in(0)
^for[stroka](0;$kol_strok+1){
^columns_table.offset(1)
$column[$columns_table.column]
$peremen($tabname.$column)
$end_in($peremen*$uglov_mnoz+$start_in)
^sector_img.sector($x_size/2;$y_size/2;$x_size-$spacer;$y_size-$spacer;$start_in;$end_in;$color_sec)
# X=R*cos(t), Y=R*sin(t), где R - радиус)
$u_fill($start_in+$end_in)
$r_fill(($x_size+$y_size)/4-$spacer-6)
$x_fill((^math:cos(^math:radians($u_fill/2))*$r_fill)+$x_size/2)
$y_fill((^math:sin(^math:radians($u_fill/2))*$r_fill)+$y_size/2)
$color_sec2(^math:random(0xffffff))
^sector_img.fill($x_fill;$y_fill;$color_sec2)
#^sector_img.bar($x_fill;$y_fill;$x_fill+2;$y_fill+2;$color_sec2)
$start_in($end_in)
}
^columns_table.offset(1)
$file_gif[^sector_img.gif[]]
$i($i+1)
^file_gif.save[binary;sectors+$i+.gif]
<img src="sectors+$i+.gif" />
}