summaryrefslogtreecommitdiffstats
path: root/ds9/library/rgbimage.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/rgbimage.tcl
parentd4d595fa7fb12903db9227d33d48b2b00120dbd1 (diff)
downloadblt-12166aa342f7c8d905097e43a1f50e0775503069.zip
blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.gz
blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.bz2
Initial commit
Diffstat (limited to 'ds9/library/rgbimage.tcl')
-rw-r--r--ds9/library/rgbimage.tcl181
1 files changed, 181 insertions, 0 deletions
diff --git a/ds9/library/rgbimage.tcl b/ds9/library/rgbimage.tcl
new file mode 100644
index 0000000..6ed2b3b
--- /dev/null
+++ b/ds9/library/rgbimage.tcl
@@ -0,0 +1,181 @@
+# 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 LoadRGBImageFile {fn} {
+ global loadParam
+ global current
+
+ switch -- [$current(frame) get type] {
+ base -
+ 3d {
+ Error [msgcat::mc {Unable to load RGB image into a non-rgb frame}]
+ return
+ }
+ rgb {}
+ }
+
+ set loadParam(file,type) fits
+ set loadParam(file,mode) {rgb image}
+ set loadParam(load,type) mmapincr
+ set loadParam(file,name) $fn
+
+ # mask not supported
+ set loadParam(load,layer) {}
+
+ ConvertFitsFile
+ ProcessLoad
+}
+
+proc LoadRGBImageAlloc {path fn} {
+ global loadParam
+ global current
+
+ switch -- [$current(frame) get type] {
+ base -
+ 3d {
+ Error [msgcat::mc {Unable to load RGB image into a non-rgb frame}]
+ return
+ }
+ rgb {}
+ }
+
+ set loadParam(file,type) fits
+ set loadParam(file,mode) {rgb image}
+ set loadParam(load,type) allocgz
+ set loadParam(file,name) $fn
+ set loadParam(file,fn) $path
+
+ # mask not supported
+ set loadParam(load,layer) {}
+
+ ProcessLoad
+}
+
+proc LoadRGBImageSocket {sock fn} {
+ global loadParam
+ global current
+
+ switch -- [$current(frame) get type] {
+ base -
+ 3d {
+ Error [msgcat::mc {Unable to load RGB image into a non-rgb frame}]
+ return
+ }
+ rgb {}
+ }
+
+ set loadParam(file,type) fits
+ set loadParam(file,mode) {rgb image}
+ set loadParam(load,type) socketgz
+ set loadParam(file,name) $fn
+ set loadParam(socket,id) $sock
+
+ # mask not supported
+ set loadParam(load,layer) {}
+
+ return [ProcessLoad 0]
+}
+
+proc SaveRGBImageFile {fn} {
+ global current
+
+ if {$fn == {} || $current(frame) == {}} {
+ return
+ }
+
+ switch -- [$current(frame) get type] {
+ base -
+ 3d {
+ Error [msgcat::mc {Unable to save RGB image from a non-rgb frame}]
+ return
+ }
+ rgb {}
+ }
+
+ if {![$current(frame) has fits]} {
+ return
+ }
+
+ $current(frame) save fits rgb image file "\{$fn\}"
+}
+
+proc SaveRGBImageSocket {sock} {
+ global current
+
+ if {$current(frame) == {}} {
+ return
+ }
+
+ switch -- [$current(frame) get type] {
+ base -
+ 3d {
+ Error [msgcat::mc {Unable to save RGB image from a non-rgb frame}]
+ return
+ }
+ rgb {}
+ }
+
+ if {![$current(frame) has fits]} {
+ return
+ }
+
+ $current(frame) save fits rgb image socket $sock
+}
+
+proc ProcessRGBImageCmd {varname iname sock fn} {
+ upvar $varname var
+ upvar $iname i
+
+ switch -- [string tolower [lindex $var $i]] {
+ new {
+ incr i
+ CreateRGBFrame
+ }
+ mask {
+ incr i
+ # not supported
+ }
+ slice {
+ incr i
+ # not supported
+ }
+ }
+ set param [lindex $var $i]
+
+ StartLoad
+ if {$sock != {}} {
+ # xpa
+ if {![LoadRGBImageSocket $sock $param]} {
+ InitError xpa
+ LoadRGBImageFile $param
+ }
+ } else {
+ # comm
+ if {$fn != {}} {
+ LoadRGBImageAlloc $fn $param
+ } else {
+ LoadRGBImageFile $param
+ }
+ }
+ FinishLoad
+}
+
+proc ProcessSendRGBImageCmd {proc id param sock fn} {
+ global current
+
+ if {$current(frame) == {}} {
+ return
+ }
+
+ if {$sock != {}} {
+ # xpa
+ SaveRGBImageSocket $sock
+ } elseif {$fn != {}} {
+ # comm
+ SaveRGBImageFile $fn
+ $proc $id {} $fn
+ }
+}