Новости | 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" /> }