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 {
|
html, body {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
@ -34,13 +39,13 @@ canvas, .textLayer {
|
|||||||
.textLayer {
|
.textLayer {
|
||||||
text-align: initial;
|
text-align: initial;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
opacity: 0.2;
|
opacity: var(--text-layer-opacity);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.textLayer span,
|
.textLayer span,
|
||||||
.textLayer br {
|
.textLayer br {
|
||||||
color: transparent;
|
color: var(--text-layer-foreground);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
cursor: text;
|
cursor: text;
|
||||||
|
@ -20,6 +20,8 @@ let useRender;
|
|||||||
const cache = [];
|
const cache = [];
|
||||||
const maxCached = 6;
|
const maxCached = 6;
|
||||||
|
|
||||||
|
let isTextLayerVisible = false;
|
||||||
|
|
||||||
function maybeRenderNextPage() {
|
function maybeRenderNextPage() {
|
||||||
if (renderPending) {
|
if (renderPending) {
|
||||||
pageRendering = false;
|
pageRendering = false;
|
||||||
@ -209,6 +211,18 @@ function isTextSelected() {
|
|||||||
return window.getSelection().toString() !== "";
|
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() {
|
function loadDocument() {
|
||||||
const pdfPassword = channel.getPassword();
|
const pdfPassword = channel.getPassword();
|
||||||
const loadingTask = pdfjsLib.getDocument({ url: "https://localhost/placeholder.pdf", password: pdfPassword });
|
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.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -618,15 +620,21 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader
|
|||||||
super.onCreateOptionsMenu(menu);
|
super.onCreateOptionsMenu(menu);
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
inflater.inflate(R.menu.pdf_viewer, menu);
|
inflater.inflate(R.menu.pdf_viewer, menu);
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
inflater.inflate(R.menu.pdf_viewer_debug, menu);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPrepareOptionsMenu(@NonNull Menu menu) {
|
public boolean onPrepareOptionsMenu(@NonNull Menu menu) {
|
||||||
final int[] ids = {R.id.action_jump_to_page, R.id.action_next, R.id.action_previous,
|
final ArrayList<Integer> ids = new ArrayList<>(Arrays.asList(R.id.action_jump_to_page,
|
||||||
R.id.action_first, R.id.action_last, R.id.action_rotate_clockwise,
|
R.id.action_next, R.id.action_previous, R.id.action_first, R.id.action_last,
|
||||||
R.id.action_rotate_counterclockwise, R.id.action_view_document_properties,
|
R.id.action_rotate_clockwise, R.id.action_rotate_counterclockwise,
|
||||||
R.id.action_share, R.id.action_save_as};
|
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) {
|
if (mDocumentState < STATE_LOADED) {
|
||||||
for (final int id : ids) {
|
for (final int id : ids) {
|
||||||
final MenuItem item = menu.findItem(id);
|
final MenuItem item = menu.findItem(id);
|
||||||
@ -691,6 +699,9 @@ public class PdfViewer extends AppCompatActivity implements LoaderManager.Loader
|
|||||||
return true;
|
return true;
|
||||||
} else if (itemId == R.id.action_save_as) {
|
} else if (itemId == R.id.action_save_as) {
|
||||||
saveDocument();
|
saveDocument();
|
||||||
|
} else if (itemId == R.id.debug_action_toggle_text_layer_visibility) {
|
||||||
|
binding.webview.evaluateJavascript("toggleTextLayerVisibility()", null);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
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_save_as">Save as</string>
|
||||||
<string name="action_view_document_properties">Properties</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_invalid_date">Invalid date</string>
|
||||||
<string name="document_properties_retrieval_failed">Failed to obtain document metadata</string>
|
<string name="document_properties_retrieval_failed">Failed to obtain document metadata</string>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user