App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/sunix/plot/ximage.pm  view on Meta::CPAN

 DATE:   
 DESCRIPTION:
 Version: 

=head2 USE

=head3 NOTES

=head4 Examples

=head3 SEISMIC UNIX NOTES

 XIMAGE - X IMAGE plot of a uniformly-sampled function f(x1,x2)     	

 ximage n1= [optional parameters] <binaryfile			        

 X Functionality:							
 Button 1	Zoom with rubberband box				
 Button 2	Show mouse (x1,x2) coordinates while pressed		
 q or Q key	Quit							
 s key		Save current mouse (x1,x2) location to file		
 p or P key	Plot current window with pswigb (only from disk files)	
 a or page up keys		enhance clipping by 10%			
 c or page down keys		reduce clipping by 10%			
 up,down,left,right keys	move zoom window by half width/height	
 i or +(keypad) 		zoom in by factor 2 			
 o or -(keypad) 		zoom out by factor 2 			

 ... change colormap interactively					
 r	     install next RGB - colormap				
 R	     install previous RGB - colormap				
 h	     install next HSV - colormap				
 H	     install previous HSV - colormap				
 H	     install previous HSV - colormap				
 (Move mouse cursor out and back into window for r,R,h,H to take effect)

 Required Parameters:							
 n1			 number of samples in 1st (fast) dimension	

 Optional Parameters:							
 d1=1.0		 sampling interval in 1st dimension		
 f1=0.0		 first sample in 1st dimension			
 n2=all		 number of samples in 2nd (slow) dimension	
 d2=1.0		 sampling interval in 2nd dimension		
 f2=0.0		 first sample in 2nd dimension			
 mpicks=/dev/tty	 file to save mouse picks in			
 perc=100.0		 percentile used to determine clip		
 clip=(perc percentile) clip used to determine bclip and wclip		
 bperc=perc		 percentile for determining black clip value	
 wperc=100.0-perc	 percentile for determining white clip value	
 bclip=clip		 data values outside of [bclip,wclip] are clipped
 wclip=-clip		 data values outside of [bclip,wclip] are clipped
 balance=0		 bclip & wclip individually			
			 =1 set them to the same abs value		
			   if specified via perc (avoids colorbar skew)	
 cmap=hsv\'n\' or rgb\'m\'	\'n\' is a number from 0 to 13		
				\'m\' is a number from 0 to 11		
				cmap=rgb0 is equal to cmap=gray		
				cmap=hsv1 is equal to cmap=hue		
				(compatibility to older versions)	
 legend=0	        =1 display the color scale			
 units=		unit label for legend				
 legendfont=times_roman10    font name for title			
 verbose=1		=1 for info printed on stderr (0 for no info)	
 xbox=50		x in pixels of upper left corner of window	
 ybox=50		y in pixels of upper left corner of window	
 wbox=550		width in pixels of window			
 hbox=700		height in pixels of window			
 lwidth=16		colorscale (legend) width in pixels		
 lheight=hbox/3	colorscale (legend) height in pixels		
 lx=3			colorscale (legend) x-position in pixels	
 ly=(hbox-lheight)/3   colorscale (legend) y-position in pixels	
 x1beg=x1min		value at which axis 1 begins			
 x1end=x1max		value at which axis 1 ends			
 d1num=0.0		numbered tic interval on axis 1 (0.0 for automatic)
 f1num=x1min		first numbered tic on axis 1 (used if d1num not 0.0)
 n1tic=1		number of tics per numbered tic on axis 1	
 grid1=none		grid lines on axis 1 - none, dot, dash, or solid
 label1=		label on axis 1					
 x2beg=x2min		value at which axis 2 begins			
 x2end=x2max		value at which axis 2 ends			
 d2num=0.0		numbered tic interval on axis 2 (0.0 for automatic)
 f2num=x2min		first numbered tic on axis 2 (used if d2num not 0.0)
 n2tic=1		number of tics per numbered tic on axis 2	
 grid2=none		grid lines on axis 2 - none, dot, dash, or solid
 label2=		label on axis 2					
 labelfont=Erg14	font name for axes labels			
 title=		title of plot					
 titlefont=Rom22	font name for title				
 windowtitle=ximage	title on window					
 labelcolor=blue	color for axes labels				
 titlecolor=red	color for title					
 gridcolor=blue	color for grid lines				
 style=seismic	        normal (axis 1 horizontal, axis 2 vertical) or  
			seismic (axis 1 vertical, axis 2 horizontal)	
 blank=0		This indicates what portion of the lower range  
			to blank out (make the background color).  The  
			value should range from 0 to 1.			
 plotfile=plotfile.ps  filename for interactive ploting (P)  		
 curve=curve1,curve2,...  file(s) containing points to draw curve(s)   
 npair=n1,n2,n2,...            number(s) of pairs in each file         
 curvecolor=color1,color2,...  color(s) for curve(s)                   
 blockinterp=0       whether to use block interpolation (0=no, 1=yes)  


 NOTES:								
 The curve file is an ascii file with the points  specified as x1 x2	
 pairs separated by a space, one pair to a line.  A "vector" of curve
 files and curve colors may be specified as curvefile=file1,file2,etc. 
 and curvecolor=color1,color2,etc, and the number of pairs of values   
 in each file as npair=npair1,npair2,... .                             


 Author:  Dave Hale, Colorado School of Mines, 08/09/90

 Stewart A. Levin, Mobil - Added ps print option

 Brian Zook, Southwest Research Institute, 6/27/96, added blank option

 Toralf Foerster, Baltic Sea Research Institute, 9/15/96, new colormaps

 Berend Scheffers, Delft, colorbar (legend)

 Brian K. Macy, Phillips Petroleum, 11/27/98, added curve plotting option
 
 G.Klein, GEOMAR Kiel, 2004-03-12, added cursor scrolling and
                                   interactive change of zoom and clipping.
 
 Zhaobo Meng, ConocoPhillips, 12/02/04, added amplitude display
 
 Garry Perratt, Geocon, 08/04/05, modified perc handling to center colorbar if balance==1.

