Skip to content

Commit

Permalink
Merge pull request #53 from anyongjin/master
Browse files Browse the repository at this point in the history
Allow user set align origin point for text/image, to make the watermark absulote centered
  • Loading branch information
huangyz0918 authored May 10, 2024
2 parents 21d4a23 + 451091a commit 6c52a8e
Show file tree
Hide file tree
Showing 31 changed files with 343 additions and 206 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
**/.cxx

# Built application files
*.apk
*.ap_
Expand Down
6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 29 additions & 3 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 0 additions & 12 deletions .idea/runConfigurations.xml

This file was deleted.

1 change: 1 addition & 0 deletions README-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ implementation 'com.huangyz0918:androidwm-light:0.1.2'
WatermarkText watermarkText = new WatermarkText(editText)
.setPositionX(0.5)
.setPositionY(0.5)
.setOrigin(new WatermarkPosition(0.5, 0.5))
.setTextColor(Color.WHITE)
.setTextFont(R.font.champagne)
.setTextShadow(0.1f, 5, 5, Color.BLUE)
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ After downloading the library and adding it into your project, You can create a
WatermarkText watermarkText = new WatermarkText(inputText)
.setPositionX(0.5)
.setPositionY(0.5)
.setOrigin(new WatermarkPosition(0.5, 0.5))
.setTextColor(Color.WHITE)
.setTextFont(R.font.champagne)
.setTextShadow(0.1f, 5, 5, Color.BLUE)
Expand Down
2 changes: 1 addition & 1 deletion androidwm/android-release-aar.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,6 @@ artifacts {
archives sourcesJar
}

