@@ -30,6 +30,7 @@ import me.rosuh.easywatermark.data.repo.TemplateRepository
3030import me.rosuh.easywatermark.data.repo.UserConfigRepository
3131import me.rosuh.easywatermark.data.repo.WaterMarkRepository
3232import me.rosuh.easywatermark.ui.widget.WaterMarkImageView
33+ import me.rosuh.easywatermark.ui.widget.utils.WaterMarkShader
3334import me.rosuh.easywatermark.utils.FileUtils.Companion.outPutFolderName
3435import me.rosuh.easywatermark.utils.bitmap.calculateInSampleSize
3536import me.rosuh.easywatermark.utils.bitmap.decodeBitmapFromUri
@@ -257,14 +258,14 @@ class MainViewModel @Inject constructor(
257258 imageInfo.scaleY = 1 / matrixValues[Matrix .MSCALE_X ]
258259 val bitmapPaint = TextPaint ().applyConfig(imageInfo, tmpConfig, isScale = false )
259260 val layoutPaint = Paint ()
260- layoutPaint. shader = when (waterMark.value?.markMode) {
261+ val shader = when (waterMark.value?.markMode) {
261262 WaterMarkRepository .MarkMode .Text -> {
262263 WaterMarkImageView .buildTextBitmapShader(
263264 imageInfo,
264265 waterMark.value!! ,
265266 bitmapPaint,
266267 Dispatchers .IO
267- )?.bitmapShader
268+ )
268269 }
269270 WaterMarkRepository .MarkMode .Image -> {
270271 val iconBitmapRect = decodeSampledBitmapFromResource(
@@ -288,7 +289,7 @@ class MainViewModel @Inject constructor(
288289 bitmapPaint,
289290 scale = true ,
290291 Dispatchers .IO
291- )?.bitmapShader
292+ )
292293 }
293294 null -> return @withContext Result .failure(
294295 null ,
@@ -297,16 +298,29 @@ class MainViewModel @Inject constructor(
297298 )
298299 }
299300
301+ layoutPaint.shader = shader?.bitmapShader
302+
300303 if (imageInfo.obtainTileMode() == Shader .TileMode .CLAMP ) {
301304 canvas.translate(
302305 0 + imageInfo.offsetX * mutableBitmap.width,
303306 0 + imageInfo.offsetY * mutableBitmap.height
304307 )
308+ canvas.drawRect(
309+ 0f ,
310+ 0f ,
311+ (shader?.width ? : 0 ).toFloat(),
312+ (shader?.height ? : 0 ).toFloat(),
313+ layoutPaint
314+ )
315+ } else {
316+ canvas.drawRect(
317+ 0f ,
318+ 0f ,
319+ mutableBitmap.width.toFloat(),
320+ mutableBitmap.height.toFloat(),
321+ layoutPaint
322+ )
305323 }
306- canvas.drawRect(
307- 0f , 0f ,
308- mutableBitmap.width.toFloat(), mutableBitmap.height.toFloat(), layoutPaint
309- )
310324
311325 return @withContext if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .Q ) {
312326 val imageCollection =
0 commit comments