00001 package edu.stanford.hci.r3.pen.streaming.listeners;
00002
00003 import java.util.ArrayList;
00004 import java.util.List;
00005
00006 import edu.stanford.hci.r3.pen.PenSample;
00007 import edu.stanford.hci.r3.pen.ink.InkStroke;
00008 import edu.stanford.hci.r3.util.DebugUtils;
00009
00027 public abstract class PenStrokeListener implements PenListener {
00028
00029 private List<PenSample> currentStroke;
00030
00034 public void penDown(PenSample sample) {
00035
00036 currentStroke = new ArrayList<PenSample>();
00037 currentStroke.add(sample);
00038 DebugUtils.println(sample);
00039 }
00040
00046 public abstract void penStroke(InkStroke stroke);
00047
00048
00049
00050
00051
00052
00053 public void penUp(PenSample sample) {
00054 if (currentStroke == null) {
00055 return;
00056 }
00057
00058
00059 final List<PenSample> stroke = currentStroke;
00060
00061
00062
00063 currentStroke = null;
00064
00065
00066 penStroke(new InkStroke(stroke));
00067 }
00068
00072 public void sample(PenSample sample) {
00073 currentStroke.add(sample);
00074 DebugUtils.println(sample);
00075 }
00076 }