INTL2B_block - blocky interpolation of a 2-D array of bytes

intl2b_block		blocky interpolation of a 2-D array of bytes

Function Prototype:
void intl2b_block(int nxin, float dxin, float fxin,
	int nyin, float dyin, float fyin, unsigned char *zin,
	int nxout, float dxout, float fxout,
	int nyout, float dyout, float fyout, unsigned char *zout);

Input:
nxin		number of x samples input (fast dimension of zin)
dxin		x sampling interval input
fxin		first x sample input
nyin		number of y samples input (slow dimension of zin)
dyin		y sampling interval input
fyin		first y sample input
zin		array[nyin][nxin] of input samples (see notes)
nxout		number of x samples output (fast dimension of zout)
dxout		x sampling interval output
fxout		first x sample output
nyout		number of y samples output (slow dimension of zout)
dyout		y sampling interval output
fyout		first y sample output

Output:
zout		array[nyout][nxout] of output samples (see notes)

Notes:
The arrays zin and zout must passed as pointers to the first element of
a two-dimensional contiguous array of unsigned char values.

Constant extrapolation of zin is used to compute zout for
output x and y outside the range of input x and y.

Author:  James Gunning, CSIRO Petroleum 1999. Hacked from
intl2b() by Dave Hale, Colorado School of Mines, c. 1989-1991
=head2 CHANGES and their DATES

=cut

use Moose;
our $VERSION = '0.0.1';
use aliased 'App::SeismicUnixGui::misc::L_SU_global_constants';

my $get = L_SU_global_constants->new();

my $var          = $get->var();
my $empty_string = $var->{_empty_string};

my $ximage = {
    _balance     => '',
    _bclip       => '',
    _blank       => '',
    _blockinterp => '',
    _bperc       => '',
    _clip        => '',
    _cmap        => '',
    _curve       => '',
    _curvecolor  => '',
    _curvefile   => '',
    _d1          => '',
    _d1num       => '',
    _d2          => '',
    _d2num       => '',
    _f1          => '',
    _f1num       => '',
    _f2          => '',
    _f2num       => '',
    _grid1       => '',
    _grid2       => '',
    _gridcolor   => '',
    _hbox        => '',
    _label1      => '',
    _label2      => '',
    _labelcolor  => '',
    _labelfont   => '',
    _legend      => '',
    _legendfont  => '',
    _lheight     => '',
    _lwidth      => '',
    _lx          => '',
    _ly          => '',
    _mpicks      => '',
    _n1          => '',
    _n1tic       => '',
    _n2          => '',
    _n2tic       => '',
    _npair       => '',
    _perc        => '',
    _plotfile    => '',
    _style       => '',
    _title       => '',
    _titlecolor  => '',
    _titlefont   => '',
    _units       => '',
    _verbose     => '',
    _wbox        => '',
    _wclip       => '',
    _windowtitle => '',
    _wperc       => '',
    _x1beg       => '',
    _x1end       => '',
    _x2beg       => '',
    _x2end       => '',
    _xbox        => '',
    _ybox        => '',
    _Step        => '',
    _note        => '',
};

=head2 sub Step

collects switches and assembles bash instructions
by adding the program name

=cut

sub Step {

    $ximage->{_Step} = 'ximage' . $ximage->{_Step};
    return ( $ximage->{_Step} );

}

=head2 sub note

collects switches and assembles bash instructions
by adding the program name

=cut

sub note {

    $ximage->{_note} = 'ximage' . $ximage->{_note};
    return ( $ximage->{_note} );

}

=head2 sub clear

=cut

sub clear {

    $ximage->{_balance}     = '';
    $ximage->{_bclip}       = '';
    $ximage->{_blank}       = '';
    $ximage->{_blockinterp} = '';
    $ximage->{_bperc}       = '';
    $ximage->{_clip}        = '';
    $ximage->{_cmap}        = '';
    $ximage->{_curve}       = '';
    $ximage->{_curvecolor}  = '';
    $ximage->{_curvefile}   = '';
    $ximage->{_d1}          = '';
    $ximage->{_d1num}       = '';
    $ximage->{_d2}          = '';
    $ximage->{_d2num}       = '';
    $ximage->{_f1}          = '';
    $ximage->{_f1num}       = '';
    $ximage->{_f2}          = '';
    $ximage->{_f2num}       = '';
    $ximage->{_grid1}       = '';
    $ximage->{_grid2}       = '';
    $ximage->{_gridcolor}   = '';
    $ximage->{_hbox}        = '';
    $ximage->{_label1}      = '';
    $ximage->{_label2}      = '';
    $ximage->{_labelcolor}  = '';
    $ximage->{_labelfont}   = '';
    $ximage->{_legend}      = '';
    $ximage->{_legendfont}  = '';
    $ximage->{_lheight}     = '';
    $ximage->{_lwidth}      = '';
    $ximage->{_lx}          = '';
    $ximage->{_ly}          = '';
    $ximage->{_mpicks}      = '';
    $ximage->{_n1}          = '';
    $ximage->{_n1tic}       = '';
    $ximage->{_n2}          = '';
    $ximage->{_n2tic}       = '';
    $ximage->{_npair}       = '';
    $ximage->{_perc}        = '';
    $ximage->{_plotfile}    = '';
    $ximage->{_style}       = '';
    $ximage->{_title}       = '';
    $ximage->{_titlecolor}  = '';
    $ximage->{_titlefont}   = '';
    $ximage->{_units}       = '';
    $ximage->{_verbose}     = '';
    $ximage->{_wbox}        = '';
    $ximage->{_wclip}       = '';
    $ximage->{_windowtitle} = '';
    $ximage->{_wperc}       = '';
    $ximage->{_x1beg}       = '';
    $ximage->{_x1end}       = '';
    $ximage->{_x2beg}       = '';
    $ximage->{_x2end}       = '';
    $ximage->{_xbox}        = '';
    $ximage->{_ybox}        = '';
    $ximage->{_Step}        = '';
    $ximage->{_note}        = '';
}

=head2 sub absclip 


=cut

sub absclip {

    my ( $self, $clip ) = @_;
    if ( $clip ne $empty_string ) {

        $ximage->{_clip} = $clip;
        $ximage->{_note} = $ximage->{_note} . ' clip=' . $ximage->{_clip};
        $ximage->{_Step} = $ximage->{_Step} . ' clip=' . $ximage->{_clip};

    }
    else {
        print("ximage, absclip, missing clip,\n");
    }
}

=head2 sub balance 


=cut

