From c785aed2b13521848c1b35202a5ec00a301b6387 Mon Sep 17 00:00:00 2001 From: Christophe Boucaut Date: Thu, 29 Jan 2015 18:58:52 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d'une=20option=20pour=20changer=20l'ima?= =?UTF-8?q?ge=20en=20surimpression=20en=20fonction=20de=20l'orientation=20?= =?UTF-8?q?de=20l'=C3=A9cran.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/grid/www/js/index.js | 7 ++++- src/android/CameraLauncher.java | 29 ++++++++++++++----- .../geneanet/customcamera/CameraActivity.java | 10 ++++++- .../customcamera/TransferBigData.java | 19 ++++++++++++ www/customCamera.js | 2 ++ 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/examples/grid/www/js/index.js b/examples/grid/www/js/index.js index 6231fa9..c0762ca 100644 --- a/examples/grid/www/js/index.js +++ b/examples/grid/www/js/index.js @@ -1,7 +1,11 @@ -function getGrid() { +function getGrid(inverse) { var format = "image/png"; var width = window.innerWidth * devicePixelRatio; var height = window.innerHeight * devicePixelRatio; + if (inverse) { + width = window.innerHeight * devicePixelRatio; + height = window.innerWidth * devicePixelRatio; + } var widthInterval = width * 0.25; var heightInterval = height * 0.25; var x = widthInterval; @@ -39,6 +43,7 @@ document.getElementById("start-camera").onclick = function() { navigator.GeneanetCustomCamera.startCamera( { imgBackgroundBase64: getGrid(), + imgBackgroundBase64OtherOrientation: getGrid(true), opacity: false, miniature: false }, diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java index fea4e1d..4b5623c 100644 --- a/src/android/CameraLauncher.java +++ b/src/android/CameraLauncher.java @@ -60,14 +60,29 @@ public class CameraLauncher extends CordovaPlugin { TransferBigData.setImgBackgroundBase64(imgBackgroundBase64); } - intent.putExtra("miniature", args.getBoolean(1)); - intent.putExtra("saveInGallery", args.getBoolean(2)); - intent.putExtra("cameraBackgroundColor", args.getString(3)); - intent.putExtra("cameraBackgroundColorPressed", args.getString(4)); - if (args.getInt(5) >= 0 && args.getInt(5) <= 100) { - intent.putExtra("quality", args.getInt(5)); + if (args.getString(1) != "null") { + byte[] imgBackgroundBase64OtherOrientation; + try { + imgBackgroundBase64OtherOrientation = Base64 + .decode(args.getString(1), Base64.NO_WRAP); + } catch (IllegalArgumentException e) { + this.callbackContext.error(generateError(CameraLauncher.RESULT_ERROR, + "Error decode base64 picture.")); + + return false; + } + TransferBigData.setImgBackgroundBase64OtherOrientation(imgBackgroundBase64OtherOrientation); } - intent.putExtra("opacity", args.getBoolean(6)); + + intent.putExtra("miniature", args.getBoolean(2)); + intent.putExtra("saveInGallery", args.getBoolean(3)); + intent.putExtra("cameraBackgroundColor", args.getString(4)); + intent.putExtra("cameraBackgroundColorPressed", args.getString(5)); + if (args.getInt(6) >= 0 && args.getInt(6) <= 100) { + intent.putExtra("quality", args.getInt(6)); + } + intent.putExtra("opacity", args.getBoolean(7)); + intent.putExtra("startOrientation", this.cordova.getActivity().getResources().getConfiguration().orientation); cordova.startActivityForResult((CordovaPlugin) this, intent, CameraLauncher.REQUEST_CODE); diff --git a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java index dfd22d1..1be0e50 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java @@ -396,7 +396,15 @@ public class CameraActivity extends Activity { /** To set background in the view. */ protected void setBackground() { // Get the base64 picture for the background only if it's exist. - byte[] imgBackgroundBase64 = TransferBigData.getImgBackgroundBase64(); + byte[] imgBackgroundBase64; + if ( + TransferBigData.getImgBackgroundBase64OtherOrientation() == null || + this.getIntent().getIntExtra("startOrientation", 1) == this.getResources().getConfiguration().orientation + ) { + imgBackgroundBase64 = TransferBigData.getImgBackgroundBase64(); + } else { + imgBackgroundBase64 = TransferBigData.getImgBackgroundBase64OtherOrientation(); + } if (imgBackgroundBase64 != null) { // Get picture. Bitmap imgBackgroundBitmap = BitmapFactory.decodeByteArray( diff --git a/src/android/customCamera/src/org/geneanet/customcamera/TransferBigData.java b/src/android/customCamera/src/org/geneanet/customcamera/TransferBigData.java index f53bc4d..c3ea46a 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/TransferBigData.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/TransferBigData.java @@ -5,6 +5,7 @@ package org.geneanet.customcamera; */ public class TransferBigData { protected static byte[] imgBackgroundBase64 = null; + protected static byte[] imgBackgroundBase64OtherOrientation = null; protected static byte[] imgTaken = null; /** @@ -25,6 +26,24 @@ public class TransferBigData { TransferBigData.imgBackgroundBase64 = imgBackgroundBase64; } + /** + * Get bytes to represent background picture for OtherOrientation. + * + * @return byte[] + */ + public static byte[] getImgBackgroundBase64OtherOrientation() { + return TransferBigData.imgBackgroundBase64OtherOrientation; + } + + /** + * Set bytes to represent background picture for OtherOrientation. + * + * @param byte[] imgBackgroundBase64OtherOrientation + */ + public static void setImgBackgroundBase64OtherOrientation(byte[] imgBackgroundBase64OtherOrientation) { + TransferBigData.imgBackgroundBase64OtherOrientation = imgBackgroundBase64OtherOrientation; + } + /** * Get bytes to represent picture taken. * diff --git a/www/customCamera.js b/www/customCamera.js index d9b331a..d418b8a 100644 --- a/www/customCamera.js +++ b/www/customCamera.js @@ -17,6 +17,7 @@ CustomCameraExport.prototype.startCamera = function(options, successFct, failFct) { var defaultOptions = { imgBackgroundBase64: null, // background picture in base64. + imgBackgroundBase64OtherOrientation: null, // background picture in base64 for second orientation. If it's not defined, imgBackgroundBase64 is used. miniature: true, // active or disable the miniature function. saveInGallery: false, // save or not the picture in gallery. cameraBackgroundColor: "#e26760", // color of the camera button. @@ -47,6 +48,7 @@ "startCamera", [ options.imgBackgroundBase64, + options.imgBackgroundBase64OtherOrientation, options.miniature, options.saveInGallery, options.cameraBackgroundColor,