diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java index 3737343..a1032b0 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/StrokesRest.java @@ -6,7 +6,9 @@ import java.util.ArrayList; import java.util.Collection; +import kotlin.jvm.JvmDefaultWithoutCompatibility; import retrofit2.Call; +import retrofit2.http.DELETE; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; @@ -27,7 +29,7 @@ @FormUrlEncoded @POST("gallery/{aid}/pageMap/0/layers/0/strokes") Call addStroke(@Path("aid") Integer aid, @Field("uid") Integer uid, @Field("uidToken") String uidToken, - @Field("pen") Integer pen, @Field("color") Integer color, @Field("thick") Integer thick); + @Field("pen") Integer pen, @Field("color") Integer color, @Field("thick") Integer thick); //----------------------------------------------------------------- // @@ -40,5 +42,15 @@ @POST("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/position") Call addPositions(@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo, @Field("x") double x, @Field("y") double y); + + //----------------------------------------------------------------- + // + @DELETE("gallery/{aid}/pageMap/0/layers/0/strokes") + Call deleteStrokes(@Path("aid") Integer aid, @Field("uid") Integer uid); + + //----------------------------------------------------------------- + // + @GET("gallery/{aid}/pageMap/0/layers/0/strokes/{strokeNo}/position") + Call deleteStrokeNo(@Path("aid") Integer aid, @Path("strokeNo") Integer strokeNo); //----------------------------------------------------------------- } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java index fc539d9..b2c1073 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java @@ -17,21 +17,32 @@ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_paint); + init(); + } - //6)描画のid取得 - paintCanvas =(PaintCanvas) findViewById(R.id.myCanvas); + //----------------------------------------------------------------- + // 描画全体のクリア + public void onClear(View view) { + paintCanvas.clearCanvas(); + } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // + private void init() { + setContentView(R.layout.activity_paint); Acanthus acanthus = (Acanthus) getApplication(); paintViewModel = new ViewModelProvider(this).get(PaintViewModel.class); paintViewModel.init(acanthus); + initView(); + } + + //----------------------------------------------------------------- + // + private void initView() { + paintCanvas = (PaintCanvas) findViewById(R.id.myCanvas); paintCanvas.setPaintViewModel(paintViewModel); - } - - //5)クリアメソッド(4)呼び出し - public void onClear(View view){ - paintCanvas.clearCanvas(); - } - + //----------------------------------------------------------------- } \ No newline at end of file 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 1400065..5a89afe 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 @@ -27,134 +27,90 @@ import retrofit2.converter.jackson.JacksonConverterFactory; import retrofit2.converter.scalars.ScalarsConverterFactory; +//----------------------------------------------------------------- +// 描画キャンバスの本体 public class PaintCanvas extends View { private Path path; private Paint paint; private PaintViewModel paintViewModel; - private ArrayList xlen = new ArrayList(); - private ArrayList ylen = new ArrayList(); + //----------------------------------------------------------------- + //----------------------------------------------------------------- public PaintCanvas(Context context, @Nullable AttributeSet attrs) { super(context, attrs); - //1)コンストラクタ(≒必需品) - path = new Path();//線を引いたり、図形を描いたり、要するにグラフィック - + path = new Path(); // 図形描画 paint = new Paint();//筆の種類 paint.setColor(Color.RED);//色の指定 paint.setStyle(Paint.Style.STROKE);//線をひく paint.setStrokeWidth(20);//幅 } - //2)onDraw(描画の準備/プロペラが回りだした状態) + //----------------------------------------------------------------- + // setter + public void setPaintViewModel(PaintViewModel paintViewModel) { + this.paintViewModel = paintViewModel; + } + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(path, paint); } - - //3)実際の操縦 (条件分岐:押したとき、動かしたとき、放した時) - + //----------------------------------------------------------------- + // 描画操作 (条件分岐:押したとき、動かしたとき、放した時) @Override public boolean onTouchEvent(MotionEvent event) { //(3-1)座標を取得(x座標、y座標) float x = event.getX(); float y = event.getY(); - xlen.add(x); - ylen.add(y); //(3-2)タッチの処理 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - path.moveTo(x, y); - invalidate(); + onTouched(x, y); break; case MotionEvent.ACTION_MOVE: - path.lineTo(x, y); - invalidate(); + onTouchedMove(x, y); break; case MotionEvent.ACTION_UP: break; } - paintViewModel.paintStroke(event); + paintViewModel.drawStrokeRequest(event); - //return super.onTouchEvent(event); return true; } - - //4)クリア処理 + //----------------------------------------------------------------- + // 描画クリア public void clearCanvas() { - System.out.println(xlen.toArray()); path.reset(); invalidate(); } - public void setPaintViewModel(PaintViewModel paintViewModel){ - this.paintViewModel = paintViewModel; + //----------------------------------------------------------------- + // 押した瞬間の処理 + private void onTouched(float x, float y) { + path.moveTo(x, y); + invalidate(); } - ////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////////////////////////////// - //retrofit -// public void AddPositions(double x, double y, MutableLiveData strokeno) { -// Retrofit retrofit = new Retrofit.Builder() -// .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") -// .addConverterFactory(ScalarsConverterFactory.create()) -// .addConverterFactory(JacksonConverterFactory.create()) -// .build(); -// final StrokesRest strokesRest = retrofit.create(StrokesRest.class); -// Call call = strokesRest.addPositions(1111, strokeno.getValue(), x, y); -// call.enqueue(new Callback() { -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()) { -// System.out.println("success"); -// } else { -// System.out.println("false"); -// } -// } -// -// @Override -// public void onFailure(Call call, Throwable t) { -// //mText.setValue("みす helloworld"); -// } -// }); -// -// } -// -// public void addStrokes(Acanthus acanthus) { -// Retrofit retrofit = new Retrofit.Builder() -// .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") -// .addConverterFactory(ScalarsConverterFactory.create()) -// .addConverterFactory(JacksonConverterFactory.create()) -// .build(); -// final StrokesRest strokesRest = retrofit.create(StrokesRest.class); -// Call call = strokesRest.addStroke(1111, acanthus.getPreferenceUid(), acanthus.getPreferenceToken(), 1, 1, 1); -// call.enqueue(new Callback() { -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()) { -// System.out.println("success"); -// setStrokeNo(response.body().intValue()); -// } else { -// System.out.println("false"); -// } -// } -// -// @Override -// public void onFailure(Call call, Throwable t) { -// //mText.setValue("みす helloworld"); -// } -// }); -// -// } + //----------------------------------------------------------------- + // 押した後動かした時の処理 + private void onTouchedMove(float x, float y) { + path.lineTo(x, y); + invalidate(); + } + + //----------------------------------------------------------------- } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModel.java index 0981063..e500459 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintModel.java @@ -18,10 +18,9 @@ // public class PaintModel { private Animation editedAnimation; - private Acanthus acanthus; private Integer currentStrokeNo; - private Retrofit retrofit; + private Acanthus acanthus; //----------------------------------------------------------------- //----------------------------------------------------------------- @@ -34,7 +33,6 @@ .build(); } - //----------------------------------------------------------------- // setter public void setEditedAnimation(Animation editedAnimation) { @@ -50,26 +48,6 @@ // init public void init(Acanthus acanthus) { this.acanthus = acanthus; - - final GalleryRest galleryRest = retrofit.create(GalleryRest.class); -// //----------------------------------------------------------------- -// // ストローク追加API -// Call call = strokesRest.addStroke( -// acanthus.getAid(), acanthus.getPreferenceUid(), acanthus.getPreferenceToken(), -// 0, 0, 10); -// -// // strokeNoを更新 -// call.enqueue(new Callback() { -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()) setCurrentStrokeNo(response.body()); -// } -// -// @Override -// public void onFailure(Call call, Throwable t) { -// -// } -// }); } //----------------------------------------------------------------- @@ -106,21 +84,6 @@ //----------------------------------------------------------------- // 筆跡追加API Call call = strokesRest.addPositions(acanthus.getAid(), this.currentStrokeNo, x, y); - - // 筆跡を更新 - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) { - - } - } - - @Override - public void onFailure(Call call, Throwable t) { - - } - }); } //----------------------------------------------------------------- diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java index 2cb84e1..98115b6 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java @@ -33,10 +33,9 @@ //----------------------------------------------------------------- -// +// 描画 public class PaintViewModel extends ViewModel { - //private MutableLiveData animationMutableLiveData; private PaintModel paintModel; //----------------------------------------------------------------- @@ -53,8 +52,8 @@ } //----------------------------------------------------------------- - // - public void paintStroke(MotionEvent motionEvent) { + // 描画APIの通信リクエスト + public void drawStrokeRequest(MotionEvent motionEvent) { float x = motionEvent.getX(); float y = motionEvent.getY(); @@ -66,17 +65,13 @@ case MotionEvent.ACTION_MOVE: paintModel.addPosition(x, y); break; - - case MotionEvent.ACTION_UP: - break; } } + //----------------------------------------------------------------- // 一定間隔でサーバー上の筆跡を取得する(GET) public void startObservationOfChangedStroke() { } - - //----------------------------------------------------------------- //----------------------------------------------------------------- }