add option to toggle text layer visibility on debug builds
This is to ease debugging text layer on debug builds.
This commit is contained in:
parent
d445c48f3c
commit
ae1c0874ce
@ -1,3 +1,8 @@
|
||||
:root {
|
||||
--text-layer-opacity: 0.2;
|
||||
--text-layer-foreground: transparent;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
}
|
||||
@ -34,13 +39,13 @@ canvas, .textLayer {
|
||||
.textLayer {
|
||||
text-align: initial;
|
||||
overflow: hidden;
|
||||
opacity: 0.2;
|
||||
opacity: var(--text-layer-opacity);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.textLayer span,
|
||||
.textLayer br {
|
||||
color: transparent;
|
||||
color: var(--text-layer-foreground);
|
||||
position: absolute;
|
||||
white-space: pre;
|
||||
cursor: text;
|
||||
|
@ -20,6 +20,8 @@ let useRender;
|
||||
const cache = [];
|
||||
const maxCached = 6;
|
||||
|
||||
let isTextLayerVisible = false;
|
||||
|
||||
function maybeRenderNextPage() {
|
||||
if (renderPending) {
|
||||
pageRendering = false;
|
||||
@ -209,6 +211,18 @@ function isTextSelected() {
|
||||
return window.getSelection().toString() !== "";
|
||||
}
|
||||
|
||||
function toggleTextLayerVisibility() {
|
||||
let textLayerForeground = "red";
|
||||
let textLayerOpacity = 1;
|
||||
if (isTextLayerVisible) {
|
||||
textLayerForeground = "transparent";
|
||||
textLayerOpacity = 0.2;
|
||||
}
|
||||
document.documentElement.style.setProperty("--text-layer-foreground", textLayerForeground);
|
||||
document.documentElement.style.setProperty("--text-layer-opacity", textLayerOpacity.toString());
|
||||
isTextLayerVisible = !isTextLayerVisible;
|
||||
}
|
||||
|
||||
function loadDocument() {
|
||||
const pdfPassword = channel.getPassword();
|
||||
const loadingTask = pdfjsLib.getDocument({ url: "https://localhost/placeholder.pdf", password: pdfPassword });
|
||||
|
@ -51,6 +51,8 @@ import app.grapheneos.pdfviewer.viewModel.PasswordStatus;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@ -618,15 +620,21 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader
|
||||
super.onCreateOptionsMenu(menu);
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.pdf_viewer, menu);
|
||||
if (BuildConfig.DEBUG) {
|
||||
inflater.inflate(R.menu.pdf_viewer_debug, menu);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(@NonNull Menu menu) {
|
||||
final int[] ids = {R.id.action_jump_to_page, R.id.action_next, R.id.action_previous,
|
||||
R.id.action_first, R.id.action_last, R.id.action_rotate_clockwise,
|
||||
R.id.action_rotate_counterclockwise, R.id.action_view_document_properties,
|
||||
R.id.action_share, R.id.action_save_as};
|
||||
final ArrayList<Integer> ids = new ArrayList<>(Arrays.asList(R.id.action_jump_to_page,
|
||||
R.id.action_next, R.id.action_previous, R.id.action_first, R.id.action_last,
|
||||
R.id.action_rotate_clockwise, R.id.action_rotate_counterclockwise,
|
||||
R.id.action_view_document_properties, R.id.action_share, R.id.action_save_as));
|
||||
if (BuildConfig.DEBUG) {
|
||||
ids.add(R.id.debug_action_toggle_text_layer_visibility);
|
||||
}
|
||||
if (mDocumentState < STATE_LOADED) {
|
||||
for (final int id : ids) {
|
||||
final MenuItem item = menu.findItem(id);
|
||||
@ -691,6 +699,9 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader
|
||||
return true;
|
||||
} else if (itemId == R.id.action_save_as) {
|
||||
saveDocument();
|
||||
} else if (itemId == R.id.debug_action_toggle_text_layer_visibility) {
|
||||
binding.webview.evaluateJavascript("toggleTextLayerVisibility()", null);
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
|
10
app/src/main/res/menu/pdf_viewer_debug.xml
Normal file
10
app/src/main/res/menu/pdf_viewer_debug.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/debug_action_toggle_text_layer_visibility"
|
||||
android:title="@string/debug_action_toggle_text_layer_visibility"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
@ -14,6 +14,8 @@
|
||||
<string name="action_save_as">Save as</string>
|
||||
<string name="action_view_document_properties">Properties</string>
|
||||
|
||||
<string name="debug_action_toggle_text_layer_visibility">Toggle text layer visibility</string>
|
||||
|
||||
<string name="document_properties_invalid_date">Invalid date</string>
|
||||
<string name="document_properties_retrieval_failed">Failed to obtain document metadata</string>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user