task findConventions << {
task findConventions {
println project.getConvention()
}
12 changes: 6 additions & 6 deletions androidwm/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

android {
compileSdkVersion 28
compileSdkVersion 31

defaultConfig {
minSdkVersion 15
targetSdkVersion 28
targetSdkVersion 31
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

externalNativeBuild {
cmake {
Expand Down Expand Up @@ -48,10 +48,10 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'com.android.support:appcompat-v7:28.+'
implementation 'androidx.appcompat:appcompat:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
implementation 'com.jakewharton.timber:timber:4.7.1'
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.watermark.androidwm;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -19,7 +19,7 @@ public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();

assertEquals("com.androidwm.watermark.androidwm.test", appContext.getPackageName());
}
Expand Down
26 changes: 16 additions & 10 deletions androidwm/src/main/java/com/watermark/androidwm/Watermark.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Shader;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.widget.ImageView;

import com.watermark.androidwm.bean.AsyncTaskParams;
import com.watermark.androidwm.bean.WatermarkImage;
import com.watermark.androidwm.bean.WatermarkObject;
import com.watermark.androidwm.bean.WatermarkPosition;
import com.watermark.androidwm.bean.WatermarkText;
import com.watermark.androidwm.listener.BuildFinishListener;
import com.watermark.androidwm.task.FDWatermarkTask;
Expand Down Expand Up @@ -145,10 +147,7 @@ private void createWatermarkImage(WatermarkImage watermarkImg) {
Rect bitmapShaderRect = watermarkCanvas.getClipBounds();
watermarkCanvas.drawRect(bitmapShaderRect, watermarkPaint);
} else {
watermarkCanvas.drawBitmap(scaledWMBitmap,
(float) watermarkImg.getPosition().getPositionX() * backgroundImg.getWidth(),
(float) watermarkImg.getPosition().getPositionY() * backgroundImg.getHeight(),
watermarkPaint);
drawObjWithAlignPosition(watermarkImg, scaledWMBitmap, watermarkCanvas, watermarkPaint);
}

canvasBitmap = newBitmap;
Expand All @@ -159,6 +158,16 @@ private void createWatermarkImage(WatermarkImage watermarkImg) {

}

private void drawObjWithAlignPosition(WatermarkObject obj, Bitmap mark, Canvas canvas, Paint paint){
WatermarkPosition objOrg = obj.getOrigin();
double originX = mark.getWidth() * objOrg.getPositionX();
double originY = mark.getHeight() * objOrg.getPositionY();
WatermarkPosition objPos = obj.getPosition();
double posX = objPos.getPositionX() * backgroundImg.getWidth() - originX;
double posY = objPos.getPositionY() * backgroundImg.getHeight() - originY;
canvas.drawBitmap(mark, (float) posX, (float)posY, paint);
}

/**
* Creating the composite image with {@link WatermarkImage}.
* The input of the method is a set of {@link WatermarkImage}s.
Expand Down Expand Up @@ -206,10 +215,7 @@ private void createWatermarkText(WatermarkText watermarkText) {
Rect bitmapShaderRect = watermarkCanvas.getClipBounds();
watermarkCanvas.drawRect(bitmapShaderRect, watermarkPaint);
} else {
watermarkCanvas.drawBitmap(scaledWMBitmap,
(float) watermarkText.getPosition().getPositionX() * backgroundImg.getWidth(),
(float) watermarkText.getPosition().getPositionY() * backgroundImg.getHeight(),
watermarkPaint);
drawObjWithAlignPosition(watermarkText, scaledWMBitmap, watermarkCanvas, watermarkPaint);
}

canvasBitmap = newBitmap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import android.widget.ImageView;

import com.watermark.androidwm.bean.WatermarkImage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.support.annotation.NonNull;
import androidx.annotation.NonNull;
import android.widget.ImageView;

import com.watermark.androidwm.listener.DetectFinishListener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.support.annotation.DrawableRes;
import android.support.annotation.FloatRange;
import androidx.annotation.DrawableRes;
import androidx.annotation.FloatRange;
import android.widget.ImageView;

import static com.watermark.androidwm.utils.BitmapUtils.resizeBitmap;
Expand All @@ -33,15 +33,12 @@
* @author huangyz0918 (huangyz0918@gmail.com)
* @since 29/08/2018
*/
public class WatermarkImage {
public class WatermarkImage extends WatermarkObject<WatermarkImage> {
private Bitmap image;
@DrawableRes
private int imageDrawable;
private int alpha = 50;
private Context context;
private double size = 0.2;
// set the default values for the position.
private WatermarkPosition position = new WatermarkPosition(0, 0, 0);

/**
* Constructors for WatermarkImage.
Expand All @@ -59,6 +56,14 @@ public WatermarkImage(Context context, @DrawableRes int imageDrawable, Watermark
this.image = getBitmapFromDrawable(imageDrawable);
}

public WatermarkImage(Context context, @DrawableRes int imageDrawable, WatermarkPosition position, WatermarkPosition origin) {
this.imageDrawable = imageDrawable;
this.position = position;
this.origin = origin;
this.context = context;
this.image = getBitmapFromDrawable(imageDrawable);
}

public WatermarkImage(Context context, @DrawableRes int imageDrawable) {
this.imageDrawable = imageDrawable;
this.context = context;
Expand All @@ -85,15 +90,6 @@ public int getAlpha() {
return alpha;
}

public WatermarkPosition getPosition() {
return position;
}

public WatermarkImage setPosition(WatermarkPosition position) {
this.position = position;
return this;
}

public double getSize() {
return size;
}
Expand All @@ -116,21 +112,6 @@ public WatermarkImage setImageDrawable(@DrawableRes int imageDrawable) {
return this;
}

public WatermarkImage setPositionX(@FloatRange(from = 0, to = 1) double x) {
this.position.setPositionX(x);
return this;
}

public WatermarkImage setPositionY(@FloatRange(from = 0, to = 1) double y) {
this.position.setPositionY(y);
return this;
}

public WatermarkImage setRotation(double rotation) {
this.position.setRotation(rotation);
return this;
}

/**
* @param imageAlpha can be set to 0-255.
*/
Expand Down
Loading

0 comments on commit 6c52a8e

Please sign in to comment.