From 4a299920dc10d35cd1292b93b26f619d39bfa16e Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 3 Jan 2017 14:05:10 +0100 Subject: add overlay to indicate that image is gif --- art/play_gif.svg | 68 +++++++++++++++++++++ art/render.rb | 3 +- .../conversations/persistance/FileBackend.java | 32 ++++++++-- .../drawable-hdpi/message_bubble_received.9.png | Bin 765 -> 765 bytes .../message_bubble_received_dark.9.png | Bin 779 -> 779 bytes .../message_bubble_received_grey.9.png | Bin 750 -> 750 bytes .../message_bubble_received_warning.9.png | Bin 757 -> 757 bytes .../message_bubble_received_white.9.png | Bin 779 -> 779 bytes .../res/drawable-hdpi/message_bubble_sent.9.png | Bin 687 -> 687 bytes .../drawable-hdpi/message_bubble_sent_grey.9.png | Bin 707 -> 707 bytes src/main/res/drawable-hdpi/play_gif.png | Bin 0 -> 791 bytes src/main/res/drawable-hdpi/play_video.png | Bin 3813 -> 5087 bytes .../drawable-mdpi/message_bubble_received.9.png | Bin 594 -> 594 bytes .../message_bubble_received_dark.9.png | Bin 606 -> 606 bytes .../message_bubble_received_grey.9.png | Bin 595 -> 595 bytes .../message_bubble_received_warning.9.png | Bin 598 -> 598 bytes .../message_bubble_received_white.9.png | Bin 610 -> 610 bytes .../res/drawable-mdpi/message_bubble_sent.9.png | Bin 558 -> 558 bytes .../drawable-mdpi/message_bubble_sent_grey.9.png | Bin 568 -> 568 bytes src/main/res/drawable-mdpi/play_gif.png | Bin 0 -> 612 bytes src/main/res/drawable-mdpi/play_video.png | Bin 2432 -> 3383 bytes .../drawable-xhdpi/message_bubble_received.9.png | Bin 929 -> 929 bytes .../message_bubble_received_dark.9.png | Bin 928 -> 928 bytes .../message_bubble_received_grey.9.png | Bin 915 -> 915 bytes .../message_bubble_received_warning.9.png | Bin 921 -> 921 bytes .../message_bubble_received_white.9.png | Bin 935 -> 935 bytes .../res/drawable-xhdpi/message_bubble_sent.9.png | Bin 857 -> 857 bytes .../drawable-xhdpi/message_bubble_sent_grey.9.png | Bin 842 -> 842 bytes src/main/res/drawable-xhdpi/play_gif.png | Bin 0 -> 1110 bytes src/main/res/drawable-xhdpi/play_video.png | Bin 5087 -> 6953 bytes .../drawable-xxhdpi/message_bubble_received.9.png | Bin 1334 -> 1334 bytes .../message_bubble_received_dark.9.png | Bin 1321 -> 1321 bytes .../message_bubble_received_grey.9.png | Bin 1301 -> 1301 bytes .../message_bubble_received_warning.9.png | Bin 1308 -> 1308 bytes .../message_bubble_received_white.9.png | Bin 1344 -> 1344 bytes .../res/drawable-xxhdpi/message_bubble_sent.9.png | Bin 1190 -> 1190 bytes .../drawable-xxhdpi/message_bubble_sent_grey.9.png | Bin 1173 -> 1173 bytes src/main/res/drawable-xxhdpi/play_gif.png | Bin 0 -> 1652 bytes src/main/res/drawable-xxhdpi/play_video.png | Bin 7824 -> 10668 bytes .../drawable-xxxhdpi/message_bubble_received.9.png | Bin 1714 -> 1714 bytes .../message_bubble_received_dark.9.png | Bin 1722 -> 1722 bytes .../message_bubble_received_grey.9.png | Bin 1670 -> 1670 bytes .../message_bubble_received_warning.9.png | Bin 1674 -> 1674 bytes .../message_bubble_received_white.9.png | Bin 1705 -> 1705 bytes .../res/drawable-xxxhdpi/message_bubble_sent.9.png | Bin 1499 -> 1499 bytes .../message_bubble_sent_grey.9.png | Bin 1468 -> 1468 bytes src/main/res/drawable-xxxhdpi/play_gif.png | Bin 0 -> 2436 bytes src/main/res/drawable-xxxhdpi/play_video.png | Bin 10668 -> 15040 bytes 48 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 art/play_gif.svg create mode 100644 src/main/res/drawable-hdpi/play_gif.png create mode 100644 src/main/res/drawable-mdpi/play_gif.png create mode 100644 src/main/res/drawable-xhdpi/play_gif.png create mode 100644 src/main/res/drawable-xxhdpi/play_gif.png create mode 100644 src/main/res/drawable-xxxhdpi/play_gif.png diff --git a/art/play_gif.svg b/art/play_gif.svg new file mode 100644 index 00000000..47f5cc24 --- /dev/null +++ b/art/play_gif.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/art/render.rb b/art/render.rb index 93c04996..01ab3903 100755 --- a/art/render.rb +++ b/art/render.rb @@ -13,7 +13,8 @@ resolutions = { images = { 'ic_launcher.svg' => ['ic_launcher', 48], 'main_logo.svg' => ['main_logo', 200], - 'play_video.svg' => ['play_video', 96], + 'play_video.svg' => ['play_video', 128], + 'play_gif.svg' => ['play_gif', 128], 'conversations_mono.svg' => ['ic_notification', 24], 'ic_received_indicator.svg' => ['ic_received_indicator', 12], '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 642df769..1cc70d5a 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -9,6 +9,8 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Rect; import android.graphics.RectF; import android.media.MediaMetadataRetriever; import android.net.Uri; @@ -412,7 +414,8 @@ public class FileBackend { return thumbnail; } DownloadableFile file = getFile(message); - if (file.getMimeType().startsWith("video/")) { + final String mime = file.getMimeType(); + if (mime.startsWith("video/")) { thumbnail = getVideoPreview(file, size); } else { Bitmap fullsize = getFullsizeImagePreview(file, size); @@ -421,6 +424,12 @@ public class FileBackend { } thumbnail = resize(fullsize, size); thumbnail = rotate(thumbnail, getRotation(file)); + if (mime.equals("image/gif")) { + Bitmap withGifOverlay = thumbnail.copy(Bitmap.Config.ARGB_8888,true); + drawOverlay(withGifOverlay,R.drawable.play_gif,1.0f); + thumbnail.recycle(); + thumbnail = withGifOverlay; + } } this.mXmppConnectionService.getBitmapCache().put(uuid, thumbnail); } @@ -439,6 +448,21 @@ public class FileBackend { } } + private void drawOverlay(Bitmap bitmap, int resource, float factor) { + Bitmap overlay = BitmapFactory.decodeResource(mXmppConnectionService.getResources(), resource); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setFilterBitmap(true); + paint.setDither(true); + float targetSize = Math.min(canvas.getWidth(),canvas.getHeight()) * factor; + Log.d(Config.LOGTAG,"target size overlay: "+targetSize+" overlay bitmap size was "+overlay.getHeight()); + float left = (canvas.getWidth() - targetSize) / 2.0f; + float top = (canvas.getHeight() - targetSize) / 2.0f; + RectF dst = new RectF(left,top,left+targetSize-1,top+targetSize-1); + canvas.drawBitmap(overlay,null,dst,paint); + } + private Bitmap getVideoPreview(File file, int size) { MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever(); Bitmap frame; @@ -451,11 +475,7 @@ public class FileBackend { frame = Bitmap.createBitmap(size,size, Bitmap.Config.ARGB_8888); frame.eraseColor(0xff000000); } - Canvas canvas = new Canvas(frame); - Bitmap play = BitmapFactory.decodeResource(mXmppConnectionService.getResources(), R.drawable.play_video); - float x = (frame.getWidth() - play.getWidth()) / 2.0f; - float y = (frame.getHeight() - play.getHeight()) / 2.0f; - canvas.drawBitmap(play,x,y,null); + drawOverlay(frame,R.drawable.play_video,0.75f); return frame; } diff --git a/src/main/res/drawable-hdpi/message_bubble_received.9.png b/src/main/res/drawable-hdpi/message_bubble_received.9.png index 9d59123e..cc150252 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received.9.png and b/src/main/res/drawable-hdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_received_dark.9.png b/src/main/res/drawable-hdpi/message_bubble_received_dark.9.png index 5fd16bda..30a136ae 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received_dark.9.png and b/src/main/res/drawable-hdpi/message_bubble_received_dark.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_received_grey.9.png b/src/main/res/drawable-hdpi/message_bubble_received_grey.9.png index f1eb95ac..e6fcdc23 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received_grey.9.png and b/src/main/res/drawable-hdpi/message_bubble_received_grey.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png index 118b532a..25d22f74 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-hdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_received_white.9.png b/src/main/res/drawable-hdpi/message_bubble_received_white.9.png index 314436c3..3c88c1fc 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_received_white.9.png and b/src/main/res/drawable-hdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_sent.9.png b/src/main/res/drawable-hdpi/message_bubble_sent.9.png index 3570a9ef..db5b1b52 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_sent.9.png and b/src/main/res/drawable-hdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-hdpi/message_bubble_sent_grey.9.png b/src/main/res/drawable-hdpi/message_bubble_sent_grey.9.png index 9e7319d2..413ce0e4 100644 Binary files a/src/main/res/drawable-hdpi/message_bubble_sent_grey.9.png and b/src/main/res/drawable-hdpi/message_bubble_sent_grey.9.png differ diff --git a/src/main/res/drawable-hdpi/play_gif.png b/src/main/res/drawable-hdpi/play_gif.png new file mode 100644 index 00000000..e66db187 Binary files /dev/null and b/src/main/res/drawable-hdpi/play_gif.png differ diff --git a/src/main/res/drawable-hdpi/play_video.png b/src/main/res/drawable-hdpi/play_video.png index 70831fe4..d4e6d614 100644 Binary files a/src/main/res/drawable-hdpi/play_video.png and b/src/main/res/drawable-hdpi/play_video.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received.9.png b/src/main/res/drawable-mdpi/message_bubble_received.9.png index bff27fee..2c59d445 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received.9.png and b/src/main/res/drawable-mdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received_dark.9.png b/src/main/res/drawable-mdpi/message_bubble_received_dark.9.png index a964773e..b72240c2 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received_dark.9.png and b/src/main/res/drawable-mdpi/message_bubble_received_dark.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received_grey.9.png b/src/main/res/drawable-mdpi/message_bubble_received_grey.9.png index a5424c5d..053ef314 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received_grey.9.png and b/src/main/res/drawable-mdpi/message_bubble_received_grey.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png index cf57722a..3fe8bfd6 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-mdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_received_white.9.png b/src/main/res/drawable-mdpi/message_bubble_received_white.9.png index 444d9852..617f56a6 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_received_white.9.png and b/src/main/res/drawable-mdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_sent.9.png b/src/main/res/drawable-mdpi/message_bubble_sent.9.png index fafa156a..4b0027ac 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_sent.9.png and b/src/main/res/drawable-mdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-mdpi/message_bubble_sent_grey.9.png b/src/main/res/drawable-mdpi/message_bubble_sent_grey.9.png index 1275668c..6d38c6d6 100644 Binary files a/src/main/res/drawable-mdpi/message_bubble_sent_grey.9.png and b/src/main/res/drawable-mdpi/message_bubble_sent_grey.9.png differ diff --git a/src/main/res/drawable-mdpi/play_gif.png b/src/main/res/drawable-mdpi/play_gif.png new file mode 100644 index 00000000..bf8a2239 Binary files /dev/null and b/src/main/res/drawable-mdpi/play_gif.png differ diff --git a/src/main/res/drawable-mdpi/play_video.png b/src/main/res/drawable-mdpi/play_video.png index 96ab3988..22e8d804 100644 Binary files a/src/main/res/drawable-mdpi/play_video.png and b/src/main/res/drawable-mdpi/play_video.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received.9.png b/src/main/res/drawable-xhdpi/message_bubble_received.9.png index 3796e964..37c6981f 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_dark.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_dark.9.png index 800ea806..47b758c5 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received_dark.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received_dark.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_grey.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_grey.9.png index 5fce3e04..58d0936b 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received_grey.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received_grey.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png index 12ecb806..79eadb49 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png index 016e1485..e80eab1e 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png and b/src/main/res/drawable-xhdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xhdpi/message_bubble_sent.9.png index f15dbf53..7783f2d8 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_sent.9.png and b/src/main/res/drawable-xhdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-xhdpi/message_bubble_sent_grey.9.png b/src/main/res/drawable-xhdpi/message_bubble_sent_grey.9.png index c233a4ae..84931428 100644 Binary files a/src/main/res/drawable-xhdpi/message_bubble_sent_grey.9.png and b/src/main/res/drawable-xhdpi/message_bubble_sent_grey.9.png differ diff --git a/src/main/res/drawable-xhdpi/play_gif.png b/src/main/res/drawable-xhdpi/play_gif.png new file mode 100644 index 00000000..e8cd99aa Binary files /dev/null and b/src/main/res/drawable-xhdpi/play_gif.png differ diff --git a/src/main/res/drawable-xhdpi/play_video.png b/src/main/res/drawable-xhdpi/play_video.png index d4e6d614..0cc5deeb 100644 Binary files a/src/main/res/drawable-xhdpi/play_video.png and b/src/main/res/drawable-xhdpi/play_video.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received.9.png index 7b9fbb59..5dbb8316 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_dark.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_dark.9.png index 043c84c6..44bac465 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received_dark.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received_dark.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_grey.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_grey.9.png index d9e42577..e91576c0 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received_grey.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received_grey.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png index 652b5986..1388eac9 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png index e6f13f90..6f931a74 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png index 03ef731a..1ba9680e 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-xxhdpi/message_bubble_sent_grey.9.png b/src/main/res/drawable-xxhdpi/message_bubble_sent_grey.9.png index 13191905..f8e1f21e 100644 Binary files a/src/main/res/drawable-xxhdpi/message_bubble_sent_grey.9.png and b/src/main/res/drawable-xxhdpi/message_bubble_sent_grey.9.png differ diff --git a/src/main/res/drawable-xxhdpi/play_gif.png b/src/main/res/drawable-xxhdpi/play_gif.png new file mode 100644 index 00000000..4380dd0a Binary files /dev/null and b/src/main/res/drawable-xxhdpi/play_gif.png differ diff --git a/src/main/res/drawable-xxhdpi/play_video.png b/src/main/res/drawable-xxhdpi/play_video.png index 562a1b62..16f4d2a1 100644 Binary files a/src/main/res/drawable-xxhdpi/play_video.png and b/src/main/res/drawable-xxhdpi/play_video.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png index 2a62f258..7dab83ee 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_dark.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_dark.9.png index 10e742ff..e09ae72e 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received_dark.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received_dark.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_grey.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_grey.9.png index 467d974b..a2359bf6 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received_grey.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received_grey.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png index 74a12c19..b8ba8ce4 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png index 3d729209..4382b320 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png index 698580f7..597f879f 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/message_bubble_sent_grey.9.png b/src/main/res/drawable-xxxhdpi/message_bubble_sent_grey.9.png index 3e2c9fe7..7454a931 100644 Binary files a/src/main/res/drawable-xxxhdpi/message_bubble_sent_grey.9.png and b/src/main/res/drawable-xxxhdpi/message_bubble_sent_grey.9.png differ diff --git a/src/main/res/drawable-xxxhdpi/play_gif.png b/src/main/res/drawable-xxxhdpi/play_gif.png new file mode 100644 index 00000000..e60e1806 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/play_gif.png differ diff --git a/src/main/res/drawable-xxxhdpi/play_video.png b/src/main/res/drawable-xxxhdpi/play_video.png index 16f4d2a1..76b72bed 100644 Binary files a/src/main/res/drawable-xxxhdpi/play_video.png and b/src/main/res/drawable-xxxhdpi/play_video.png differ -- cgit v1.2.3