diff --git a/doc/fr/index.md b/doc/fr/index.md index 849edde..b6f17b0 100644 --- a/doc/fr/index.md +++ b/doc/fr/index.md @@ -31,6 +31,10 @@ L'objet `options` contient les options de configuration de l'appareil photo. - **Type :** `string` - **Valeur par défaut :** `null` ++ **imgBackgroundBase64OtherOrientation :** Image qui sera présente en surimpression de l'appareil photo lorsque l'on tourne l'appareil dans l'autre sens que celui de démarrage du plugin. Elle doit être en base64. Si à `null`, on utilisera `imgBackgroundBase64` en redimensionnant l'image. + - **Type :** `string` + - **Valeur par défaut :** `null` + + **miniature :** Permet d'activer ou non la fonction de miniature. `true` : Active l'option. `false` : Désactive l'option. - **Type :** `boolean` - **Valeur par défaut :** `true` @@ -113,6 +117,18 @@ navigator.GeneanetCustomCamera.startCamera( ); ``` +### Application de code barre + +[Voir le code](https://github.com/geneanet/customCamera/tree/master/examples/barcode) + +![Barcode](https://raw.githubusercontent.com/geneanet/customCamera/master/examples/barcode/screenshot.png) + +### Application avec grille + +[Voir le code](https://github.com/geneanet/customCamera/tree/master/examples/grid) + +![Grid](https://raw.githubusercontent.com/geneanet/customCamera/master/examples/grid/screenshot.png) + ### AngularJS Une implémentation dans AngularJS a été réalisée pour faciliter son utilisation : [$geneanetCustomCamera](https://github.com/geneanet/customCameraAngular.git). @@ -122,4 +138,3 @@ Une implémentation dans AngularJS a été réalisée pour faciliter son utilisa Pour contribuer à ce projet, merci de respecter les règles suivantes : + **Les bugs, suggestions, etc :** Ils doivent être remontés via le système d'issues de Github. Merci de vérifier que votre sujet n'a pas déjà été traité. + **Développement Javascript :** Le code javascript doit être valide avec JSHint. -+ **Développement Java :** Le code java doit être valide [Checkstyle](http://eclipse-cs.sourceforge.net/#!/). diff --git a/examples/barcode/screenshot.png b/examples/barcode/screenshot.png new file mode 100644 index 0000000..11a79cd Binary files /dev/null and b/examples/barcode/screenshot.png differ diff --git a/examples/grid/.gitignore b/examples/grid/.gitignore new file mode 100644 index 0000000..602549b --- /dev/null +++ b/examples/grid/.gitignore @@ -0,0 +1,9 @@ +platforms/* +!platforms/.gitkeep + +plugins/* +!plugins/.gitkeep + +node_modules/* + +*.DS_Store \ No newline at end of file diff --git a/examples/grid/config.xml b/examples/grid/config.xml new file mode 100644 index 0000000..693fc7c --- /dev/null +++ b/examples/grid/config.xml @@ -0,0 +1,12 @@ + + + grid + + A sample Apache Cordova application that responds to the deviceready event. + + + Apache Cordova Team + + + + diff --git a/examples/grid/screenshot.png b/examples/grid/screenshot.png new file mode 100644 index 0000000..6647395 Binary files /dev/null and b/examples/grid/screenshot.png differ diff --git a/examples/grid/www/index.html b/examples/grid/www/index.html new file mode 100644 index 0000000..7b8556c --- /dev/null +++ b/examples/grid/www/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + Grid + + + + + + + + diff --git a/examples/grid/www/js/index.js b/examples/grid/www/js/index.js new file mode 100644 index 0000000..c0762ca --- /dev/null +++ b/examples/grid/www/js/index.js @@ -0,0 +1,57 @@ +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; + var y = heightInterval; + + var canvas = document.getElementById('my-canvas');; + canvas.width = width; + canvas.height = height; + + var ctx = canvas.getContext("2d"); + + ctx.beginPath(); + + while (x < width) { + ctx.moveTo(x, 0); + ctx.lineTo(x, height); + x += widthInterval; + } + + while (y < height) { + ctx.moveTo(0, y); + ctx.lineTo(width, y); + y += heightInterval; + } + ctx.stroke(); + + ctx.closePath(); + + var base64 = canvas.toDataURL(format); + + return base64.replace(/data:[^\/]*\/[^\,]*,/, ""); +}; + +document.getElementById("start-camera").onclick = function() { + navigator.GeneanetCustomCamera.startCamera( + { + imgBackgroundBase64: getGrid(), + imgBackgroundBase64OtherOrientation: getGrid(true), + opacity: false, + miniature: false + }, + function() { + window.console.log("success"); + }, + function() { + window.console.log("fail"); + } + ); +} \ No newline at end of file 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/.gitignore b/src/android/customCamera/.gitignore index 99008c9..2956d2f 100644 --- a/src/android/customCamera/.gitignore +++ b/src/android/customCamera/.gitignore @@ -2,7 +2,12 @@ .project .classpath project.properties +ant.properties +build.xml +local.properties +proguard-project.txt +nbandroid/* bin/* gen/* libs/* diff --git a/src/android/customCamera/project.properties b/src/android/customCamera/project.properties deleted file mode 100644 index 655eb8f..0000000 --- a/src/android/customCamera/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=Google Inc.:Google APIs:14 diff --git a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java index f5cb395..523e81c 100644 --- a/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java +++ b/src/android/customCamera/src/org/geneanet/customcamera/CameraActivity.java @@ -398,7 +398,16 @@ 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,