area.pm
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:2k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #==========================================================================
  2. #    Copyright (c) 1995-1998 Martien Verbruggen
  3. #--------------------------------------------------------------------------
  4. #
  5. # Name:
  6. # GIFgraph::area.pm
  7. #
  8. # $Id: area.pm,v 1.1.1.1 2002/02/26 10:16:37 oetiker Exp $
  9. #
  10. #==========================================================================
  11. package GIFgraph::area;
  12.  
  13. use strict qw(vars refs subs);
  14. use GIFgraph::axestype;
  15. @GIFgraph::area::ISA = qw( GIFgraph::axestype );
  16. {
  17. # PRIVATE
  18. sub draw_data_set($$$)  # GD::Image, @data, $ds
  19. {
  20. my $s = shift; # object reference
  21. my $g = shift; # gd object reference
  22. my $d = shift; # reference to data set
  23. my $ds = shift; # number of the data set
  24. my $num = 0;
  25. # Select a data colour
  26. my $dsci = $s->set_clr( $g, $s->pick_data_clr($ds) );
  27. # Create a new polygon
  28. my $poly = new GD::Polygon();
  29. # Add the first 'zero' point
  30. my ($x, $y) = $s->val_to_pixel(1, 0, $ds);
  31. $poly->addPt($x, $y);
  32. # Add the data points
  33. my $i;
  34. for $i (0 .. $s->{numpoints}) 
  35. {
  36. next unless (defined $d->[$i]);
  37. ($x, $y) = $s->val_to_pixel($i + 1, $d->[$i], $ds);
  38. $poly->addPt($x, $y);
  39. $num = $i;
  40. }
  41. # Add the last zero point
  42. ($x, $y) = $s->val_to_pixel($num + 1, 0, $ds);
  43. $poly->addPt($x, $y);
  44. # Draw a filled and a line polygon
  45. $g->filledPolygon($poly, $dsci);
  46. $g->polygon($poly, $s->{acci});
  47. # Draw the accent lines
  48. for $i (1 .. ($s->{numpoints} - 1)) 
  49. {
  50. next unless (defined $d->[$i]);
  51. ($x, $y) = $s->val_to_pixel($i + 1, $d->[$i], $ds);
  52. $g->dashedLine( $x, $y, $x, $s->{zeropoint}, $s->{acci} );
  53.    }
  54. }
  55. } # End of package GIFgraph::area
  56.  
  57. 1;