Skip to content
Snippets Groups Projects
Commit 90b1c075 authored by COLLINOT Baptiste's avatar COLLINOT Baptiste
Browse files

V2

parent 845a22bf
Branches
No related tags found
No related merge requests found
package com.example.visualisation; package com.example.visualisation;
import android.graphics.Rect;
import java.io.Serializable; import java.io.Serializable;
public class Acces implements Serializable { public class Acces implements Serializable {
private String piece1; private String nom;
private String piece2; private String piece;
private int[] coord; private int[] coord;
public Acces(String piece1, int[] coord) { public Acces(String nom, String piece, int[] coord) {
this.piece1 = piece1; this.nom = nom;
this.piece2 = ""; this.piece = piece;
this.coord = coord; this.coord = coord;
} }
public void setPiece2(String piece2) { public void setPiece(String piece) {
this.piece2 = piece2; this.piece = piece;
} }
public int[] getCoord() { public int[] getCoord() {
return this.coord; return this.coord;
} }
public String getPiece() {
return piece;
}
public String getNom() {
return nom;
}
} }
...@@ -8,6 +8,7 @@ import android.app.Activity; ...@@ -8,6 +8,7 @@ import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
......
package com.example.visualisation; package com.example.visualisation;
import android.graphics.Rect;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -13,6 +15,13 @@ public class Photo implements Serializable { ...@@ -13,6 +15,13 @@ public class Photo implements Serializable {
this.acces = new ArrayList<>(); this.acces = new ArrayList<>();
} }
public void setNomAcces(Acces acces, String nom) {
for (Acces a : this.acces) {
if (a.equals(acces)) {
a.setPiece(nom);
}
}
}
public int getNbAcces() { public int getNbAcces() {
return acces.size(); return acces.size();
} }
...@@ -29,8 +38,12 @@ public class Photo implements Serializable { ...@@ -29,8 +38,12 @@ public class Photo implements Serializable {
return acces; return acces;
} }
public void ajouterAcces(String piece1, int[] coord) { public void ajouterAcces(String nom, String piece, int[] coord) {
Acces nouvelAcces = new Acces(piece1, coord); Acces nouvelAcces = new Acces(nom, piece, coord);
this.acces.add(nouvelAcces); this.acces.add(nouvelAcces);
} }
public void ajouterAcces(Acces acces) {
this.acces.add(acces);
}
} }
...@@ -46,4 +46,8 @@ public class Piece implements Serializable { ...@@ -46,4 +46,8 @@ public class Piece implements Serializable {
public void setPath(int indice, String path) { public void setPath(int indice, String path) {
this.photos.get(indice).setPath(path); this.photos.get(indice).setPath(path);
} }
public ArrayList<Photo> getPhotos() {
return photos;
}
} }
package com.example.visualisation; package com.example.visualisation;
import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class PieceDetailsActivity extends AppCompatActivity { public class PieceDetailsActivity extends AppCompatActivity implements SurfaceHolder.Callback {
private static final int REQUEST_WRITE_EXTERNAL_STORAGE = 1;
private TextView nomPiece; private TextView nomPiece;
private ImageView imageView; private ImageView imageView;
private Modele modele; private Modele modele;
private Piece pieceDepart; private Piece piece;
private int indicePhoto; private int indicePhoto;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
private Paint paint;
private Rect rect;
@Override @Override
...@@ -33,10 +53,54 @@ public class PieceDetailsActivity extends AppCompatActivity { ...@@ -33,10 +53,54 @@ public class PieceDetailsActivity extends AppCompatActivity {
Intent intent = getIntent(); Intent intent = getIntent();
if (intent != null) { if (intent != null) {
modele = (Modele) intent.getSerializableExtra("modele"); modele = (Modele) intent.getSerializableExtra("modele");
pieceDepart = (Piece) intent.getSerializableExtra("piece"); piece = (Piece) intent.getSerializableExtra("piece");
nomPiece.setText(pieceDepart.getNom()); nomPiece.setText(piece.getNom());
}
surfaceView = findViewById(R.id.surfaceView);
surfaceView.setZOrderOnTop(true);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setFormat(PixelFormat.TRANSPARENT);
surfaceHolder.addCallback(this);
paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(5);
paint.setTextSize(40);
paint.setStyle(Paint.Style.STROKE);
afficherPhoto();
}
afficherPhoto(); private void dessinerRect() {
//surfaceHolder = surfaceView.getHolder();
if (surfaceHolder != null) {
Canvas canvas = surfaceHolder.lockCanvas();
if (canvas != null) {
try {
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
Photo photo = piece.getPhoto(indicePhoto);
for (Acces acces : photo.getAcces()) {
Log.d("a", "" + acces.getPiece());
int[] coord = acces.getCoord();
Rect accesRect = new Rect(coord[0], coord[1], coord[2], coord[3]);
paint.setStrokeWidth(5);
canvas.drawRect(accesRect, paint);
paint.setStrokeWidth(2);
if (acces.getPiece() == "") {
canvas.drawText(acces.getNom(), accesRect.centerX(), accesRect.centerY(), paint);
} else {
canvas.drawText(acces.getPiece(), accesRect.centerX(), accesRect.centerY(), paint);
}
}
} finally {
surfaceHolder.unlockCanvasAndPost(canvas);
}
} else {
Log.d("erreur canvas", "x");
}
} else {
Log.d("erreur holder", "x");
} }
} }
...@@ -62,11 +126,44 @@ public class PieceDetailsActivity extends AppCompatActivity { ...@@ -62,11 +126,44 @@ public class PieceDetailsActivity extends AppCompatActivity {
imageView.setImageResource(R.drawable.ajouter_photo); imageView.setImageResource(R.drawable.ajouter_photo);
imageView.setAdjustViewBounds(true); imageView.setAdjustViewBounds(true);
String path = pieceDepart.getPhoto(indicePhoto).getPath(); if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (path != "") { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_EXTERNAL_STORAGE);
Bitmap bitmap = BitmapFactory.decodeFile(getFilesDir() + "/" + path); } else {
imageView.setImageBitmap(bitmap); String path = piece.getPhoto(indicePhoto).getPath();
imageView.setAdjustViewBounds(true); if (path != "") {
Log.d("Acces", "chemin : " + path);
Bitmap bitmap = BitmapFactory.decodeFile(path);
imageView.setImageBitmap(bitmap);
imageView.setAdjustViewBounds(true);
}
}
dessinerRect();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_WRITE_EXTERNAL_STORAGE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
afficherPhoto();
} else {
Toast.makeText(this, "Autorisation pour stockage externe refusée", Toast.LENGTH_SHORT).show();
}
} }
} }
@Override
public void surfaceCreated(@NonNull SurfaceHolder holder) {
dessinerRect();
}
@Override
public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
}
} }
\ No newline at end of file
...@@ -7,6 +7,11 @@ ...@@ -7,6 +7,11 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".PieceDetailsActivity"> tools:context=".PieceDetailsActivity">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout <LinearLayout
android:id="@+id/mainLayout" android:id="@+id/mainLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -27,16 +32,14 @@ ...@@ -27,16 +32,14 @@
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="600dp"
android:layout_weight="1" android:layout_gravity="center_horizontal"
android:adjustViewBounds="true" android:adjustViewBounds="true" />
android:onClick="choixPhoto" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center_horizontal" > android:gravity="center_horizontal" >
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment