External.pm 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. # DISCLAIMER OF WARRANTY
  2. # Because this software is licensed free of charge, there is no warranty for the software,
  3. # to the extent permitted by applicable law. Except when otherwise stated in writing
  4. # the copyright holders and/or other parties provide the software "as is" without
  5. # warranty of any kind, either expressed or implied, including, but not limited to,
  6. # the implied warranties of merchantability and fitness for a particular purpose.
  7. # The entire risk as to the quality and performance of the software is with you.
  8. # Should the software prove defective, you assume the cost of all necessary
  9. # servicing, repair, or correction.
  10. # In no event unless required by applicable law or agreed to in writing will any
  11. # copyright holder, or any other party who may modify and/or redistribute the software
  12. # as permitted by the above licence, be liable to you for damages, including any general,
  13. # special, incidental, or consequential damages arising out of the use or inability
  14. # to use the software (including but not limited to loss of data or data being rendered
  15. # inaccurate or losses sustained by you or third parties or a failure of the software
  16. # to operate with any other software), even if such holder or other party
  17. # has been advised of the possibility of such damages.
  18. # AUTHOR
  19. # John McNamara jmcnamara@cpan.org
  20. # COPYRIGHT
  21. # Copyright MM-MMX, John McNamara.
  22. # All Rights Reserved. This module is free software. It may be used,
  23. # redistributed and/or modified under the terms of
  24. # the Artistic License(full text of the Artistic License http://dev.perl.org/licenses/artistic.html).
  25. package Spreadsheet::WriteExcel::Chart::External;
  26. ###############################################################################
  27. #
  28. # External - A writer class for Excel external charts.
  29. #
  30. # Used in conjunction with Spreadsheet::WriteExcel
  31. #
  32. # perltidy with options: -mbl=2 -pt=0 -nola
  33. #
  34. # Copyright 2000-2010, John McNamara, jmcnamara@cpan.org
  35. #
  36. # Documentation after __END__
  37. #
  38. require Exporter;
  39. use strict;
  40. use Spreadsheet::WriteExcel::Chart;
  41. use vars qw($VERSION @ISA);
  42. @ISA = qw(Spreadsheet::WriteExcel::Chart Exporter);
  43. $VERSION = '2.37';
  44. ###############################################################################
  45. #
  46. # new()
  47. #
  48. #
  49. sub new {
  50. my $class = shift;
  51. my $external_filename = shift;
  52. my $self = Spreadsheet::WriteExcel::Chart->new( @_ );
  53. $self->{_filename} = $external_filename;
  54. $self->{_external_bin} = 1;
  55. bless $self, $class;
  56. $self->_initialize(); # Requires overridden initialize().
  57. return $self;
  58. }
  59. ###############################################################################
  60. #
  61. # _initialize()
  62. #
  63. # Read all the data into memory for the external binary style chart.
  64. #
  65. #
  66. sub _initialize {
  67. my $self = shift;
  68. my $filename = $self->{_filename};
  69. my $filehandle = FileHandle->new( $filename )
  70. or die "Couldn't open $filename in add_chart_ext(): $!.\n";
  71. binmode( $filehandle );
  72. $self->{_filehandle} = $filehandle;
  73. $self->{_datasize} = -s $filehandle;
  74. $self->{_using_tmpfile} = 0;
  75. # Read the entire external chart binary into the the data buffer.
  76. # This will be retrieved by _get_data() when the chart is closed().
  77. read( $self->{_filehandle}, $self->{_data}, $self->{_datasize} );
  78. }
  79. ###############################################################################
  80. #
  81. # _close()
  82. #
  83. # We don't need to create or store Chart data structures when using an
  84. # external binary, so we have a default close method.
  85. #
  86. sub _close {
  87. my $self = shift;
  88. return undef;
  89. }
  90. 1;
  91. __END__
  92. =head1 NAME
  93. External - A writer class for Excel external charts.
  94. =head1 SYNOPSIS
  95. This module is used to include external charts in Spreadsheet::WriteExcel.
  96. =head1 DESCRIPTION
  97. This module is used to include external charts in L<Spreadsheet::WriteExcel>. It is an internal module and isn't used directly by the end user.
  98. It is semi-deprecated in favour of using "native" charts. See L<Spreadsheet::WriteExcel::Chart>.
  99. For information on how to used external charts see the C<external_charts.txt> (or C<.pod>) in the C<external_charts> directory of the distro.
  100. =head1 AUTHOR
  101. John McNamara jmcnamara@cpan.org
  102. =head1 COPYRIGHT
  103. Copyright MM-MMX, John McNamara.
  104. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.