0) { $temp_x1 = $x1; $temp_y1 = $y1; $count = 0; while (($temp_x1<$x2) || ($temp_y1<$y2)) { $my_style = $style[$count % count($style)]; $step = 0; while ($my_style != $style[(($count+$step) % count($style))]) { $step++; } if ($step==0) $step++; if ($x1 != $x2) { if ($my_style != -1) imageline($image, $temp_x1, $y1, $temp_x1+$step, $y2, $my_style); $temp_x1 = $temp_x1 + $step; } if ($y1!=$y2) { if ($my_style != -1) imageline($image, $x1, $temp_y1, $x2, $temp_y1+$step, $my_style); $temp_y1 = $temp_y1 + $step; } $count = $count + $step; } } else { imageline($image, $x1, $y1, $x2, $y2, $style[0]); } } //TSGK $first_entry = 0; //TSGK function drawItems($image, $bounds, $data_array, $max_index, $name, $dot, $make_grid, $write_timestamp, $write_legend, $color) { global $max_pos_y; global $legend_x; global $bar_type; global $deletedays; global $server_load_type; //TSGK global $first_entry; $first_entry++; //TSGK if (!isset($max_pos_y[$max_index])) { $max_pos_y[$max_index] = 0; } foreach ($data_array as $entry) { if ($entry[$name] >= $max_pos_y[$max_index]) { if ($entry[$name] < 100) $max_pos_y[$max_index] = $entry[$name] + 2; else if ($entry[$name] < 200) $max_pos_y[$max_index] = $entry[$name] + 10; else if ($entry[$name] < 10000) $max_pos_y[$max_index] = $entry[$name] + ($entry[$name] * 0.3); else $max_pos_y[$max_index] = $entry[$name] - ($entry[$name] % 50000) + 100000; if ($make_grid > 0) { if ($max_pos_y[$max_index] % 2 != 0) $max_pos_y[$max_index]++; $i = 0; while (($i < 10) && ($max_pos_y[$max_index] % 4 != 0)) { $max_pos_y[$max_index]++; $i++; } } if ($max_pos_y[$max_index] == 0) $max_pos_y[$max_index] = 1; } } if ($write_legend > 0) { if ($legend_x == 0) $legend_x += $bounds['indent_x'][0] + 10; imagesetpixel($image, $legend_x, $bounds['indent_y'][0]-7, $color[0]); imagesetpixel($image, $legend_x+1, $bounds['indent_y'][0]-7, $color[0]); imagesetpixel($image, $legend_x+2, $bounds['indent_y'][0]-7, $color[0]); imagesetpixel($image, $legend_x, $bounds['indent_y'][0]-8, $color[0]); imagesetpixel($image, $legend_x+1, $bounds['indent_y'][0]-8, $color[0]); imagesetpixel($image, $legend_x+2, $bounds['indent_y'][0]-8, $color[0]); imagesetpixel($image, $legend_x, $bounds['indent_y'][0]-9, $color[0]); imagesetpixel($image, $legend_x+1, $bounds['indent_y'][0]-9, $color[0]); imagesetpixel($image, $legend_x+2, $bounds['indent_y'][0]-9, $color[0]); $legend_x += 7; imagestring($image, 1, $legend_x, $bounds['indent_y'][0]-11, $name , $color[2]); $legend_x += (imagefontwidth(1) * strlen($name)) + 7; } $start_pos = array("x" => $bounds['width']-$bounds['indent_x'][1], "y" => $bounds['indent_y'][1]); $pos = $start_pos; $cache = array("x" => 0, "y" => 0); $step_y = ($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) / 10; if ($step_y < 15) $step_y = 15; // TSGK MAP TEXT $last_map = ""; $last_map_posx = 0; $bk_color = 0; global $gray_border; if (($first_entry == 1) && ($make_grid > 0) && ($server_load_type == 1)) { foreach ($data_array as $key => $entry) { if (($entry['map'] !== $last_map) || ($pos['x'] <= ($bounds['indent_x'][0]+1) )) { if ($last_map == "") { $last_map = $entry['map']; $last_map_posx = $pos['x']; } else { $last_map = $entry['map']; while ($last_map_posx > $pos['x']) { if (($bk_color % 2) == 0) { imageline($image, $last_map_posx, $bounds['indent_y'][0]+1, $last_map_posx, $bounds['height']-$bounds['indent_y'][1]-1, $color[4]); } $last_map_posx--; } $bk_color++; imageline($image, $pos['x']+1, $bounds['indent_y'][0]+1, $pos['x']+1, $bounds['height']-$bounds['indent_y'][1]-1, $gray_border); $last_map_posx = $pos['x']; } } $pos['x'] -= 3; if ($pos['x'] < $bounds['indent_x'][0]) break; } } // END TSGK MAP TEXT if ($make_grid > 0) { $step_diff = 0; $step_width = 0; while ($step_diff < 15) { $step_width++; if ($max_pos_y[$max_index] % $step_width == 0) { $steps = $max_pos_y[$max_index] / $step_width; if ($steps > 0) $step_diff = ($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) / $steps; else $step_diff = 15; } else { $step_diff = 0; } } for ($i=1; $i<$steps; $i++) { $temp_y = (($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) - ((($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) / $max_pos_y[$max_index]) * ($i*$step_width))) + $bounds['indent_y'][0]; if ($temp_y > $bounds['indent_y'][0]+5) image_dashed_line($image, $bounds['indent_x'][0]+1, $temp_y, ($bounds['width']-$bounds['indent_x'][1]-1), $temp_y, array($color[4], $color[4], $color[4], -1, -1, -1)); imageline($image, $bounds['indent_x'][0]+1, $temp_y, $bounds['indent_x'][0]+4, $temp_y, $color[3]); if ($max_pos_y[$max_index] > 10000) { $str = sprintf("%.0fk", ($i*$step_width) / 1000); } else { $str = sprintf("%.0f", $i*$step_width); } $str_pos = $bounds['indent_x'][0] - (imagefontwidth(1) * strlen($str)) - 2; imagestring($image, 1, $str_pos, $temp_y-3, $str, $color[2]); } if ($max_pos_y[$max_index] > 10000) $str = sprintf("%.0fk", $max_pos_y[$max_index] / 1000); else $str = sprintf("%.0f", $max_pos_y[$max_index]); $str_pos = $bounds['indent_x'][0] - (imagefontwidth(1) * strlen($str)) - 2; imagestring($image, 1, $str_pos, $bounds['indent_y'][0]-3, $str, $color[2]); } $last_month = 0; $last_month_timestamp = 0; $last_day = 0; $last_day_timestamp = 0; $first_timestamp = 0; $first_day = 0; switch ($server_load_type) { case 1 : $mov_avg_precision = 5; break; case 2 : $mov_avg_precision = 5; break; case 3 : $mov_avg_precision = 10; break; case 4 : $mov_avg_precision = 10; break; default: $mov_avg_precision = 1; break; } $mov_avg_array = array(); $mov_avg_value = 0; $mov_avg_display_value = array(); $i = 0; while (($i < count($data_array)) && ($i < $mov_avg_precision / 2)) { $entry = $data_array[$i]; $mov_avg_array[] = (($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) - ((($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) / $max_pos_y[$max_index]) * $entry[$name])) + $bounds['indent_y'][0]; $mov_avg_display_value[] = $entry[$name]; $i++; } // TSGK $last_map = ""; $last_map_posx = 0; $bk_color = 0; // TSGK foreach ($data_array as $key => $entry) { $pos['y'] = (($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) - ((($bounds['height']-$bounds['indent_y'][0]-$bounds['indent_y'][1]) / $max_pos_y[$max_index]) * $entry[$name])) + $bounds['indent_y'][0]; // TSGK $maptext = imagecolorallocate($image, 96, 96, 96); if(!isset($entry['map'])) $entry['map']=""; if (($first_entry == 2) && ($server_load_type == 1)) { if ($entry['map'] !== $last_map) { if ($last_map == "") { $last_map = $entry['map']; $last_map_posx = $pos['x']; if ($entry['map'] != "") { $str_height = $bounds['indent_y'][0] + (imagefontwidth(1) * strlen($entry['map'])) + 2; imagestringup($image, 1, $pos['x']-8, $str_height, $entry['map'], $maptext); } } else { $last_map = $entry['map']; $str_height = $bounds['indent_y'][0] + (imagefontwidth(1) * strlen($entry['map'])) + 2; imagestringup($image, 1, $pos['x']-8, $str_height, $entry['map'], $maptext); $last_map_posx = $pos['x']; } } } // TSGK $mov_avg_array[] = $pos['y']; $mov_avg_value = $pos['y']; if (count($mov_avg_array) > $mov_avg_precision) array_shift($mov_avg_array); $mov_avg_sum = 0; $mov_avg_display_sum = 0; foreach ($mov_avg_array as $mov_avg_entry) $mov_avg_sum += $mov_avg_entry; $mov_avg_value = sprintf("%d", ($mov_avg_sum / count($mov_avg_array))); $pos['y'] = $mov_avg_value; if ($key > 0) { imageline($image, $cache['x'], $cache['y'], $pos['x'], $pos['y'], $color[0]); } if ($key == 0) { foreach ($mov_avg_display_value as $mov_avg_display_entry) $mov_avg_display_sum += $mov_avg_display_entry; $display_value = sprintf("%d", ($mov_avg_display_sum / count($mov_avg_display_value))); if ($display_value > 10000) $str = sprintf("%.1fk", $display_value / 1000); else if ($name !== "act_players") $str = sprintf("%.0f", $display_value); else $str = sprintf("%.1f", $display_value); imagestring($image, 1, $pos['x']+2, $pos['y']-4, $str, $color[2]); } if ($first_timestamp == 0) $first_timestamp = $entry['timestamp']; $this_month = date("m", $entry['timestamp']); if ($this_month > $last_month+1) $last_month = $this_month+1; if ($last_month == 0) { $last_month = $this_month; $last_month_timestamp = $entry['timestamp']; } if ($last_month == $this_month) $last_month_timestamp = $entry['timestamp']; $this_day = date("d", $entry['timestamp']); if ($this_day > $last_day+1) $last_day = $this_day+1; if ($last_day == 0) { $last_day = $this_day; $last_day_timestamp = $entry['timestamp']; } if ($last_day == $this_day) $last_day_timestamp = $entry['timestamp']; switch ($server_load_type) { case 1: if (($write_timestamp > 0) && ($key > 0 && $key % 12 == 0)) { image_dashed_line($image, $pos['x'], $pos['y'], $pos['x'], $bounds['height']-$bounds['indent_y'][1], array($color[1], $color[1], $color[1], -1, -1, -1)); $str = date("H:i", $entry['timestamp']); imagestring($image, 1, $pos['x']-10, $bounds['height']-$bounds['indent_y'][1]+3, $str, $color[2]); } break; case 2: if (($write_timestamp > 0) && ($last_day > $this_day)) { $last_day = $this_day; if ($bounds['width']-$bounds['indent_x'][1]-$pos['x'] > 120) $first_day++; if ($first_day > 0) { image_dashed_line($image, $pos['x'], $pos['y'], $pos['x'], $bounds['height']-$bounds['indent_y'][1], array($color[1], $color[1], $color[1], -1, -1, -1)); $first_day++; if ($last_day_timestamp == 0) $last_day_timestamp = $first_timestamp; $str = date("l", $last_day_timestamp); imagestring($image, 1, $pos['x']-15, $bounds['height']-$bounds['indent_y'][1]+3, $str, $color[2]); } $first_day++; } break; case 3: if (($write_timestamp > 0) && ($last_day > $this_day)) { $last_day = $this_day; if ($bounds['width']-$bounds['indent_x'][1]-$pos['x'] > 0) $first_day++; if ($first_day > 0) { image_dashed_line($image, $pos['x'], $pos['y'], $pos['x'], $bounds['height']-$bounds['indent_y'][1], array($color[1], $color[1], $color[1], -1, -1, -1)); if ($last_day_timestamp == 0) $last_day_timestamp = $first_timestamp; $str = date("d", $last_day_timestamp); imagestring($image, 1, $pos['x']-5, $bounds['height']-$bounds['indent_y'][1]+3, $str, $color[2]); } } break; case 4: if (($write_timestamp > 0) && ($last_month > $this_month)) { $last_month = $this_month; if ($bounds['width']-$bounds['indent_x'][1]-$pos['x'] > 30) $first_day++; if ($first_day > 0) { image_dashed_line($image, $pos['x'], $pos['y'], $pos['x'], $bounds['height']-$bounds['indent_y'][1], array($color[1], $color[1], $color[1], -1, -1, -1)); $first_day++; if ($last_month_timestamp == 0) $last_month_timestamp = $first_timestamp; $str = date("M", $last_month_timestamp); imagestring($image, 1, $pos['x']-5, $bounds['height']-$bounds['indent_y'][1]+3, $str, $color[2]); } $first_day++; } break; default: if (($write_timestamp > 0) && ($key > 0 && $key % 12 == 0)) { image_dashed_line($image, $pos['x'], $pos['y'], $pos['x'], $bounds['height']-$bounds['indent_y'][1], array($color[1], $color[1], $color[1], -1, -1, -1)); $str = date("H:i", $entry['timestamp']); imagestring($image, 1, $pos['x']-10, $bounds['height']-$bounds['indent_y'][1]+3, $str, $color[2]); } break; } if ($dot > 0) { imagesetpixel($image, $pos['x'], $pos['y'], $color[0]); imagesetpixel($image, $pos['x']-1, $pos['y'], $color[0]); imagesetpixel($image, $pos['x']-1, $pos['y']-1, $color[0]); imagesetpixel($image, $pos['x']-1, $pos['y']+1, $color[0]); imagesetpixel($image, $pos['x']+1, $pos['y'], $color[0]); imagesetpixel($image, $pos['x']+1, $pos['y']-1, $color[0]); imagesetpixel($image, $pos['x']+1, $pos['y']+1, $color[0]); imagesetpixel($image, $pos['x'], $pos['y']-1, $color[0]); imagesetpixel($image, $pos['x'], $pos['y']+1, $color[0]); } else { imagesetpixel($image, $pos['x'], $pos['y'], $color[0]); } $cache['x'] = $pos['x']; $cache['y'] = $pos['y']; $step_x = 3; if ($bar_type==2) { // skalieren auf anzahl Tage $step_x = round( ($bounds['width']-$bounds['indent_x'][1]-$bounds['indent_x'][0]) / $deletedays ); } if ($bar_type==3 || $bar_type==4) { // skalieren $step_x = 5; } $pos['x'] -= $step_x; if ($pos['x'] < $bounds['indent_x'][0]) break; } } ?>