00001 /* -*- c++ -*- (for Emacs) 00002 * 00003 * standardfeatures.h 00004 * Digest 00005 * 00006 * Created by Aidan Lane on Mon Jul 11 2005. 00007 * Copyright (c) 2005-2006 Optimisation and Constraint Solving Group, 00008 * Monash University. All rights reserved. 00009 * 00010 * This program is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU General Public License 00021 * along with this program; if not, write to the Free Software 00022 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00023 */ 00024 00025 #ifndef STANDARDFEATURES_H 00026 #define STANDARDFEATURES_H 00027 00028 00029 #include "stlfeatureinterface.h" 00030 00031 00032 #define DECLARE_STL_FEATURE_CALCVALUE_METHODS \ 00033 static StlFeatureResultT \ 00034 classCalcValue( const StlStroke& stroke, bool* ok = 0 ); \ 00035 StlFeatureResultT calcValue( const StlStroke& stroke, bool* ok = 0 ) const \ 00036 { return classCalcValue(stroke, ok); } 00037 00038 00039 class CosInitAngleFeature : public StlFeatureInterface { 00040 public: 00041 DECLARE_STL_FEATURE_KEY( "cosinitangle" ); 00042 DECLARE_STL_FEATURE_TITLE( "Cosine of Initial Angle" ); 00043 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00044 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00045 }; 00046 00047 class SinInitAngleFeature : public StlFeatureInterface { 00048 public: 00049 DECLARE_STL_FEATURE_KEY( "sininitangle" ); 00050 DECLARE_STL_FEATURE_TITLE( "Sine of Initial Angle" ); 00051 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00052 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00053 }; 00054 00055 class BBoxDiagLengthFeature : public StlFeatureInterface { 00056 public: 00057 DECLARE_STL_FEATURE_KEY( "bboxdiaglength" ); 00058 DECLARE_STL_FEATURE_TITLE( "Bounding Box Diagonal Length" ); 00059 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00060 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00061 }; 00062 00063 class BBoxDiagAngleFeature : public StlFeatureInterface { 00064 public: 00065 DECLARE_STL_FEATURE_KEY( "bboxdiagangle" ); 00066 DECLARE_STL_FEATURE_TITLE( "Bounding Box Diagonal Angle" ); 00067 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00068 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00069 }; 00070 00071 class FirstToLastDistFeature : public StlFeatureInterface { 00072 public: 00073 DECLARE_STL_FEATURE_KEY( "firsttolastdist" ); 00074 DECLARE_STL_FEATURE_TITLE( "First to Last Point Distance" ); 00075 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00076 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00077 }; 00078 00079 class CosFirstToLastAngleFeature : public StlFeatureInterface { 00080 public: 00081 DECLARE_STL_FEATURE_KEY( "cosfirsttolastangle" ); 00082 DECLARE_STL_FEATURE_TITLE( "Cosine of First to Last Point Angle" ); 00083 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00084 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00085 }; 00086 00087 class SinFirstToLastAngleFeature : public StlFeatureInterface { 00088 public: 00089 DECLARE_STL_FEATURE_KEY( "sinfirsttolastangle" ); 00090 DECLARE_STL_FEATURE_TITLE( "Sine of First to Last Point Angle" ); 00091 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00092 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00093 }; 00094 00095 class TotalGestureLengthFeature : public StlFeatureInterface { 00096 public: 00097 DECLARE_STL_FEATURE_KEY( "totalgesturelength" ); 00098 DECLARE_STL_FEATURE_TITLE( "Total Gesture Length" ); 00099 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00100 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00101 }; 00102 00103 class TotalAngleTraversedFeature : public StlFeatureInterface { 00104 public: 00105 DECLARE_STL_FEATURE_KEY( "totalangletraversed" ); 00106 DECLARE_STL_FEATURE_TITLE( "Total Angle Traversed" ); 00107 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00108 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00109 }; 00110 00111 class TotalAbsAngleTraversedFeature : public StlFeatureInterface { 00112 public: 00113 DECLARE_STL_FEATURE_KEY( "totalabsangletraversed" ); 00114 DECLARE_STL_FEATURE_TITLE( "Total Absolute Angle Traversed" ); 00115 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00116 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00117 }; 00118 00119 class TotalSqrdAngleTraversedFeature : public StlFeatureInterface { 00120 public: 00121 DECLARE_STL_FEATURE_KEY( "totalsqrdangletraversed" ); 00122 DECLARE_STL_FEATURE_TITLE( "Total Squared Angle Traversed" ); 00123 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00124 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00125 }; 00126 00127 class MaxSqrdSpeedFeature : public StlFeatureInterface { 00128 public: 00129 DECLARE_STL_FEATURE_KEY( "maxsqrdspeed" ); 00130 DECLARE_STL_FEATURE_TITLE( "Maximum Squared Speed" ); 00131 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00132 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00133 }; 00134 00135 class DurationFeature : public StlFeatureInterface { 00136 public: 00137 DECLARE_STL_FEATURE_KEY( "duration" ); 00138 DECLARE_STL_FEATURE_TITLE( "Duration" ); 00139 DECLARE_STL_FEATURE_DESCRIPTION_METHODS; 00140 DECLARE_STL_FEATURE_CALCVALUE_METHODS; 00141 }; 00142 00143 00144 #endif // ! STANDARDFEATURES_H
1.5.2