summaryrefslogtreecommitdiffstats
path: root/tksao/frame/parser.Y
diff options
context:
space:
mode:
Diffstat (limited to 'tksao/frame/parser.Y')
-rw-r--r--tksao/frame/parser.Y2875
1 files changed, 2875 insertions, 0 deletions
diff --git a/tksao/frame/parser.Y b/tksao/frame/parser.Y
new file mode 100644
index 0000000..38ad54e
--- /dev/null
+++ b/tksao/frame/parser.Y
@@ -0,0 +1,2875 @@
+// Copyright (C) 1999-2016
+// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+// For conditions of distribution and use, see copyright notice in "copyright"
+
+%pure-parser
+%parse-param {Base* fr}
+%lex-param {frFlexLexer* ll}
+%parse-param {frFlexLexer* ll}
+
+%{
+#define YYDEBUG 1
+
+#include <math.h>
+#include <string.h>
+#include <iostream>
+
+#include "base.h"
+#include "frame3d.h"
+#include "fitsimage.h"
+#include "marker.h"
+
+#undef yyFlexLexer
+#define yyFlexLexer frFlexLexer
+#include <FlexLexer.h>
+
+extern int frlex(void*, frFlexLexer*);
+extern void frerror(Base*, frFlexLexer*, const char*);
+
+static Coord::CoordSystem currentCoord = Coord::IMAGE;
+static Coord::SkyFrame currentSky = Coord::FK5;
+
+static unsigned short defaultProps = Marker::SELECT | Marker::HIGHLITE |
+ Marker::EDIT | Marker::MOVE | Marker::ROTATE |
+ Marker::DELETE | Marker::INCLUDE | Marker::SOURCE;
+static unsigned short currentProps;
+static char currentColor[16];
+static int currentWidth;
+static int currentDash[2];
+static char currentFont[32];
+static char currentText[80];
+
+static List<Tag> taglist;
+static List<CallBack> cblist;
+
+static unsigned short propQMask;
+static unsigned short propQValue;
+
+static void setProps(unsigned short* props, unsigned short prop, int value);
+%}
+
+%union {
+#define FRBUFSIZE 4096
+ char chr;
+ char str[FRBUFSIZE];
+ void* ptr;
+ int integer;
+ double real;
+ double vector[3];
+ int dash[2];
+}
+
+%type <real> numeric
+%type <integer> yesno
+
+%type <real> angle
+%type <real> optangle
+%type <real> sexagesimal
+%type <real> hms
+%type <real> dms
+%type <vector> coord
+%type <integer> coordSystem
+%type <integer> wcsSystem
+%type <integer> internalSystem
+%type <integer> skyFrame
+%type <integer> skyFormat
+%type <integer> skyDist
+
+%type <integer> markerProperty
+%type <integer> markerCallBack
+%type <integer> markerFormat
+%type <integer> markerLayer
+%type <dash> markerDash
+%type <integer> pscolorspace
+%type <integer> scaleType
+%type <integer> minmaxMode
+%type <real> contourClipMode
+%type <integer> shmType
+%type <integer> contourMethod
+%type <integer> layerType
+%type <integer> gridType
+%type <integer> fileNameType
+%type <integer> smoothFunction
+%type <integer> pointShape
+%type <integer> pointSize
+%type <integer> endian
+%type <integer> renderMethod
+%type <integer> renderBackground
+%type <integer> analysisMethod
+%type <integer> analysisParam
+
+%token <real> REAL
+%token <integer> INT
+%token <str> STRING
+%token <ptr> POINTER
+
+%token <real> ANGDEGREE
+%token <real> ANGRADIAN
+
+%token <str> SEXSTR
+%token <str> HMSSTR
+%token <str> DMSSTR
+
+%token ABOUT_
+%token AIP_
+%token ALLOC_
+%token ALLOCGZ_
+%token ALIGN_
+%token ALL_
+%token ALT_
+%token AMPLIFIER_
+%token ANALYSIS_
+%token ANGLE_
+%token ANNULUS_
+%token APPEND_
+%token ARCMIN_
+%token ARCSEC_
+%token ARRAY_
+%token ARROW_
+%token ASINH_
+%token AST_
+%token AUTO_
+%token AUX_
+%token AVERAGE_
+%token AXES_
+%token AZIMUTH_
+%token B1950_
+%token BACK_
+%token BACKGROUND_
+%token BASE_
+%token BBOX_
+%token BEGIN_
+%token BG_
+%token BIG_
+%token BIGENDIAN_
+%token BIN_
+%token BITPIX_
+%token BLOCK_
+%token BORDER_
+%token BOX_
+%token BOXANNULUS_
+%token BOXCAR_
+%token BOXCIRCLE_
+%token BPANDA_
+%token BUFFER_
+%token BW_
+%token CALLBACK_
+%token CANVAS_
+%token CATALOG_
+%token CELESTRIAL_
+%token CENTER_
+%token CENTROID_
+%token CHANNEL_
+%token CIRCLE_
+%token CIAO_
+%token CLEAR_
+%token CLIP_
+%token COLOR_
+%token COLORBAR_
+%token COLORMAP_
+%token COLORSCALE_
+%token COLORSPACE_
+%token COLS_
+%token COLUMN_
+%token COMMAND_
+%token COMPASS_
+%token COMPOSITE_
+%token COMPRESS_
+%token CONTOUR_
+%token CONTRAST_
+%token COORDINATES_
+%token COPY_
+%token COUNT_
+%token CPANDA_
+%token CREATE_
+%token CROP_
+%token CROSS_
+%token CROSSHAIR_
+%token CUBE_
+%token CURSOR_
+%token CUT_
+%token CMYK_
+%token DASH_
+%token DASHLIST_
+%token DATA_
+%token DATAMIN_
+%token DATASEC_
+%token DEBUG_
+%token DEGREES_
+%token DEFAULT_
+%token DELETE_
+%token DEPTH_
+%token DETECTOR_
+%token DIAMOND_
+%token DIM_
+%token DS9_
+%token EDIT_
+%token ECLIPTIC_
+%token ELEVATION_
+%token ELLIPSE_
+%token ELLIPSEANNULUS_
+%token END_
+%token ENVI_
+%token EPANDA_
+%token EPSILON_
+%token EQUATORIAL_
+%token ERASE_
+%token EXT_
+%token FACTOR_
+%token FALSE_
+%token FILE_
+%token FILTER_
+%token FIT_
+%token FITS_
+%token FITSY_
+%token FIXED_
+%token FK4_
+%token FK4_NO_E_
+%token FK5_
+%token FONT_
+%token FRONT_
+%token FULL_
+%token FUNCTION_
+%token GALACTIC_
+%token GAUSSIAN_
+%token GET_
+%token GLOBAL_
+%token GRAPHICS_
+%token GRAY_
+%token GRID_
+%token GZ_
+%token HANDLE_
+%token HAS_
+%token HEAD_
+%token HEADER_
+%token HEIGHT_
+%token HELIOECLIPTIC_
+%token HIDE_
+%token HIGHLITE_
+%token HISTEQU_
+%token HISTOGRAM_
+%token HORIZONTAL_
+%token ICRS_
+%token ID_
+%token IIS_
+%token IMAGE_
+%token INCLUDE_
+%token INCR_
+%token INFO_
+%token INTEGER_
+%token ITERATION_
+%token IRAF_
+%token IRAFMIN_
+%token J2000_
+%token KEY_
+%token KEYWORD_
+%token LABEL_
+%token LENGTH_
+%token LEVEL_
+%token LITTLE_
+%token LITTLEENDIAN_
+%token LINE_
+%token LINEAR_
+%token LIST_
+%token LOAD_
+%token LOCAL_
+%token LOG_
+%token MACOSX_
+%token MAGNIFIER_
+%token MATCH_
+%token MAP_
+%token MARK_
+%token MARKER_
+%token MASK_
+%token MESSAGE_
+%token METHOD_
+%token MINMAX_
+%token MIP_
+%token MMAP_
+%token MMAPINCR_
+%token MOSAIC_
+%token MODE_
+%token MOTION_
+%token MOVE_
+%token NAME_
+%token NAN_
+%token NATIVE_
+%token NAXES_
+%token NEW_
+%token NEXT_
+%token NO_
+%token NONE_
+%token NOW_
+%token NRRD_
+%token NUMBER_
+%token OBJECT_
+%token OFF_
+%token ON_
+%token ONLY_
+%token OPTION_
+%token ORIENT_
+%token PAN_
+%token PANNER_
+%token PARSER_
+%token PASTE_
+%token PERF_
+%token PHOTO_
+%token PHYSICAL_
+%token PIXEL_
+%token PLOT2D_
+%token PLOT3D_
+%token POINT_
+%token POINTER_
+%token POLYGON_
+%token POSTSCRIPT_
+%token POW_
+%token PRINT_
+%token PRESERVE_
+%token PROJECTION_
+%token PROPERTY_
+%token PUBLICATION_
+%token PROS_
+%token QUERY_
+%token RADIAL_
+%token RADIUS_
+%token REGION_
+%token REPLACE_
+%token RESAMPLE_
+%token RESET_
+%token RESOLUTION_
+%token RGB_
+%token ROOT_
+%token ROTATE_
+%token RULER_
+%token SAMPLE_
+%token SAOIMAGE_
+%token SAOTNG_
+%token SAVE_
+%token SCALE_
+%token SCAN_
+%token SCIENTIFIC_
+%token SCOPE_
+%token SEGMENT_
+%token SELECT_
+%token SET_
+%token SEXAGESIMAL_
+%token SHAPE_
+%token SHARED_
+%token SHIFT_
+%token SHMID_
+%token SHOW_
+%token SINH_
+%token SIZE_
+%token SLICE_
+%token SMMAP_
+%token SMOOTH_
+%token SOCKET_
+%token SOCKETGZ_
+%token SOURCE_
+%token SQRT_
+%token SQUARED_
+%token SSHARED_
+%token STATS_
+%token STATUS_
+%token SUPERGALACTIC_
+%token SUM_
+%token SYSTEM_
+%token TABLE_
+%token TAG_
+%token TEMPLATE_
+%token TEXT_
+%token THREADS_
+%token THREED_
+%token THRESHOLD_
+%token THICK_
+%token TRANSPARENCY_
+%token TO_
+%token TOGGLE_
+%token TOPHAT_
+%token TRUE_
+%token TYPE_
+%token UNDO_
+%token UNHIGHLITE_
+%token UNLOAD_
+%token UNSELECT_
+%token UPDATE_
+%token USER_
+%token VALUE_
+%token VAR_
+%token VIEW_
+%token VECTOR_
+%token VERSION_
+%token VERTEX_
+%token VERTICAL_
+%token WARP_
+%token WCS_
+%token WCSA_
+%token WCSB_
+%token WCSC_
+%token WCSD_
+%token WCSE_
+%token WCSF_
+%token WCSG_
+%token WCSH_
+%token WCSI_
+%token WCSJ_
+%token WCSK_
+%token WCSL_
+%token WCSM_
+%token WCSN_
+%token WCSO_
+%token WCSP_
+%token WCSQ_
+%token WCSR_
+%token WCSS_
+%token WCST_
+%token WCSU_
+%token WCSV_
+%token WCSW_
+%token WCSX_
+%token WCSY_
+%token WCSZ_
+%token WCS0_
+%token WFPC2_
+%token WIDTH_
+%token WIN32_
+%token XML_
+%token XY_
+%token YES_
+%token ZMAX_
+%token ZSCALE_
+%token ZOOM_
+
+%%
+
+command : DEBUG_ debug
+ | ANALYSIS_ analysis
+ | BIN_ bin
+ | BG_ COLOR_ STRING {fr->bgColorCmd($3);}
+ | BLOCK_ block
+ | CENTER_ {fr->centerCmd();}
+ | CLEAR_ {fr->clearCmd();}
+ | CLIP_ clip
+ | COLORBAR_ TAG_ STRING {fr->colorbarTagCmd($3);}
+ | COLORMAP_ colormap
+ | COLORSCALE_ colorscale
+ | CONTOUR_ contour
+ | CROP_ crop
+ | CROSSHAIR_ crosshair
+ | CUBE_ cube
+ | DATASEC_ yesno {fr->DATASECCmd($2);}
+ | FITSY_ fitsy
+ | GET_ get
+ | GRID_ grid
+ | HAS_ has
+ | HIDE_ {fr->hideCmd();}
+ | HIGHLITE_ yesno {fr->highliteCmd($2);}
+ | IIS_ iis
+ | IRAF_ ALIGN_ INT {fr->irafAlignCmd($3);}
+ | LOAD_ load
+ | MACOSX_ macosx
+ | MAGNIFIER_ magnifier
+ | MATCH_ match
+ | MARKER_ markerLayer marker
+ | MASK_ mask
+ | NAN_ COLOR_ STRING {fr->nanColorCmd($3);}
+ | ORIENT_ orient
+ | PAN_ pan
+ | PANNER_ panner
+ | QUERY_ CURSOR_ {fr->queryCursorCmd();}
+ | POSTSCRIPT_ postscript
+ | RESET_ {fr->resetCmd();}
+ | REGION_ markerLayer region
+ | RGB_ rgb
+ | ROTATE_ rotate
+ | SAVE_ save
+ | SHOW_ {fr->showCmd();}
+ | SMOOTH_ smooth
+ | THREADS_ INT {fr->threadsCmd($2);}
+ | THREED_ threed
+ | UNLOAD_ {fr->unloadFitsCmd();}
+ | UPDATE_ update
+ | VERSION_ {fr->msg("Frame 1.0");}
+ | WARP_ warp
+ | WCS_ wcs
+ | WIN32_ win32
+ | ZOOM_ zoom
+ ;
+
+numeric : REAL {$$=$1;}
+ | INT {$$=$1;}
+ ;
+
+debug : ON_ {yydebug=1;}
+ | OFF_ {yydebug=0;}
+ | AST_ yesno {DebugAST=$2;}
+ | MOSAIC_ yesno {DebugMosaic=$2;}
+ | PARSER_ yesno {yydebug=$2;}
+ | PERF_ yesno {DebugPerf=$2;}
+ | WCS_ yesno {DebugWCS=$2;}
+ | BIN_ yesno {DebugBin=$2;}
+ | BLOCK_ yesno {DebugBlock=$2;}
+ | COMPRESS_ yesno {DebugCompress=$2;}
+ | CROP_ yesno {DebugCrop=$2;}
+ | GZ_ yesno {DebugGZ=$2;}
+ | RGB_ yesno {DebugRGB=$2;}
+ ;
+
+yesno : INT {$$=($1 ? 1 : 0);}
+
+ | YES_ {$$=1;}
+ | 'Y' {$$=1;}
+ | ON_ {$$=1;}
+ | TRUE_ {$$=1;}
+
+ | NO_ {$$=0;}
+ | 'N' {$$=0;}
+ | OFF_ {$$=0;}
+ | FALSE_ {$$=0;}
+ ;
+
+fileNameType : /* empty */ {$$ = Base::ROOTBASE;}
+ | ROOT_ BASE_ {$$ = Base::ROOTBASE;}
+ | FULL_ BASE_ {$$ = Base::FULLBASE;}
+ | ROOT_ {$$ = Base::ROOT;}
+ | FULL_ {$$ = Base::FULL;}
+ ;
+
+optangle : /* empty */ {$$ = 0;}
+ | angle {$$ = $1;}
+ ;
+
+angle : numeric {$$ = degToRad($1);} /* assume degree */
+ | ANGDEGREE {$$ = degToRad($1);}
+ | ANGRADIAN {$$=$1;}
+ ;
+
+sexagesimal: SEXSTR {$$ = parseSEXStr($1);}
+ ;
+
+hms : HMSSTR {$$ = parseHMSStr($1);}
+ ;
+
+dms : DMSSTR {$$ = parseDMSStr($1);}
+ ;
+
+coord : sexagesimal sexagesimal
+ {
+ Vector r;
+ if (currentSky == Coord::GALACTIC || currentSky == Coord::ECLIPTIC)
+ r = Vector($1,$2);
+ else
+ r = Vector($1*360./24.,$2);
+
+ $$[0] = r[0];
+ $$[1] = r[1];
+ $$[2] = r[2];
+ }
+ | hms dms
+ {
+ Vector r = Vector($1,$2);
+ $$[0] = r[0];
+ $$[1] = r[1];
+ $$[2] = r[2];
+ }
+ | dms dms
+ {
+ Vector r = Vector($1,$2);
+ $$[0] = r[0];
+ $$[1] = r[1];
+ $$[2] = r[2];
+ }
+ | numeric numeric
+ {
+ $$[0] = $1;
+ $$[1] = $2;
+ $$[2] = 1;
+ }
+ ;
+
+coordSystem :IMAGE_ {$$ = currentCoord = Coord::IMAGE;}
+ | PHYSICAL_ {$$ = currentCoord = Coord::PHYSICAL;}
+ | DETECTOR_ {$$ = currentCoord = Coord::DETECTOR;}
+ | AMPLIFIER_ {$$ = currentCoord = Coord::AMPLIFIER;}
+ | wcsSystem {$$ = (Coord::CoordSystem)$1;}
+ ;
+
+wcsSystem : WCS_ {$$ = currentCoord = Coord::WCS;}
+ | WCSA_ {$$ = currentCoord = Coord::WCSA;}
+ | WCSB_ {$$ = currentCoord = Coord::WCSB;}
+ | WCSC_ {$$ = currentCoord = Coord::WCSC;}
+ | WCSD_ {$$ = currentCoord = Coord::WCSD;}
+ | WCSE_ {$$ = currentCoord = Coord::WCSE;}
+ | WCSF_ {$$ = currentCoord = Coord::WCSF;}
+ | WCSG_ {$$ = currentCoord = Coord::WCSG;}
+ | WCSH_ {$$ = currentCoord = Coord::WCSH;}
+ | WCSI_ {$$ = currentCoord = Coord::WCSI;}
+ | WCSJ_ {$$ = currentCoord = Coord::WCSJ;}
+ | WCSK_ {$$ = currentCoord = Coord::WCSK;}
+ | WCSL_ {$$ = currentCoord = Coord::WCSL;}
+ | WCSM_ {$$ = currentCoord = Coord::WCSM;}
+ | WCSN_ {$$ = currentCoord = Coord::WCSN;}
+ | WCSO_ {$$ = currentCoord = Coord::WCSO;}
+ | WCSP_ {$$ = currentCoord = Coord::WCSP;}
+ | WCSQ_ {$$ = currentCoord = Coord::WCSQ;}
+ | WCSR_ {$$ = currentCoord = Coord::WCSR;}
+ | WCSS_ {$$ = currentCoord = Coord::WCSS;}
+ | WCST_ {$$ = currentCoord = Coord::WCST;}
+ | WCSU_ {$$ = currentCoord = Coord::WCSU;}
+ | WCSV_ {$$ = currentCoord = Coord::WCSV;}
+ | WCSW_ {$$ = currentCoord = Coord::WCSW;}
+ | WCSX_ {$$ = currentCoord = Coord::WCSX;}
+ | WCSY_ {$$ = currentCoord = Coord::WCSY;}
+ | WCSZ_ {$$ = currentCoord = Coord::WCSZ;}
+ | WCS0_ {$$ = currentCoord = Coord::WCS0;}
+ ;
+
+internalSystem : CANVAS_ {$$ = Coord::CANVAS;}
+ | PANNER_ {$$ = Coord::PANNER;}
+ ;
+
+scaleType: LINEAR_ {$$ = FrScale::LINEARSCALE;}
+ | LOG_ {$$ = FrScale::LOGSCALE;}
+ | POW_ {$$ = FrScale::POWSCALE;}
+ | SQRT_ {$$ = FrScale::SQRTSCALE;}
+ | SQUARED_ {$$ = FrScale::SQUAREDSCALE;}
+ | ASINH_ {$$ = FrScale::ASINHSCALE;}
+ | SINH_ {$$ = FrScale::SINHSCALE;}
+ | HISTEQU_ {$$ = FrScale::HISTEQUSCALE;}
+ ;
+
+minmaxMode : AUTO_ {$$=FrScale::SCAN;}
+ | SCAN_ {$$=FrScale::SCAN;}
+ | SAMPLE_ {$$=FrScale::SAMPLE;}
+ | DATAMIN_ {$$=FrScale::DATAMIN;}
+ | IRAFMIN_ {$$=FrScale::IRAFMIN;}
+ ;
+
+skyFrame : /* empty */ {$$ = currentSky = Coord::FK5;}
+ | FK4_ {$$ = currentSky = Coord::FK4;}
+ | FK4_NO_E_ {$$ = currentSky = Coord::FK4_NO_E;}
+ | B1950_ {$$ = currentSky = Coord::FK4;}
+ | FK5_ {$$ = currentSky = Coord::FK5;}
+ | J2000_ {$$ = currentSky = Coord::FK5;}
+ | ICRS_ {$$ = currentSky = Coord::ICRS;}
+ | GALACTIC_ {$$ = currentSky = Coord::GALACTIC;}
+ | SUPERGALACTIC_ {$$ = currentSky = Coord::SUPERGALACTIC;}
+ | ECLIPTIC_ {$$ = currentSky = Coord::ECLIPTIC;}
+ | HELIOECLIPTIC_ {$$ = currentSky = Coord::HELIOECLIPTIC;}
+ ;
+
+skyFormat : /* empty */ {$$=Coord::DEGREES;}
+ | DEGREES_ {$$=Coord::DEGREES;}
+ | SEXAGESIMAL_ {$$=Coord::SEXAGESIMAL;}
+ ;
+
+skyDist : /* empty */ {$$=Coord::DEGREE;}
+ | DEGREES_ {$$=Coord::DEGREE;}
+ | ARCMIN_ {$$=Coord::ARCMIN;}
+ | ARCSEC_ {$$=Coord::ARCSEC;}
+ ;
+
+contourClipMode: numeric {$$ = $1;}
+ | MINMAX_ {$$ = FrScale::MINMAX;}
+ | ZSCALE_ {$$ = FrScale::ZSCALE;}
+ | ZMAX_ {$$ = FrScale::ZMAX;}
+ | USER_ {$$ = FrScale::USERCLIP;}
+ ;
+
+shmType : /* empty */ {$$ = Base::SHMID;}
+ | SHMID_ {$$ = Base::SHMID;}
+ | KEY_ {$$ = Base::KEY;}
+ ;
+
+incrLoad: /*backward compatibility*/ {}
+ | ALL_ {}
+ | INCR_ {}
+ ;
+
+layerType : /* empty */ {$$ = Base::IMG;}
+ | IMAGE_ {$$ = Base::IMG;}
+ | MASK_ {$$ = Base::MASK;}
+ ;
+
+pointShape: /* empty */ {$$ = Point::CIRCLE;}
+ | CIRCLE_ {$$ = Point::CIRCLE;}
+ | BOX_ {$$ = Point::BOX;}
+ | DIAMOND_ {$$ = Point::DIAMOND;}
+ | CROSS_ {$$ = Point::CROSS;}
+ | 'X' {$$ = Point::EX;}
+ | ARROW_ {$$ = Point::ARROW;}
+ | BOXCIRCLE_ {$$ = Point::BOXCIRCLE;}
+ ;
+
+pointSize: /* empty */ {$$ = POINTSIZE;}
+ | INT {$$ = $1;}
+ ;
+
+analysisMethod: CPANDA_ {$$ = Marker::PANDA;}
+ | HISTOGRAM_ {$$ = Marker::HISTOGRAM;}
+ | PLOT2D_ {$$ = Marker::PLOT2D;}
+ | PLOT3D_ {$$ = Marker::PLOT3D;}
+ | RADIAL_ {$$ = Marker::RADIAL;}
+ | STATS_ {$$ = Marker::STATS;}
+ ;
+
+analysisParam : /* emtpy */ {$$ = Marker::AVERAGE;}
+ | AVERAGE_ {$$ = Marker::AVERAGE;}
+ | SUM_ {$$ = Marker::SUM;}
+ ;
+
+endian : /* empty */ {$$ = FitsFile::NATIVE;}
+ | NATIVE_ {$$ = FitsFile::NATIVE;}
+ | BIG_ {$$ = FitsFile::BIG;}
+ | BIGENDIAN_ {$$ = FitsFile::BIG;}
+ | LITTLE_ {$$ = FitsFile::LITTLE;}
+ | LITTLEENDIAN_ {$$ = FitsFile::LITTLE;}
+ ;
+
+threed : VIEW_ threedView
+ | BORDER_ threedBorder
+ | COMPASS_ threedCompass
+ | HIGHLITE_ threedHighlite
+ | METHOD_ renderMethod {fr->set3dRenderMethodCmd($2);}
+ | BACKGROUND_ renderBackground {fr->set3dRenderBackgroundCmd($2);}
+ | SCALE_ numeric {fr->set3dScaleCmd($2);}
+ | PRESERVE_ {fr->set3dPreserveCmd();}
+ | THRESHOLD_ numeric
+ {/* needed for compatibility with old version of backup */}
+ ;
+
+threedBorder : yesno {fr->set3dBorderCmd($1);}
+ | COLOR_ STRING {fr->set3dBorderColorCmd($2);}
+ ;
+
+threedCompass : yesno {fr->set3dCompassCmd($1);}
+ | COLOR_ STRING {fr->set3dCompassColorCmd($2);}
+ ;
+
+threedHighlite : yesno {fr->set3dHighliteCmd($1);}
+ | COLOR_ STRING {fr->set3dHighliteColorCmd($2);}
+ ;
+
+threedView : numeric numeric {fr->set3dViewCmd($1,$2);}
+ | POINT_ numeric numeric numeric numeric numeric
+ {fr->set3dViewPointCmd(Vector3d($2,$3,$4),Vector($5,$6));}
+ | BEGIN_ numeric numeric {fr->view3dBeginCmd($2,$3);}
+ | MOTION_ numeric numeric {fr->view3dMotionCmd($2,$3);}
+ | END_ numeric numeric {fr->view3dEndCmd($2,$3);}
+ ;
+
+analysis : RESET_ {fr->analysisMarkersResetCmd();}
+ | SHAPE_ analysisShape
+ ;
+
+analysisShape : CIRCLE_ numeric numeric
+ {fr->analysisMarkersSelectCmd("circle", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | ELLIPSE_ numeric numeric
+ {fr->analysisMarkersSelectCmd("ellipse", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | BOX_ numeric numeric
+ {fr->analysisMarkersSelectCmd("box", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | POLYGON_ numeric numeric
+ {fr->analysisMarkersSelectCmd("polygon", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | POINT_ numeric numeric
+ {fr->analysisMarkersSelectCmd("point", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | VECTOR_ numeric numeric
+ {fr->analysisMarkersSelectCmd("vector", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | ANNULUS_ numeric numeric
+ {fr->analysisMarkersSelectCmd("annulus", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | ELLIPSEANNULUS_ numeric numeric
+ {fr->analysisMarkersSelectCmd("ellipseannulus", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ | BOXANNULUS_ numeric numeric
+ {fr->analysisMarkersSelectCmd("boxannulus", fr->mapToRef(Vector($2,$3), Coord::CANVAS));}
+ ;
+
+bin : ABOUT_ binAbout
+ | COLS_ STRING STRING STRING {fr->binColsCmd($2,$3,$4);}
+ | DEPTH_ INT {fr->binDepthCmd($2);}
+ | FACTOR_ binFactor
+ | FUNCTION_ binFunction
+ | BUFFER_ SIZE_ INT {fr->binBufferSizeCmd($3);}
+ | TO_ binTo
+ | FILTER_ STRING {fr->binFilterCmd($2);}
+ ;
+
+binAbout : CENTER_ {fr->binAboutCmd();}
+ | numeric numeric {fr->binAboutCmd(Vector($1,$2));}
+ ;
+
+binFactor : numeric {fr->binFactorCmd(Vector($1,$1));}
+ | numeric numeric {fr->binFactorCmd(Vector($1,$2));}
+ | numeric ABOUT_ numeric numeric
+ {fr->binFactorAboutCmd(Vector($1,$1), Vector($3,$4));}
+ | numeric numeric ABOUT_ numeric numeric
+ {fr->binFactorAboutCmd(Vector($1,$2), Vector($4,$5));}
+ | TO_ numeric {fr->binFactorToCmd(Vector($2,$2));}
+ | TO_ numeric numeric {fr->binFactorToCmd(Vector($2,$3));}
+ | TO_ numeric ABOUT_ numeric numeric
+ {fr->binFactorToAboutCmd(Vector($2,$2), Vector($4,$5));}
+ | TO_ numeric numeric ABOUT_ numeric numeric
+ {fr->binFactorToAboutCmd(Vector($2,$3), Vector($5,$6));}
+ ;
+
+binFunction : AVERAGE_ {fr->binFunctionCmd(FitsHist::AVERAGE);}
+ | SUM_ {fr->binFunctionCmd(FitsHist::SUM);}
+ ;
+
+binTo : FIT_ {fr->binToFitCmd();}
+ | numeric numeric ABOUT_ CENTER_ STRING STRING STRING
+ {fr->binCmd(Vector($1,$2), $5, $6, $7);}
+ | numeric numeric INT numeric numeric ABOUT_ CENTER_
+ STRING STRING STRING STRING
+ {fr->binCmd(Vector($1,$2), $3, Vector($4,$5), $8, $9, $10, $11);}
+ | numeric numeric ABOUT_ numeric numeric STRING STRING STRING
+ {fr->binCmd(Vector($1,$2), Vector($4,$5), $6, $7, $8);}
+ | numeric numeric INT numeric numeric ABOUT_ numeric numeric
+ STRING STRING STRING STRING
+ {fr->binCmd(Vector($1,$2), $3, Vector($4,$5), Vector($7,$8),
+ $9, $10, $11, $12);}
+ ;
+
+block : numeric {fr->blockCmd(Vector($1,$1));}
+ | numeric numeric {fr->blockCmd(Vector($1,$2));}
+ | TO_ blockTo
+ ;
+
+blockTo : FIT_ {fr->blockToFitCmd();}
+ | numeric {fr->blockToCmd(Vector($1,$1));}
+ | numeric numeric {fr->blockToCmd(Vector($1,$2));}
+ ;
+
+clip : SCOPE_ clipScope
+ | MODE_ clipMode
+ | MINMAX_ clipMinMax
+ | USER_ numeric numeric {fr->clipUserCmd($2,$3);}
+ | ZSCALE_ clipZScale
+ | PRESERVE_ yesno
+ {
+ // backward compatibility with backup
+ }
+ ;
+
+clipScope: GLOBAL_ {fr->clipScopeCmd(FrScale::GLOBAL);}
+ | LOCAL_ {fr->clipScopeCmd(FrScale::LOCAL);}
+ ;
+
+clipMode: numeric {fr->clipModeCmd($1);}
+ | MINMAX_ {fr->clipModeCmd(FrScale::MINMAX);}
+ | ZSCALE_ {fr->clipModeCmd(FrScale::ZSCALE);}
+ | ZMAX_ {fr->clipModeCmd(FrScale::ZMAX);}
+ | USER_ {fr->clipModeCmd(FrScale::USERCLIP);}
+ ;
+
+clipMinMax : INT minmaxMode {fr->clipMinMaxCmd((FrScale::MinMaxMode)$2,$1);}
+ | MODE_ minmaxMode {fr->clipMinMaxModeCmd((FrScale::MinMaxMode)$2);}
+ | SAMPLE_ INT {fr->clipMinMaxSampleCmd($2);}
+ ;
+
+clipZScale: numeric INT INT {fr->clipZScaleCmd($1,$2,$3);}
+ | CONTRAST_ numeric
+ {
+ // backward compatibility with backup
+ fr->clipZScaleContrastCmd($2);
+ }
+ | SAMPLE_ INT
+ {
+ // backward compatibility with backup
+ fr->clipZScaleSampleCmd($2);
+ }
+ | LINE_ INT
+ {
+ // backward compatibility with backup
+ fr->clipZScaleLineCmd($2);
+ }
+ ;
+
+colormap : INT numeric numeric INT POINTER INT
+ {fr->colormapCmd($1, $2, $3, $4, (unsigned char*)$5, $6);}
+ | RGB_ numeric numeric numeric numeric numeric numeric INT POINTER INT
+ {fr->colormapCmd($2,$3,$4,$5,$6,$7,$8,(unsigned char*)$9,$10);}
+ | BEGIN_ {fr->colormapBeginCmd();}
+ | MOTION_ colormapMotion
+ | END_ {fr->colormapEndCmd();}
+ ;
+
+colormapMotion: INT numeric numeric INT POINTER INT
+ {fr->colormapMotionCmd($1, $2, $3, $4, (unsigned char*)$5, $6);}
+ | RGB_ numeric numeric numeric numeric numeric numeric INT POINTER INT
+ {fr->colormapMotionCmd($2,$3,$4,$5,$6,$7,$8,(unsigned char*)$9,$10);}
+
+colorscale : scaleType {fr->colorScaleCmd((FrScale::ColorScaleType)$1);}
+ | LOG_ numeric {fr->colorScaleLogCmd($2);}
+ ;
+
+contour : CREATE_ contourCreate
+ | DELETE_ contourDelete
+ | LOAD_ contourLoad
+ | PASTE_ contourPaste
+ | SAVE_ contourSave
+ ;
+
+contourCreate : STRING INT INT contourMethod INT INT scaleType numeric contourClipMode numeric numeric STRING
+ {fr->contourCreateCmd($1,$2,$3,(FVContour::Method)$4,$5,$6,(FrScale::ColorScaleType)$7,$8,$9,Vector($10,$11),$12);}
+ | POLYGON_ {fr->contourCreatePolygonCmd();}
+ ;
+
+contourDelete : /*empty */ {fr->contourDeleteCmd();}
+ | AUX_ {fr->contourDeleteAuxCmd();}
+ ;
+
+contourLoad : STRING {fr->contourLoadCmd($1);}
+ | STRING STRING INT yesno {fr->contourLoadCmd($1,$2,$3,$4);}
+ | STRING INT yesno STRING coordSystem skyFrame
+ {
+ // backward compatibility with backup
+ fr->contourLoadCmd($4,(Coord::CoordSystem)$5,(Coord::SkyFrame)$6,$1,$2,$3);
+ }
+ ;
+
+contourMethod : SMOOTH_ {$$ = FVContour::SMOOTH;}
+ | BLOCK_ {$$ = FVContour::BLOCK;}
+ ;
+
+contourPaste : STRING {fr->contourPasteCmd($1);}
+ | STRING STRING INT yesno {fr->contourPasteCmd($1,$2,$3,$4);}
+ ;
+
+contourSave : STRING coordSystem skyFrame
+ {fr->contourSaveCmd($1, (Coord::CoordSystem)$2, (Coord::SkyFrame)$3);}
+ | AUX_ STRING coordSystem skyFrame
+ {fr->contourSaveAuxCmd($2,(Coord::CoordSystem)$3,(Coord::SkyFrame)$4);}
+ ;
+
+crop : /* empty */ {fr->cropCmd();}
+ | numeric numeric numeric numeric coordSystem skyFrame
+ {fr->cropCmd(Vector($1,$2), Vector($3,$4),
+ (Coord::CoordSystem)$5, (Coord::SkyFrame)$6);}
+ | CENTER_ coord coordSystem skyFrame numeric numeric coordSystem skyDist
+ {fr->cropCenterCmd(Vector($2), (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, Vector($5,$6), (Coord::CoordSystem)$7, (Coord::SkyDist)$8);}
+ | THREED_ crop3d
+ | BEGIN_ numeric numeric {fr->cropBeginCmd(Vector($2,$3));}
+ | MOTION_ numeric numeric {fr->cropMotionCmd(Vector($2,$3));}
+ | END_ numeric numeric {fr->cropEndCmd(Vector($2,$3));}
+ ;
+
+crop3d : /* empty */ {fr->crop3dCmd();}
+ | numeric numeric coordSystem {fr->crop3dCmd($1, $2, (Coord::CoordSystem)$3);}
+ | BEGIN_ numeric numeric INT {fr->crop3dBeginCmd(Vector($2,$3),$4);}
+ | MOTION_ numeric numeric INT {fr->crop3dMotionCmd(Vector($2,$3),$4);}
+ | END_ numeric numeric INT {fr->crop3dEndCmd(Vector($2,$3),$4);}
+ ;
+
+crosshair: internalSystem numeric numeric
+ {fr->crosshairCmd(Vector($2,$3), (Coord::InternalSystem)$1);}
+ | coordSystem skyFrame coord
+ {fr->crosshairCmd(Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2);}
+ | yesno {fr->crosshairCmd($1);}
+ | WARP_ numeric numeric {fr->crosshairWarpCmd(Vector($2,$3));}
+
+ | BEGIN_ MOTION_ internalSystem numeric numeric
+ {fr->crosshairCmd(Vector($4,$5), (Coord::InternalSystem)$3);}
+ | MOTION_ internalSystem numeric numeric
+ {fr->crosshairCmd(Vector($3,$4), (Coord::InternalSystem)$2);}
+ | BEGIN_ MOTION_ coordSystem coord
+ {fr->crosshairCmd(Vector($4), (Coord::CoordSystem)$3);}
+ | MOTION_ coordSystem coord
+ {fr->crosshairCmd(Vector($3), (Coord::CoordSystem)$2);}
+ ;
+
+cube : AXES_ INT {fr->axesOrderCmd($2);}
+ ;
+
+fitsy : HAS_ EXT_ STRING {fr->fitsyHasExtCmd($3);}
+ ;
+
+get : BG_ COLOR_ {fr->getBgColorCmd();}
+ | BIN_ getBin
+ | BLOCK_ getBlock
+ | CLIP_ getClip
+ | COLORMAP_ getColorMap
+ | COLORBAR_ getColorbar
+ | COLORSCALE_ getColorScale
+ | CONTOUR_ getContour
+ | COORDINATES_ getCoord
+ | CROP_ getCrop
+ | CROSSHAIR_ getCrosshair
+ | CURSOR_ getCursor
+ | CUBE_ getCube
+ | DATA_ getData
+ | DATASEC_ {fr->getDATASECCmd();}
+ | FITS_ getFits
+ | GRID_ getGrid
+ | HISTOGRAM_ STRING STRING INT {fr->getHistogramCmd($2,$3,$4);}
+ | HORIZONTAL_ CUT_ STRING STRING numeric numeric internalSystem
+ {fr->getHorzCutCmd($3,$4,Vector($5,$6),(Coord::InternalSystem)$7);}
+ | IIS_ getiis
+ | INFO_ getInfo
+ | IRAF_ ALIGN_ {fr->getIRAFAlignCmd();}
+ | MINMAX_ {fr->getMinMaxCmd();}
+ | MARKER_ markerLayer markerGet
+ | MASK_ getMask
+ | NAN_ COLOR_ {fr->getNANColorCmd();}
+ | ORIENT_ {fr->getOrientCmd();}
+ | PAN_ getPan
+ | PIXEL_ TABLE_ internalSystem numeric numeric INT INT STRING
+ {fr->getPixelTableCmd(Vector($4,$5), (Coord::InternalSystem)$3, $6, $7, $8);}
+ | RGB_ getRGB
+ | ROTATE_ {fr->getRotateCmd();}
+ | SMOOTH_ getSmooth
+ | THREADS_ {fr->getThreadsCmd();}
+ | THREED_ getThreed
+ | TYPE_ {fr->getTypeCmd();}
+ | VALUE_ internalSystem numeric numeric
+ {fr->getValueCmd(Vector($3,$4),(Coord::InternalSystem)$2);}
+ | VERTICAL_ CUT_ STRING STRING numeric numeric internalSystem
+ {fr->getVertCutCmd($3,$4,Vector($5,$6),(Coord::InternalSystem)$7);}
+ | WCS_ getWCS
+ | ZOOM_ {fr->getZoomCmd();}
+ ;
+
+getBin : DEPTH_ {fr->getBinDepthCmd();}
+ | FACTOR_ {fr->getBinFactorCmd();}
+ | FUNCTION_ {fr->getBinFunctionCmd();}
+ | BUFFER_ SIZE_ {fr->getBinBufferSizeCmd();}
+ | CURSOR_ {fr->getBinCursorCmd();}
+ | FILTER_ {fr->getBinFilterCmd();}
+ | COLS_ getBinCols
+ | LIST_ {fr->getBinListCmd();}
+ ;
+
+getBinCols : /* empty */ {fr->getBinColsCmd();}
+ | MINMAX_ STRING {fr->getBinColsMinMaxCmd($2);}
+ | DIM_ STRING {fr->getBinColsDimCmd($2);}
+ ;
+
+getBlock : FACTOR_ {fr->getBlockCmd();}
+ ;
+
+getClip : getClipLimits
+ | SCOPE_ {fr->getClipScopeCmd();}
+ | MODE_ {fr->getClipModeCmd();}
+ | MINMAX_ getClipMinMax
+ | USER_ LEVEL_ {fr->getClipUserCmd();}
+ | ZSCALE_ getClipZScale
+ | PRESERVE_
+ {
+ // backward compatibility with backup
+ fr->getClipPreserveCmd();
+ }
+ ;
+
+getClipLimits: /* empty */ {fr->getClipCmd();}
+ | numeric {fr->getClipCmd($1);}
+ | MINMAX_ {fr->getClipCmd(FrScale::MINMAX);}
+ | ZSCALE_ {fr->getClipCmd(FrScale::ZSCALE);}
+ | ZMAX_ {fr->getClipCmd(FrScale::ZMAX);}
+ | USER_ {fr->getClipCmd(FrScale::USERCLIP);}
+ ;
+
+getClipMinMax : MODE_ {fr->getClipMinMaxModeCmd();}
+ | SAMPLE_ {fr->getClipMinMaxSampleCmd();}
+ ;
+
+getClipZScale: CONTRAST_ {fr->getClipZScaleContrastCmd();}
+ | SAMPLE_ {fr->getClipZScaleSampleCmd();}
+ | LINE_ {fr->getClipZScaleLineCmd();}
+ ;
+
+getColorbar: /* empty */ {fr->getColorbarCmd();}
+ | TAG_ {fr->getColorbarTagCmd();}
+ ;
+
+getColorMap : LEVEL_ getColorMapLevel
+ ;
+
+getColorMapLevel: INT {fr->getColorMapLevelCmd($1);}
+ | INT internalSystem numeric numeric
+ {fr->getColorMapLevelCmd($1,Vector($3,$4),(Coord::InternalSystem)$2);}
+ | INT numeric numeric scaleType numeric
+ {fr->getColorMapLevelCmd($1,$2,$3,(FrScale::ColorScaleType)$4,$5);}
+ ;
+
+getColorScale : /* empty */ {fr->getColorScaleCmd();}
+ | LEVEL_ getColorScaleLevel
+ | LOG_ {fr->getColorScaleLogCmd();}
+ ;
+
+getColorScaleLevel: INT numeric numeric scaleType numeric
+ {fr->getColorScaleLevelCmd($1,$2,$3,(FrScale::ColorScaleType)$4,$5);}
+ ;
+
+getContour: coordSystem skyFrame
+ {fr->getContourCmd((Coord::CoordSystem)$1,(Coord::SkyFrame)$2);}
+ | CLIP_ getContourClip
+ | COLOR_ {fr->getContourColorNameCmd();}
+ | DASH_ {fr->getContourDashCmd();}
+ | LEVEL_ {fr->getContourLevelCmd();}
+ | NUMBER_ LEVEL_ {fr->getContourNumLevelCmd();}
+ | METHOD_ {fr->getContourMethodCmd();}
+ | COLORSCALE_ getContourColorScale
+ | SMOOTH_ {fr->getContourSmoothCmd();}
+ | WIDTH_ {fr->getContourLineWidthCmd();}
+ ;
+
+getContourClip : /* empty */ {fr->getContourClipCmd();}
+ | MODE_ {fr->getContourClipModeCmd();}
+ ;
+
+getContourColorScale : /* empty */ {fr->getContourScaleCmd();}
+ | LOG_ {fr->getContourScaleLogCmd();}
+ ;
+
+getCoord : numeric numeric coordSystem skyFrame skyFormat
+ {fr->getCoordCmd(Vector($1,$2), (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, (Coord::SkyFormat)$5);}
+ | internalSystem numeric numeric coordSystem skyFrame skyFormat
+ {
+ // backward compatibility
+ fr->getCoordCmd(Vector($2,$3), (Coord::CoordSystem)$4, (Coord::SkyFrame)$5,
+ (Coord::SkyFormat)$6);
+ }
+ | numeric coordSystem coordSystem INT
+ {fr->getCoord3axisCmd($1, (Coord::CoordSystem)$2, (Coord::CoordSystem)$3, $4);}
+ ;
+
+getCrop : coordSystem skyFrame skyFormat
+ {fr->getCropCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3);}
+ | CENTER_ coordSystem skyFrame skyFormat coordSystem skyDist
+ {fr->getCropCenterCmd((Coord::CoordSystem)$2, (Coord::SkyFrame)$3, (Coord::SkyFormat)$4, (Coord::CoordSystem)$5, (Coord::SkyDist)$6);}
+ | THREED_ coordSystem {fr->getCrop3dCmd((Coord::CoordSystem)$2);}
+ ;
+
+getCrosshair: internalSystem {fr->getCrosshairCmd((Coord::InternalSystem)$1);}
+ | coordSystem skyFrame skyFormat
+ {fr->getCrosshairCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3);}
+ | STATUS_ {fr->getCrosshairStatusCmd();}
+ ;
+
+getCube : AXES_ {fr->getAxesOrderCmd();}
+ ;
+
+getCursor : internalSystem {fr->getCursorCmd((Coord::InternalSystem)$1);}
+ | coordSystem skyFrame skyFormat
+ {fr->getCursorCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3);}
+ ;
+
+getData : coordSystem skyFrame coord numeric numeric STRING
+ {fr->getDataValuesCmd(1, Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2, Vector($4,$5), $6);}
+ | INT coordSystem skyFrame coord numeric numeric STRING
+ {fr->getDataValuesCmd($1, Vector($4),
+ (Coord::CoordSystem)$2, (Coord::SkyFrame)$3, Vector($5,$6), $7);}
+ | internalSystem numeric numeric INT INT
+ {fr->getDataValuesCmd(Vector($2,$3),(Coord::InternalSystem)$1,
+ Vector($4,$5));}
+ ;
+
+getInfo : STRING {fr->getInfoCmd($1);}
+ | CLIP_ {fr->getInfoClipCmd();}
+ | internalSystem numeric numeric STRING
+ {fr->getInfoCmd(Vector($2,$3), (Coord::InternalSystem)$1, $4);}
+ ;
+
+getiis : POINTER INT INT INT INT {fr->iisGetCmd((char*)$1,$2,$3,$4,$5);}
+ | CURSOR_ {fr->iisGetCursorCmd();}
+ | FILE_ NAME_ getIISFileName
+ ;
+
+getIISFileName : /* empty */ {fr->iisGetFileNameCmd();}
+ | INT {fr->iisGetFileNameCmd($1);}
+ | numeric numeric {fr->iisGetFileNameCmd(Vector($1,$2));}
+ ;
+
+getFits : NAXES_ /* empty */ {fr->getFitsNAxesCmd();}
+ | CENTER_ coordSystem skyFrame skyFormat
+ {fr->getFitsCenterCmd((Coord::CoordSystem)$2,(Coord::SkyFrame)$3,(Coord::SkyFormat)$4);}
+ | COUNT_ {fr->getFitsCountCmd();}
+ | DEPTH_ getFitsDepth
+ | BITPIX_ {fr->getBitpixCmd();}
+ | EXT_ getFitsExt
+ | FILE_ NAME_ getFitsFileName
+ | HEADER_ getFitsHeader
+ | HEIGHT_ {fr->getFitsHeightCmd();}
+ | OBJECT_ NAME_ {fr->getFitsObjectNameCmd();}
+ | SIZE_ {fr->getFitsSizeCmd();}
+ | SIZE_ coordSystem skyFrame skyDist
+ {fr->getFitsSizeCmd((Coord::CoordSystem)$2,(Coord::SkyFrame)$3,(Coord::SkyDist)$4);}
+ | SLICE_ getFitsSlice
+ | WIDTH_ {fr->getFitsWidthCmd();}
+ ;
+
+getFitsExt : INT {fr->getFitsExtCmd($1);}
+ | internalSystem numeric numeric
+ {fr->getFitsExtCmd(Vector($2,$3),(Coord::InternalSystem)$1);}
+
+getFitsHeader : INT {fr->getFitsHeaderCmd($1);}
+ | KEYWORD_ STRING {fr->getFitsHeaderKeywordCmd(1,$2);}
+ | INT KEYWORD_ STRING {fr->getFitsHeaderKeywordCmd($1,$3);}
+ | WCS_ INT {fr->getFitsHeaderWCSCmd($2);}
+ ;
+
+getFitsDepth : /* empty */ {fr->getFitsDepthCmd(2);}
+ | INT {fr->getFitsDepthCmd($1);}
+ ;
+
+getFitsFileName: fileNameType
+ {fr->getFitsFileNameCmd((Base::FileNameType)$1);}
+ | fileNameType internalSystem numeric numeric
+ {fr->getFitsFileNameCmd(Vector($3,$4), (Coord::InternalSystem)$2,
+ (Base::FileNameType)$1);}
+ | fileNameType INT
+ {fr->getFitsFileNameCmd($2, (Base::FileNameType)$1);}
+ ;
+
+getFitsSlice : /* empty */ {fr->getFitsSliceCmd(2);}
+ | INT {fr->getFitsSliceCmd($1);}
+ | coordSystem {fr->getFitsSliceCmd(2, (Coord::CoordSystem)$1);}
+ | INT coordSystem {fr->getFitsSliceCmd($1, (Coord::CoordSystem)$2);}
+ ;
+
+getGrid : /* empty */ {fr->getGridCmd();}
+ | OPTION_ {fr->getGridOptionCmd();}
+ | VAR_ {fr->getGridVarsCmd();}
+ ;
+
+getMask : COLOR_ {fr->getMaskColorCmd();}
+ | MARK_ {fr->getMaskMarkCmd();}
+ | TRANSPARENCY_{fr->getMaskTransparencyCmd();}
+ ;
+
+getPan : PRESERVE_ {fr->getPanPreserveCmd();}
+ ;
+
+getRGB : CHANNEL_ {fr->getRGBChannelCmd();}
+ | SYSTEM_ {fr->getRGBSystemCmd();}
+ | VIEW_ {fr->getRGBViewCmd();}
+ ;
+
+getSmooth : FUNCTION_ {fr->getSmoothFunctionCmd();}
+ | RADIUS_ {fr->getSmoothRadiusCmd();}
+ ;
+
+getThreed : VIEW_ getThreedView
+ | BORDER_ getThreedBorder
+ | COMPASS_ getThreedCompass
+ | HIGHLITE_ getThreedHighlite
+ | METHOD_ {fr->get3dRenderMethodCmd();}
+ | BACKGROUND_ {fr->get3dRenderBackgroundCmd();}
+ | SCALE_ {fr->get3dScaleCmd();}
+ ;
+
+getThreedBorder : {fr->get3dBorderCmd();}
+ | COLOR_ {fr->get3dBorderColorCmd();}
+ ;
+
+getThreedCompass : {fr->get3dCompassCmd();}
+ | COLOR_ {fr->get3dCompassColorCmd();}
+ ;
+
+getThreedHighlite : {fr->get3dHighliteCmd();}
+ | COLOR_ {fr->get3dHighliteColorCmd();}
+ ;
+
+getThreedView : {fr->get3dViewCmd();}
+ | POINT_ {fr->get3dViewPointCmd();}
+ ;
+
+getWCS : /* empty */ {fr->getWCSCmd();}
+ | ALIGN_ getWCSAlign
+ | NAME_ wcsSystem {fr->getWCSNameCmd((Coord::CoordSystem)$2);}
+ ;
+
+getWCSAlign : /* empty */ {fr->getWCSAlignCmd();}
+ | POINTER_ {fr->getWCSAlignPointerCmd();}
+ ;
+
+grid : CREATE_ gridCreate
+ | DELETE_ {fr->gridDeleteCmd();}
+ ;
+
+gridCreate: coordSystem skyFrame skyFormat gridType STRING STRING
+ {fr->gridCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2,
+ (Coord::SkyFormat)$3, (Grid2d::GridType)$4, $5, $6);}
+ | coordSystem skyFrame skyFormat gridType STRING
+ {
+ // backward compatibility with backup
+ fr->gridCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2,
+ (Coord::SkyFormat)$3, (Grid2d::GridType)$4, $5, "");
+ }
+ ;
+
+gridType : ANALYSIS_ {$$=Grid2d::ANALYSIS;}
+ | PUBLICATION_ {$$=Grid2d::PUBLICATION;}
+ ;
+
+has : AMPLIFIER_ {fr->hasAmplifierCmd();}
+ | BIN_ hasBin
+ | CONTOUR_ hasContour
+ | CROP_ {fr->hasCropCmd();}
+ | DATAMIN_ {fr->hasDATAMINCmd();}
+ | DATASEC_ {fr->hasDATASECCmd();}
+ | DETECTOR_ {fr->hasDetectorCmd();}
+ | FITS_ hasFits
+ | GRID_ {fr->hasGridCmd();}
+ | IIS_ {fr->hasIISCmd();}
+ | IRAFMIN_ {fr->hasIRAFMINCmd();}
+ | MARKER_ hasMarker
+ | PHYSICAL_ {fr->hasPhysicalCmd();}
+ | SMOOTH_ {fr->hasSmoothCmd();}
+ | SYSTEM_ coordSystem {fr->hasSystemCmd((Coord::CoordSystem)$2);}
+ | WCS_ hasWCS
+ ;
+
+hasBin : COLUMN_ STRING {fr->hasBinColCmd($2);}
+ ;
+
+hasContour : /* empty */ {fr->hasContourCmd();}
+ | AUX_ {fr->hasContourAuxCmd();}
+ ;
+
+hasFits : /* empty */ {fr->hasFitsCmd();}
+ | BIN_ {fr->hasFitsBinCmd();}
+ | CUBE_ {fr->hasFitsCubeCmd();}
+ | MOSAIC_ {fr->hasFitsMosaicCmd();}
+ ;
+
+hasMarker : HIGHLITE_ {fr->hasMarkerHighlitedCmd();}
+ | SELECT_ {fr->hasMarkerSelectedCmd();}
+ | PASTE_ {fr->hasMarkerPasteCmd();}
+ | UNDO_ {fr->hasMarkerUndoCmd();}
+ ;
+
+hasWCS : coordSystem {fr->hasWCSCmd((Coord::CoordSystem)$1);}
+ | EQUATORIAL_ coordSystem {fr->hasWCSEquCmd((Coord::CoordSystem)$2);}
+ | CELESTRIAL_ coordSystem {fr->hasWCSCelCmd((Coord::CoordSystem)$2);}
+ | ALT_ {fr->hasWCSAltCmd();}
+ | THREED_ coordSystem {fr->hasWCSxCmd((Coord::CoordSystem)$2);}
+ ;
+
+iis : NEW_ INT INT {fr->iisCmd($2,$3);}
+ | ERASE_ {fr->iisEraseCmd();}
+ | MESSAGE_ STRING {fr->iisMessageCmd($2);}
+ | CURSOR_ iiscursor
+ | SET_ FILE_ NAME_ iisSetFileName
+ | SET_ POINTER INT INT INT INT
+ {fr->iisSetCmd((const char*)$2,$3,$4,$5,$6);}
+ | UPDATE_ {fr->iisUpdateCmd();}
+ | WCS_ numeric numeric numeric numeric
+ numeric numeric numeric numeric INT
+ {fr->iisWCSCmd(Matrix($2,$3,$4,$5,$6,$7),Vector($8,$9),$10);}
+ ;
+
+iisSetFileName : STRING {fr->iisSetFileNameCmd($1);}
+ | STRING INT {fr->iisSetFileNameCmd($1,$2);}
+ ;
+
+iiscursor: INT INT CANVAS_
+ {fr->iisSetCursorCmd(Vector($1,$2),Coord::CANVAS);}
+ | INT INT coordSystem
+ {fr->iisSetCursorCmd(Vector($1,$2),(Coord::CoordSystem)$3);}
+ | MODE_ yesno {fr->iisCursorModeCmd($2);}
+ ;
+
+load : ARRAY_ loadArr
+ | ENVI_ loadENVI
+ | FITS_ loadFits
+ | INCR_ loadIncr
+ | NRRD_ loadNRRD
+ | PHOTO_ loadPhoto
+ ;
+
+loadArr : STRING ALLOC_ STRING layerType
+ {fr->loadArrAllocCmd($3, $1, (Base::LayerType)$4);}
+ | STRING ALLOCGZ_ STRING layerType
+ {fr->loadArrAllocGZCmd($3, $1, (Base::LayerType)$4);}
+ | STRING CHANNEL_ STRING layerType
+ {fr->loadArrChannelCmd($3, $1, (Base::LayerType)$4);}
+ | STRING MMAP_ layerType {fr->loadArrMMapCmd($1, (Base::LayerType)$3);}
+ | STRING MMAPINCR_ layerType
+ {fr->loadArrMMapIncrCmd($1, (Base::LayerType)$3);}
+ | STRING SHARED_ shmType INT layerType
+ {fr->loadArrShareCmd((Base::ShmType)$3, $4, $1, (Base::LayerType)$5);}
+ | STRING SOCKET_ INT layerType
+ {fr->loadArrSocketCmd($3, $1, (Base::LayerType)$4);}
+ | STRING SOCKETGZ_ INT layerType
+ {fr->loadArrSocketGZCmd($3, $1, (Base::LayerType)$4);}
+ | STRING VAR_ STRING layerType
+ {fr->loadArrVarCmd($3, $1, (Base::LayerType)$4);}
+ | RGB_ CUBE_ loadArrayRGBCube
+ ;
+
+loadArrayRGBCube : STRING ALLOC_ STRING {fr->loadArrayRGBCubeAllocCmd($3, $1);}
+ | STRING ALLOCGZ_ STRING {fr->loadArrayRGBCubeAllocGZCmd($3, $1);}
+ | STRING CHANNEL_ STRING {fr->loadArrayRGBCubeChannelCmd($3, $1);}
+ | STRING MMAP_ {fr->loadArrayRGBCubeMMapCmd($1);}
+ | STRING MMAPINCR_ {fr->loadArrayRGBCubeMMapIncrCmd($1);}
+ | STRING SHARED_ shmType INT
+ {fr->loadArrayRGBCubeShareCmd((Base::ShmType)$3, $4, $1);}
+ | STRING SOCKET_ INT {fr->loadArrayRGBCubeSocketCmd($3, $1);}
+ | STRING SOCKETGZ_ INT {fr->loadArrayRGBCubeSocketGZCmd($3, $1);}
+ | STRING VAR_ STRING {fr->loadArrayRGBCubeVarCmd($3, $1);}
+ ;
+
+loadENVI : STRING STRING SMMAP_ {fr->loadENVISMMapCmd($1,$2);}
+ ;
+
+loadFits: STRING ALLOC_ STRING layerType
+ {fr->loadFitsAllocCmd($3, $1, (Base::LayerType)$4);}
+ | STRING ALLOCGZ_ STRING layerType
+ {fr->loadFitsAllocGZCmd($3, $1, (Base::LayerType)$4);}
+ | STRING CHANNEL_ STRING layerType
+ {fr->loadFitsChannelCmd($3, $1, (Base::LayerType)$4);}
+ | STRING MMAP_ incrLoad layerType
+ {fr->loadFitsMMapCmd($1, (Base::LayerType)$4);}
+ | STRING STRING SMMAP_ incrLoad layerType
+ {fr->loadFitsSMMapCmd($1, $2, (Base::LayerType)$5);}
+ | STRING MMAPINCR_ incrLoad layerType
+ {fr->loadFitsMMapIncrCmd($1, (Base::LayerType)$4);}
+ | STRING SHARED_ shmType INT incrLoad layerType
+ {fr->loadFitsShareCmd((Base::ShmType)$3, $4, $1, (Base::LayerType)$6);}
+ | STRING SSHARED_ shmType INT INT incrLoad layerType
+ {fr->loadFitsSShareCmd((Base::ShmType)$3, $4, $5, $1,
+ (Base::LayerType)$7);}
+ | STRING SOCKET_ INT layerType
+ {fr->loadFitsSocketCmd($3, $1, (Base::LayerType)$4);}
+ | STRING SOCKETGZ_ INT layerType
+ {fr->loadFitsSocketGZCmd($3, $1, (Base::LayerType)$4);}
+ | STRING VAR_ STRING incrLoad layerType
+ {fr->loadFitsVarCmd($3, $1, (Base::LayerType)$5);}
+ | SLICE_ loadFitsSlice
+ | EXT_ CUBE_ loadFitsExtCube
+ | RGB_ IMAGE_ loadFitsRGBImage
+ | RGB_ CUBE_ loadFitsRGBCube
+ | MOSAIC_ loadFitsMosaic
+ ;
+
+loadFitsSlice:STRING ALLOC_ STRING {fr->loadSliceAllocCmd($3, $1);}
+ | STRING ALLOCGZ_ STRING {fr->loadSliceAllocGZCmd($3, $1);}
+ | STRING CHANNEL_ STRING {fr->loadSliceChannelCmd($3, $1);}
+ | STRING MMAP_ incrLoad {fr->loadSliceMMapCmd($1);}
+ | STRING STRING SMMAP_ incrLoad {fr->loadSliceSMMapCmd($1, $2);}
+ | STRING MMAPINCR_ incrLoad {fr->loadSliceMMapIncrCmd($1);}
+ | STRING SHARED_ shmType INT incrLoad
+ {fr->loadSliceShareCmd((Base::ShmType)$3, $4, $1);}
+ | STRING SSHARED_ shmType INT INT incrLoad
+ {fr->loadSliceSShareCmd((Base::ShmType)$3, $4, $5, $1);}
+ | STRING SOCKET_ INT {fr->loadSliceSocketCmd($3, $1);}
+ | STRING SOCKETGZ_ INT {fr->loadSliceSocketGZCmd($3, $1);}
+ | STRING VAR_ STRING incrLoad {fr->loadSliceVarCmd($3, $1);}
+ ;
+
+loadFitsExtCube: STRING ALLOC_ STRING {fr->loadExtCubeAllocCmd($3, $1);}
+ | STRING ALLOCGZ_ STRING {fr->loadExtCubeAllocGZCmd($3, $1);}
+ | STRING CHANNEL_ STRING {fr->loadExtCubeChannelCmd($3, $1);}
+ | STRING MMAP_ incrLoad {fr->loadExtCubeMMapCmd($1);}
+ | STRING MMAPINCR_ incrLoad {fr->loadExtCubeMMapIncrCmd($1);}
+ | STRING SHARED_ shmType INT incrLoad
+ {fr->loadExtCubeShareCmd((Base::ShmType)$3, $4, $1);}
+ | STRING SOCKET_ INT {fr->loadExtCubeSocketCmd($3, $1);}
+ | STRING SOCKETGZ_ INT {fr->loadExtCubeSocketGZCmd($3, $1);}
+ | STRING VAR_ STRING incrLoad {fr->loadExtCubeVarCmd($3, $1);}
+ ;
+
+loadFitsMosaic : IMAGE_ IRAF_ loadFitsMosaicImageIRAF
+ | IRAF_ loadFitsMosaicIRAF
+ | IMAGE_ loadFitsMosaicImageWCS
+ | loadFitsMosaicWCS
+ | IMAGE_ WFPC2_ loadFitsMosaicImageWFPC2
+ ;
+
+loadFitsMosaicImageIRAF : STRING ALLOC_ STRING layerType
+ {fr->loadMosaicImageAllocCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING ALLOCGZ_ STRING layerType
+ {fr->loadMosaicImageAllocGZCmd(Base::IRAF, Coord::WCS,
+ $3, $1,(Base::LayerType)$4);}
+ | STRING CHANNEL_ STRING layerType
+ {fr->loadMosaicImageChannelCmd(Base::IRAF, Coord::WCS,
+ $3, $1,(Base::LayerType)$4);}
+ | STRING MMAP_ incrLoad layerType
+ {fr->loadMosaicImageMMapCmd(Base::IRAF, Coord::WCS,
+ $1, (Base::LayerType)$4);}
+ | STRING MMAPINCR_ incrLoad layerType
+ {fr->loadMosaicImageMMapIncrCmd(Base::IRAF, Coord::WCS,
+ $1, (Base::LayerType)$4);}
+ | STRING SHARED_ shmType INT incrLoad layerType
+ {fr->loadMosaicImageShareCmd(Base::IRAF, Coord::WCS,
+ (Base::ShmType)$3, $4, $1, (Base::LayerType)$6);}
+ | STRING SOCKET_ INT layerType
+ {fr->loadMosaicImageSocketCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING SOCKETGZ_ INT layerType
+ {fr->loadMosaicImageSocketGZCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING VAR_ STRING incrLoad layerType
+ {fr->loadMosaicImageVarCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$5);}
+ ;
+
+loadFitsMosaicIRAF : STRING ALLOC_ STRING layerType
+ {fr->loadMosaicAllocCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING ALLOCGZ_ STRING layerType
+ {fr->loadMosaicAllocGZCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING CHANNEL_ STRING layerType
+ {fr->loadMosaicChannelCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING MMAP_ incrLoad layerType
+ {fr->loadMosaicMMapCmd(Base::IRAF, Coord::WCS,
+ $1, (Base::LayerType)$4);}
+ | STRING STRING SMMAP_ incrLoad layerType
+ {fr->loadMosaicSMMapCmd(Base::IRAF, Coord::WCS,
+ $1, $2, (Base::LayerType)$5);}
+ | STRING MMAPINCR_ incrLoad layerType
+ {fr->loadMosaicMMapIncrCmd(Base::IRAF, Coord::WCS,
+ $1, (Base::LayerType)$4);}
+ | STRING SHARED_ shmType INT incrLoad layerType
+ {fr->loadMosaicShareCmd(Base::IRAF, Coord::WCS,
+ (Base::ShmType)$3, $4, $1, (Base::LayerType)$6);}
+ | STRING SSHARED_ shmType INT INT incrLoad layerType
+ {fr->loadMosaicSShareCmd(Base::IRAF, Coord::WCS,
+ (Base::ShmType)$3, $4, $5, $1, (Base::LayerType)$7);}
+ | STRING SOCKET_ INT layerType
+ {fr->loadMosaicSocketCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING SOCKETGZ_ INT layerType
+ {fr->loadMosaicSocketGZCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$4);}
+ | STRING VAR_ STRING incrLoad layerType
+ {fr->loadMosaicVarCmd(Base::IRAF, Coord::WCS,
+ $3, $1, (Base::LayerType)$5);}
+ ;
+
+loadFitsMosaicImageWCS : wcsSystem STRING ALLOC_ STRING layerType
+ {fr->loadMosaicImageAllocCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING ALLOCGZ_ STRING layerType
+ {fr->loadMosaicImageAllocGZCmd(Base::WCSMOSAIC,
+ (Coord::CoordSystem)$1, $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING CHANNEL_ STRING layerType
+ {fr->loadMosaicImageChannelCmd(Base::WCSMOSAIC,
+ (Coord::CoordSystem)$1, $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING MMAP_ incrLoad layerType
+ {fr->loadMosaicImageMMapCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
+ $2, (Base::LayerType)$5);}
+ | wcsSystem STRING MMAPINCR_ incrLoad layerType
+ {fr->loadMosaicImageMMapIncrCmd(Base::WCSMOSAIC,
+ (Coord::CoordSystem)$1, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING SHARED_ shmType INT incrLoad layerType
+ {fr->loadMosaicImageShareCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
+ (Base::ShmType)$4, $5, $2, (Base::LayerType)$7);}
+ | wcsSystem STRING SOCKET_ INT layerType
+ {fr->loadMosaicImageSocketCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING SOCKETGZ_ INT layerType
+ {fr->loadMosaicImageSocketGZCmd(Base::WCSMOSAIC,
+ (Coord::CoordSystem)$1, $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING VAR_ STRING incrLoad layerType
+ {fr->loadMosaicImageVarCmd(Base::WCSMOSAIC, (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$6);}
+ ;
+
+loadFitsMosaicWCS : wcsSystem STRING ALLOC_ STRING layerType
+ {fr->loadMosaicAllocCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING ALLOCGZ_ STRING layerType
+ {fr->loadMosaicAllocGZCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING CHANNEL_ STRING layerType
+ {fr->loadMosaicChannelCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING MMAP_ incrLoad layerType
+ {fr->loadMosaicMMapCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $2, (Base::LayerType)$5);}
+ | wcsSystem STRING STRING SMMAP_ incrLoad layerType
+ {fr->loadMosaicSMMapCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $2, $3, (Base::LayerType)$6);}
+ | wcsSystem STRING MMAPINCR_ incrLoad layerType
+ {fr->loadMosaicMMapIncrCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $2, (Base::LayerType)$5);}
+ | wcsSystem STRING SHARED_ shmType INT incrLoad layerType
+ {fr->loadMosaicShareCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ (Base::ShmType)$4, $5, $2, (Base::LayerType)$7);}
+ | wcsSystem STRING SSHARED_ shmType INT INT incrLoad layerType
+ {fr->loadMosaicSShareCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ (Base::ShmType)$4, $5, $6, $2, (Base::LayerType)$8);}
+ | wcsSystem STRING SOCKET_ INT layerType
+ {fr->loadMosaicSocketCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING SOCKETGZ_ INT layerType
+ {fr->loadMosaicSocketGZCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$5);}
+ | wcsSystem STRING VAR_ STRING incrLoad layerType
+ {fr->loadMosaicVarCmd((Base::WCSMOSAIC), (Coord::CoordSystem)$1,
+ $4, $2, (Base::LayerType)$6);}
+ ;
+
+loadFitsMosaicImageWFPC2 : STRING ALLOC_ STRING
+ {fr->loadMosaicImageWFPC2AllocCmd($3, $1);}
+ | STRING ALLOCGZ_ STRING {fr->loadMosaicImageWFPC2AllocGZCmd($3, $1);}
+ | STRING CHANNEL_ STRING {fr->loadMosaicImageWFPC2ChannelCmd($3, $1);}
+ | STRING MMAP_ incrLoad {fr->loadMosaicImageWFPC2MMapCmd($1);}
+ | STRING MMAPINCR_ incrLoad {fr->loadMosaicImageWFPC2MMapIncrCmd($1);}
+ | STRING SHARED_ shmType INT incrLoad
+ {fr->loadMosaicImageWFPC2ShareCmd((Base::ShmType)$3, $4, $1);}
+ | STRING SOCKET_ INT {fr->loadMosaicImageWFPC2SocketCmd($3, $1);}
+ | STRING SOCKETGZ_ INT {fr->loadMosaicImageWFPC2SocketGZCmd($3, $1);}
+ | STRING VAR_ STRING incrLoad {fr->loadMosaicImageWFPC2VarCmd($3, $1);}
+ ;
+loadFitsRGBCube: STRING ALLOC_ STRING {fr->loadRGBCubeAllocCmd($3, $1);}
+ | STRING ALLOCGZ_ STRING {fr->loadRGBCubeAllocGZCmd($3, $1);}
+ | STRING CHANNEL_ STRING {fr->loadRGBCubeChannelCmd($3, $1);}
+ | STRING MMAP_ incrLoad {fr->loadRGBCubeMMapCmd($1);}
+ | STRING STRING SMMAP_ incrLoad {fr->loadRGBCubeSMMapCmd($1, $2);}
+ | STRING MMAPINCR_ incrLoad {fr->loadRGBCubeMMapIncrCmd($1);}
+ | STRING SHARED_ shmType INT incrLoad
+ {fr->loadRGBCubeShareCmd((Base::ShmType)$3, $4, $1);}
+ | STRING SSHARED_ shmType INT INT incrLoad
+ {fr->loadRGBCubeSShareCmd((Base::ShmType)$3, $4, $5, $1);}
+ | STRING SOCKET_ INT {fr->loadRGBCubeSocketCmd($3, $1);}
+ | STRING SOCKETGZ_ INT {fr->loadRGBCubeSocketGZCmd($3, $1);}
+ | STRING VAR_ STRING incrLoad {fr->loadRGBCubeVarCmd($3, $1);}
+ ;
+
+loadFitsRGBImage: STRING ALLOC_ STRING {fr->loadRGBImageAllocCmd($3, $1);}
+ | STRING ALLOCGZ_ STRING {fr->loadRGBImageAllocGZCmd($3, $1);}
+ | STRING CHANNEL_ STRING {fr->loadRGBImageChannelCmd($3, $1);}
+ | STRING MMAP_ incrLoad {fr->loadRGBImageMMapCmd($1);}
+ | STRING MMAPINCR_ incrLoad {fr->loadRGBImageMMapIncrCmd($1);}
+ | STRING SHARED_ shmType INT incrLoad
+ {fr->loadRGBImageShareCmd((Base::ShmType)$3, $4, $1);}
+ | STRING SOCKET_ INT {fr->loadRGBImageSocketCmd($3, $1);}
+ | STRING SOCKETGZ_ INT {fr->loadRGBImageSocketGZCmd($3, $1);}
+ | STRING VAR_ STRING incrLoad {fr->loadRGBImageVarCmd($3, $1);}
+ ;
+
+loadNRRD : STRING ALLOC_ STRING layerType
+ {fr->loadNRRDAllocCmd($3, $1, (Base::LayerType)$4);}
+ | STRING CHANNEL_ STRING layerType
+ {fr->loadNRRDChannelCmd($3, $1, (Base::LayerType)$4);}
+ | STRING MMAP_ layerType {fr->loadNRRDMMapCmd($1, (Base::LayerType)$3);}
+ | STRING SHARED_ shmType INT layerType
+ {fr->loadNRRDShareCmd((Base::ShmType)$3, $4, $1, (Base::LayerType)$5);}
+ | STRING SOCKET_ INT layerType
+ {fr->loadNRRDSocketCmd($3, $1, (Base::LayerType)$4);}
+ | STRING VAR_ STRING layerType
+ {fr->loadNRRDVarCmd($3, $1, (Base::LayerType)$4);}
+ ;
+
+loadPhoto: /* empty */ STRING STRING {fr->loadPhotoCmd($1,$2);}
+ | SLICE_ STRING STRING {fr->loadSlicePhotoCmd($2,$3);}
+ ;
+
+loadIncr: DATA_ INT INT INT INT INT {fr->loadIncrDataCmd($2,$3,$4,$5,$6);}
+ | MINMAX_ INT INT INT INT INT {fr->loadIncrMinMaxCmd($2,$3,$4,$5,$6);}
+ | END_ {fr->loadIncrEndCmd();}
+ ;
+
+macosx : PRINT_ {
+#ifdef MAC_OSX_TK
+ fr->macosxPrintCmd();
+#endif
+ }
+ ;
+
+magnifier: yesno {fr->magnifierCmd($1);}
+ | GRAPHICS_ yesno {fr->magnifierGraphicsCmd($2);}
+ | CURSOR_ yesno {fr->magnifierCursorCmd($2);}
+ | COLOR_ STRING {fr->magnifierColorCmd($2);}
+ | STRING INT INT {fr->magnifierCmd($1, $2, $3);}
+ | UPDATE_ numeric numeric {fr->updateMagnifierCmd(Vector($2, $3));}
+ | ZOOM_ numeric {fr->magnifierZoomCmd($2);}
+ ;
+
+match : STRING STRING wcsSystem skyFrame STRING STRING wcsSystem skyFrame numeric wcsSystem skyDist STRING
+ {
+ fr->matchCmd($1,$2,(Coord::CoordSystem)$3,(Coord::SkyFrame)$4,
+ $5,$6,(Coord::CoordSystem)$7,(Coord::SkyFrame)$8,
+ $9,(Coord::CoordSystem)$10,(Coord::SkyDist)$11,
+ $12);
+ }
+
+marker : CENTROID_ markerCentroid
+ | COLOR_ STRING {fr->markerColorCmd($2);}
+ | COPY_ {fr->markerCopyCmd();}
+ | COMMAND_ markerFormat STRING
+ {fr->markerCommandCmd((Base::MarkerFormat)$2,$3);}
+ | COMMAND_ markerFormat VAR_ STRING
+ {fr->markerCommandVarCmd((Base::MarkerFormat)$2,$4);}
+ | COMPOSITE_ DELETE_ {fr->markerCompositeDeleteCmd();}
+ | CREATE_ {maperr =0;} markerCreate
+ | CUT_ {fr->markerCutCmd();}
+ | DELETE_ {fr->markerDeleteCmd();}
+ | DELETE_ ALL_ {fr->markerDeleteAllCmd();}
+ | EDIT_ markerEdit
+ | EPSILON_ INT {fr->markerEpsilonCmd($2);}
+ | FONT_ STRING {fr->markerFontCmd($2);}
+
+ | HIGHLITE_ ALL_ {fr->markerHighliteAllCmd();}
+ | HIGHLITE_ ONLY_ numeric numeric
+ {fr->markerHighliteOnlyCmd(Vector($3,$4));}
+ | HIGHLITE_ TOGGLE_ numeric numeric
+ {fr->markerHighliteToggleCmd(Vector($3,$4));}
+
+ | INT ANALYSIS_ analysisMethod yesno
+ {fr->markerAnalysisCmd($1, (Marker::AnalysisTask)$3, $4);}
+
+ | INT ANGLE_ angle {fr->markerAngleCmd($1,$3);}
+ | INT ANGLE_ angle internalSystem {fr->markerAngleCmd($1,$3);}
+ | INT ANGLE_ angle coordSystem skyFrame
+ {fr->markerAngleCmd($1,$3,(Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+
+ | INT ANNULUS_ RADIUS_ numeric numeric INT internalSystem
+ {fr->markerAnnulusRadiusCmd($1, $4, $5, $6, (Coord::InternalSystem)$7);}
+ | INT ANNULUS_ RADIUS_ numeric numeric INT coordSystem skyDist
+ {fr->markerAnnulusRadiusCmd($1, $4, $5, $6,
+ (Coord::CoordSystem)$7, (Coord::SkyDist)$8);}
+ | INT ANNULUS_ RADIUS_ STRING coordSystem skyDist
+ {fr->markerAnnulusRadiusCmd($1, $4,(Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
+
+ | INT BOXANNULUS_ RADIUS_ numeric numeric numeric INT internalSystem
+ {fr->markerBoxAnnulusRadiusCmd($1, Vector($4, $5),
+ Vector($6, $6*$5/$4), $7, (Coord::InternalSystem)$8);}
+ | INT BOXANNULUS_ RADIUS_ numeric numeric numeric INT
+ coordSystem skyDist
+ {fr->markerBoxAnnulusRadiusCmd($1, Vector($4, $5),
+ Vector($6, $6*$5/$4), $7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
+ | INT BOXANNULUS_ RADIUS_ STRING coordSystem skyDist
+ {fr->markerBoxAnnulusRadiusCmd($1,$4,(Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
+
+ | INT BOX_ RADIUS_ numeric numeric internalSystem
+ {fr->markerBoxRadiusCmd($1, Vector($4,$5), (Coord::InternalSystem)$6);}
+ | INT BOX_ RADIUS_ numeric numeric coordSystem skyDist
+ {fr->markerBoxRadiusCmd($1, Vector($4,$5),
+ (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
+ | INT BPANDA_ EDIT_ angle angle INT numeric numeric numeric INT
+ {fr->markerBpandaEditCmd($1, $4, $5, $6,
+ Vector($7,$8), Vector($9,$9*$8/$7), $10);}
+ | INT BPANDA_ EDIT_ angle angle INT numeric numeric numeric INT
+ internalSystem
+ {fr->markerBpandaEditCmd($1, $4, $5, $6,
+ Vector($7,$8), Vector($9,$9*$8/$7), $10);}
+ | INT BPANDA_ EDIT_ angle angle INT numeric numeric numeric INT
+ coordSystem skyFrame
+ {fr->markerBpandaEditCmd($1, $4, $5, $6,
+ Vector($7,$8), Vector($9,$9*$8/$7), $10,
+ (Coord::CoordSystem)$11, (Coord::SkyFrame)$12);}
+ | INT BPANDA_ EDIT_ STRING STRING coordSystem skyFrame
+ coordSystem skyDist
+ {fr->markerBpandaEditCmd($1, $4, $5,
+ (Coord::CoordSystem)$6, (Coord::SkyFrame)$7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
+
+ | INT CALLBACK_ markerCallBack STRING STRING
+ {fr->markerCallBackCmd($1,(CallBack::Type)$3,$4,$5);}
+ | INT CIRCLE_ RADIUS_ numeric internalSystem
+ {fr->markerCircleRadiusCmd($1, $4, (Coord::InternalSystem)$5);}
+ | INT CIRCLE_ RADIUS_ numeric coordSystem skyDist
+ {fr->markerCircleRadiusCmd($1, $4, (Coord::CoordSystem)$5, (Coord::SkyDist)$6);}
+ | INT COLOR_ STRING {fr->markerColorCmd($1,$3);}
+ | INT COMPASS_ ARROW_ yesno yesno
+ {fr->markerCompassArrowCmd($1,$4,$5);}
+ | INT COMPASS_ LABEL_ STRING STRING
+ {fr->markerCompassLabelCmd($1,$4,$5);}
+ | INT COMPASS_ RADIUS_ numeric internalSystem
+ {fr->markerCompassRadiusCmd($1,$4,(Coord::InternalSystem)$5);}
+ | INT COMPASS_ RADIUS_ numeric coordSystem skyDist
+ {fr->markerCompassRadiusCmd($1,$4,(Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
+ | INT COMPASS_ SYSTEM_ coordSystem skyFrame
+ {fr->markerCompassSystemCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+ | INT COMPOSITE_ GLOBAL_ yesno {fr->markerCompositeCmd($1,$4);}
+ | INT CPANDA_ EDIT_ angle angle INT numeric numeric INT
+ {fr->markerCpandaEditCmd($1, $4, $5, $6, $7, $8, $9);}
+ | INT CPANDA_ EDIT_ angle angle INT numeric numeric INT internalSystem
+ {fr->markerCpandaEditCmd($1, $4, $5, $6, $7, $8, $9);}
+ | INT CPANDA_ EDIT_ angle angle INT numeric numeric INT
+ coordSystem skyFrame
+ {fr->markerCpandaEditCmd($1, $4, $5, $6, $7, $8, $9,
+ (Coord::CoordSystem)$10, (Coord::SkyFrame)$11);}
+ | INT CPANDA_ EDIT_ STRING STRING coordSystem skyFrame
+ coordSystem skyDist
+ {fr->markerCpandaEditCmd($1, $4, $5, (Coord::CoordSystem)$6, (Coord::SkyFrame)$7,
+ (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
+
+ | INT CREATE_ ANNULUS_ RADIUS_ numeric numeric
+ {fr->markerAnnulusCreateRadiusCmd($1,Vector($5,$6));}
+ | INT CREATE_ BOXANNULUS_ RADIUS_ numeric numeric
+ {fr->markerBoxAnnulusCreateRadiusCmd($1,Vector($5,$6));}
+ | INT CREATE_ BPANDA_ ANGLE_ numeric numeric
+ {fr->markerBpandaCreateAnglesCmd($1,Vector($5,$6));}
+ | INT CREATE_ BPANDA_ RADIUS_ numeric numeric
+ {fr->markerBpandaCreateRadiusCmd($1,Vector($5,$6));}
+ | INT CREATE_ ELLIPSEANNULUS_ RADIUS_ numeric numeric
+ {fr->markerEllipseAnnulusCreateRadiusCmd($1,Vector($5,$6));}
+ | INT CREATE_ EPANDA_ ANGLE_ numeric numeric
+ {fr->markerEpandaCreateAnglesCmd($1,Vector($5,$6));}
+ | INT CREATE_ EPANDA_ RADIUS_ numeric numeric
+ {fr->markerEpandaCreateRadiusCmd($1,Vector($5,$6));}
+ | INT CREATE_ CPANDA_ ANGLE_ numeric numeric
+ {fr->markerCpandaCreateAnglesCmd($1,Vector($5,$6));}
+ | INT CREATE_ CPANDA_ RADIUS_ numeric numeric
+ {fr->markerCpandaCreateRadiusCmd($1,Vector($5,$6));}
+ | INT CREATE_ POLYGON_ VERTEX_ INT numeric numeric
+ {fr->markerPolygonCreateVertexCmd($1,$5,Vector($6,$7));}
+ | INT CREATE_ SEGMENT_ VERTEX_ INT numeric numeric
+ {fr->markerSegmentCreateVertexCmd($1,$5,Vector($6,$7));}
+
+ | INT DELETE_ {fr->markerDeleteCmd($1);}
+ | INT DELETE_ ANNULUS_ INT
+ {fr->markerAnnulusDeleteRadiusCmd($1,$4);}
+ | INT DELETE_ BOXANNULUS_ INT
+ {fr->markerBoxAnnulusDeleteRadiusCmd($1,$4);}
+ | INT DELETE_ BPANDA_ INT {fr->markerBpandaDeleteCmd($1,$4);}
+ | INT DELETE_ ELLIPSEANNULUS_ INT
+ {fr->markerEllipseAnnulusDeleteRadiusCmd($1,$4);}
+ | INT DELETE_ CALLBACK_ markerCallBack STRING
+ {fr->markerDeleteCallBackCmd($1,(CallBack::Type)$4,$5);}
+ | INT DELETE_ EPANDA_ INT {fr->markerEpandaDeleteCmd($1,$4);}
+ | INT DELETE_ CPANDA_ INT {fr->markerCpandaDeleteCmd($1,$4);}
+ | INT DELETE_ POLYGON_ VERTEX_ INT
+ {fr->markerPolygonDeleteVertexCmd($1,$5);}
+ | INT DELETE_ SEGMENT_ VERTEX_ INT
+ {fr->markerSegmentDeleteVertexCmd($1,$5);}
+ | INT DELETE_ TAG_ {fr->markerDeleteTagCmd($1);}
+ | INT DELETE_ TAG_ STRING {fr->markerDeleteTagCmd($1,$4);}
+ | INT DELETE_ TAG_ INT {fr->markerDeleteTagCmd($1,$4);}
+
+ | INT EDIT_ BEGIN_ INT {fr->markerEditBeginCmd($1,$4);}
+ | INT ELLIPSE_ RADIUS_ numeric numeric internalSystem
+ {fr->markerEllipseRadiusCmd($1, Vector($4, $5), (Coord::InternalSystem)$6);}
+ | INT ELLIPSE_ RADIUS_ numeric numeric coordSystem skyDist
+ {fr->markerEllipseRadiusCmd($1, Vector($4, $5),
+ (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
+ | INT ELLIPSEANNULUS_ RADIUS_ numeric numeric numeric INT
+ internalSystem
+ {fr->markerEllipseAnnulusRadiusCmd($1, Vector($4,$5),
+ Vector($6,$6*$5/$4), $7, (Coord::InternalSystem)$8);}
+ | INT ELLIPSEANNULUS_ RADIUS_ numeric numeric numeric INT
+ coordSystem skyDist
+ {fr->markerEllipseAnnulusRadiusCmd($1, Vector($4,$5),
+ Vector($6,$6*$5/$4), $7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
+ | INT ELLIPSEANNULUS_ RADIUS_ STRING coordSystem skyDist
+ {fr->markerEllipseAnnulusRadiusCmd($1, $4,
+ (Coord::CoordSystem)$5, (Coord::SkyDist)$6);}
+ | INT EPANDA_ EDIT_ angle angle INT numeric numeric numeric INT
+ {fr->markerEpandaEditCmd($1, $4, $5, $6,
+ Vector($7,$8), Vector($9,$9*$8/$7), $10);}
+ | INT EPANDA_ EDIT_ angle angle INT numeric numeric numeric INT
+ internalSystem
+ {fr->markerEpandaEditCmd($1, $4, $5, $6,
+ Vector($7,$8), Vector($9,$9*$8/$7), $10);}
+ | INT EPANDA_ EDIT_ angle angle INT numeric numeric numeric INT
+ coordSystem skyFrame
+ {fr->markerEpandaEditCmd($1, $4, $5, $6,
+ Vector($7,$8), Vector($9,$9*$8/$7), $10,
+ (Coord::CoordSystem)$11, (Coord::SkyFrame)$12);}
+ | INT EPANDA_ EDIT_ STRING STRING coordSystem skyFrame
+ coordSystem skyDist
+ {fr->markerEpandaEditCmd($1, $4, $5,
+ (Coord::CoordSystem)$6, (Coord::SkyFrame)$7,
+ (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
+
+ | INT FONT_ STRING {fr->markerFontCmd($1,$3);}
+ | INT HIGHLITE_ {fr->markerHighliteCmd($1);}
+ | INT HIGHLITE_ ONLY_{fr->markerHighliteOnlyCmd($1);}
+
+ | INT LINE_ ARROW_ yesno yesno {fr->markerLineArrowCmd($1,$4,$5);}
+ | INT LINE_ POINT_ internalSystem coord coord
+ {fr->markerLineCmd($1, Vector($5), Vector($6), (Coord::InternalSystem)$4);}
+ | INT LINE_ POINT_ coordSystem skyFrame coord coord
+ {fr->markerLineCmd($1, Vector($6), Vector($7),
+ (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+
+ | INT MOVE_ numeric numeric
+ {fr->markerMoveCmd($1, Vector($3,$4));}
+ | INT MOVE_ FRONT_ {fr->markerFrontCmd($1);}
+ | INT MOVE_ BACK_ {fr->markerBackCmd($1);}
+ | INT MOVE_ TO_ internalSystem numeric numeric
+ {fr->markerMoveToCmd($1, Vector($5,$6), (Coord::InternalSystem)$4);}
+ | INT MOVE_ TO_ coordSystem skyFrame coord
+ {fr->markerMoveToCmd($1,Vector($6),(Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
+
+ | INT POLYGON_ RESET_ numeric numeric internalSystem
+ {fr->markerPolygonResetCmd($1, Vector($4,$5),(Coord::InternalSystem)$6);}
+ | INT POLYGON_ RESET_ numeric numeric coordSystem skyDist
+ {fr->markerPolygonResetCmd($1, Vector($4,$5),
+ (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
+ | INT SEGMENT_ RESET_ numeric numeric internalSystem
+ {fr->markerSegmentResetCmd($1, Vector($4,$5),(Coord::InternalSystem)$6);}
+ | INT SEGMENT_ RESET_ numeric numeric coordSystem skyDist
+ {fr->markerSegmentResetCmd($1, Vector($4,$5),
+ (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
+ | INT POINT_ SHAPE_ pointShape
+ {fr->markerPointShapeCmd($1,(Point::PointShape)$4);}
+ | INT POINT_ SIZE_ INT {fr->markerPointSizeCmd($1,$4);}
+
+ | INT PROJECTION_ internalSystem coord coord numeric
+ {fr->markerProjectionCmd($1, Vector($4), Vector($5),
+ (Coord::InternalSystem)$3, $6);}
+ | INT PROJECTION_ coordSystem skyFrame coord coord numeric
+ coordSystem skyDist
+ {fr->markerProjectionCmd($1, Vector($5), Vector($6),
+ (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, $7,
+ (Coord::CoordSystem)$8, (Coord::SkyDist)$9);}
+ | INT PROPERTY_ markerProperty yesno
+ {fr->markerPropertyCmd($1,$3,$4);}
+
+ | INT ROTATE_ BEGIN_ {fr->markerRotateBeginCmd($1);}
+ | INT RULER_ POINT_ internalSystem coord coord
+ {fr->markerRulerPointCmd($1, Vector($5), Vector($6),
+ (Coord::InternalSystem)$4);}
+ | INT RULER_ POINT_ coordSystem skyFrame coord coord
+ {fr->markerRulerPointCmd($1, Vector($6), Vector($7),
+ (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+ | INT RULER_ SYSTEM_ coordSystem skyFrame coordSystem skyDist
+ {fr->markerRulerSystemCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5,
+ (Coord::CoordSystem)$6, (Coord::SkyDist)$7);}
+
+ | INT SELECT_ {fr->markerSelectCmd($1);}
+ | INT SELECT_ ONLY_ {fr->markerSelectOnlyCmd($1);}
+
+ | INT TAG_ STRING {fr->markerTagCmd($1,$3);}
+ | INT TEXT_ STRING {fr->markerTextCmd($1,$3);}
+ | INT TEXT_ ROTATE_ yesno {fr->markerTextRotateCmd($1,$4);}
+
+ | INT UNHIGHLITE_ {fr->markerUnhighliteCmd($1);}
+ | INT UNSELECT_ {fr->markerUnselectCmd($1);}
+
+ | INT VECTOR_ ARROW_ yesno {fr->markerVectorArrowCmd($1,$4);}
+ | INT VECTOR_ POINT_ internalSystem coord numeric angle
+ {fr->markerVectorCmd($1, Vector($5), (Coord::InternalSystem)$4, $6, $7);}
+ | INT VECTOR_ POINT_ coordSystem skyFrame coord
+ coordSystem skyDist numeric angle
+ {fr->markerVectorCmd($1, Vector($6), (Coord::CoordSystem)$4, (Coord::SkyFrame)$5,
+ $9, (Coord::CoordSystem)$7, (Coord::SkyDist)$8, $10);}
+
+ | INT WIDTH_ INT {fr->markerLineWidthCmd($1,$3);}
+
+ | KEY_ {fr->markerKeyCmd();}
+ | KEY_ numeric numeric {fr->markerKeyCmd(Vector($2,$3));}
+
+ | LIST_ markerList
+ | LOAD_ markerLoad
+ | MOVE_ markerMoveSelected
+ | PRESERVE_ yesno {fr->markerPreserveCmd($2);}
+ | PROPERTY_ markerProperty yesno {fr->markerPropertyCmd($2,$3);}
+ | PROPERTY_ markerProperty yesno numeric numeric
+ {fr->markerPropertyCmd($2,$3,Vector($4,$5));}
+ | ROTATE_ BEGIN_ numeric numeric
+ {fr->markerRotateBeginCmd(Vector($3,$4));}
+ | ROTATE_ MOTION_ numeric numeric INT
+ {fr->markerRotateMotionCmd(Vector($3,$4),$5);}
+ | ROTATE_ END_ {fr->markerRotateEndCmd();}
+ | SAVE_ STRING markerFormat coordSystem skyFrame skyFormat yesno
+ {fr->markerSaveCmd($2, (Base::MarkerFormat)$3, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5, (Coord::SkyFormat)$6, $7);}
+ | SAVE_ TEMPLATE_ STRING {fr->markerSaveTemplateCmd($3);}
+ | SELECT_ markerSelect
+
+ | SHOW_ markerShow
+
+ | STRING COLOR_ STRING {fr->markerColorCmd($1,$3);}
+ | STRING COPY_ {fr->markerCopyCmd($1);}
+ | STRING DELETE_ {fr->markerDeleteCmd($1);}
+ | STRING CUT_ {fr->markerCutCmd($1);}
+ | STRING FONT_ STRING {fr->markerFontCmd($1,$3);}
+ | STRING HIGHLITE_ {fr->markerHighliteCmd($1);}
+ | STRING HIGHLITE_ ONLY_ {fr->markerHighliteOnlyCmd($1);}
+ | STRING MOVE_ numeric numeric {fr->markerMoveCmd($1,Vector($3,$4));}
+ | STRING MOVE_ FRONT_ {fr->markerFrontCmd($1);}
+ | STRING MOVE_ BACK_ {fr->markerBackCmd($1);}
+ | STRING MOVE_ TO_ internalSystem coord
+ {fr->markerMoveToCmd($1,Vector($5),(Coord::InternalSystem)$4);}
+ | STRING MOVE_ TO_ coordSystem skyFrame coord
+ {fr->markerMoveToCmd($1,Vector($6),(Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
+ | STRING PROPERTY_ markerProperty yesno
+ {fr->markerPropertyCmd($1,$3,$4);}
+ | STRING SELECT_ {fr->markerSelectCmd($1);}
+ | STRING SELECT_ ONLY_ {fr->markerSelectOnlyCmd($1);}
+ | STRING UNHIGHLITE_ {fr->markerUnhighliteCmd($1);}
+ | STRING UNSELECT_ {fr->markerUnselectCmd($1);}
+
+ | TAG_ EDIT_ STRING STRING {fr->markerTagEditCmd($3,$4);}
+ | TAG_ DELETE_ STRING {fr->markerTagDeleteCmd($3);}
+ | TAG_ DELETE_ ALL_ {fr->markerTagDeleteAllCmd();}
+ | TAG_ STRING {fr->markerTagCmd($2);}
+ | TAG_ UPDATE_ STRING {fr->markerTagUpdateCmd($3);}
+
+ | PASTE_ {fr->markerPasteCmd();}
+ | PASTE_ coordSystem {fr->markerPasteCmd((Coord::CoordSystem)$2);}
+ | UNDO_ {fr->markerUndoCmd();}
+ | UNHIGHLITE_ ALL_ {fr->markerUnhighliteAllCmd();}
+ | UNSELECT_ ALL_ {fr->markerUnselectAllCmd();}
+ | WIDTH_ INT {fr->markerLineWidthCmd($2);}
+ ;
+
+markerCallBack : SELECT_ {$$ = CallBack::SELECTCB;}
+ | UNSELECT_ {$$ = CallBack::UNSELECTCB;}
+ | HIGHLITE_ {$$ = CallBack::HIGHLITECB;}
+ | UNHIGHLITE_ {$$ = CallBack::UNHIGHLITECB;}
+ | BEGIN_ MOVE_ {$$ = CallBack::MOVEBEGINCB;}
+ | MOVE_ {$$ = CallBack::MOVECB;}
+ | END_ MOVE_ {$$ = CallBack::MOVEENDCB;}
+ | BEGIN_ EDIT_ {$$ = CallBack::EDITBEGINCB;}
+ | EDIT_ {$$ = CallBack::EDITCB;}
+ | END_ EDIT_ {$$ = CallBack::EDITENDCB;}
+ | BEGIN_ ROTATE_ {$$ = CallBack::ROTATEBEGINCB;}
+ | ROTATE_ {$$ = CallBack::ROTATECB;}
+ | END_ ROTATE_ {$$ = CallBack::ROTATEENDCB;}
+ | DELETE_ {$$ = CallBack::DELETECB;}
+ | TEXT_ {$$ = CallBack::TEXTCB;}
+ | COLOR_ {$$ = CallBack::COLORCB;}
+ | WIDTH_ {$$ = CallBack::LINEWIDTHCB;}
+ | PROPERTY_ {$$ = CallBack::PROPERTYCB;}
+ | FONT_ {$$ = CallBack::FONTCB;}
+ | KEY_ {$$ = CallBack::KEYCB;}
+ | UPDATE_ {$$ = CallBack::UPDATECB;}
+ ;
+
+markerCentroid : /* empty */ {fr->markerCentroidCmd();}
+ | INT {fr->markerCentroidCmd($1);}
+ | AUTO_ yesno {fr->markerCentroidAutoCmd($2);}
+ | RADIUS_ numeric {fr->markerCentroidRadiusCmd($2);}
+ | ITERATION_ INT {fr->markerCentroidIterationCmd($2);}
+ | OPTION_ INT numeric
+ {
+ fr->markerCentroidIterationCmd($2);
+ fr->markerCentroidRadiusCmd($3);
+ }
+ ;
+
+markerCreate :
+ CIRCLE_ numeric numeric
+ numeric
+ markerProperties
+ {fr->createCircleCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | ELLIPSE_ numeric numeric
+ numeric numeric
+ optangle
+ markerProperties
+ {fr->createEllipseCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ Vector($4,$5),
+ $6,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | BOX_ numeric numeric
+ numeric numeric
+ optangle
+ markerProperties
+ {fr->createBoxCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ Vector($4,$5),
+ $6,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | POLYGON_ numeric numeric
+ numeric numeric
+ markerProperties
+ {fr->createPolygonCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ Vector($4,$5),
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | SEGMENT_ numeric numeric
+ numeric numeric
+ markerProperties
+ {fr->createSegmentCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ Vector($4,$5),
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | LINE_ numeric numeric
+ numeric numeric
+ markerProperties
+ {fr->createLineCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ fr->mapToRef(Vector($4,$5),Coord::CANVAS),
+ 0, 0,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | VECTOR_ numeric numeric
+ numeric numeric
+ markerProperties
+ {fr->createVectCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ fr->mapToRef(Vector($4,$5),Coord::CANVAS),
+ 1,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | TEXT_ numeric numeric
+ optangle
+ markerProperties
+ {fr->createTextCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4, 1,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | CIRCLE_ POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::CIRCLE, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | BOX_ POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::BOX, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | DIAMOND_ POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::DIAMOND, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | CROSS_ POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::CROSS, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | 'X' POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::EX, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | ARROW_ POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::ARROW, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | BOXCIRCLE_ POINT_ numeric numeric pointSize markerProperties
+ {fr->createPointCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS),
+ Point::BOXCIRCLE, $5,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+
+ | RULER_ numeric numeric
+ numeric numeric
+ coordSystem skyFrame coordSystem skyDist
+ markerProperties
+ {fr->createRulerCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ fr->mapToRef(Vector($4,$5),Coord::CANVAS),
+ (Coord::CoordSystem)$6, (Coord::SkyFrame)$7, (Coord::CoordSystem)$8, (Coord::SkyDist)$9,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | COMPASS_ numeric numeric
+ numeric
+ coordSystem skyFrame
+ markerProperties
+ {fr->createCompassCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4,
+ "N", "E", 1, 1,
+ (Coord::CoordSystem)$5, (Coord::SkyFrame)$6,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | PROJECTION_ numeric numeric
+ numeric numeric
+ numeric
+ markerProperties
+ {fr->createProjectionCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ fr->mapToRef(Vector($4,$5),Coord::CANVAS),
+ $6,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+
+ | ANNULUS_ numeric numeric
+ numeric numeric INT
+ markerProperties
+ {fr->createAnnulusCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4,$5,$6,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | ELLIPSEANNULUS_ numeric numeric
+ numeric numeric numeric INT
+ optangle
+ markerProperties
+ {fr->createEllipseAnnulusCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ Vector($4,$5),
+ Vector($6,$6*$4/$5),$7,
+ $8,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | BOXANNULUS_ numeric numeric
+ numeric numeric numeric INT
+ optangle
+ markerProperties
+ {fr->createBoxAnnulusCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ Vector($4,$5),Vector($6,$6*$4/$5),$7,
+ $8,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+
+ | CPANDA_ numeric numeric
+ angle angle INT
+ numeric numeric INT
+ markerProperties
+ {fr->createCpandaCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4,$5,$6,
+ $7,$8,$9,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | EPANDA_ numeric numeric
+ angle angle INT
+ numeric numeric numeric INT
+ optangle
+ markerProperties
+ {fr->createEpandaCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4,$5,$6,
+ Vector($7,$8),
+ Vector($9,$9*$7/$8),$10,
+ $11,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+ | BPANDA_ numeric numeric
+ angle angle INT
+ numeric numeric numeric INT
+ optangle
+ markerProperties
+ {fr->createBpandaCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS),
+ $4,$5,$6,
+ Vector($7,$8),
+ Vector($9,$9*$7/$8),$10,
+ $11,
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+
+ | COMPOSITE_ markerProperties
+ {fr->createCompositeCmd(
+ currentColor,currentDash,currentWidth,currentFont,
+ currentText,currentProps,NULL,taglist,cblist);}
+
+ | TEMPLATE_ markerCreateTemplate
+ ;
+
+markerCreateTemplate : STRING numeric numeric
+ {fr->createTemplateCmd(fr->mapToRef(Vector($2,$3),Coord::CANVAS), $1);}
+ | VAR_ STRING numeric numeric
+ {fr->createTemplateVarCmd(fr->mapToRef(Vector($3,$4),Coord::CANVAS), $2);}
+ | numeric numeric VAR_ STRING
+ {
+ // backward compatibility
+ fr->createTemplateVarCmd(fr->mapToRef(Vector($1,$2),Coord::CANVAS), $4);
+ }
+ | STRING coordSystem skyFrame coord
+ {fr->createTemplateCmd(Vector($4),(Coord::CoordSystem)$2,(Coord::SkyFrame)$3, $1);}
+ ;
+
+markerDash : INT INT {$$[0] = $1; $$[1] = $2;}
+ ;
+
+markerEdit : BEGIN_ numeric numeric INT
+ {fr->markerEditBeginCmd(Vector($2,$3),$4);}
+ | MOTION_ numeric numeric INT
+ {fr->markerEditMotionCmd(Vector($2,$3),$4);}
+ | END_ {fr->markerEditEndCmd();}
+ ;
+
+markerFormat : DS9_ {$$ = Base::DS9;}
+ | XML_ {$$ = Base::XML;}
+ | CIAO_ {$$ = Base::CIAO;}
+ | SAOTNG_ {$$ = Base::SAOTNG;}
+ | SAOIMAGE_ {$$ = Base::SAOIMAGE;}
+ | PROS_ {$$ = Base::PROS;}
+ | XY_ {$$ = Base::RAWXY;}
+ ;
+
+markerGet : CENTROID_ markerGetCentroid
+ | COLOR_ {fr->getMarkerColorCmd();}
+ | FONT_ {fr->getMarkerFontCmd();}
+ | EPSILON_ {fr->getMarkerEpsilonCmd();}
+ | HANDLE_ numeric numeric {fr->getMarkerHandleCmd(Vector($2,$3));}
+ | ID_ numeric numeric {fr->getMarkerIdCmd(Vector($2,$3));}
+
+ | HIDE_ ANALYSIS_ CPANDA_ coordSystem
+ {fr->getMarkerAnalysisPandaCmd((Coord::CoordSystem)$4);}
+ | HIDE_ ANALYSIS_ HISTOGRAM_ STRING STRING INT
+ {fr->getMarkerAnalysisHistogramCmd($4,$5,$6);}
+ | HIDE_ ANALYSIS_ PLOT2D_ STRING STRING STRING STRING coordSystem skyFrame analysisParam
+ {fr->getMarkerAnalysisPlot2dCmd($4,$5,$6,$7,(Coord::CoordSystem)$8, (Coord::SkyFrame)$9, (Marker::AnalysisMethod)$10);}
+ | HIDE_ ANALYSIS_ PLOT3D_ STRING STRING coordSystem analysisParam
+ {fr->getMarkerAnalysisPlot3dCmd($4,$5,(Coord::CoordSystem)$6,(Marker::AnalysisMethod)$7);}
+ | HIDE_ ANALYSIS_ RADIAL_ STRING STRING STRING coordSystem
+ {fr->getMarkerAnalysisRadialCmd($4,$5,$6,(Coord::CoordSystem)$7);}
+ | HIDE_ ANALYSIS_ STATS_ coordSystem skyFrame
+ {fr->getMarkerAnalysisStatsCmd((Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+
+ | INT ANALYSIS_ CPANDA_ coordSystem
+ {fr->getMarkerAnalysisPandaCmd($1,(Coord::CoordSystem)$4);}
+ | INT ANALYSIS_ HISTOGRAM_ STRING STRING INT
+ {fr->getMarkerAnalysisHistogramCmd($1,$4,$5,$6);}
+ | INT ANALYSIS_ PLOT2D_ STRING STRING STRING STRING coordSystem skyFrame analysisParam
+ {fr->getMarkerAnalysisPlot2dCmd($1,$4,$5,$6,$7,(Coord::CoordSystem)$8, (Coord::SkyFrame)$9, (Marker::AnalysisMethod)$10);}
+ | INT ANALYSIS_ PLOT3D_ STRING STRING coordSystem analysisParam
+ {fr->getMarkerAnalysisPlot3dCmd($1,$4,$5,(Coord::CoordSystem)$6,(Marker::AnalysisMethod)$7);}
+ | INT ANALYSIS_ RADIAL_ STRING STRING STRING coordSystem
+ {fr->getMarkerAnalysisRadialCmd($1,$4,$5,$6,(Coord::CoordSystem)$7);}
+ | INT ANALYSIS_ STATS_ coordSystem skyFrame
+ {fr->getMarkerAnalysisStatsCmd($1,(Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+
+ | ID_ ALL_ {fr->getMarkerIdAllCmd();}
+ | INT ANGLE_ {fr->getMarkerAngleCmd($1);}
+ | INT ANGLE_ internalSystem {fr->getMarkerAngleCmd($1);}
+ | INT ANGLE_ coordSystem skyFrame
+ {fr->getMarkerAngleCmd($1,(Coord::CoordSystem)$3, (Coord::SkyFrame)$4);}
+ | INT ANNULUS_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerAnnulusRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+
+ | INT BOXANNULUS_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerBoxAnnulusRadiusCmd($1,(Coord::CoordSystem)$4,(Coord::SkyDist)$5);}
+ | INT BOX_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerBoxRadiusCmd($1,(Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT BPANDA_ ANGLE_ {fr->getMarkerBpandaAnglesCmd($1);}
+ | INT BPANDA_ ANGLE_ internalSystem {fr->getMarkerBpandaAnglesCmd($1);}
+ | INT BPANDA_ ANGLE_ coordSystem skyFrame
+ {fr->getMarkerBpandaAnglesCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+ | INT BPANDA_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerBpandaRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+
+ | INT CENTER_ coordSystem skyFrame skyFormat
+ {fr->getMarkerCenterCmd($1, (Coord::CoordSystem)$3, (Coord::SkyFrame)$4,
+ (Coord::SkyFormat)$5);}
+ | INT CIRCLE_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerCircleRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT COLOR_ {fr->getMarkerColorCmd($1);}
+ | INT COMPASS_ ARROW_ {fr->getMarkerCompassArrowCmd($1);}
+ | INT COMPASS_ LABEL_ {fr->getMarkerCompassLabelCmd($1);}
+ | INT COMPASS_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerCompassRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT COMPASS_ SYSTEM_ {fr->getMarkerCompassSystemCmd($1);}
+ | INT COMPOSITE_ GLOBAL_ {fr->getMarkerCompositeCmd($1);}
+ | INT CPANDA_ ANGLE_ {fr->getMarkerCpandaAnglesCmd($1);}
+ | INT CPANDA_ ANGLE_ internalSystem {fr->getMarkerCpandaAnglesCmd($1);}
+ | INT CPANDA_ ANGLE_ coordSystem skyFrame
+ {fr->getMarkerCpandaAnglesCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+ | INT CPANDA_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerCpandaRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT ELLIPSE_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerEllipseRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT ELLIPSEANNULUS_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerEllipseAnnulusRadiusCmd($1, (Coord::CoordSystem)$4,
+ (Coord::SkyDist)$5);}
+ | INT EPANDA_ ANGLE_ {fr->getMarkerEpandaAnglesCmd($1);}
+ | INT EPANDA_ ANGLE_ internalSystem {fr->getMarkerEpandaAnglesCmd($1);}
+ | INT EPANDA_ ANGLE_ coordSystem skyFrame
+ {fr->getMarkerEpandaAnglesCmd($1, (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+ | INT EPANDA_ RADIUS_ coordSystem skyDist
+ {fr->getMarkerEpandaRadiusCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT FONT_ {fr->getMarkerFontCmd($1);}
+ | INT HIGHLITE_ {fr->getMarkerHighlitedCmd($1);}
+ | INT LINE_ ARROW_ {fr->getMarkerLineArrowCmd($1);}
+ | INT LINE_ LENGTH_ coordSystem skyDist
+ {fr->getMarkerLineLengthCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT LINE_ POINT_ coordSystem skyFrame skyFormat
+ {fr->getMarkerLineCmd($1, (Coord::CoordSystem)$4,
+ (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
+ | INT MAP_ LENGTH_ numeric coordSystem skyDist
+ {fr->getMarkerMapLenFromRefCmd($1, $4,
+ (Coord::CoordSystem)$5,(Coord::SkyDist)$6);}
+
+ | INT POINT_ SHAPE_ {fr->getMarkerPointShapeCmd($1);}
+ | INT POINT_ SIZE_ {fr->getMarkerPointSizeCmd($1);}
+ | INT PROJECTION_ POINT_ coordSystem skyFrame skyFormat
+ {fr->getMarkerProjectionPointsCmd($1, (Coord::CoordSystem)$4,
+ (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
+ | INT PROJECTION_ LENGTH_ coordSystem skyDist
+ {fr->getMarkerProjectionLengthCmd($1, (Coord::CoordSystem)$4,
+ (Coord::SkyDist)$5);}
+ | INT PROJECTION_ THICK_ coordSystem skyDist
+ {fr->getMarkerProjectionWidthCmd($1,(Coord::CoordSystem)$4,(Coord::SkyDist)$5);}
+ | INT PROPERTY_ {fr->getMarkerPropertyCmd($1);}
+ | INT PROPERTY_ markerProperty {fr->getMarkerPropertyCmd($1,$3);}
+ | INT RULER_ LENGTH_ coordSystem skyDist
+ {fr->getMarkerRulerLengthCmd($1,(Coord::CoordSystem)$4,(Coord::SkyDist)$5);}
+ | INT RULER_ POINT_ coordSystem skyFrame skyFormat
+ {fr->getMarkerRulerPointCmd($1, (Coord::CoordSystem)$4,
+ (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
+ | INT RULER_ SYSTEM_ {fr->getMarkerRulerSystemCmd($1);}
+ | INT SELECT_ {fr->getMarkerSelectedCmd($1);}
+
+ | INT TAG_ {fr->getMarkerTagCmd($1);}
+ | INT TAG_ INT {fr->getMarkerTagCmd($1,$3);}
+ | INT TEXT_ {fr->getMarkerTextCmd($1);}
+ | INT TEXT_ ROTATE_ {fr->getMarkerTextRotateCmd($1);}
+ | INT TYPE_ {fr->getMarkerTypeCmd($1);}
+
+ | INT VECTOR_ ARROW_ {fr->getMarkerVectorArrowCmd($1);}
+ | INT VECTOR_ LENGTH_ coordSystem skyDist
+ {fr->getMarkerVectorLengthCmd($1, (Coord::CoordSystem)$4, (Coord::SkyDist)$5);}
+ | INT VECTOR_ POINT_ coordSystem skyFrame skyFormat
+ {fr->getMarkerVectorCmd($1, (Coord::CoordSystem)$4,
+ (Coord::SkyFrame)$5, (Coord::SkyFormat)$6);}
+ | INT WIDTH_ {fr->getMarkerLineWidthCmd($1);}
+ | HIGHLITE_ markerGetHighlite
+ | HIGHLITE_ NUMBER_ {fr->getMarkerHighlitedNumberCmd();}
+ | NUMBER_ {fr->getMarkerNumberCmd();}
+ | POLYGON_ SEGMENT_ numeric numeric
+ {fr->getMarkerPolygonSegmentCmd(Vector($3,$4));}
+ | SEGMENT_ SEGMENT_ numeric numeric
+ {fr->getMarkerSegmentSegmentCmd(Vector($3,$4));}
+ | PRESERVE_ {fr->getMarkerPreserveCmd();}
+ | PROPERTY_ markerProperty {fr->getMarkerPropertyCmd($2);}
+ | SELECT_ markerGetSelect
+ | SELECT_ NUMBER_ {fr->getMarkerSelectedNumberCmd();}
+
+ | SHOW_ markerGetShow
+
+ | STRING COLOR_ {fr->getMarkerColorCmd($1);}
+ | STRING FONT_ {fr->getMarkerFontCmd($1);}
+ | STRING ID_ {fr->getMarkerIdCmd($1);}
+ | STRING PROPERTY_ markerProperty {fr->getMarkerPropertyCmd($1,$3);}
+ | STRING TAG_ {fr->getMarkerTagCmd($1);}
+ | STRING TAG_ NUMBER_ {fr->getMarkerTagNumberCmd($1);}
+
+ | TAG_ ALL_ {fr->getMarkerTagsCmd();}
+ | TAG_ DEFAULT_ NAME_ {fr->getMarkerTagDefaultNameCmd();}
+
+ | WIDTH_ {fr->getMarkerLineWidthCmd();}
+ ;
+
+markerGetCentroid : AUTO_ {fr->getMarkerCentroidAutoCmd();}
+ | RADIUS_ {fr->getMarkerCentroidRadiusCmd();}
+ | ITERATION_ {fr->getMarkerCentroidIterationCmd();}
+ | OPTION_ {fr->getMarkerCentroidOptionCmd();}
+ ;
+
+markerGetHighlite : /* empty */ {fr->getMarkerHighlitedCmd();}
+ | numeric numeric {fr->getMarkerHighlitedCmd(Vector($1,$2));}
+ ;
+
+markerGetSelect : /* empty */ {fr->getMarkerSelectedCmd();}
+ | numeric numeric {fr->getMarkerSelectedCmd(Vector($1,$2));}
+ ;
+
+markerGetShow : /* empty */ {fr->getMarkerShowCmd();}
+ | TEXT_ {fr->getMarkerShowTextCmd();}
+ ;
+
+markerInitProp : {
+ strncpy(currentFont, "helvetica 10 normal roman", 32);
+ strncpy(currentColor, "green", 16);
+ currentDash[0] = 8;
+ currentDash[1] = 3;
+ currentWidth = 1;
+ strncpy(currentText, "", 80);
+ currentProps = defaultProps;
+ taglist.deleteAll();
+ cblist.deleteAll();
+ }
+ ;
+
+markerLayer : /* empty */ {fr->markerLayerCmd(Base::USER);}
+ | POINTER_ {
+ // backward compatibility
+ fr->markerLayerCmd(Base::USER);
+ }
+ | REGION_ {fr->markerLayerCmd(Base::USER);}
+ | USER_ {
+ // backward compatibility
+ fr->markerLayerCmd(Base::USER);
+ }
+ | CATALOG_ {fr->markerLayerCmd(Base::CATALOG);}
+ | ANALYSIS_ {fr->markerLayerCmd(Base::ANALYSIS);}
+ ;
+
+markerList : markerFormat coordSystem skyFrame skyFormat
+ yesno markerQuery markerTags
+ {fr->markerListCmd((Base::MarkerFormat)$1,
+ (Coord::CoordSystem)$2, (Coord::SkyFrame)$3, (Coord::SkyFormat)$4, $5,
+ 0, propQMask, propQValue, taglist);}
+ | SELECT_ markerFormat coordSystem skyFrame skyFormat
+ yesno markerQuery markerTags
+ {fr->markerListCmd((Base::MarkerFormat)$2,
+ (Coord::CoordSystem)$3, (Coord::SkyFrame)$4, (Coord::SkyFormat)$5, $6,
+ 1, propQMask, propQValue, taglist);}
+ ;
+
+markerLoad : markerFormat STRING
+ {fr->markerLoadCmd((Base::MarkerFormat)$1,$2);}
+ | markerFormat STRING coordSystem skyFrame
+ {fr->markerLoadCmd((Base::MarkerFormat)$1,$2,
+ (Coord::CoordSystem)$3,(Coord::SkyFrame)$4);}
+ | markerFormat INT
+ {fr->markerLoadCmd((Base::MarkerFormat)$1,$2);}
+ | markerFormat INT coordSystem skyFrame
+ {fr->markerLoadCmd((Base::MarkerFormat)$1,$2,
+ (Coord::CoordSystem)$3,(Coord::SkyFrame)$4);}
+ | FITS_ STRING STRING markerDash INT STRING
+ {fr->markerLoadFitsCmd($2, $3, $4, $5, $6);}
+ ;
+
+markerMoveSelected : numeric numeric {fr->markerMoveCmd(Vector($1,$2));}
+ | FRONT_ {fr->markerFrontCmd();}
+ | BACK_ {fr->markerBackCmd();}
+ | BEGIN_ numeric numeric {fr->markerMoveBeginCmd(Vector($2,$3));}
+ | MOTION_ numeric numeric {fr->markerMoveMotionCmd(Vector($2,$3));}
+ | END_ {fr->markerMoveEndCmd();}
+ | TO_ internalSystem coord
+ {fr->markerMoveToCmd(Vector($3), (Coord::InternalSystem)$2);}
+ | TO_ coordSystem skyFrame coord
+ {fr->markerMoveToCmd(Vector($4), (Coord::CoordSystem)$2, (Coord::SkyFrame)$3);}
+ ;
+
+markerProps : markerProps markerProp
+ | markerProp
+ ;
+
+markerProp : markerProperty '=' yesno {setProps(&currentProps,$1,$3);}
+ | COLOR_ '=' STRING {strncpy(currentColor,$3,16);}
+ | DASHLIST_ '=' INT INT {currentDash[0]=$3;currentDash[1]=$4;}
+ | WIDTH_ '=' INT {currentWidth = $3;}
+ | FONT_ '=' STRING {strncpy(currentFont,$3,32);}
+ | TEXT_ '=' STRING {strncpy(currentText,$3,80);}
+ | tag
+ | callback
+ ;
+
+markerProperty : NONE_ {$$ = Marker::NONE;}
+ | SELECT_ {$$ = Marker::SELECT;}
+ | HIGHLITE_ {$$ = Marker::HIGHLITE;}
+ | DASH_ {$$ = Marker::DASH;}
+ | FIXED_ {$$ = Marker::FIXED;}
+ | EDIT_ {$$ = Marker::EDIT;}
+ | MOVE_ {$$ = Marker::MOVE;}
+ | ROTATE_ {$$ = Marker::ROTATE;}
+ | DELETE_ {$$ = Marker::DELETE;}
+ | INCLUDE_ {$$ = Marker::INCLUDE;}
+ | SOURCE_ {$$ = Marker::SOURCE;}
+ ;
+
+markerProperties : /* empty */ markerInitProp
+ | markerInitProp markerProps
+ ;
+
+markerQuery: /* empty */ {propQMask=0;propQValue=0;}
+ | {propQMask=0;propQValue=0;} queries
+ ;
+
+markerSelect : ALL_ {fr->markerSelectAllCmd();}
+ | ONLY_ numeric numeric {fr->markerSelectOnlyCmd(Vector($2,$3));}
+ | TOGGLE_ {fr->markerSelectToggleCmd();}
+ | TOGGLE_ numeric numeric {fr->markerSelectToggleCmd(Vector($2,$3));}
+ ;
+
+markerShow : yesno {fr->markerShowCmd($1);}
+ | TEXT_ yesno {fr->markerShowTextCmd($2);}
+ ;
+
+queries : queries query
+ | query
+ ;
+
+query : markerProperty '=' yesno
+ {propQMask |= $1; setProps(&propQValue,$1,$3);}
+ ;
+
+markerTags: /* empty */ {taglist.deleteAll();}
+ | {taglist.deleteAll();} tags
+ ;
+
+tags : tags tag
+ | tag
+ ;
+
+tag : TAG_ '=' STRING {taglist.append(new Tag($3));}
+ ;
+
+callback : CALLBACK_ '=' markerCallBack STRING STRING {cblist.append(
+ new CallBack(fr->getInterp(),(CallBack::Type)$3,$4,$5));}
+ ;
+
+mask : CLEAR_ {fr->maskClearCmd();}
+ | COLOR_ STRING {fr->maskColorCmd($2);}
+ | MARK_ INT {fr->maskMarkCmd($2);}
+ | TRANSPARENCY_ numeric {fr->maskTransparencyCmd($2);}
+ ;
+
+orient : 'X' {fr->orientCmd(Coord::XX);}
+ | 'Y' {fr->orientCmd(Coord::YY);}
+ | XY_ {fr->orientCmd(Coord::XY);}
+ | NONE_ {fr->orientCmd(Coord::NORMAL);}
+ ;
+
+pan : numeric numeric numeric numeric
+ {fr->panCmd(Vector($1,$2),Vector($3,$4));}
+ | numeric numeric {fr->panCmd(Vector($1,$2));}
+ | internalSystem numeric numeric
+ {
+ // backward compatibility
+ fr->panCmd(Vector($2,$3));
+ }
+ | coordSystem skyFrame coord
+ {fr->panCmd(Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2);}
+ | TO_ panTo
+ | BBOX_ numeric numeric {fr->panBBoxCmd(Vector($2,$3));}
+ | MOTION_ panMotion
+ | PRESERVE_ yesno {fr->panPreserveCmd($2);}
+ ;
+
+panTo : numeric numeric {fr->panToCmd(Vector($1,$2));}
+ | internalSystem numeric numeric
+ {
+ // backward compatibility
+ fr->panToCmd(Vector($2,$3));
+ }
+ | coordSystem skyFrame coord
+ {fr->panToCmd(Vector($3), (Coord::CoordSystem)$1, (Coord::SkyFrame)$2);}
+ ;
+
+panMotion : BEGIN_ numeric numeric {fr->panBeginCmd(Vector($2,$3));}
+ | numeric numeric {fr->panMotionCmd(Vector($1,$2));}
+ | END_ numeric numeric {fr->panEndCmd(Vector($2,$3));}
+ ;
+
+panner : yesno {fr->pannerCmd($1);}
+ | WCS_ wcsSystem skyFrame
+ {
+ // backward compatibility
+ fr->pannerCmd((Coord::CoordSystem)$2,(Coord::SkyFrame)$3);
+ }
+ | STRING INT INT {fr->pannerCmd($1, $2, $3);}
+ | UPDATE_ {fr->updatePannerCmd();}
+ ;
+
+postscript : COLORSPACE_ pscolorspace
+ {fr->psColorSpaceCmd((Widget::PSColorSpace)$2);}
+ | LEVEL_ INT {fr->psLevelCmd($2);}
+ | RESOLUTION_ INT {fr->psResolutionCmd($2);}
+ | SCALE_ numeric {
+ // backward compatibility with backup
+ }
+ ;
+
+pscolorspace : BW_ {$$ = Widget::BW;}
+ | GRAY_ {$$ = Widget::GRAY;}
+ | RGB_ {$$ = Widget::RGB;}
+ | CMYK_ {$$ = Widget::CMYK;}
+ ;
+
+region : HIGHLITE_ regionHighlite
+ | SELECT_ regionSelect
+ ;
+
+regionHighlite : BEGIN_ numeric numeric
+ {fr->regionHighliteBeginCmd(Vector($2,$3));}
+ | MOTION_ numeric numeric
+ {fr->regionHighliteMotionCmd(Vector($2,$3));}
+ | END_ {fr->regionHighliteEndCmd();}
+ | SHIFT_ END_ {fr->regionHighliteShiftEndCmd();}
+ ;
+
+regionSelect : BEGIN_ numeric numeric
+ {fr->regionSelectBeginCmd(Vector($2,$3));}
+ | MOTION_ numeric numeric {fr->regionSelectMotionCmd(Vector($2,$3));}
+ | END_ {fr->regionSelectEndCmd();}
+ | SHIFT_ END_ {fr->regionSelectShiftEndCmd();}
+ ;
+
+renderMethod: MIP_ {$$ = Frame3dBase::MIP;}
+ | AIP_ {$$ = Frame3dBase::AIP;}
+ ;
+
+renderBackground: NONE_ {$$ = Frame3dBase::NONE;}
+ | AZIMUTH_ {$$ = Frame3dBase::AZIMUTH;}
+ | ELEVATION_ {$$ = Frame3dBase::ELEVATION;}
+ ;
+
+rgb : CHANNEL_ STRING {fr->setRGBChannelCmd($2);}
+ | SYSTEM_ coordSystem {fr->setRGBSystemCmd((Coord::CoordSystem)$2);}
+ | VIEW_ INT INT INT {fr->setRGBViewCmd($2,$3,$4);}
+ ;
+
+rotate : numeric {fr->rotateCmd(degToRad($1));}
+ | numeric DEGREES_ {fr->rotateCmd(degToRad($1));}
+ | MOTION_ rotateMotion
+ | TO_ numeric {fr->rotateToCmd(degToRad($2));}
+ | TO_ numeric DEGREES_ {fr->rotateToCmd(degToRad($2));}
+ ;
+
+rotateMotion : BEGIN_ {fr->rotateBeginCmd();}
+ | numeric {fr->rotateMotionCmd(degToRad($1));}
+ | END_ {fr->rotateEndCmd();}
+ ;
+
+save : ARRAY_ saveArray
+ | FITS_ saveFits
+ | NRRD_ saveNRRD
+ | ENVI_ saveENVI
+ | PHOTO_ STRING {fr->savePhotoCmd($2);}
+ ;
+
+saveArray : FILE_ STRING endian
+ {fr->saveArrayFileCmd($2, (FitsFile::ArchType)$3);}
+ | CHANNEL_ STRING endian
+ {fr->saveArrayChannelCmd($2, (FitsFile::ArchType)$3);}
+ | SOCKET_ INT endian
+ {fr->saveArraySocketCmd($2, (FitsFile::ArchType)$3);}
+ | RGB_ CUBE_ saveArrayRGBCube
+ ;
+
+saveArrayRGBCube : FILE_ STRING endian
+ {fr->saveArrayRGBCubeFileCmd($2, (FitsFile::ArchType)$3);}
+ | CHANNEL_ STRING endian
+ {fr->saveArrayRGBCubeChannelCmd($2, (FitsFile::ArchType)$3);}
+ | SOCKET_ INT endian
+ {fr->saveArrayRGBCubeSocketCmd($2, (FitsFile::ArchType)$3);}
+
+saveFits: /* empty */ saveFitsImage
+ | IMAGE_ saveFitsImage
+ | TABLE_ saveFitsTable
+ | SLICE_ saveFitsSlice
+ | EXT_ CUBE_ saveFitsExtCube
+ | MOSAIC_ saveFitsMosaic
+ | RGB_ IMAGE_ saveFitsRGBImage
+ | RGB_ CUBE_ saveFitsRGBCube
+ | RESAMPLE_ saveFitsResample
+ ;
+
+saveFitsImage : FILE_ STRING {fr->saveFitsFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsSocketCmd($2);}
+ ;
+
+saveFitsTable : FILE_ STRING {fr->saveFitsTableFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsTableChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsTableSocketCmd($2);}
+ ;
+
+saveFitsSlice : FILE_ STRING {fr->saveFitsSliceFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsSliceChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsSliceSocketCmd($2);}
+ ;
+
+saveFitsExtCube : FILE_ STRING {fr->saveFitsExtCubeFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsExtCubeChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsExtCubeSocketCmd($2);}
+ ;
+
+saveFitsMosaic : IMAGE_ saveFitsMosaicImage
+ | FILE_ STRING INT {fr->saveFitsMosaicFileCmd($2,$3);}
+ | CHANNEL_ STRING INT {fr->saveFitsMosaicChannelCmd($2,$3);}
+ | SOCKET_ INT INT {fr->saveFitsMosaicSocketCmd($2,$3);}
+ ;
+
+saveFitsMosaicImage : FILE_ STRING {fr->saveFitsMosaicImageFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsMosaicImageChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsMosaicImageSocketCmd($2);}
+ ;
+
+saveFitsRGBImage : FILE_ STRING {fr->saveFitsRGBImageFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsRGBImageChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsRGBImageSocketCmd($2);}
+ ;
+
+saveFitsRGBCube : FILE_ STRING {fr->saveFitsRGBCubeFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsRGBCubeChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsRGBCubeSocketCmd($2);}
+ ;
+
+saveFitsResample : FILE_ STRING {fr->saveFitsResampleFileCmd($2);}
+ | CHANNEL_ STRING {fr->saveFitsResampleChannelCmd($2);}
+ | SOCKET_ INT {fr->saveFitsResampleSocketCmd($2);}
+ ;
+
+saveNRRD : FILE_ STRING endian
+ {fr->saveNRRDFileCmd($2, (FitsFile::ArchType)$3);}
+ | CHANNEL_ STRING endian
+ {fr->saveNRRDChannelCmd($2, (FitsFile::ArchType)$3);}
+ | SOCKET_ INT endian
+ {fr->saveNRRDSocketCmd($2, (FitsFile::ArchType)$3);}
+ ;
+
+saveENVI : FILE_ STRING STRING endian
+ {fr->saveENVIFileCmd($2, $3, (FitsFile::ArchType)$4);}
+ ;
+
+smooth : smoothFunction INT {fr->smoothCmd((Context::SmoothFunction)$1,$2);}
+ | DELETE_ {fr->smoothDeleteCmd();}
+ ;
+
+smoothFunction : BOXCAR_ {$$ = Context::BOXCAR;}
+ | GAUSSIAN_ {$$ = Context::GAUSSIAN;}
+ | TOPHAT_ {$$ = Context::TOPHAT;}
+ ;
+
+update : /* empty */ {fr->updateFitsCmd(0);}
+ | INT numeric numeric numeric numeric
+ {fr->updateFitsCmd($1,BBox($2,$3,$4,$5),0);}
+ | NOW_ {fr->updateFitsCmd(1);}
+ | NOW_ INT numeric numeric numeric numeric
+ {fr->updateFitsCmd($2,BBox($3,$4,$5,$6),1);}
+ | FITS_ SLICE_ updateFitsSlice
+ ;
+
+updateFitsSlice : INT {fr->sliceCmd(2, $1);}
+ | numeric coordSystem {fr->sliceCmd(2, $1, (Coord::CoordSystem)$2);}
+ | INT INT {fr->sliceCmd($1, $2);}
+ | INT numeric coordSystem {fr->sliceCmd($1, $2, (Coord::CoordSystem)$3);}
+ ;
+
+warp : numeric numeric {fr->warpCmd(Vector($1,$2));}
+ | TO_ numeric numeric {fr->warpToCmd(Vector($2,$3));}
+ ;
+
+wcs : wcsSystem skyFrame skyFormat
+ {fr->wcsCmd((Coord::CoordSystem)$1, (Coord::SkyFrame)$2, (Coord::SkyFormat)$3);}
+ | ALIGN_ wcsAlign
+ | RESET_ INT {fr->wcsResetCmd($2);}
+ | REPLACE_ wcsReplace
+ | APPEND_ wcsAppend
+ ;
+
+wcsAppend : INT INT {fr->wcsAppendCmd($1,$2);}
+ | INT STRING {fr->wcsAppendCmd($1,$2);}
+ | TEXT_ INT STRING {fr->wcsAppendTxtCmd($2,$3);}
+ ;
+
+wcsReplace : INT INT {fr->wcsReplaceCmd($1,$2);}
+ | INT STRING {fr->wcsReplaceCmd($1,$2);}
+ | TEXT_ INT STRING {fr->wcsReplaceTxtCmd($2,$3);}
+ ;
+
+wcsAlign : INT {fr->wcsAlignCmd($1);}
+ | INT wcsSystem skyFrame
+ {
+ // used by backup
+ fr->wcsAlignCmd($1, (Coord::CoordSystem)$2, (Coord::SkyFrame)$3);
+ }
+ | INT POINTER wcsSystem skyFrame
+ {fr->wcsAlignCmd($1, (FitsImage*)$2, (Coord::CoordSystem)$3, (Coord::SkyFrame)$4);}
+ ;
+
+win32 : PRINT_ {
+#ifdef __WIN32
+ fr->win32PrintCmd();
+#endif
+ }
+ ;
+
+zoom : numeric numeric {fr->zoomCmd(Vector($1,$2));}
+ | numeric numeric ABOUT_ numeric numeric
+ {fr->zoomAboutCmd(Vector($1,$2),Vector($4,$5));}
+ | numeric numeric ABOUT_ internalSystem numeric numeric
+ {
+ // backward compatibility
+ fr->zoomAboutCmd(Vector($1,$2),Vector($5,$6));
+ }
+ | numeric numeric ABOUT_ coordSystem skyFrame coord
+ {fr->zoomAboutCmd(Vector($1,$2),Vector($6), (Coord::CoordSystem)$4,(Coord::SkyFrame)$5);}
+ | TO_ zoomTo
+ ;
+
+zoomTo : FIT_ {fr->zoomToFitCmd(1);}
+ | FIT_ numeric {fr->zoomToFitCmd($2);}
+ | numeric numeric {fr->zoomToCmd(Vector($1,$2));}
+ | numeric numeric ABOUT_ numeric numeric
+ {fr->zoomToAboutCmd(Vector($1,$2),Vector($4,$5));}
+ | numeric numeric ABOUT_ internalSystem numeric numeric
+ {
+ // backward compatibility
+ fr->zoomToAboutCmd(Vector($1,$2),Vector($5,$6));
+ }
+ | numeric numeric ABOUT_ coordSystem skyFrame coord
+ {fr->zoomToAboutCmd(Vector($1,$2), Vector($6),
+ (Coord::CoordSystem)$4, (Coord::SkyFrame)$5);}
+ ;
+
+%%
+
+static void setProps(unsigned short* props, unsigned short prop, int value)
+{
+ if (value)
+ *props |= prop;
+ else
+ *props &= ~prop;
+}