source: tags/release-1.1.12/src/Cubes/drawBlankEdges.cc

Last change on this file was 528, checked in by MatthewWhiting, 15 years ago

Changing the documentation comments to match the askapsoft style. Also have split ChanMap? and Object3D into separate files.

File size: 3.3 KB
Line 
1// -----------------------------------------------------------------------
2// drawBlankEdges.cc: Draw the edge of the BLANK region of the cube on
3//                    a PGPLOT map.
4// -----------------------------------------------------------------------
5// Copyright (C) 2006, Matthew Whiting, ATNF
6//
7// This program is free software; you can redistribute it and/or modify it
8// under the terms of the GNU General Public License as published by the
9// Free Software Foundation; either version 2 of the License, or (at your
10// option) any later version.
11//
12// Duchamp is distributed in the hope that it will be useful, but WITHOUT
13// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15// for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with Duchamp; if not, write to the Free Software Foundation,
19// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
20//
21// Correspondence concerning Duchamp may be directed to:
22//    Internet email: Matthew.Whiting [at] atnf.csiro.au
23//    Postal address: Dr. Matthew Whiting
24//                    Australia Telescope National Facility, CSIRO
25//                    PO Box 76
26//                    Epping NSW 1710
27//                    AUSTRALIA
28// -----------------------------------------------------------------------
29#include <cpgplot.h>
30#include <duchamp/Cubes/cubeUtils.hh>
31#include <duchamp/duchamp.hh>
32#include <duchamp/param.hh>
33#include <duchamp/Utils/mycpgplot.hh>
34#include <string>
35
36namespace duchamp
37{
38
39  void drawBlankEdges(float *dataArray, int xdim, int ydim, Param &par)
40  {
41    ///  @details
42    ///  A subroutine that is designed to draw the edges of the blank
43    ///  region of the cube on a moment/detection map. Uses the same
44    ///  procedure as used in the reconstruction subroutines.
45    ///
46    ///  Note that it needs a PGPLOT device open. The colour used is the current
47    ///   PGPLOT colour.
48    ///
49    ///  \param dataArray The array of pixel values
50    ///  \param xdim      The size of the array in the x-direction.
51    ///  \param ydim      The size of the array in the y-direction.
52    ///  \param par       The Param set telling us what a BLANK pixel is.
53
54    if(par.getFlagBlankPix()){
55
56      if(!cpgtest())
57        duchampError("Draw Blank Edges","There is no PGPlot device open!\n");
58      else{
59
60        int colour;
61        cpgqci(&colour);
62        cpgsci(DUCHAMP_BLANK_EDGE_COLOUR);
63
64        float xoff,x2,yoff,y2;
65        cpgqwin(&xoff,&x2,&yoff,&y2);
66
67        bool *blank = new bool[xdim*ydim];
68        for(int i=0;i<xdim*ydim;i++) blank[i] = par.isBlank(dataArray[i]);
69
70        for(int x=0; x<xdim; x++){// for each column...
71          for(int y=1;y<ydim;y++){
72            int current = y*xdim + x;
73            int previous = (y-1)*xdim + x;
74            if( (blank[current]&&!blank[previous]) ||
75                (!blank[current]&&blank[previous])   ){
76              cpgmove(x-0.5, y-0.5);
77              cpgdraw(x+0.5, y-0.5);
78            }
79          }
80        }
81     
82        for(int y=0; y<ydim; y++){// for each row...
83          for(int x=1;x<xdim;x++){
84            int current = y*xdim + x;
85            int previous = y*xdim + x-1;
86            if( (blank[current]&&!blank[previous]) ||
87                (!blank[current]&&blank[previous])   ){
88              cpgmove(x-0.5, y-0.5);
89              cpgdraw(x-0.5, y+0.5);
90            }
91          }
92        }
93
94        delete [] blank;
95     
96        cpgsci(colour);
97 
98      }
99
100 
101    }
102
103  }
104
105}
Note: See TracBrowser for help on using the repository browser.