sub balance {

    my ( $self, $balance ) = @_;

lib/App/SeismicUnixGui/sunix/plot/ximage.pm  view on Meta::CPAN


sub label2 {

    my ( $self, $label2 ) = @_;
    if ( $label2 ne $empty_string ) {

        $ximage->{_label2} = $label2;
        $ximage->{_note}   = $ximage->{_note} . ' label2=' . $ximage->{_label2};
        $ximage->{_Step}   = $ximage->{_Step} . ' label2=' . $ximage->{_label2};

    }
    else {
        print("ximage, label2, missing label2,\n");
    }
}

=head2 sub labelcolor 


=cut

sub labelcolor {

    my ( $self, $labelcolor ) = @_;
    if ( $labelcolor ne $empty_string ) {

        $ximage->{_labelcolor} = $labelcolor;
        $ximage->{_note} =
          $ximage->{_note} . ' labelcolor=' . $ximage->{_labelcolor};
        $ximage->{_Step} =
          $ximage->{_Step} . ' labelcolor=' . $ximage->{_labelcolor};

    }
    else {
        print("ximage, labelcolor, missing labelcolor,\n");
    }
}

=head2 sub labelfont 


=cut

sub labelfont {

    my ( $self, $labelfont ) = @_;
    if ( $labelfont ne $empty_string ) {

        $ximage->{_labelfont} = $labelfont;
        $ximage->{_note} =
          $ximage->{_note} . ' labelfont=' . $ximage->{_labelfont};
        $ximage->{_Step} =
          $ximage->{_Step} . ' labelfont=' . $ximage->{_labelfont};

    }
    else {
        print("ximage, labelfont, missing labelfont,\n");
    }
}

=head2 sub legend 


=cut

sub legend {

    my ( $self, $legend ) = @_;
    if ( $legend ne $empty_string ) {

        $ximage->{_legend} = $legend;
        $ximage->{_note}   = $ximage->{_note} . ' legend=' . $ximage->{_legend};
        $ximage->{_Step}   = $ximage->{_Step} . ' legend=' . $ximage->{_legend};

    }
    else {
        print("ximage, legend, missing legend,\n");
    }
}

=head2 sub legendfont 


=cut

sub legendfont {

    my ( $self, $legendfont ) = @_;
    if ( $legendfont ne $empty_string ) {

        $ximage->{_legendfont} = $legendfont;
        $ximage->{_note} =
          $ximage->{_note} . ' legendfont=' . $ximage->{_legendfont};
        $ximage->{_Step} =
          $ximage->{_Step} . ' legendfont=' . $ximage->{_legendfont};

    }
    else {
        print("ximage, legendfont, missing legendfont,\n");
    }
}

=head2 sub lheight 


=cut

sub lheight {

    my ( $self, $lheight ) = @_;
    if ( $lheight ne $empty_string ) {

        $ximage->{_lheight} = $lheight;
        $ximage->{_note} =
          $ximage->{_note} . ' lheight=' . $ximage->{_lheight};
        $ximage->{_Step} =
          $ximage->{_Step} . ' lheight=' . $ximage->{_lheight};

    }
    else {
        print("ximage, lheight, missing lheight,\n");
    }
}

=head2 sub lwidth 


=cut

sub lwidth {

    my ( $self, $lwidth ) = @_;
    if ( $lwidth ne $empty_string ) {

        $ximage->{_lwidth} = $lwidth;
        $ximage->{_note}   = $ximage->{_note} . ' lwidth=' . $ximage->{_lwidth};
        $ximage->{_Step}   = $ximage->{_Step} . ' lwidth=' . $ximage->{_lwidth};

    }
    else {
        print("ximage, lwidth, missing lwidth,\n");
    }
}

=head2 sub loclip 

	subs loclip bclip

=cut

sub loclip {

    my ( $self, $bclip ) = @_;
    if ($bclip) {

        $ximage->{_bclip} = $bclip;
        $ximage->{_note}  = $ximage->{_note} . ' bclip=' . $ximage->{_bclip};
        $ximage->{_Step}  = $ximage->{_Step} . ' bclip=' . $ximage->{_bclip};



( run in 0.582 second using v1.01-cache-2.11-cpan-d8267643d1d )