00001 /*************************************************************************** 00002 *cr 00003 *cr (C) Copyright 1995-2019 The Board of Trustees of the 00004 *cr University of Illinois 00005 *cr All Rights Reserved 00006 *cr 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * RCS INFORMATION: 00011 * 00012 * $RCSfile: TclCommands.h,v $ 00013 * $Author: johns $ $Locker: $ $State: Exp $ 00014 * $Revision: 1.59 $ $Date: 2020年11月04日 20:57:00 $ 00015 * 00016 *************************************************************************** 00017 * DESCRIPTION: 00018 * prototypes for VMD<->Tcl functions 00019 * 00020 ***************************************************************************/ 00021 #ifndef TCLCOMMANDS_H 00022 #define TCLCOMMANDS_H 00023 //forward definition 00024 class AtomSel; 00025 class VMDApp; 00026 00027 // for the core VMD commands 00028 int Vmd_Init(Tcl_Interp *); 00029 00030 // for 'molinfo' 00031 int molecule_tcl(ClientData, Tcl_Interp *interp, int argc, const char *argv[]); 00032 00033 // for 'vec*' and 'trans*' 00034 int Vec_Init(Tcl_Interp *); 00035 00036 // for 'atomselect' 00037 int Atomsel_Init(Tcl_Interp *); 00038 00039 // get the atom selection associated with the given tcl selection 00040 // (the one of the form 'atomselect%u') 00041 AtomSel *tcl_commands_get_sel(Tcl_Interp *, const char *str); 00042 00043 // for accessing the graphics 00044 int graphics_tcl(ClientData, Tcl_Interp *interp, int argc, const char *argv[]); 00045 00046 // for accessing the colors 00047 int tcl_colorinfo(ClientData, Tcl_Interp *interp, int argc, const char *argv[]); 00048 00049 // for the graphlayout command 00050 int obj_graphlayout(ClientData cd, Tcl_Interp *interp, int argc, Tcl_Obj * const objv[]); 00051 00052 // for the measure commands 00053 int obj_measure(ClientData, Tcl_Interp *, int, Tcl_Obj *const []); 00054 00055 // for the mdff cc command 00056 int obj_mdff_cc(ClientData cd, Tcl_Interp *interp, int argc, Tcl_Obj * const objv[]); 00057 00058 // for the voltool command 00059 int obj_voltool(ClientData cd, Tcl_Interp *interp, int argc, Tcl_Obj * const objv[]); 00060 00061 // for the segmentation commands 00062 int obj_segmentation(ClientData cd, Tcl_Interp *interp, int argc, Tcl_Obj * const objv[]); 00063 00064 #if 0 00065 // for the volgradient command 00066 int obj_volgradient(ClientData cd, Tcl_Interp *interp, int argc, Tcl_Obj * const objv[]); 00067 #endif 00068 00069 // for the volmap commands 00070 int obj_volmap(ClientData, Tcl_Interp *, int, Tcl_Obj *const []); 00071 00072 // get a matrix from a string; 00073 // returns TCL_OK if good 00074 // If bad, returns TCL_ERROR and sets the interp->result to the error message 00075 // The name of the function should be passed in 'fctn' so the error message 00076 // can be constructed correctly 00077 int tcl_get_matrix(const char *fctn, Tcl_Interp *interp, 00078 Tcl_Obj *s, float *mat); 00079 00082 int tcl_get_weights(Tcl_Interp *interp, VMDApp *app, AtomSel *sel, 00083 Tcl_Obj *weight_obj, float *data); 00084 00086 int atomsel_default_weights(AtomSel *sel, float *weights); 00087 00089 int get_weights_from_tcl_list(Tcl_Interp *interp, VMDApp *app, AtomSel *sel, 00090 Tcl_Obj *weights_obj, float *weights); 00091 00094 int get_attribute_index(VMDApp *app, char const *string); 00095 00097 int get_weights_from_attribute(VMDApp *app, AtomSel *sel, 00098 char const *weights_string, float *weights); 00099 00100 // Get a vector from a string 00101 int tcl_get_vector(const char *s, float *val, Tcl_Interp *interp); 00102 00103 // Get an array of floating point vectors values from a string 00104 int tcl_get_vecarray(const char *s, int &num, float *&val, Tcl_Interp *interp); 00105 00106 // Get an array of floating point values from a string 00107 int tcl_get_array(const char *s, int &num, float *&val, Tcl_Interp *interp); 00108 00109 // Get an array of floating point values from a string 00110 int tcl_get_intarray(const char *s, int &num, int *&val, Tcl_Interp *interp); 00111 00112 // append the matrix information to the interp->result field 00113 void tcl_append_matrix(Tcl_Interp *interp, const float *mat); 00114 00115 #if defined(VMDTKCON) 00116 // set up and write console log messages 00117 int tcl_vmdcon(ClientData nodata, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); 00118 #endif 00119 00120 // fastpbc 00121 int obj_fastpbc(ClientData, Tcl_Interp *, int, Tcl_Obj *const []); 00122 00123 #endif 00124