diff --git a/app/src/main/kotlin/org/fossify/draw/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/draw/activities/MainActivity.kt
index ab5abe8e..a8fd66e0 100644
--- a/app/src/main/kotlin/org/fossify/draw/activities/MainActivity.kt
+++ b/app/src/main/kotlin/org/fossify/draw/activities/MainActivity.kt
@@ -147,6 +147,7 @@ class MainActivity : SimpleActivity(), CanvasListener {
strokeWidthBar.beVisibleIf(isShowBrushSizeEnabled)
strokeWidthPreview.beVisibleIf(isShowBrushSizeEnabled)
myCanvas.setAllowZooming(config.allowZoomingCanvas)
+ myCanvas.setRelativeBrushSize(config.relativeBrushSize)
updateTextColors(mainHolder)
if (isBlackAndWhiteTheme()) {
strokeWidthBar.setColors(0, config.canvasBackgroundColor.getContrastColor(), 0)
diff --git a/app/src/main/kotlin/org/fossify/draw/activities/SettingsActivity.kt b/app/src/main/kotlin/org/fossify/draw/activities/SettingsActivity.kt
index ffb7bf62..1c620366 100644
--- a/app/src/main/kotlin/org/fossify/draw/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/org/fossify/draw/activities/SettingsActivity.kt
@@ -35,6 +35,7 @@ class SettingsActivity : SimpleActivity() {
setupPreventPhoneFromSleeping()
setupBrushSize()
setupAllowZoomingCanvas()
+ setupRelativeBrushSize()
setupForcePortraitMode()
updateTextColors(binding.settingsHolder)
@@ -101,6 +102,16 @@ class SettingsActivity : SimpleActivity() {
}
}
+ private fun setupAllowZoomingCanvas() {
+ binding.apply {
+ settingsRelativeBrushSize.isChecked = config.relativeBrushSize
+ settingsRelativeBrushSizeHolder.setOnClickListener {
+ settingsRelativeBrushSize.toggle()
+ config.relativeBrushSize = settingsRelativeBrushSize.isChecked
+ }
+ }
+ }
+
private fun setupForcePortraitMode() {
binding.apply {
settingsForcePortrait.isChecked = config.forcePortraitMode
diff --git a/app/src/main/kotlin/org/fossify/draw/helpers/Config.kt b/app/src/main/kotlin/org/fossify/draw/helpers/Config.kt
index ac34f0a0..49d323e8 100644
--- a/app/src/main/kotlin/org/fossify/draw/helpers/Config.kt
+++ b/app/src/main/kotlin/org/fossify/draw/helpers/Config.kt
@@ -38,6 +38,10 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(ALLOW_ZOOMING_CANVAS, true)
set(allowZoomingCanvas) = prefs.edit().putBoolean(ALLOW_ZOOMING_CANVAS, allowZoomingCanvas).apply()
+ var relativeBrushSize: Boolean
+ get() = prefs.getBoolean(RELATIVE_BRUSH_SIZE, true)
+ set(relativeBrushSize) = prefs.edit().putBoolean(RELATIVE_BRUSH_SIZE, relativeBrushSize).apply()
+
var forcePortraitMode: Boolean
get() = prefs.getBoolean(FORCE_PORTRAIT_MODE, false)
set(forcePortraitMode) = prefs.edit().putBoolean(FORCE_PORTRAIT_MODE, forcePortraitMode).apply()
diff --git a/app/src/main/kotlin/org/fossify/draw/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/draw/helpers/Constants.kt
index a4a19e0a..0bc6c47b 100644
--- a/app/src/main/kotlin/org/fossify/draw/helpers/Constants.kt
+++ b/app/src/main/kotlin/org/fossify/draw/helpers/Constants.kt
@@ -7,6 +7,7 @@ const val BRUSH_SIZE = "brush_size_2"
const val LAST_SAVE_FOLDER = "last_save_folder"
const val LAST_SAVE_EXTENSION = "last_save_extension"
const val ALLOW_ZOOMING_CANVAS = "allow_zooming_canvas"
+const val RELATIVE_BRUSH_SIZE = "relative_brush_size"
const val FORCE_PORTRAIT_MODE = "force_portrait_mode"
const val PNG = "png"
diff --git a/app/src/main/kotlin/org/fossify/draw/views/MyCanvas.kt b/app/src/main/kotlin/org/fossify/draw/views/MyCanvas.kt
index acabbff8..ce724df4 100644
--- a/app/src/main/kotlin/org/fossify/draw/views/MyCanvas.kt
+++ b/app/src/main/kotlin/org/fossify/draw/views/MyCanvas.kt
@@ -54,6 +54,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
private var mCurrBrushSize = 0f
private var mAllowMovingZooming = true
+ private var mRelativeBrushSize = true
private var mIsEraserOn = false
private var mIsBucketFillOn = false
private var mWasMultitouch = false
@@ -282,13 +283,21 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
fun setBrushSize(newBrushSize: Float) {
mCurrBrushSize = newBrushSize
- mPaintOptions.strokeWidth = resources.getDimension(R.dimen.full_brush_size) * (mCurrBrushSize / mScaleFactor / 100f)
+ mPaintOptions.strokeWidth = resources.getDimension(R.dimen.full_brush_size) * (mCurrBrushSize / 100f)
+ if (mRelativeBrushSize) {
+ mPaintOptions.strokeWidth /= mScaleFactor
+ }
}
fun setAllowZooming(allowZooming: Boolean) {
mAllowMovingZooming = allowZooming
}
+ fun setRelativeBrushSize(relativeBrushSize: Boolean) {
+ mRelativeBrushSize = relativeBrushSize
+ setBrushSize(mCurrBrushSize)
+ }
+
fun getBitmap(): Bitmap {
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index cf4c0c7c..b0f776dc 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -146,6 +146,21 @@
+
+
+
+
+
+
Show brush size tool
Allow zooming and moving the canvas with gestures
+ Use a relative (to zoom) brush size
Clear
Change background color