diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java index 8ffae7c..f6eb21b 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java @@ -49,6 +49,7 @@ private int curoldw; private int curoldh; private Pen pen; + private Stroke laststroke = new Stroke(); //----------------------------------------------------------------- @@ -275,17 +276,40 @@ //描写するための取得 public void getCanvas() { int cnt = 0; - clonepath.reset(); - invalidate(); - for (Stroke s : paintViewModel.getStroke().getValue()) { - clonepaint = new Paint(); - clonepath = new Path(); - clonepaint.setColor(Color.argb(Color.alpha(s.getColor()), Color.red(s.getColor()), Color.green(s.getColor()), Color.blue(s.getColor())));//色の指定 - clonepaint.setStrokeWidth(s.getThickness()); - clonepaint.setStyle(Paint.Style.STROKE);//線をひく - clonepaints.add(clonepaint); - clonepaths.add(clonepath); - for (Position p : s.getPositions()) { + int lastStroke = 0; + if (lastStroke != paintViewModel.getStroke().getValue().size()) { + clonepath.reset(); + //clonepaint.reset(); + clonepaints.clear(); + clonepaths.clear(); + invalidate(); + for (Stroke s : paintViewModel.getStroke().getValue()) { + clonepaint = new Paint(); + clonepath = new Path(); + clonepaint.setColor(Color.argb(Color.alpha(s.getColor()), Color.red(s.getColor()), Color.green(s.getColor()), Color.blue(s.getColor())));//色の指定 + clonepaint.setStrokeWidth(s.getThickness()); + clonepaint.setStyle(Paint.Style.STROKE);//線をひく + clonepaints.add(clonepaint); + clonepaths.add(clonepath); + laststroke = s; + for (Position p : s.getPositions()) { + if (cnt == 0) { + onTouched2(p.getX(), p.getY()); + } else { + if (p.getX() == -1) { + + } else { + onTouchedMove2(p.getX(), p.getY()); + } + } + cnt++; + } + cnt = 0; + } + lastStroke = paintViewModel.getStroke().getValue().size(); + } else { + clonepath.reset(); + for (Position p : laststroke.getPositions()) { if (cnt == 0) { onTouched2(p.getX(), p.getY()); } else { @@ -299,8 +323,8 @@ } cnt = 0; } - //paintViewModel.deleteStroke(); } + //paintViewModel.deleteStroke(); //最新の筆跡を取得して描画 // public void latestPositionWrite(Collection positions){ // int cnt = 0;