Skip to content

Commit c54c8e2

Browse files
author
Dan Oprea
committed
Save last used perspective
1 parent 73fb6a0 commit c54c8e2

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

app/src/main/java/com/dan/perspective/MainActivity.kt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class MainActivity : AppCompatActivity() {
6363
private lateinit var inputImage: Mat
6464
private lateinit var outputImage: Mat
6565
private var menuSave: MenuItem? = null
66+
private var menuPrevPerspective: MenuItem? = null
6667
private var editMode = true
6768

6869
private val firstAnimatorListener = object : Animator.AnimatorListener {
@@ -184,8 +185,13 @@ class MainActivity : AppCompatActivity() {
184185

185186
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
186187
menuInflater.inflate(R.menu.main_menu, menu)
188+
187189
menuSave = menu?.findItem(R.id.save)
188190
menuSave?.isEnabled = !inputImage.empty()
191+
192+
menuPrevPerspective = menu?.findItem(R.id.prevPerspective)
193+
menuPrevPerspective?.isEnabled = !inputImage.empty() && settings.prevHeight > 0
194+
189195
return true
190196
}
191197

@@ -206,6 +212,32 @@ class MainActivity : AppCompatActivity() {
206212
SettingsDialog.show(this)
207213
return true
208214
}
215+
216+
R.id.prevPerspective -> {
217+
if (settings.prevHeight < 1) return true
218+
if (inputImage.empty()) return true
219+
220+
binding.imageEdit.setPerspective(
221+
PointF(
222+
settings.prevLeftTopX * inputImage.width() / settings.prevWidth,
223+
settings.prevLeftTopY * inputImage.height() / settings.prevHeight
224+
),
225+
PointF(
226+
settings.prevRightTopX * inputImage.width() / settings.prevWidth,
227+
settings.prevRightTopY * inputImage.height() / settings.prevHeight
228+
),
229+
PointF(
230+
settings.prevLeftBottomX * inputImage.width() / settings.prevWidth,
231+
settings.prevLeftBottomY * inputImage.height() / settings.prevHeight
232+
),
233+
PointF(
234+
settings.prevRightBottomX * inputImage.width() / settings.prevWidth,
235+
settings.prevRightBottomY * inputImage.height() / settings.prevHeight
236+
)
237+
)
238+
239+
return true;
240+
}
209241
}
210242

211243
return super.onOptionsItemSelected(item)
@@ -361,6 +393,7 @@ class MainActivity : AppCompatActivity() {
361393
binding.radioButtonPointDirectionVertical.isEnabled = enabled
362394

363395
menuSave?.isEnabled = enabled
396+
menuPrevPerspective?.isEnabled = enabled && settings.prevHeight > 0
364397
}
365398

366399
private fun loadImage(uri: Uri) : Mat {
@@ -435,6 +468,21 @@ class MainActivity : AppCompatActivity() {
435468
values.put(MediaStore.Images.Media.DATA, fileFullPath)
436469
values.put(MediaStore.Images.Media.MIME_TYPE, "image/${outputExtension}")
437470
contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
471+
472+
val perspectivePoints = binding.imageEdit.getPerspective()
473+
settings.prevWidth = outputImage.width()
474+
settings.prevHeight = outputImage.height()
475+
settings.prevLeftTopX = perspectivePoints.pointLeftTop.x
476+
settings.prevLeftTopY = perspectivePoints.pointLeftTop.y
477+
settings.prevRightTopX = perspectivePoints.pointRightTop.x
478+
settings.prevRightTopY = perspectivePoints.pointRightTop.y
479+
settings.prevLeftBottomX = perspectivePoints.pointLeftBottom.x
480+
settings.prevLeftBottomY = perspectivePoints.pointLeftBottom.y
481+
settings.prevRightBottomX = perspectivePoints.pointRightBottom.x
482+
settings.prevRightBottomY = perspectivePoints.pointRightBottom.y
483+
settings.saveProperties()
484+
485+
menuPrevPerspective?.isEnabled = true
438486
}
439487

440488
showToast("Saved to: $fileName")

app/src/main/java/com/dan/perspective/Settings.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ class Settings( private val activity: Activity) {
3636
var tiffDepth = DEPTH_AUTO
3737
var engineDepth = DEPTH_AUTO
3838
var hapticFeedback = true
39+
var prevLeftTopX = -1f
40+
var prevLeftTopY = -1f
41+
var prevRightTopX = -1f
42+
var prevRightTopY = -1f
43+
var prevRightBottomX = -1f
44+
var prevRightBottomY = -1f
45+
var prevLeftBottomX = -1f
46+
var prevLeftBottomY = -1f
47+
var prevWidth = 0
48+
var prevHeight = 0
3949

4050
init {
4151
loadProperties()

app/src/main/res/menu/main_menu.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@
1313
android:title="Save"
1414
android:visibility="gone"
1515
app:showAsAction="always" />
16+
<item
17+
android:id="@+id/prevPerspective"
18+
android:enabled="false"
19+
android:title="Previous Perspective"
20+
app:showAsAction="never" />
1621
<item
1722
android:id="@+id/settings"
1823
android:icon="@android:drawable/ic_menu_preferences"
1924
android:title="Settings"
20-
app:showAsAction="always" />
25+
app:showAsAction="never" />
2126
</menu>

0 commit comments

Comments
 (0)