summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2018-04-16 20:35:25 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2018-04-16 20:35:25 (GMT)
commit80fcf2440ac675ecb86879f89c2cc7578585adeb (patch)
tree8a956b7ad360efb50b019035404da3fa03a6e484
parentac49c4c2c62dfcfc892de5b39ca5f15203a83c12 (diff)
downloadblt-80fcf2440ac675ecb86879f89c2cc7578585adeb.zip
blt-80fcf2440ac675ecb86879f89c2cc7578585adeb.tar.gz
blt-80fcf2440ac675ecb86879f89c2cc7578585adeb.tar.bz2
add ds9 save parser
-rw-r--r--ds9/library/save.tcl23
-rw-r--r--ds9/library/saveimage.tcl9
-rw-r--r--ds9/library/source.tcl2
-rw-r--r--ds9/parsers/saveimageparser.tac20
-rw-r--r--ds9/parsers/savelex.fcl27
-rw-r--r--ds9/parsers/saveparser.tac68
6 files changed, 135 insertions, 14 deletions
diff --git a/ds9/library/save.tcl b/ds9/library/save.tcl
index 45999cf..a3fdad7 100644
--- a/ds9/library/save.tcl
+++ b/ds9/library/save.tcl
@@ -43,6 +43,14 @@ proc ProcessSaveCmd {varname iname} {
# we need to be realized
ProcessRealizeDS9
+ global debug
+ if {$debug(tcl,parser)} {
+ save::YY_FLUSH_BUFFER
+ save::yy_scan_string [lrange $var $i end]
+ save::yyparse
+ incr i [expr $save::yycnt-1]
+ } else {
+
set format {}
set fn [lindex $var $i]
if {$fn == {}} {
@@ -121,6 +129,21 @@ proc ProcessSaveCmd {varname iname} {
FileLast savefitsfbox $fn
Save $format $fn
}
+}
+
+proc SaveCmdLoad {format fn} {
+ FileLast savefitsfbox $fn
+ Save $format $fn
+}
+
+proc SavefitsCmdSet {which value {cmd {}}} {
+ global savefits
+
+ set savefits($which) $value
+ if {$cmd != {}} {
+ eval $cmd
+ }
+}
# Support
diff --git a/ds9/library/saveimage.tcl b/ds9/library/saveimage.tcl
index 53eed0b..45ac769 100644
--- a/ds9/library/saveimage.tcl
+++ b/ds9/library/saveimage.tcl
@@ -273,8 +273,8 @@ proc ProcessSaveImageCmd {varname iname} {
}
}
-proc SaveImageCmdSet {which value {cmd {}}} {
- global bin
+proc SaveimageCmdSet {which value {cmd {}}} {
+ global saveimage
set saveimage($which) $value
if {$cmd != {}} {
@@ -282,7 +282,7 @@ proc SaveImageCmdSet {which value {cmd {}}} {
}
}
-proc SaveImageCmdLoad {format fn} {
+proc SaveimageCmdLoad {format fn} {
switch -- $format {
fits {FileLast fitsfbox $fn}
eps {FileLast epsfbox $fn}
@@ -294,8 +294,9 @@ proc SaveImageCmdLoad {format fn} {
SaveImage $fn $format
}
-proc SaveImageCmdMPEG {fn na} {
+proc SaveimageCmdMPEG {fn na} {
global movie
+
set movie(action) slice
Movie $fn
}
diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl
index b0a4ce6..c4ffb23 100644
--- a/ds9/library/source.tcl
+++ b/ds9/library/source.tcl
@@ -250,6 +250,8 @@ source $ds9(root)/library/plotparser.tcl
source $ds9(root)/library/plotlex.tcl
source $ds9(root)/library/regionparser.tcl
source $ds9(root)/library/regionlex.tcl
+source $ds9(root)/library/saveparser.tcl
+source $ds9(root)/library/savelex.tcl
source $ds9(root)/library/saveimageparser.tcl
source $ds9(root)/library/saveimagelex.tcl
source $ds9(root)/library/siaparser.tcl
diff --git a/ds9/parsers/saveimageparser.tac b/ds9/parsers/saveimageparser.tac
index 1e1fcb3..ba7c013 100644
--- a/ds9/parsers/saveimageparser.tac
+++ b/ds9/parsers/saveimageparser.tac
@@ -26,16 +26,16 @@ command : saveimage
| saveimage {yyclearin; YYACCEPT} STRING_
;
-saveimage : STRING_ opts {SaveImageCmdLoad [ExtToFormat $1] $1}
- | ext STRING_ opts {SaveImageCmdLoad $1 $2}
+saveimage : STRING_ opts {SaveimageCmdLoad [ExtToFormat $1] $1}
+ | ext STRING_ opts {SaveimageCmdLoad $1 $2}
# backward compatibilty
- | ext opts STRING_ {SaveImageCmdLoad $1 $2}
+ | ext opts STRING_ {SaveimageCmdLoad $1 $2}
# backward compatibilty
| MPEG_ mpeg
;
-mpeg : STRING_ {SaveImageCmdMPEG $1 1}
- | STRING_ INT_ {SaveImageCmdMPEG $1 $2}
+mpeg : STRING_ {SaveimageCmdMPEG $1 1}
+ | STRING_ INT_ {SaveimageCmdMPEG $1 $2}
;
ext : FITS_ {set _ fits}
@@ -47,11 +47,11 @@ ext : FITS_ {set _ fits}
;
opts :
- | NONE_ {SaveImageCmdSet tiff,compress none}
- | JPEG_ {SaveImageCmdSet tiff,compress jpeg}
- | PACKBITS_ {SaveImageCmdSet tiff,compress packbits}
- | DEFLATE_ {SaveImageCmdSet tiff,compress deflate}
- | numeric {SaveImageCmdSet jpeg,quality $1}
+ | NONE_ {SaveimageCmdSet tiff,compress none}
+ | JPEG_ {SaveimageCmdSet tiff,compress jpeg}
+ | PACKBITS_ {SaveimageCmdSet tiff,compress packbits}
+ | DEFLATE_ {SaveimageCmdSet tiff,compress deflate}
+ | numeric {SaveimageCmdSet jpeg,quality $1}
;
%%
diff --git a/ds9/parsers/savelex.fcl b/ds9/parsers/savelex.fcl
new file mode 100644
index 0000000..80a7969
--- /dev/null
+++ b/ds9/parsers/savelex.fcl
@@ -0,0 +1,27 @@
+#tab saveparser.tab.tcl
+
+%{
+%}
+
+#include defs.fin
+
+%%
+
+fits {return $FITS_}
+rgbimage {return $RGBIMAGE_}
+rgbcube {return $RGBCUBE_}
+mecube {return $MECUBE_}
+mosaic {return $MOSAIC_}
+mosaicwcs {return $MOSAICWCS_}
+mosaicimage {return $MOSAICIMAGE_}
+mosaicimagewcs {return $MOSAICIMAGEWCS_}
+wcs {return $WCS_}
+
+image {return $IMAGE_}
+table {return $TABLE_}
+slice {return $SLICE_}
+
+#include numeric.fin
+#include string.fin
+
+%%
diff --git a/ds9/parsers/saveparser.tac b/ds9/parsers/saveparser.tac
new file mode 100644
index 0000000..df6b801
--- /dev/null
+++ b/ds9/parsers/saveparser.tac
@@ -0,0 +1,68 @@
+%{
+%}
+
+#include numeric.tin
+#include string.tin
+
+%start command
+
+%token FITS_
+%token RGBIMAGE_
+%token RGBCUBE_
+%token MECUBE_
+%token MOSAIC_
+%token MOSAICWCS_
+%token MOSAICIMAGE_
+%token MOSAICIMAGEWCS_
+%token WCS_
+
+%token IMAGE_
+%token TABLE_
+%token SLICE_
+
+%%
+
+#include numeric.trl
+
+command : save
+ | save {yyclearin; YYACCEPT} STRING_
+ ;
+
+save : STRING_ opts {SaveCmdLoad [ExtToFormat $1] $1}
+ | format STRING_ opts {SaveCmdLoad $1 $2}
+ ;
+
+format : FITS_ {set _ fits}
+ | RGBIMAGE_ {set _ rgbimage}
+ | RGBCUBE_ {set _ rgbcube}
+ | MECUBE_ {set _ mecube}
+ | mosaic {set _ $1}
+ | mosaicimage {set _ $1}
+ ;
+
+mosaic : MOSAIC_ {set _ mosaic}
+ | MOSAIC_ WCS_ {set _ mosaic}
+ | MOSAICWCS_ {set _ mosaic}
+ ;
+
+mosaicimage : MOSAICIMAGE_ {set _ mosaicimage}
+ | MOSAICIMAGE_ WCS_ {set _ mosaicimage}
+ | MOSAICIMAGEWCS_ {set _ mosaicimage}
+ ;
+
+opts : {SavefitsCmdSet type image; SavefitsCmdSet mosaic 1}
+ | IMAGE_ {SavefitsCmdSet type image}
+ | TABLE_ {SavefitsCmdSet type table}
+ | SLICE_ {SavefitsCmdSet type slice}
+ | INT_ {SavefitsCmdSet mosaic $1}
+ ;
+
+%%
+
+proc save::yyerror {msg} {
+ variable yycnt
+ variable yy_current_buffer
+ variable index_
+
+ ParserError $msg $yycnt $yy_current_buffer $index_
+}