Index: trunk/psphot/src/psphotVisual.c
===================================================================
--- trunk/psphot/src/psphotVisual.c	(revision 20594)
+++ trunk/psphot/src/psphotVisual.c	(revision 20938)
@@ -26,4 +26,50 @@
 
     isVisual = mode;
+    return true;
+}
+
+bool psphotVisualShowMask (int kapaFD, psImage *inImage, const char *name, int channel) {
+
+    KiiImage image;
+    KapaImageData data;
+    Coords coords;
+
+    strcpy (coords.ctype, "RA---TAN");
+
+    psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
+    psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0);
+    if (!psImageBackground(stats, NULL, inImage, NULL, 0, rng)) {
+	fprintf (stderr, "failed to get background values\n");
+	return false;
+    }
+
+    image.Nx = inImage->numCols;
+    image.Ny = inImage->numRows;
+
+    ALLOCATE (image.data2d, float *, image.Ny);
+    for (int iy = 0; iy < image.Ny; iy++) {
+	ALLOCATE (image.data2d[iy], float, image.Nx);
+	for (int ix = 0; ix < image.Nx; ix++) {
+	    image.data2d[iy][ix] = inImage->data.U8[iy][ix];
+	}
+    }
+
+    strcpy (data.name, name);
+    strcpy (data.file, name);
+    data.zero = -1;
+    data.range = 32;
+    data.logflux = 0;
+  
+    KiiSetChannel (kapaFD, channel);
+    KiiNewPicture2D (kapaFD, &image, &data, &coords);
+
+    for (int iy = 0; iy < image.Ny; iy++) {
+	free (image.data2d[iy]);
+    }
+    free (image.data2d);
+
+    psFree (stats);
+    psFree (rng);
+
     return true;
 }
@@ -1336,5 +1382,5 @@
 }
 
-bool psphotVisualShowSourceSize (psArray *sources) {
+bool psphotVisualShowSourceSize (pmReadout *readout, psArray *sources) {
 
     int Noverlay, NOVERLAY;
@@ -1398,4 +1444,6 @@
     KiiLoadOverlay (kapa, overlay, Noverlay, "blue");
     FREE (overlay);
+
+    psphotVisualShowMask (kapa, readout->mask, "mask", 2);
 
     // pause and wait for user input:
