Index: /trunk/ippScripts/scripts/ds9_cmf_regions.pl
===================================================================
--- /trunk/ippScripts/scripts/ds9_cmf_regions.pl	(revision 18076)
+++ /trunk/ippScripts/scripts/ds9_cmf_regions.pl	(revision 18077)
@@ -7,4 +7,5 @@
 use Pod::Usage qw( pod2usage );
 use Data::Dumper;
+use Carp;
 
 Astro::FITS::CFITSIO::PerlyUnpacking(1);
@@ -16,23 +17,29 @@
 
 
-my ( $filename,			# Filename containing photometry
-     $extname,			# Extension name containing photometry
-     $frame,			# Frame number in ds9
-     $colour,			# Region colour
-     $radius,			# Radius for circle
+my ( $filename,                 # Filename containing photometry
+     $extname,                  # Extension name containing photometry
+     $frame,                    # Frame number in ds9
+     $colour,                   # Region colour
+     $flag_colour,              # Flagged source region colour
+     $flag,                     # Flags
+     $radius,                   # Radius for circle
      $save_temps
      );
 
 # Defaults
-$colour = "red";
+$colour = "blue";
+$flag_colour = "red";
 $radius = 5;
+$flag = 0x3888;
 
 GetOptions(
-	   'file=s' => \$filename,
-	   'ext=s' => \$extname,
-	   'frame=s' => \$frame,
-	   'colour=s' => \$colour,
-	   'radius=f' => \$radius,
-	   'save-temps'        => \$save_temps, # Save temporary files?
+           'file=s' => \$filename,
+           'ext=s' => \$extname,
+           'frame=s' => \$frame,
+           'colour=s' => \$colour,
+           'flag-colour=s' => \$flag_colour,
+           'flag=o' => \$flag,
+           'radius=f' => \$radius,
+           'save-temps'        => \$save_temps, # Save temporary files?
 ) or pod2usage( 2 );
 
@@ -43,33 +50,31 @@
     and defined $extname;
 
-my $status;			# Status of FITSIO calls
+my $status;                     # Status of FITSIO calls
 my $fits = Astro::FITS::CFITSIO::open_file( $filename, READONLY, $status ); # FITS file handle
 check_fitsio($status);
 $fits->movnam_hdu(BINARY_TBL, $extname, 0, $status) and check_fitsio($status);
-my $numRows;			# Number of rows in table
+my $numRows;                    # Number of rows in table
 $fits->get_num_rows($numRows, $status) and check_fitsio($status);
 
-my ($xCol, $yCol);		# Column numbers for x and y
+my ($xCol, $yCol, $flagCol);     # Column numbers for x,y, flag
 $fits->get_colnum(0, 'X_PSF', $xCol, $status) and check_fitsio($status);
 $fits->get_colnum(0, 'Y_PSF', $yCol, $status) and check_fitsio($status);
+$fits->get_colnum(0, 'FLAGS', $flagCol, $status) and check_fitsio($status);
 
-my ($xType, $yType);		# Types for x and y
-$fits->get_coltype($xCol, $xType, undef, undef, $status) and check_fitsio($status);
-$fits->get_coltype($yCol, $yType, undef, undef, $status) and check_fitsio($status);
-
-my ($x, $y);			# Coordinates read from table
-$fits->read_col($xType, $xCol, 1, 1, $numRows, 0, $x, undef, $status) and check_fitsio($status);
-$fits->read_col($yType, $yCol, 1, 1, $numRows, 0, $y, undef, $status) and check_fitsio($status);
+my ($x, $y, $flags);            # Coordinates and flags read from table
+$fits->read_col(TFLOAT, $xCol, 1, 1, $numRows, 0, $x, undef, $status) and check_fitsio($status);
+$fits->read_col(TFLOAT, $yCol, 1, 1, $numRows, 0, $y, undef, $status) and check_fitsio($status);
+$fits->read_col(TINT, $flagCol, 1, 1, $numRows, 0, $flags, undef, $status) and check_fitsio($status);
 $fits->close_file($status);
 
 my ($coordFile, $coordName) = tempfile( "/tmp/ds9_cmf_regions.XXXX", UNLINK => !$save_temps );
 for (my $i = 0; $i < $numRows; $i++) {
-    print $coordFile "image; circle(" . ($$x[$i] + 1) . ',' . ($$y[$i] + 1) .
-	",$radius \# color = $colour\n";
+    print $coordFile "image; circle(" . ($$x[$i] + 1) . ',' . ($$y[$i] + 1) . ",$radius \# color = " .
+        (($$flags[$i] & $flag) ? $flag_colour : $colour) . "\n";
 }
 close $coordFile;
 
 my @settings = settings_save("regions format",
-			     "regions system"); # Settings to save
+                             "regions system"); # Settings to save
 
 xpaset("frame $frame") if defined $frame;
@@ -90,10 +95,10 @@
 sub check_fitsio
 {
-    my $status = shift;		# Status of FITSIO calls
+    my $status = shift;         # Status of FITSIO calls
 
     if ($status != 0) {
-	my $msg;		# Message to output
-	Astro::FITS::CFITSIO::fits_get_errstatus( $status , $msg );
-	die "CFITSIO error: $msg\n";
+        my $msg;                # Message to output
+        Astro::FITS::CFITSIO::fits_get_errstatus( $status , $msg );
+        croak "CFITSIO error: $msg\n";
     }
 }
@@ -102,8 +107,8 @@
 sub settings_save
 {
-    my @settings;		# Values of settings
+    my @settings;               # Values of settings
     foreach my $setting (@_) {
-	my @values = xpaget($setting);
-	push @settings, $setting . ' ' . shift @values;
+        my @values = xpaget($setting);
+        push @settings, $setting . ' ' . shift @values;
     }
     return @settings;
