summaryrefslogtreecommitdiffstats
path: root/ds9/library/mosaicwcs.tcl
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:01:15 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:01:15 (GMT)
commit12166aa342f7c8d905097e43a1f50e0775503069 (patch)
tree73a6e7296fbf9898633a02c2503a3e959789d8c3 /ds9/library/mosaicwcs.tcl
parentd4d595fa7fb12903db9227d33d48b2b00120dbd1 (diff)
downloadblt-12166aa342f7c8d905097e43a1f50e0775503069.zip
blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.gz
blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.bz2
Initial commit
Diffstat (limited to 'ds9/library/mosaicwcs.tcl')
-rw-r--r--ds9/library/mosaicwcs.tcl148
1 files changed, 148 insertions, 0 deletions
diff --git a/ds9/library/mosaicwcs.tcl b/ds9/library/mosaicwcs.tcl
new file mode 100644
index 0000000..5485813
--- /dev/null
+++ b/ds9/library/mosaicwcs.tcl
@@ -0,0 +1,148 @@
+# Copyright (C) 1999-2016
+# Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+# For conditions of distribution and use, see copyright notice in "copyright"
+
+package provide DS9 1.0
+
+proc LoadMosaicWCSFile {fn layer sys} {
+ global loadParam
+
+ set loadParam(file,type) fits
+ set loadParam(file,mode) [list mosaic $sys]
+ set loadParam(load,type) mmapincr
+ set loadParam(file,name) $fn
+ set loadParam(load,layer) $layer
+
+ ConvertFitsFile
+ ProcessLoad
+}
+
+proc LoadMosaicWCSAlloc {path fn layer sys} {
+ global loadParam
+
+ set loadParam(file,type) fits
+ set loadParam(file,mode) [list mosaic $sys]
+ set loadParam(load,type) allocgz
+ set loadParam(file,name) $fn
+ set loadParam(file,fn) $path
+ set loadParam(load,layer) $layer
+
+ ProcessLoad
+}
+
+proc LoadMosaicWCSSocket {sock fn layer sys} {
+ global loadParam
+
+ set loadParam(file,type) fits
+ set loadParam(file,mode) [list mosaic $sys]
+ set loadParam(load,type) socketgz
+ set loadParam(file,name) $fn
+ set loadParam(socket,id) $sock
+ set loadParam(load,layer) $layer
+
+ return [ProcessLoad 0]
+}
+
+proc SaveMosaicWCSFile {fn opt} {
+ global current
+
+ if {$fn == {} || $current(frame) == {}} {
+ return
+ }
+
+ if {![$current(frame) has fits]} {
+ return
+ }
+
+ if {$opt == {}} {
+ set opt 1
+ }
+
+ $current(frame) save fits mosaic file "\{$fn\}" $opt
+}
+
+proc SaveMosaicWCSSocket {sock opt} {
+ global current
+
+ if {$current(frame) == {}} {
+ return
+ }
+
+ if {![$current(frame) has fits]} {
+ return
+ }
+
+ if {$opt == {}} {
+ set opt 1
+ }
+
+ $current(frame) save fits mosaic socket $sock $opt
+}
+
+proc ProcessMosaicWCSCmd {varname iname sock fn} {
+ upvar $varname var
+ upvar $iname i
+
+ global loadParam
+ global current
+
+ set layer {}
+
+ switch -- [string tolower [lindex $var $i]] {
+ new {
+ incr i
+ CreateFrame
+ }
+ mask {
+ incr i
+ set layer mask
+ }
+ slice {
+ incr i
+ # not supported
+ }
+ }
+
+ if {[string range [lindex $var $i] 0 2] == {wcs}} {
+ set opt [lindex $var $i]
+ incr i
+ } else {
+ set opt wcs
+ }
+ set param [lindex $var $i]
+
+ StartLoad
+ if {$sock != {}} {
+ # xpa
+ if {![LoadMosaicWCSSocket $sock $param $layer $opt]} {
+ InitError xpa
+ LoadMosaicWCSFile $param $layer $opt
+ }
+ } else {
+ # comm
+ if {$fn != {}} {
+ LoadMosaicWCSAlloc $fn $param $layer $opt
+ } else {
+ LoadMosaicWCSFile $param $layer $opt
+ }
+ }
+ FinishLoad
+}
+
+proc ProcessSendMosaicWCSCmd {proc id param sock fn} {
+ global current
+
+ if {$current(frame) == {}} {
+ return
+ }
+
+ set opt [lindex $param 0]
+ if {$sock != {}} {
+ # xpa
+ SaveMosaicWCSSocket $sock $opt
+ } elseif {$fn != {}} {
+ # comm
+ SaveMosaicWCSFile $fn $opt
+ $proc $id {} $fn
+ }
+}