mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 16:49:40 +01:00
Add text styles support to image editor.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
This commit is contained in:
committed by
Greyson Parrelli
parent
05f7dce503
commit
715ad0d459
@@ -1,7 +1,5 @@
|
||||
package org.thoughtcrime.securesms.scribbles;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
@@ -14,7 +12,6 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
@@ -71,6 +68,8 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
public final class ImageEditorFragment extends Fragment implements ImageEditorHudV2.EventListener,
|
||||
MediaSendPageFragment,
|
||||
TextEntryDialogFragment.Controller
|
||||
@@ -351,6 +350,13 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
|
||||
imageEditorView.zoomToFitText(editorElement, textRenderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextStyleToggle() {
|
||||
if (currentSelection != null && currentSelection.getRenderer() instanceof MultiLineTextRenderer) {
|
||||
((MultiLineTextRenderer) currentSelection.getRenderer()).nextMode();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextEntryDialogDismissed(boolean hasText) {
|
||||
imageEditorView.doneTextEditing();
|
||||
@@ -366,7 +372,7 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
|
||||
protected void addText() {
|
||||
String initialText = "";
|
||||
int color = imageEditorHud.getActiveColor();
|
||||
MultiLineTextRenderer renderer = new MultiLineTextRenderer(initialText, color);
|
||||
MultiLineTextRenderer renderer = new MultiLineTextRenderer(initialText, color, MultiLineTextRenderer.Mode.REGULAR);
|
||||
EditorElement element = new EditorElement(renderer, EditorModel.Z_TEXT);
|
||||
|
||||
imageEditorView.getModel().addElementCentered(element, 1);
|
||||
|
||||
@@ -64,6 +64,7 @@ class ImageEditorHudV2 @JvmOverloads constructor(
|
||||
private val colorIndicator: ImageView = findViewById(R.id.image_editor_hud_color_indicator)
|
||||
private val bottomGuideline: Guideline = findViewById(R.id.image_editor_bottom_guide)
|
||||
private val brushPreview: BrushWidthPreviewView = findViewById(R.id.image_editor_hud_brush_preview)
|
||||
private val textStyleToggle: ImageView = findViewById(R.id.image_editor_hud_text_style_button)
|
||||
|
||||
private val selectableSet: Set<View> = setOf(drawButton, textButton, stickerButton, blurButton)
|
||||
|
||||
@@ -73,7 +74,7 @@ class ImageEditorHudV2 @JvmOverloads constructor(
|
||||
private val drawButtonRow: Set<View> = setOf(cancelButton, doneButton, drawButton, textButton, stickerButton, blurButton)
|
||||
private val cropButtonRow: Set<View> = setOf(cancelButton, doneButton, cropRotateButton, cropFlipButton, cropAspectLockButton)
|
||||
|
||||
private val allModeTools: Set<View> = drawTools + blurTools + drawButtonRow + cropButtonRow
|
||||
private val allModeTools: Set<View> = drawTools + blurTools + drawButtonRow + cropButtonRow + textStyleToggle
|
||||
|
||||
private val viewsToSlide: Set<View> = drawButtonRow + cropButtonRow
|
||||
|
||||
@@ -93,6 +94,7 @@ class ImageEditorHudV2 @JvmOverloads constructor(
|
||||
clearAllButton.setOnClickListener { listener?.onClearAll() }
|
||||
cancelButton.setOnClickListener { listener?.onCancel() }
|
||||
|
||||
textStyleToggle.setOnClickListener { listener?.onTextStyleToggle() }
|
||||
drawButton.setOnClickListener { setMode(Mode.DRAW) }
|
||||
blurButton.setOnClickListener { setMode(Mode.BLUR) }
|
||||
textButton.setOnClickListener { setMode(Mode.TEXT) }
|
||||
@@ -370,7 +372,7 @@ class ImageEditorHudV2 @JvmOverloads constructor(
|
||||
|
||||
private fun presentModeText() {
|
||||
animateModeChange(
|
||||
inSet = drawButtonRow + setOf(drawSeekBar),
|
||||
inSet = drawButtonRow + setOf(drawSeekBar, textStyleToggle),
|
||||
outSet = allModeTools
|
||||
)
|
||||
animateInUndoTools()
|
||||
@@ -520,6 +522,7 @@ class ImageEditorHudV2 @JvmOverloads constructor(
|
||||
fun onFlipHorizontal()
|
||||
fun onRotate90AntiClockwise()
|
||||
fun onCropAspectLock()
|
||||
fun onTextStyleToggle()
|
||||
val isCropAspectLocked: Boolean
|
||||
|
||||
fun onRequestFullScreen(fullScreen: Boolean, hideKeyboard: Boolean)
|
||||
|
||||
@@ -61,6 +61,7 @@ class TextEntryDialogFragment : KeyboardEntryDialogFragment(R.layout.v2_media_im
|
||||
|
||||
val slider: AppCompatSeekBar = view.findViewById(R.id.image_editor_hud_draw_color_bar)
|
||||
val colorIndicator: ImageView = view.findViewById(R.id.image_editor_hud_color_indicator)
|
||||
val styleToggle: ImageView = view.findViewById(R.id.image_editor_hud_text_style_button)
|
||||
slider.setUpForColor(
|
||||
Color.WHITE,
|
||||
{
|
||||
@@ -83,6 +84,10 @@ class TextEntryDialogFragment : KeyboardEntryDialogFragment(R.layout.v2_media_im
|
||||
)
|
||||
|
||||
slider.progress = requireArguments().getInt("color_index")
|
||||
|
||||
styleToggle.setOnClickListener {
|
||||
(element.renderer as MultiLineTextRenderer).nextMode()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
|
||||
Reference in New Issue
Block a user