My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package org.shapelogic.logic;

/** Contains commonly used logic expression strings
* So all the logic expressions that are used in the letter match is defined here.
* There are both a name and a logic expression defined for each.
*
* @author Sami Badawi
*
*/
public class CommonLogicExpressions {


// Logic related
public static final String AND = " && ";

// Filter related
public static final String FILTER_START = "#.filter('";
public static final String FILTER_END = "').size()";

// Filter related
public static final String VAR = "#.";
public static final String VAR_SIZE_START = "size(#.";
public static final String VAR_SIZE_END = ")";

//Point related
public static final String POINT_COUNT = "pointCount";
public static final String POINT_COUNT_EX = "getPoints()";

public static final String END_POINT_COUNT = "endPointCount";
public static final String END_POINT_COUNT_EX = "getEndPointCount()";
//Other way of counting end points using annotations
public static final String END_COUNT_ANNOTATION_EX = "PointOfTypeFilter(PointType.END_POINT)";

//Point location related
public static final String LEFT_HALF_EX = "PointLeftOfFilter(0.5)";
public static final String LEFT_THIRD_EX = "PointLeftOfFilter(0.3333)";
public static final String RIGHT_HALF_EX = "PointRightOfFilter(0.5)";
public static final String RIGHT_THIRD_EX = "PointRightOfFilter(0.6666)";
public static final String CENTER_THIRD_EX =
"PointRightOfFilter(0.3333) && PointLeftOfFilter(0.6666)";

public static final String TOP_HALF_EX = "PointAboveFilter(0.5)";
public static final String TOP_THIRD_EX = "PointAboveFilter(0.3333)";
public static final String BOTTOM_THIRD_EX = "PointBelowFilter(0.6666)";
public static final String BOTTOM_HALF_EX = "PointBelowFilter(0.5)";
public static final String MIDDLE_THIRD_EX =
"PointBelowFilter(0.3333) && PointAboveFilter(0.6666)";

public static final String TOP_LEFT_HALF_EX = TOP_HALF_EX + AND + LEFT_HALF_EX;
public static final String TOP_RIGHT_HALF_EX = TOP_HALF_EX + AND + RIGHT_HALF_EX;
public static final String BOTTOM_LEFT_HALF_EX = BOTTOM_HALF_EX + AND + LEFT_HALF_EX;
public static final String BOTTOM_RIGHT_HALF_EX = BOTTOM_HALF_EX + AND + RIGHT_HALF_EX;

public static final String TOP_LEFT_THIRD_EX = TOP_THIRD_EX + AND + LEFT_THIRD_EX;
public static final String TOP_CENTER_THIRD_EX = TOP_THIRD_EX + AND + CENTER_THIRD_EX;
public static final String TOP_RIGHT_THIRD_EX = TOP_THIRD_EX + AND + RIGHT_THIRD_EX;
public static final String MIDDLE_LEFT_THIRD_EX = MIDDLE_THIRD_EX + AND + LEFT_THIRD_EX;
public static final String MIDDLE_CENTER_THIRD_EX = MIDDLE_THIRD_EX + AND + CENTER_THIRD_EX;
public static final String MIDDLE_RIGHT_THIRD_EX = MIDDLE_THIRD_EX + AND + RIGHT_THIRD_EX;
public static final String BOTTOM_LEFT_THIRD_EX = BOTTOM_THIRD_EX + AND + LEFT_THIRD_EX;
public static final String BOTTOM_CENTER_THIRD_EX = BOTTOM_THIRD_EX + AND + CENTER_THIRD_EX;
public static final String BOTTOM_RIGHT_THIRD_EX = BOTTOM_THIRD_EX + AND + RIGHT_THIRD_EX;

//Point annotation related
public static final String HARD_CORNER_COUNT = "hardPointCount";
public static final String HARD_CORNER_COUNT_EX = "PointOfTypeFilter(\"HARD_CORNER\")";
public static final String HARD_CORNER_COUNT_ANN_EX = "getAnnotatedShape().getShapesForAnnotation(\"PointType.HARD_CORNER\")";

public static final String SOFT_POINT_COUNT = "softPointCount";
public static final String SOFT_POINT_COUNT_EX = "PointOfTypeFilter(\"SOFT_POINT\")";
public static final String SOFT_POINT_COUNT_ANN_EX = "getAnnotatedShape().getShapesForAnnotation(\"PointType.SOFT_POINT\")";

public static final String Y_JUNCTION_POINT_COUNT = "yJunctionCount";
public static final String Y_JUNCTION_POINT_COUNT_EX = "PointOfTypeFilter(\"Y_JUNCTION\")";

public static final String T_JUNCTION_POINT_COUNT = "tJunctionCount";
public static final String T_JUNCTION_POINT_COUNT_EX = "PointOfTypeFilter(\"T_JUNCTION\")";

public static final String U_JUNCTION_POINT_COUNT = "uJunctionCount";
public static final String U_JUNCTION_POINT_COUNT_EX = "PointOfTypeFilter(\"U_JUNCTION\")";
public static final String U_JUNCTION_POINT_COUNT_ANN_EX = "getAnnotatedShape().getShapesForAnnotation(\"PointType.U_JUNCTION\")";

public static final String INFLECTION_POINT_COUNT = "inflectionPointCount";
public static final String INFLECTION_POINT_COUNT_EX = "getAnnotatedShape().getShapesForAnnotation(\"LineType.INFLECTION_POINT\")";

public static final String CURVE_ARCH_COUNT = "curveArchCount";
public static final String CURVE_ARCH_COUNT_ANN_EX = "getAnnotatedShape().getShapesForAnnotation(\"LineType.CURVE_ARCH\")";


//Point location and annotation related
public static final String T_JUNCTION_LEFT_POINT_COUNT = "tJunctionLeftCount";
public static final String T_JUNCTION_LEFT_POINT_COUNT_EX =
T_JUNCTION_POINT_COUNT_EX + AND + LEFT_HALF_EX;

public static final String T_JUNCTION_RIGHT_POINT_COUNT = "tJunctionRightCount";
public static final String T_JUNCTION_RIGHT_POINT_COUNT_EX =
T_JUNCTION_POINT_COUNT_EX + AND + RIGHT_HALF_EX;

public static final String U_JUNCTION_RIGHT_POINT_COUNT = "tJunctionRightCount";
public static final String U_JUNCTION_RIGHT_POINT_COUNT_EX =
U_JUNCTION_POINT_COUNT_EX + AND + RIGHT_HALF_EX;

public static final String END_POINT_BOTTOM_POINT_COUNT = "endpointBottomPointCount";
public static final String END_POINT_BOTTOM_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + BOTTOM_HALF_EX;

public static final String END_POINT_TOP_POINT_COUNT = "endpointTopPointCount";
public static final String END_POINT_TOP_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + TOP_HALF_EX;

public static final String END_POINT_TOP_LEFT_THIRD_POINT_COUNT = "endpointTopLeftThirdPointCount";
public static final String END_POINT_TOP_LEFT_THIRD_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + TOP_LEFT_THIRD_EX;

public static final String END_POINT_TOP_CENTER_THIRD_POINT_COUNT = "endpointTopCenterThirdPointCount";
public static final String END_POINT_TOP_CENTER_THIRD_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + TOP_CENTER_THIRD_EX;

public static final String END_POINT_TOP_RIGHT_THIRD_POINT_COUNT = "endpointTopRightThirdPointCount";
public static final String END_POINT_TOP_RIGHT_THIRD_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + TOP_RIGHT_THIRD_EX;

public static final String END_POINT_TOP_RIGHT_HALF_POINT_COUNT = "endpointTopRightHalfPointCount";
public static final String END_POINT_TOP_RIGHT_HALF_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + TOP_RIGHT_HALF_EX;

public static final String END_POINT_BOTTOM_RIGHT_HALF_POINT_COUNT = "endpointBottomRightHalfPointCount";
public static final String END_POINT_BOTTOM_RIGHT_HALF_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + BOTTOM_RIGHT_HALF_EX;

public static final String END_POINT_BOTTOM_LEFT_HALF_POINT_COUNT = "endpointBottomLeftHalfPointCount";
public static final String END_POINT_BOTTOM_LEFT_HALF_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + BOTTOM_LEFT_HALF_EX;

public static final String END_POINT_BOTTOM_LEFT_THIRD_POINT_COUNT = "endpointBottomLeftThirdPointCount";
public static final String END_POINT_BOTTOM_LEFT_THIRD_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + BOTTOM_LEFT_THIRD_EX;

public static final String END_POINT_BOTTOM_CENTER_THIRD_POINT_COUNT = "endpointBottomCenterThirdPointCount";
public static final String END_POINT_BOTTOM_CENTER_THIRD_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + BOTTOM_CENTER_THIRD_EX;

public static final String END_POINT_BOTTOM_RIGHT_THIRD_POINT_COUNT = "endpointBottomRightThirdPointCount";
public static final String END_POINT_BOTTOM_RIGHT_THIRD_POINT_COUNT_EX =
END_COUNT_ANNOTATION_EX + AND + BOTTOM_RIGHT_THIRD_EX;

//Line related
public static final String LINE_COUNT = "lineCount";
public static final String LINE_COUNT_EX = "getLines()";

public static final String HORIZONTAL_LINE_COUNT = "horizontalLineCount";
public static final String HORIZONTAL_LINE_COUNT_EX = "getHorizontalLines()";

public static final String VERTICAL_LINE_COUNT = "verticalLineCount";
public static final String VERTICAL_LINE_COUNT_EX = "getVerticalLines()";

public static final String STRAIGHT_LINE_COUNT = "straightLineCount";
public static final String STRAIGHT_LINE_COUNT_ANN_EX = "getAnnotatedShape().getShapesForAnnotation(\"LineType.STRAIGHT\")";

//Multi line related
public static final String MULTI_LINE_COUNT = "multiLineCount";
public static final String MULTI_LINE_COUNT_EX = "getMultiLines()";

//Polygon related
public static final String HOLE_COUNT = "holeCount";
public static final String HOLE_COUNT_EX = "holeCount";

public static final String ASPECT_RATIO = "aspectRatio";
public static final String ASPECT_RATIO_EX = "getBBox().getAspectRatio()";

}

Change log

r725 by sami.badawi on Jun 30, 2008   Diff
Fixed spelling.
Go to: 
Project members, sign in to write a code review

Older revisions

r467 by sami.badawi on Mar 4, 2008   Diff
Added: END_POINT_BOTTOM_CENTER_THIRD_P
OINT_COUNT.
r454 by sami.badawi on Mar 3, 2008   Diff
Added stream based letter match for
all letters except for U, that is
still failing.
r216 by sami.nyc on Dec 6, 2007   Diff
Improved letter matching rules, after
testing on hand drawn letters.
All revisions of this file

File info

Size: 8901 bytes, 171 lines

File properties

svn:mime-type
text/plain
Powered by Google Project Hosting