Graphics-VTK

 view release on metacpan or  search on metacpan

examples/ImageProcessing/HistogramWidget.pm  view on Meta::CPAN

#!/usr/local/bin/perl -w
#
#
#   Histogram widget for the test script Histogram.pl
#
#
package Graphics::VTK::Tk::HistogramWidget;
use Tk;

use Graphics::VTK;
use Carp;

use base  qw(Tk::Derived Tk::Frame);

Tk::Widget->Construct("HistogramWidget");

# creates a meta object which clips a region of the input, and
# draws a histogram for the data.

# create a histogram object
#
sub Populate {
    	my ($widget, $args) = @_;
    
    	$widget->SUPER::Populate($args);
	my $accumulate;
	my $actor;
	my $canvas;
	my $clip;
	my $imager;
	my $mapper;
	my $viewer;
	$clip = $widget->{'Clip'} = Graphics::VTK::ImageClip->new;
	$accumulate = $widget->{'Accumulate'} = Graphics::VTK::ImageAccumulate->new;
	$canvas = $widget->{'Canvas'} = Graphics::VTK::ImageCanvasSource2D->new;
	$canvas->SetNumberOfScalarComponents(1);
	$canvas->SetScalarTypeToUnsignedChar;
	#$viewer = $widget->{'Viewer'} = Graphics::VTK::ImageViewer->new;
	#$viewer->SetColorWindow(256);
	#$viewer->SetColorLevel(127);
    	my $top = $widget->Component('Frame', 'top');
	my $vtkImageViewer = $widget->Component('vtkImageViewer', 'vtkImageViewer', 
							-delegate => ['Render', 'GetImageViewer'], # render method is delegate to vtkImageViewer
							'-width',512,'-height',200);
	#						-iv => $viewer);

	$viewer = $widget->{'Viewer'} = $vtkImageViewer->cget(-iv);
	$viewer->SetColorWindow(256);
	$viewer->SetColorLevel(127);
	# Delegate options to this widget
	$widget->ConfigSpecs(
	   DEFAULT => [$vtkImageViewer],
	   );


	$accumulate->SetInput($clip->GetOutput);
	$viewer->SetInput($canvas->GetOutput);

	# create text actor for value display
	$mapper = $widget->{'Mapper1'} = Graphics::VTK::TextMapper->new;
	$mapper->SetInput("none");
	$mapper->SetFontFamilyToTimes;
	$mapper->SetFontSize(18);
	$mapper->BoldOn;
	$mapper->ShadowOn;
	$actor = $widget->{'Actor1'} = Graphics::VTK::Actor2D->new;
	$actor->SetMapper($mapper);
	$actor->SetLayerNumber(1);
	$actor->GetPositionCoordinate->SetValue(4,4);
	$actor->GetProperty->SetColor(0,0.8,0);
	$actor->SetVisibility(0);
	$imager = $vtkImageViewer->GetImageViewer->GetRenderer;
	$imager->AddActor2D($actor);



( run in 1.218 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )