diff --git a/art/open_pdf_white.svg b/art/open_pdf_white.svg new file mode 100644 index 000000000..a307529bb --- /dev/null +++ b/art/open_pdf_white.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/art/render.rb b/art/render.rb index a8f8a6243..86a0ddf79 100755 --- a/art/render.rb +++ b/art/render.rb @@ -24,6 +24,7 @@ images = { 'play_video_black.svg' => ['play_video_black', 128], 'play_gif_black.svg' => ['play_gif_black', 128], 'open_pdf_black.svg' => ['open_pdf_black', 128], + 'open_pdf_white.svg' => ['open_pdf_white', 128], 'conversations_mono.svg' => ['conversations/ic_notification', 24], 'quicksy_mono.svg' => ['quicksy/ic_notification', 24], 'ic_send_text_offline.svg' => ['ic_send_text_offline', 36], diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 906277cea..76d2d7d7b 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -825,7 +825,7 @@ public class FileBackend { } else if (mime.startsWith("video/")) { thumbnail = getVideoPreview(file, size); } else { - Bitmap fullsize = getFullsizeImagePreview(file, size); + Bitmap fullsize = getFullSizeImagePreview(file, size); if (fullsize == null) { throw new FileNotFoundException(); } @@ -844,7 +844,7 @@ public class FileBackend { return thumbnail; } - private Bitmap getFullsizeImagePreview(File file, int size) { + private Bitmap getFullSizeImagePreview(File file, int size) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = calcSampleSize(file, size); try { @@ -886,6 +886,21 @@ public class FileBackend { return record < 0; } + private boolean paintOverlayBlackPdf(final Bitmap bitmap) { + final int h = bitmap.getHeight(); + final int w = bitmap.getWidth(); + int white = 0; + for (int y = 0; y < h; ++y) { + for (int x = 0; x < w; ++x) { + int pixel = bitmap.getPixel(x, y); + if ((Color.red(pixel) * 0.299 + Color.green(pixel) * 0.587 + Color.blue(pixel) * 0.114) > 186) { + white++; + } + } + } + return white > (h * w * 0.4f); + } + private Bitmap cropCenterSquareVideo(Uri uri, int size) { MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever(); Bitmap frame; @@ -925,8 +940,9 @@ public class FileBackend { final PdfRenderer.Page page = pdfRenderer.openPage(0); Dimensions dimensions = scalePdfDimensions(new Dimensions(page.getHeight(), page.getWidth())); final Bitmap rendered = Bitmap.createBitmap(dimensions.width, dimensions.height, Bitmap.Config.ARGB_8888); + rendered.eraseColor(0xffffffff); page.render(rendered, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY); - drawOverlay(rendered, R.drawable.open_pdf_black, 0.75f); + drawOverlay(rendered, paintOverlayBlackPdf(rendered) ? R.drawable.open_pdf_black : R.drawable.open_pdf_white, 0.75f); return rendered; } catch (IOException e) { Log.d(Config.LOGTAG, "unable to render PDF document preview", e); diff --git a/src/main/res/drawable-hdpi/open_pdf_white.png b/src/main/res/drawable-hdpi/open_pdf_white.png new file mode 100644 index 000000000..ddfb33656 Binary files /dev/null and b/src/main/res/drawable-hdpi/open_pdf_white.png differ diff --git a/src/main/res/drawable-mdpi/open_pdf_white.png b/src/main/res/drawable-mdpi/open_pdf_white.png new file mode 100644 index 000000000..2403468c0 Binary files /dev/null and b/src/main/res/drawable-mdpi/open_pdf_white.png differ diff --git a/src/main/res/drawable-xhdpi/open_pdf_white.png b/src/main/res/drawable-xhdpi/open_pdf_white.png new file mode 100644 index 000000000..bba78987a Binary files /dev/null and b/src/main/res/drawable-xhdpi/open_pdf_white.png differ diff --git a/src/main/res/drawable-xxhdpi/open_pdf_white.png b/src/main/res/drawable-xxhdpi/open_pdf_white.png new file mode 100644 index 000000000..e550b574c Binary files /dev/null and b/src/main/res/drawable-xxhdpi/open_pdf_white.png differ diff --git a/src/main/res/drawable-xxxhdpi/open_pdf_white.png b/src/main/res/drawable-xxxhdpi/open_pdf_white.png new file mode 100644 index 000000000..95611f496 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/open_pdf_white.png differ