kopia lustrzana https://github.com/ryukoposting/Signal-Android
Initial modularization of core image editor code.
rodzic
5d5251054c
commit
95fabd7ed1
|
@ -453,6 +453,7 @@ dependencies {
|
|||
implementation project(':core-util')
|
||||
implementation project(':video')
|
||||
implementation project(':device-transfer')
|
||||
implementation project(':image-editor')
|
||||
|
||||
implementation 'org.signal:zkgroup-android:0.7.0'
|
||||
implementation "org.whispersystems:signal-client-android:${LIBSIGNAL_CLIENT_VERSION}"
|
||||
|
|
|
@ -16,7 +16,7 @@ import androidx.fragment.app.FragmentTransaction;
|
|||
import androidx.lifecycle.LiveData;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.mediasend.v2.gallery.MediaGalleryFragment;
|
||||
import org.thoughtcrime.securesms.mms.MediaConstraints;
|
||||
import org.thoughtcrime.securesms.profiles.AvatarHelper;
|
||||
|
|
|
@ -11,7 +11,7 @@ import androidx.annotation.WorkerThread;
|
|||
|
||||
import org.signal.core.util.StreamUtil;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.providers.BlobProvider;
|
||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||
import org.whispersystems.libsignal.util.guava.Optional;
|
||||
|
|
|
@ -9,11 +9,11 @@ import io.reactivex.rxjava3.core.Single
|
|||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import org.signal.core.util.ThreadUtil
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.imageeditor.core.model.EditorModel
|
||||
import org.thoughtcrime.securesms.TransportOption
|
||||
import org.thoughtcrime.securesms.database.AttachmentDatabase.TransformProperties
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase
|
||||
import org.thoughtcrime.securesms.database.model.Mention
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel
|
||||
import org.thoughtcrime.securesms.mediasend.CompositeMediaTransform
|
||||
import org.thoughtcrime.securesms.mediasend.ImageEditorModelRenderMediaTransform
|
||||
import org.thoughtcrime.securesms.mediasend.Media
|
||||
|
|
|
@ -11,7 +11,7 @@ import android.util.AttributeSet
|
|||
import android.view.View
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.core.animation.doOnEnd
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds
|
||||
import org.signal.imageeditor.core.Bounds
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaAnimations
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
import org.thoughtcrime.securesms.util.visible
|
||||
|
|
|
@ -34,16 +34,16 @@ import org.signal.core.util.logging.Log;
|
|||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.animation.ResizeAnimation;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.ColorableRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.ImageEditorView;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.SelectableRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.BezierDrawingRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.FaceBlurRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.MultiLineTextRenderer;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.ColorableRenderer;
|
||||
import org.signal.imageeditor.core.ImageEditorView;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.SelectableRenderer;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.signal.imageeditor.core.renderers.BezierDrawingRenderer;
|
||||
import org.signal.imageeditor.core.renderers.FaceBlurRenderer;
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.mediasend.MediaSendPageFragment;
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaAnimations;
|
||||
|
|
|
@ -11,11 +11,11 @@ import android.widget.ImageView
|
|||
import androidx.appcompat.widget.AppCompatSeekBar
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.airbnb.lottie.SimpleColorFilter
|
||||
import org.signal.imageeditor.core.HiddenEditText
|
||||
import org.signal.imageeditor.core.model.EditorElement
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.KeyboardEntryDialogFragment
|
||||
import org.thoughtcrime.securesms.imageeditor.HiddenEditText
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.MultiLineTextRenderer
|
||||
import org.thoughtcrime.securesms.keyboard.findListener
|
||||
import org.thoughtcrime.securesms.scribbles.HSVColorSlider.getColor
|
||||
import org.thoughtcrime.securesms.scribbles.HSVColorSlider.setUpForColor
|
||||
|
|
|
@ -24,13 +24,13 @@ import com.bumptech.glide.request.target.CustomTarget;
|
|||
import com.bumptech.glide.request.transition.Transition;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.thoughtcrime.securesms.imageeditor.SelectableRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.SelectedElementGuideRenderer;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
import org.signal.imageeditor.core.SelectableRenderer;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.signal.imageeditor.core.renderers.SelectedElementGuideRenderer;
|
||||
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.mms.GlideRequest;
|
||||
|
|
|
@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.wallpaper.crop;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
|
@ -27,10 +26,10 @@ import org.signal.core.util.logging.Log;
|
|||
import org.thoughtcrime.securesms.BaseActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.conversation.colors.ColorizerView;
|
||||
import org.thoughtcrime.securesms.imageeditor.ImageEditorView;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.FaceBlurRenderer;
|
||||
import org.signal.imageeditor.core.ImageEditorView;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.signal.imageeditor.core.renderers.FaceBlurRenderer;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.scribbles.UriGlideRenderer;
|
||||
import org.thoughtcrime.securesms.util.AsynchronousCallback;
|
||||
|
|
|
@ -15,7 +15,7 @@ import androidx.lifecycle.ViewModelProvider;
|
|||
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.util.AsynchronousCallback;
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
android:orientation="horizontal"
|
||||
tools:layout_constraintGuide_end="48dp" />
|
||||
|
||||
<org.thoughtcrime.securesms.imageeditor.ImageEditorView
|
||||
<org.signal.imageeditor.core.ImageEditorView
|
||||
android:id="@+id/image_editor"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<org.thoughtcrime.securesms.imageeditor.ImageEditorView
|
||||
<org.signal.imageeditor.core.ImageEditorView
|
||||
android:id="@+id/image_editor_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
package org.signal.core.util;
|
||||
|
||||
import android.content.res.Resources;
|
||||
|
||||
import androidx.annotation.Dimension;
|
||||
import androidx.annotation.Px;
|
||||
|
||||
/**
|
||||
* Core utility for converting different dimensional values.
|
||||
*/
|
||||
public enum DimensionUnit {
|
||||
PIXELS {
|
||||
@Override
|
||||
@Px
|
||||
public float toPixels(@Px float pixels) {
|
||||
return pixels;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Dimension(unit = Dimension.DP)
|
||||
public float toDp(@Px float pixels) {
|
||||
return pixels / Resources.getSystem().getDisplayMetrics().density;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Dimension(unit = Dimension.SP)
|
||||
public float toSp(@Px float pixels) {
|
||||
return pixels / Resources.getSystem().getDisplayMetrics().scaledDensity;
|
||||
}
|
||||
},
|
||||
DP {
|
||||
@Override
|
||||
@Px
|
||||
public float toPixels(@Dimension(unit = Dimension.DP) float dp) {
|
||||
return dp * Resources.getSystem().getDisplayMetrics().density;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Dimension(unit = Dimension.DP)
|
||||
public float toDp(@Dimension(unit = Dimension.DP) float dp) {
|
||||
return dp;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Dimension(unit = Dimension.SP)
|
||||
public float toSp(@Dimension(unit = Dimension.DP) float dp) {
|
||||
return PIXELS.toSp(toPixels(dp));
|
||||
}
|
||||
},
|
||||
SP {
|
||||
@Override
|
||||
@Px
|
||||
public float toPixels(@Dimension(unit = Dimension.SP) float sp) {
|
||||
return sp * Resources.getSystem().getDisplayMetrics().scaledDensity;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Dimension(unit = Dimension.DP)
|
||||
public float toDp(@Dimension(unit = Dimension.SP) float sp) {
|
||||
return PIXELS.toDp(toPixels(sp));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Dimension(unit = Dimension.SP)
|
||||
public float toSp(@Dimension(unit = Dimension.SP) float sp) {
|
||||
return sp;
|
||||
}
|
||||
};
|
||||
|
||||
public abstract float toPixels(float value);
|
||||
public abstract float toDp(float value);
|
||||
public abstract float toSp(float value);
|
||||
}
|
|
@ -4,6 +4,6 @@
|
|||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/core_white"
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M22,4.5L16.35,4.5a4.45,4.45 0,0 0,-8.7 0L2,4.5L2,6L3.5,6L4.86,20A2.25,2.25 0,0 0,7.1 22h9.8a2.25,2.25 0,0 0,2.24 -2L20.5,6L22,6ZM12,2.5a3,3 0,0 1,2.82 2L9.18,4.5A3,3 0,0 1,12 2.5ZM17.65,19.83a0.76,0.76 0,0 1,-0.75 0.67L7.1,20.5a0.76,0.76 0,0 1,-0.75 -0.67L5,6L19,6ZM11.25,18L11.25,8h1.5L12.75,18ZM14.5,18L15,8h1.5L16,18ZM8,18 L7.5,8L9,8l0.5,10Z"/>
|
||||
</vector>
|
|
@ -0,0 +1 @@
|
|||
/build
|
|
@ -0,0 +1,47 @@
|
|||
plugins {
|
||||
id 'com.android.library'
|
||||
id 'witness'
|
||||
id 'kotlin-android'
|
||||
id 'kotlin-kapt'
|
||||
}
|
||||
|
||||
apply from: 'witness-verifications.gradle'
|
||||
|
||||
android {
|
||||
buildToolsVersion BUILD_TOOL_VERSION
|
||||
compileSdkVersion COMPILE_SDK
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion MINIMUM_SDK
|
||||
targetSdkVersion TARGET_SDK
|
||||
multiDexEnabled true
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JAVA_VERSION
|
||||
targetCompatibility JAVA_VERSION
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
}
|
||||
|
||||
dependencyVerification {
|
||||
configuration = '(debug|release)RuntimeClasspath'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
lintChecks project(':lintchecks')
|
||||
|
||||
implementation project(':core-util')
|
||||
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
|
||||
implementation 'androidx.core:core-ktx:1.5.0'
|
||||
implementation 'androidx.annotation:annotation:1.2.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
|
||||
kapt 'androidx.annotation:annotation:1.2.0'
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.signal.imageeditor">
|
||||
|
||||
</manifest>
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.RectF;
|
||||
|
@ -6,9 +6,11 @@ import android.graphics.RectF;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
/**
|
||||
* The local extent of a {@link org.thoughtcrime.securesms.imageeditor.model.EditorElement}.
|
||||
* i.e. all {@link org.thoughtcrime.securesms.imageeditor.model.EditorElement}s have a bounding rectangle from:
|
||||
* The local extent of a {@link EditorElement}.
|
||||
* i.e. all {@link EditorElement}s have a bounding rectangle from:
|
||||
* <p>
|
||||
* {@link #LEFT} to {@link #RIGHT} and from {@link #TOP} to {@link #BOTTOM}.
|
||||
*/
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Matrix;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import androidx.annotation.ColorInt;
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.BezierDrawingRenderer;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.renderers.BezierDrawingRenderer;
|
||||
|
||||
/**
|
||||
* Passes touch events into a {@link BezierDrawingRenderer}.
|
|
@ -1,11 +1,11 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
/**
|
||||
* Represents an underway edit of the image.
|
|
@ -1,11 +1,11 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
final class ElementDragEditSession extends ElementEditSession {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
abstract class ElementEditSession implements EditSession {
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
final class ElementScaleEditSession extends ElementEditSession {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
@ -14,8 +14,8 @@ import android.widget.FrameLayout;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.MultiLineTextRenderer;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer;
|
||||
|
||||
/**
|
||||
* Invisible {@link android.widget.EditText} that is used during in-image text editing.
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -17,12 +17,12 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.core.view.GestureDetectorCompat;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorModel;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.ThumbRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.BezierDrawingRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.MultiLineTextRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.TrashRenderer;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorModel;
|
||||
import org.signal.imageeditor.core.model.ThumbRenderer;
|
||||
import org.signal.imageeditor.core.renderers.BezierDrawingRenderer;
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer;
|
||||
import org.signal.imageeditor.core.renderers.TrashRenderer;
|
||||
|
||||
/**
|
||||
* ImageEditorView
|
|
@ -1,11 +1,13 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
/**
|
||||
* Responsible for rendering a single {@link org.thoughtcrime.securesms.imageeditor.model.EditorElement} to the canvas.
|
||||
* Responsible for rendering a single {@link EditorElement} to the canvas.
|
||||
* <p>
|
||||
* Because it knows the most about the whereabouts of the image it is also responsible for hit detection.
|
||||
*/
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -10,7 +10,7 @@ import android.graphics.RectF;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor
|
||||
package org.signal.imageeditor.core
|
||||
|
||||
/**
|
||||
* Renderer that can maintain a "selected" state
|
|
@ -1,12 +1,12 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.model.EditorElement;
|
||||
import org.thoughtcrime.securesms.imageeditor.model.ThumbRenderer;
|
||||
import org.signal.imageeditor.core.model.EditorElement;
|
||||
import org.signal.imageeditor.core.model.ThumbRenderer;
|
||||
|
||||
class ThumbDragEditSession extends ElementEditSession {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor;
|
||||
package org.signal.imageeditor.core;
|
||||
|
||||
public interface UndoRedoStackListener {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.view.animation.Interpolator;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.graphics.Matrix;
|
||||
|
@ -9,7 +9,7 @@ import android.view.animation.Interpolator;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.CanvasMatrix;
|
||||
import org.signal.imageeditor.core.CanvasMatrix;
|
||||
|
||||
/**
|
||||
* Animation Matrix provides a matrix that animates over time down to the identity matrix.
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.os.Parcel;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.R;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.os.Parcel;
|
||||
|
@ -7,8 +7,8 @@ import android.os.Parcelable;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Point;
|
||||
|
@ -8,13 +8,13 @@ import android.graphics.RectF;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.CropAreaRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.FillRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.InverseFillRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.OvalGuideRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.TrashRenderer;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.R;
|
||||
import org.signal.imageeditor.core.renderers.CropAreaRenderer;
|
||||
import org.signal.imageeditor.core.renderers.FillRenderer;
|
||||
import org.signal.imageeditor.core.renderers.InverseFillRenderer;
|
||||
import org.signal.imageeditor.core.renderers.OvalGuideRenderer;
|
||||
import org.signal.imageeditor.core.renderers.TrashRenderer;
|
||||
|
||||
/**
|
||||
* Creates and handles a strict EditorElement Hierarchy.
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
|
@ -14,13 +14,13 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.WorkerThread;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.ColorableRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.thoughtcrime.securesms.imageeditor.UndoRedoStackListener;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.FaceBlurRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.renderers.MultiLineTextRenderer;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.ColorableRenderer;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
import org.signal.imageeditor.core.UndoRedoStackListener;
|
||||
import org.signal.imageeditor.core.renderers.FaceBlurRenderer;
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.RectF;
|
|
@ -1,7 +1,7 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.model;
|
||||
package org.signal.imageeditor.core.model;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
|
@ -9,8 +9,8 @@ import android.os.Parcel;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.ColorableRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.core.ColorableRenderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
/**
|
||||
* Renders a {@link AutomaticControlPointBezierLine} with {@link #thickness}, {@link #color} and {@link #cap} end type.
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -11,10 +11,10 @@ import androidx.annotation.ColorRes;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.R;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
/**
|
||||
* Renders a box outside of the current crop area using {@link R.color#crop_area_renderer_outer_color}
|
|
@ -1,12 +1,12 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.os.Parcel;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
/**
|
||||
* A rectangle that will be rendered on the blur mask layer. Intended for blurring faces.
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.graphics.Path;
|
||||
import android.graphics.RectF;
|
||||
|
@ -7,10 +7,10 @@ import android.os.Parcel;
|
|||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.signal.core.util.DimensionUnit;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
/**
|
||||
* Renders the {@link color} outside of the {@link Bounds}.
|
||||
|
@ -32,7 +32,7 @@ public final class FillRenderer implements Renderer {
|
|||
rendererContext.canvasMatrix.setToIdentity();
|
||||
|
||||
path.reset();
|
||||
path.addRoundRect(dst, ViewUtil.dpToPx(18), ViewUtil.dpToPx(18), Path.Direction.CW);
|
||||
path.addRoundRect(dst, DimensionUnit.DP.toPixels(18), DimensionUnit.DP.toPixels(18), Path.Direction.CW);
|
||||
|
||||
rendererContext.canvas.clipPath(path);
|
||||
rendererContext.canvas.drawColor(color);
|
|
@ -1,9 +1,9 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.graphics.Path;
|
||||
import android.graphics.RectF;
|
||||
|
@ -7,10 +7,10 @@ import android.os.Parcel;
|
|||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.signal.core.util.DimensionUnit;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
/**
|
||||
* Renders the {@link color} outside of the {@link Bounds}.
|
||||
|
@ -32,7 +32,7 @@ public final class InverseFillRenderer implements Renderer {
|
|||
rendererContext.canvasMatrix.setToIdentity();
|
||||
|
||||
path.reset();
|
||||
path.addRoundRect(dst, ViewUtil.dpToPx(18), ViewUtil.dpToPx(18), Path.Direction.CW);
|
||||
path.addRoundRect(dst, DimensionUnit.DP.toPixels(18), DimensionUnit.DP.toPixels(18), Path.Direction.CW);
|
||||
|
||||
rendererContext.canvas.clipPath(path);
|
||||
rendererContext.canvas.drawColor(color);
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.graphics.Color;
|
||||
|
@ -15,11 +15,11 @@ import androidx.annotation.ColorInt;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.ColorableRenderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.thoughtcrime.securesms.imageeditor.SelectableRenderer;
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
import org.signal.core.util.DimensionUnit;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.ColorableRenderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
import org.signal.imageeditor.core.SelectableRenderer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -33,11 +33,11 @@ import static java.util.Collections.emptyList;
|
|||
*/
|
||||
public final class MultiLineTextRenderer extends InvalidateableRenderer implements ColorableRenderer, SelectableRenderer {
|
||||
|
||||
private static final float HIT_PADDING = ViewUtil.dpToPx(30);
|
||||
private static final float HIGHLIGHT_HORIZONTAL_PADDING = ViewUtil.dpToPx(8);
|
||||
private static final float HIGHLIGHT_TOP_PADDING = ViewUtil.dpToPx(10);
|
||||
private static final float HIGHLIGHT_BOTTOM_PADDING = ViewUtil.dpToPx(6);
|
||||
private static final float HIGHLIGHT_CORNER_RADIUS = ViewUtil.dpToPx(4);
|
||||
private static final float HIT_PADDING = DimensionUnit.DP.toPixels(30);
|
||||
private static final float HIGHLIGHT_HORIZONTAL_PADDING = DimensionUnit.DP.toPixels(8);
|
||||
private static final float HIGHLIGHT_TOP_PADDING = DimensionUnit.DP.toPixels(10);
|
||||
private static final float HIGHLIGHT_BOTTOM_PADDING = DimensionUnit.DP.toPixels(6);
|
||||
private static final float HIGHLIGHT_CORNER_RADIUS = DimensionUnit.DP.toPixels(4);
|
||||
|
||||
@NonNull
|
||||
private String text = "";
|
||||
|
@ -334,12 +334,12 @@ public final class MultiLineTextRenderer extends InvalidateableRenderer implemen
|
|||
modePaint.setAlpha(alpha);
|
||||
} else if (mode == Mode.UNDERLINE) {
|
||||
modeBounds.set(textBounds.left, selectionBounds.top, textBounds.right, selectionBounds.bottom);
|
||||
modeBounds.inset(-ViewUtil.dpToPx(2), -ViewUtil.dpToPx(2));
|
||||
modeBounds.inset(-DimensionUnit.DP.toPixels(2), -DimensionUnit.DP.toPixels(2));
|
||||
|
||||
modeBounds.set(modeBounds.left,
|
||||
Math.max(modeBounds.top, modeBounds.bottom - ViewUtil.dpToPx(6)),
|
||||
Math.max(modeBounds.top, modeBounds.bottom - DimensionUnit.DP.toPixels(6)),
|
||||
modeBounds.right,
|
||||
modeBounds.bottom - ViewUtil.dpToPx(2));
|
||||
modeBounds.bottom - DimensionUnit.DP.toPixels(2));
|
||||
|
||||
int alpha = modePaint.getAlpha();
|
||||
modePaint.setAlpha(rendererContext.getAlpha(alpha));
|
||||
|
@ -469,7 +469,7 @@ public final class MultiLineTextRenderer extends InvalidateableRenderer implemen
|
|||
}
|
||||
|
||||
if (mode == Mode.OUTLINE) {
|
||||
modePaint.setStrokeWidth(ViewUtil.dpToPx(15) / 10f);
|
||||
modePaint.setStrokeWidth(DimensionUnit.DP.toPixels(15) / 10f);
|
||||
modePaint.setStyle(Paint.Style.STROKE);
|
||||
} else {
|
||||
modePaint.setStyle(Paint.Style.FILL);
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers;
|
||||
package org.signal.imageeditor.core.renderers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -10,10 +10,10 @@ import androidx.annotation.ColorRes;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds;
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer;
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext;
|
||||
import org.signal.imageeditor.R;
|
||||
import org.signal.imageeditor.core.Bounds;
|
||||
import org.signal.imageeditor.core.Renderer;
|
||||
import org.signal.imageeditor.core.RendererContext;
|
||||
|
||||
/**
|
||||
* Renders an oval inside of the {@link Bounds}.
|
|
@ -1,13 +1,13 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers
|
||||
package org.signal.imageeditor.core.renderers
|
||||
|
||||
import android.graphics.Color
|
||||
import android.graphics.DashPathEffect
|
||||
import android.graphics.Paint
|
||||
import android.graphics.Path
|
||||
import android.graphics.RectF
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.imageeditor.core.Bounds
|
||||
import org.signal.imageeditor.core.RendererContext
|
||||
|
||||
class SelectedElementGuideRenderer {
|
||||
|
||||
|
@ -23,11 +23,11 @@ class SelectedElementGuideRenderer {
|
|||
Bounds.LEFT, Bounds.BOTTOM
|
||||
)
|
||||
|
||||
private val circleRadius = ViewUtil.dpToPx(5).toFloat()
|
||||
private val circleRadius = DimensionUnit.DP.toPixels(5f)
|
||||
|
||||
private val guidePaint = Paint().apply {
|
||||
isAntiAlias = true
|
||||
strokeWidth = ViewUtil.dpToPx(15).toFloat() / 10f
|
||||
strokeWidth = DimensionUnit.DP.toPixels(1.5f)
|
||||
color = Color.WHITE
|
||||
style = Paint.Style.STROKE
|
||||
pathEffect = DashPathEffect(floatArrayOf(15f, 15f), 0f)
|
|
@ -1,4 +1,4 @@
|
|||
package org.thoughtcrime.securesms.imageeditor.renderers
|
||||
package org.signal.imageeditor.core.renderers
|
||||
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
|
@ -6,13 +6,14 @@ import android.graphics.RectF
|
|||
import android.graphics.drawable.Drawable
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
import android.view.animation.Interpolator
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.imageeditor.Bounds
|
||||
import org.thoughtcrime.securesms.imageeditor.Renderer
|
||||
import org.thoughtcrime.securesms.imageeditor.RendererContext
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaAnimations
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.imageeditor.R
|
||||
import org.signal.imageeditor.core.Bounds
|
||||
import org.signal.imageeditor.core.Renderer
|
||||
import org.signal.imageeditor.core.RendererContext
|
||||
|
||||
internal class TrashRenderer : InvalidateableRenderer, Renderer, Parcelable {
|
||||
|
||||
|
@ -20,7 +21,7 @@ internal class TrashRenderer : InvalidateableRenderer, Renderer, Parcelable {
|
|||
isAntiAlias = true
|
||||
color = Color.WHITE
|
||||
style = Paint.Style.STROKE
|
||||
strokeWidth = ViewUtil.dpToPx(15) / 10f
|
||||
strokeWidth = DimensionUnit.DP.toPixels(1.5f)
|
||||
}
|
||||
|
||||
private val shadePaint = Paint().apply {
|
||||
|
@ -31,10 +32,11 @@ internal class TrashRenderer : InvalidateableRenderer, Renderer, Parcelable {
|
|||
|
||||
private val bounds = RectF()
|
||||
|
||||
private val diameterSmall = ViewUtil.dpToPx(41)
|
||||
private val diameterLarge = ViewUtil.dpToPx(54)
|
||||
private val trashSize = ViewUtil.dpToPx(24)
|
||||
private val padBottom = ViewUtil.dpToPx(16)
|
||||
private val diameterSmall = DimensionUnit.DP.toPixels(41f)
|
||||
private val diameterLarge = DimensionUnit.DP.toPixels(54f)
|
||||
private val trashSize: Int = DimensionUnit.DP.toPixels(24f).toInt()
|
||||
private val padBottom = DimensionUnit.DP.toPixels(16f)
|
||||
private val interpolator: Interpolator = FastOutSlowInInterpolator()
|
||||
|
||||
private var startTime = 0L
|
||||
|
||||
|
@ -77,12 +79,12 @@ internal class TrashRenderer : InvalidateableRenderer, Renderer, Parcelable {
|
|||
private fun getInterpolatedDiameter(timeElapsed: Long): Float {
|
||||
return if (timeElapsed >= DURATION) {
|
||||
if (isExpanding) {
|
||||
diameterLarge.toFloat()
|
||||
diameterLarge
|
||||
} else {
|
||||
diameterSmall.toFloat()
|
||||
diameterSmall
|
||||
}
|
||||
} else {
|
||||
val interpolatedFraction = MediaAnimations.interpolator.getInterpolation(timeElapsed / DURATION.toFloat())
|
||||
val interpolatedFraction = interpolator.getInterpolation(timeElapsed / DURATION.toFloat())
|
||||
if (isExpanding) {
|
||||
interpolateFromFraction(interpolatedFraction)
|
||||
} else {
|
|
@ -0,0 +1,93 @@
|
|||
// Auto-generated, use ./gradlew calculateChecksums to regenerate
|
||||
|
||||
dependencyVerification {
|
||||
verify = [
|
||||
|
||||
['androidx.activity:activity:1.0.0',
|
||||
'd1bc9842455c2e534415d88c44df4d52413b478db9093a1ba36324f705f44c3d'],
|
||||
|
||||
['androidx.annotation:annotation:1.2.0',
|
||||
'9029262bddce116e6d02be499e4afdba21f24c239087b76b3b57d7e98b490a36'],
|
||||
|
||||
['androidx.appcompat:appcompat-resources:1.2.0',
|
||||
'c470297c03ff3de1c3d15dacf0be0cae63abc10b52f021dd07ae28daa3100fe5'],
|
||||
|
||||
['androidx.appcompat:appcompat:1.2.0',
|
||||
'3d2131a55a61a777322e2126e0018011efa6339e53b44153eb651b16020cca70'],
|
||||
|
||||
['androidx.arch.core:core-common:2.1.0',
|
||||
'fe1237bf029d063e7f29fe39aeaf73ef74c8b0a3658486fc29d3c54326653889'],
|
||||
|
||||
['androidx.arch.core:core-runtime:2.0.0',
|
||||
'87e65fc767c712b437649c7cee2431ebb4bed6daef82e501d4125b3ed3f65f8e'],
|
||||
|
||||
['androidx.collection:collection:1.1.0',
|
||||
'632a0e5407461de774409352940e292a291037724207a787820c77daf7d33b72'],
|
||||
|
||||
['androidx.core:core-ktx:1.5.0',
|
||||
'5964cfe7a4882da2a00fb6ca3d3a072d04139208186f7bc4b3cb66022764fc42'],
|
||||
|
||||
['androidx.core:core:1.5.0',
|
||||
'2b279712795689069cfb63e48b3ab63c32a5649bdda44c482eb8f81ca1a72161'],
|
||||
|
||||
['androidx.cursoradapter:cursoradapter:1.0.0',
|
||||
'a81c8fe78815fa47df5b749deb52727ad11f9397da58b16017f4eb2c11e28564'],
|
||||
|
||||
['androidx.customview:customview:1.0.0',
|
||||
'20e5b8f6526a34595a604f56718da81167c0b40a7a94a57daa355663f2594df2'],
|
||||
|
||||
['androidx.drawerlayout:drawerlayout:1.0.0',
|
||||
'9402442cdc5a43cf62fb14f8cf98c63342d4d9d9b805c8033c6cf7e802749ac1'],
|
||||
|
||||
['androidx.fragment:fragment:1.1.0',
|
||||
'a14c8b8f2153f128e800fbd266a6beab1c283982a29ec570d2cc05d307d81496'],
|
||||
|
||||
['androidx.interpolator:interpolator:1.0.0',
|
||||
'33193135a64fe21fa2c35eec6688f1a76e512606c0fc83dc1b689e37add7732a'],
|
||||
|
||||
['androidx.lifecycle:lifecycle-common:2.1.0',
|
||||
'76db6be533bd730fb361c2feb12a2c26d9952824746847da82601ef81f082643'],
|
||||
|
||||
['androidx.lifecycle:lifecycle-livedata-core:2.0.0',
|
||||
'fde334ec7e22744c0f5bfe7caf1a84c9d717327044400577bdf9bd921ec4f7bc'],
|
||||
|
||||
['androidx.lifecycle:lifecycle-livedata:2.0.0',
|
||||
'c82609ced8c498f0a701a30fb6771bb7480860daee84d82e0a81ee86edf7ba39'],
|
||||
|
||||
['androidx.lifecycle:lifecycle-runtime:2.1.0',
|
||||
'e5173897b965e870651e83d9d5af1742d3f532d58863223a390ce3a194c8312b'],
|
||||
|
||||
['androidx.lifecycle:lifecycle-viewmodel:2.1.0',
|
||||
'ba55fb7ac1b2828d5327cda8acf7085d990b2b4c43ef336caa67686249b8523d'],
|
||||
|
||||
['androidx.loader:loader:1.0.0',
|
||||
'11f735cb3b55c458d470bed9e25254375b518b4b1bad6926783a7026db0f5025'],
|
||||
|
||||
['androidx.savedstate:savedstate:1.0.0',
|
||||
'2510a5619c37579c9ce1a04574faaf323cd0ffe2fc4e20fa8f8f01e5bb402e83'],
|
||||
|
||||
['androidx.vectordrawable:vectordrawable-animated:1.1.0',
|
||||
'76da2c502371d9c38054df5e2b248d00da87809ed058f3363eae87ce5e2403f8'],
|
||||
|
||||
['androidx.vectordrawable:vectordrawable:1.1.0',
|
||||
'46fd633ac01b49b7fcabc263bf098c5a8b9e9a69774d234edcca04fb02df8e26'],
|
||||
|
||||
['androidx.versionedparcelable:versionedparcelable:1.1.1',
|
||||
'57e8d93260d18d5b9007c9eed3c64ad159de90c8609ebfc74a347cbd514535a4'],
|
||||
|
||||
['androidx.viewpager:viewpager:1.0.0',
|
||||
'147af4e14a1984010d8f155e5e19d781f03c1d70dfed02a8e0d18428b8fc8682'],
|
||||
|
||||
['com.google.protobuf:protobuf-javalite:3.10.0',
|
||||
'215a94dbe100130295906b531bb72a26965c7ac8fcd9a75bf8054a8ac2abf4b4'],
|
||||
|
||||
['org.jetbrains.kotlin:kotlin-stdlib-common:1.4.32',
|
||||
'e1ff6f55ee9e7591dcc633f7757bac25a7edb1cc7f738b37ec652f10f66a4145'],
|
||||
|
||||
['org.jetbrains.kotlin:kotlin-stdlib:1.4.32',
|
||||
'13e9fd3e69dc7230ce0fc873a92a4e5d521d179bcf1bef75a6705baac3bfecba'],
|
||||
|
||||
['org.jetbrains:annotations:13.0',
|
||||
'ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478'],
|
||||
]
|
||||
}
|
|
@ -7,6 +7,7 @@ include ':core-util'
|
|||
include ':video'
|
||||
include ':device-transfer'
|
||||
include ':device-transfer-app'
|
||||
include ':image-editor'
|
||||
|
||||
project(':app').name = 'Signal-Android'
|
||||
project(':paging').projectDir = file('paging/lib')
|
||||
|
@ -17,4 +18,6 @@ project(':device-transfer-app').projectDir = file('device-transfer/app')
|
|||
|
||||
project(':libsignal-service').projectDir = file('libsignal/service')
|
||||
|
||||
project(':image-editor').projectDir = file('image-editor/lib')
|
||||
|
||||
rootProject.name='Signal'
|
||||
|
|
Ładowanie…
Reference in New Issue