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

SNMP编程

开发平台:

C/C++

  1. #==========================================================================
  2. #    Copyright (c) 1995-1998 Martien Verbruggen
  3. #--------------------------------------------------------------------------
  4. #
  5. # Name:
  6. # GIFgraph::mixed.pm
  7. #
  8. # $Id: mixed.pm,v 1.1.1.1 2002/02/26 10:16:37 oetiker Exp $
  9. #
  10. #==========================================================================
  11. package GIFgraph::mixed;
  12.  
  13. use strict;
  14.  
  15. use GIFgraph::axestype;
  16. use GIFgraph::lines;
  17. use GIFgraph::points;
  18. use GIFgraph::linespoints;
  19. use GIFgraph::bars;
  20. use GIFgraph::area;
  21.  
  22. # Even though multiple inheritance is not really a good idea, I will
  23. # do it here, because I need the functionality of the markers and the
  24. # line types We'll include axestype as the first one, to make sure
  25. # that's where we look first for methods.
  26. @GIFgraph::mixed::ISA = qw( 
  27. GIFgraph::axestype 
  28. GIFgraph::lines 
  29. GIFgraph::points 
  30. );
  31. my %Defaults = (
  32. default_type => 'lines',
  33. mixed => 1,
  34. );
  35. {
  36. sub initialise()
  37. {
  38. my $s = shift;
  39. $s->SUPER::initialise();
  40. my $key;
  41. foreach $key (keys %Defaults)
  42. {
  43. $s->set( $key => $Defaults{$key} );
  44. }
  45. $s->GIFgraph::lines::initialise();
  46. $s->GIFgraph::points::initialise();
  47. $s->GIFgraph::bars::initialise();
  48. }
  49. sub draw_data_set($$$) # GD::Image, @data, $ds
  50. {
  51. my $s = shift;
  52. my $g = shift;
  53. my $d = shift;
  54. my $ds = shift;
  55. my $type = $s->{types}->[$ds-1] || $s->{default_type};
  56. # Try to execute the draw_data_set function in the package
  57. # specified by type
  58. #
  59. eval '$s->GIFgraph::'.$type.'::draw_data_set($g, $d, $ds)';
  60. # If we fail, we try it in the package specified by the
  61. # default_type, and warn the user
  62. #
  63. if ($@)
  64. {
  65. warn "Set $ds, unknown type $type, assuming $s->{default_type}n";
  66. eval '$s->GIFgraph::'.
  67. $s->{default_type}.'::draw_data_set($g, $d, $ds)';
  68. }
  69. # If even that fails, we bail out
  70. #
  71. die "Set $ds: unknown default type $s->{default_type}n" if $@;
  72. }
  73.  
  74. sub draw_legend_marker($$$$) # (GD::Image, data_set_number, x, y)
  75. {
  76. my $s = shift;
  77. my $g = shift;
  78. my $ds = shift;
  79. my $x = shift;
  80. my $y = shift;
  81. my $type = $s->{types}->[$ds-1] || $s->{default_type};
  82. eval '$s->GIFgraph::'.$type.'::draw_legend_marker($g, $ds, $x, $y)';
  83. eval '$s->GIFgraph::'.
  84. $s->{default_type}.'::draw_legend_marker($g, $ds, $x, $y)' if $@;
  85. }
  86. } # End of package GIFgraph::linesPoints
  87. 1;