Add non-linear outline
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package presenters.outline;
|
||||
|
||||
import domain.image.Image;
|
||||
|
||||
public interface NonLinearOutlineListener {
|
||||
|
||||
void onErosionGradientChanged(Image image);
|
||||
|
||||
void onDilationGradientChanged(Image image);
|
||||
|
||||
void onBeucherGradientChanged(Image image);
|
||||
|
||||
void onNonLinearLaplacianChanged(Image image);
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package presenters.outline;
|
||||
|
||||
import app.state.AppState;
|
||||
import app.state.NonLinearOutlineState;
|
||||
import domain.image.Image;
|
||||
import jakarta.inject.Inject;
|
||||
import services.OutlineService;
|
||||
import ui.abstractions.INonLinearOutlineView;
|
||||
|
||||
public class NonLinearOutlinePresenter implements NonLinearOutlineListener {
|
||||
|
||||
private final AppState appState;
|
||||
private final NonLinearOutlineState outlineState;
|
||||
private final OutlineService outlineService;
|
||||
|
||||
private INonLinearOutlineView view;
|
||||
|
||||
@Inject
|
||||
public NonLinearOutlinePresenter(
|
||||
AppState appState,
|
||||
NonLinearOutlineState outlineState,
|
||||
OutlineService outlineService
|
||||
) {
|
||||
this.appState = appState;
|
||||
this.outlineState = outlineState;
|
||||
this.outlineService = outlineService;
|
||||
|
||||
outlineState.subscribe(this);
|
||||
}
|
||||
|
||||
public void setView(INonLinearOutlineView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
view = null;
|
||||
outlineState.unsubscribe(this);
|
||||
}
|
||||
|
||||
public void computeErosionGradient() {
|
||||
Image image = appState.getImage();
|
||||
|
||||
Image result = outlineService.gradientErosion(image);
|
||||
|
||||
outlineState.setErosionGradient(result);
|
||||
}
|
||||
|
||||
public void computeDilationGradient() {
|
||||
Image image = appState.getImage();
|
||||
|
||||
Image result = outlineService.gradientDilation(image);
|
||||
|
||||
outlineState.setDilationGradient(result);
|
||||
}
|
||||
|
||||
public void computeBeucherGradient() {
|
||||
Image image = appState.getImage();
|
||||
|
||||
Image result = outlineService.beucherGradient(image);
|
||||
|
||||
outlineState.setBeucherGradient(result);
|
||||
}
|
||||
|
||||
public void computeNonLinearLaplacian() {
|
||||
Image image = appState.getImage();
|
||||
|
||||
Image result = outlineService.nonLinearLaplacian(image);
|
||||
|
||||
outlineState.setNonLinearLaplacian(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onErosionGradientChanged(Image image) {
|
||||
if (view != null) {
|
||||
view.updateErosionGradient(image);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDilationGradientChanged(Image image) {
|
||||
if (view != null) {
|
||||
view.updateDilationGradient(image);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBeucherGradientChanged(Image image) {
|
||||
if (view != null) {
|
||||
view.updateBeucherGradient(image);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNonLinearLaplacianChanged(Image image) {
|
||||
if (view != null) {
|
||||
view.updateNonLinearLaplacian(image);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user