From 0d37267eb4837b4f8e33d426060a814c7b33ed21 Mon Sep 17 00:00:00 2001 From: Murat Sutunc Date: Wed, 6 May 2015 22:37:59 -0700 Subject: [PATCH] Update docs. This closes #100 --- README.md | 177 ++++++++++++++++----------------- doc/img/android-fail.png | Bin 0 -> 753 bytes doc/img/android-success.png | Bin 0 -> 716 bytes doc/img/blackberry-fail.png | Bin 0 -> 1009 bytes doc/img/blackberry-success.png | Bin 0 -> 984 bytes doc/img/browser-fail.png | Bin 0 -> 806 bytes doc/img/browser-success.png | Bin 0 -> 776 bytes doc/img/firefox-fail.png | Bin 0 -> 802 bytes doc/img/firefox-success.png | Bin 0 -> 770 bytes doc/img/fireos-fail.png | Bin 0 -> 965 bytes doc/img/fireos-success.png | Bin 0 -> 936 bytes doc/img/ios-fail.png | Bin 0 -> 573 bytes doc/img/ios-success.png | Bin 0 -> 550 bytes doc/img/ubuntu-fail.png | Bin 0 -> 649 bytes doc/img/ubuntu-success.png | Bin 0 -> 622 bytes doc/img/windows-fail.png | Bin 0 -> 784 bytes doc/img/windows-success.png | Bin 0 -> 759 bytes doc/img/wp8-fail.png | Bin 0 -> 714 bytes doc/img/wp8-success.png | Bin 0 -> 679 bytes 19 files changed, 83 insertions(+), 94 deletions(-) create mode 100644 doc/img/android-fail.png create mode 100644 doc/img/android-success.png create mode 100644 doc/img/blackberry-fail.png create mode 100644 doc/img/blackberry-success.png create mode 100644 doc/img/browser-fail.png create mode 100644 doc/img/browser-success.png create mode 100644 doc/img/firefox-fail.png create mode 100644 doc/img/firefox-success.png create mode 100644 doc/img/fireos-fail.png create mode 100644 doc/img/fireos-success.png create mode 100644 doc/img/ios-fail.png create mode 100644 doc/img/ios-success.png create mode 100644 doc/img/ubuntu-fail.png create mode 100644 doc/img/ubuntu-success.png create mode 100644 doc/img/windows-fail.png create mode 100644 doc/img/windows-success.png create mode 100644 doc/img/wp8-fail.png create mode 100644 doc/img/wp8-success.png diff --git a/README.md b/README.md index 5a18c37..f64ca0f 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,16 @@ Although the object is attached to the global scoped `navigator`, it is not avai cordova plugin add cordova-plugin-camera +## API +- Camera + - navigator.camera.getPicture(success, fail, options) + - CameraOptions + - CameraPopoverHandle + - CameraPopoverOptions + - navigator.camera.cleanup + + + ## navigator.camera.getPicture Takes a photo using the camera, or retrieves a photo from the device's @@ -43,9 +53,9 @@ base64-encoded `String`, or as the URI for the image file. The method itself returns a `CameraPopoverHandle` object that can be used to reposition the file selection popover. - navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions ); + navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions); -### Description +#### Description The `camera.getPicture` function opens the device's default camera application that allows users to snap pictures. This behavior occurs @@ -83,69 +93,11 @@ quality, even if a `quality` parameter is specified. To avoid common memory problems, set `Camera.destinationType` to `FILE_URI` rather than `DATA_URL`. -### Supported Platforms +#### Supported Platforms -- Amazon Fire OS -- Android -- BlackBerry 10 -- Browser -- Firefox OS -- iOS -- Tizen -- Windows Phone 7 and 8 -- Windows 8 -- Windows +![](doc/img/android-success.png) ![](doc/img/blackberry-success.png) ![](doc/img/browser-success.png) ![](doc/img/firefox-success.png) ![](doc/img/fireos-success.png) ![](doc/img/ios-success.png) ![](doc/img/windows-success.png) ![](doc/img/wp8-success.png) ![](doc/img/ubuntu-success.png) -### Preferences (iOS) - -- __CameraUsesGeolocation__ (boolean, defaults to false). For capturing JPEGs, set to true to get geolocation data in the EXIF header. This will trigger a request for geolocation permissions if set to true. - - - - -### Amazon Fire OS Quirks - -Amazon Fire OS uses intents to launch the camera activity on the device to capture -images, and on phones with low memory, the Cordova activity may be killed. In this -scenario, the image may not appear when the cordova activity is restored. - -### Android Quirks - -Android uses intents to launch the camera activity on the device to capture -images, and on phones with low memory, the Cordova activity may be killed. In this -scenario, the image may not appear when the Cordova activity is restored. - -### Browser Quirks - -Can only return photos as base64-encoded image. - -### Firefox OS Quirks - -Camera plugin is currently implemented using [Web Activities](https://hacks.mozilla.org/2013/01/introducing-web-activities/). - -### iOS Quirks - -Including a JavaScript `alert()` in either of the callback functions -can cause problems. Wrap the alert within a `setTimeout()` to allow -the iOS image picker or popover to fully close before the alert -displays: - - setTimeout(function() { - // do your thing here! - }, 0); - -### Windows Phone 7 Quirks - -Invoking the native camera application while the device is connected -via Zune does not work, and triggers an error callback. - -### Tizen Quirks - -Tizen only supports a `destinationType` of -`Camera.DestinationType.FILE_URI` and a `sourceType` of -`Camera.PictureSourceType.PHOTOLIBRARY`. - -### Example +#### Example Take a photo and retrieve it as a base64-encoded image: @@ -176,6 +128,54 @@ Take a photo and retrieve the image's file location: alert('Failed because: ' + message); } +#### Preferences (iOS) + +- __CameraUsesGeolocation__ (boolean, defaults to false). For capturing JPEGs, set to true to get geolocation data in the EXIF header. This will trigger a request for geolocation permissions if set to true. + + + +#### Amazon Fire OS Quirks + +Amazon Fire OS uses intents to launch the camera activity on the device to capture +images, and on phones with low memory, the Cordova activity may be killed. In this +scenario, the image may not appear when the cordova activity is restored. + +#### Android Quirks + +Android uses intents to launch the camera activity on the device to capture +images, and on phones with low memory, the Cordova activity may be killed. In this +scenario, the image may not appear when the Cordova activity is restored. + +#### Browser Quirks + +Can only return photos as base64-encoded image. + +#### Firefox OS Quirks + +Camera plugin is currently implemented using [Web Activities](https://hacks.mozilla.org/2013/01/introducing-web-activities/). + +#### iOS Quirks + +Including a JavaScript `alert()` in either of the callback functions +can cause problems. Wrap the alert within a `setTimeout()` to allow +the iOS image picker or popover to fully close before the alert +displays: + + setTimeout(function() { + // do your thing here! + }, 0); + +#### Windows Phone 7 Quirks + +Invoking the native camera application while the device is connected +via Zune does not work, and triggers an error callback. + +#### Tizen Quirks + +Tizen only supports a `destinationType` of +`Camera.DestinationType.FILE_URI` and a `sourceType` of +`Camera.PictureSourceType.PHOTOLIBRARY`. + ## CameraOptions Optional parameters to customize the camera settings. @@ -190,8 +190,6 @@ Optional parameters to customize the camera settings. popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: false }; -### Options - - __quality__: Quality of the saved image, expressed as a range of 0-100, where 100 is typically full resolution with no loss from file compression. The default is 50. _(Number)_ (Note that information about the camera's resolution is unavailable.) - __destinationType__: Choose the format of the return value. The default is FILE_URI. Defined in `navigator.camera.DestinationType` _(Number)_ @@ -244,7 +242,7 @@ Optional parameters to customize the camera settings. FRONT : 1 // Use the front-facing camera }; -### Amazon Fire OS Quirks +#### Amazon Fire OS Quirks - Any `cameraDirection` value results in a back-facing photo. @@ -252,7 +250,7 @@ Optional parameters to customize the camera settings. - `Camera.PictureSourceType.PHOTOLIBRARY` and `Camera.PictureSourceType.SAVEDPHOTOALBUM` both display the same photo album. -### Android Quirks +#### Android Quirks - Any `cameraDirection` value results in a back-facing photo. @@ -261,7 +259,7 @@ with the Google Plus Photos application. Other crops may not work. - `Camera.PictureSourceType.PHOTOLIBRARY` and `Camera.PictureSourceType.SAVEDPHOTOALBUM` both display the same photo album. -### BlackBerry 10 Quirks +#### BlackBerry 10 Quirks - Ignores the `quality` parameter. @@ -273,7 +271,7 @@ with the Google Plus Photos application. Other crops may not work. - Ignores the `cameraDirection` parameter. -### Firefox OS Quirks +#### Firefox OS Quirks - Ignores the `quality` parameter. @@ -293,19 +291,19 @@ with the Google Plus Photos application. Other crops may not work. - Ignores the `cameraDirection` parameter. -### iOS Quirks +#### iOS Quirks - Set `quality` below 50 to avoid memory errors on some devices. - When using `destinationType.FILE_URI`, photos are saved in the application's temporary directory. The contents of the application's temporary directory is deleted when the application ends. -### Tizen Quirks +#### Tizen Quirks - options not supported - always returns a FILE URI -### Windows Phone 7 and 8 Quirks +#### Windows Phone 7 and 8 Quirks - Ignores the `allowEdit` parameter. @@ -327,7 +325,7 @@ onError callback function that provides an error message. // Show a helpful message } -### Parameters +#### Description - __message__: The message is provided by the device's native code. _(String)_ @@ -340,11 +338,11 @@ onSuccess callback function that provides the image data. // Do something with the image } -### Parameters +#### Description - __imageData__: Base64 encoding of the image data, _or_ the image file URI, depending on `cameraOptions` in effect. _(String)_ -### Example +#### Example // Show image // @@ -358,23 +356,15 @@ onSuccess callback function that provides the image data. A handle to the popover dialog created by `navigator.camera.getPicture`. -### Methods +#### Description -- __setPosition__: Set the position of the popover. +- __setPosition__: Set the position of the popover. Takes the `CameraPopoverOptions` that specify the new position. -### Supported Platforms +#### Supported Platforms -- iOS +![](doc/img/android-fail.png) ![](doc/img/blackberry-fail.png) ![](doc/img/browser-fail.png) ![](doc/img/firefox-fail.png) ![](doc/img/fireos-fail.png) ![](doc/img/ios-success.png) ![](doc/img/windows-fail.png) ![](doc/img/wp8-fail.png) ![](doc/img/ubuntu-fail.png) -### setPosition - -Set the position of the popover. - -__Parameters__: - -- `cameraPopoverOptions`: the `CameraPopoverOptions` that specify the new position - -### Example +#### Example var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail, { destinationType: Camera.DestinationType.FILE_URI, @@ -388,7 +378,6 @@ __Parameters__: cameraPopoverHandle.setPosition(cameraPopoverOptions); } - ## CameraPopoverOptions iOS-only parameters that specify the anchor element location and arrow @@ -402,7 +391,7 @@ or album. arrowDir : Camera.PopoverArrowDirection.ARROW_ANY }; -### CameraPopoverOptions +#### Description - __x__: x pixel coordinate of screen element onto which to anchor the popover. _(Number)_ @@ -434,18 +423,18 @@ storage. navigator.camera.cleanup( cameraSuccess, cameraError ); -### Description +#### Description Removes intermediate image files that are kept in temporary storage after calling `camera.getPicture`. Applies only when the value of `Camera.sourceType` equals `Camera.PictureSourceType.CAMERA` and the `Camera.destinationType` equals `Camera.DestinationType.FILE_URI`. -### Supported Platforms +#### Supported Platforms -- iOS +![](doc/img/android-fail.png) ![](doc/img/blackberry-fail.png) ![](doc/img/browser-fail.png) ![](doc/img/firefox-fail.png) ![](doc/img/fireos-fail.png) ![](doc/img/ios-success.png) ![](doc/img/windows-fail.png) ![](doc/img/wp8-fail.png) ![](doc/img/ubuntu-fail.png) -### Example +#### Example navigator.camera.cleanup(onSuccess, onFail); diff --git a/doc/img/android-fail.png b/doc/img/android-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e4e8628b064b7b2719e3f3a3a11eb6edb814f9 GIT binary patch literal 753 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 literal 0 HcmV?d00001 diff --git a/doc/img/browser-success.png b/doc/img/browser-success.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2c000e3975523c631bcdaf54b305851a7b9325 GIT binary patch literal 776 zcmV+j1NZ!iP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0(nV9K~z{r?U>Dq+E5h7eFdeyh!4Eiwk<4NghGyX)h>(pRD6y%P1ZETwE*FH`|G78T zj~Sh|3>1TxKbU)R&&mCrbCO_UKS%Bx{mDT-aquoG$|pc1gowTV^!VAw#LF*_(#2#n z1Qrm1D+bCafhmCqTrm`J?L;&Lu07j*(t|PXT`@7%?Eg{!!j^5=Qz34GLUzS&c)QM~ zz~u1jwdGU0#+JQ0bFNLznok#C8|ub=e}*6CxfvM4M&)*8(C5fSJ*5wEKnwgK+@%W! zx1EVP8apmsVj2|Ejq;7Maa*VObKhCN-bmewyu6c8TiGrRk2WeeE9+J==WGFk(`Zc?^?Adr zx+w}M>&B-g?SgzYRj6>ZE31+3)K)ggMpnXjYHR?5Zn04=?`2CK4}BQDz|cD=rtn8* z<#HbL;;=epV%CO5`m$DYe(C|(pe4M`V36ubTSHHx0IYmU#?>8kXojB5b=#^Z$=IYu z6(cQe{ccOL>w)hN4s({)o5^%YUp_HDpqoae(}!V$fXCQYFv#dl%&+0?-mccEuVk`m zc&=Kr_AF6Gtw#&6p8AttpQwO((00Dtsx2iz=6ochEk8>Zk?+u-vF)bzY`dvF+ips- z<>L|kZyJ~16pkYIP2ni<_Ve=?-V(qAC5jjk<>LSoLi_@ghZlf7-fxEh0000> literal 0 HcmV?d00001 diff --git a/doc/img/firefox-fail.png b/doc/img/firefox-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6cbd1908d2379200eb461a75c96042e02c5df9 GIT binary patch literal 802 zcmV+-1Ks?IP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0+UHZK~z{r?U=u7+fWe4wY5wAFZdr2s7t#9 z+NBWamZ@|oWOJbfjoR`Dv`{ZKos2sKv;+*+AZQ2zm6Bo*si7c5s4Otp7N&Yt2^Ipw z>%Eg){j{8h42_8R4tnqIp5N#0^n}d)wC%SK@4vXiJ+FlT1aK&&+?xl&>$}{?dz{>; zg8&3@0E!{jhAI-^02C`<&QJpZ)GgR1?S1eFJgamy{JbDE)TO*bQAtR9kTYGAs==Cu zJ`1h>kdKDD=OeNlwzaI!`G``YO-BKpfB$tUuyjcOOWt}tssj6TXtJzAUL9cDwXGl; zE|q5~H_?UM6U|6ww(1HY|E$W2ts5qD1*W~1_}ErFO|4#hZ}kiv!-!@p;}xAv#inr# zHxN6XO3ic#Yl_H3gNtJk+H!3*U0fv8#iEZasY^Dj%1$L1D94tiLZ#E+^TCI07bod> zBDNP~<_=C*H1Imm*aUko6>UV`f_Y79|I-Jb6CJwYl;3=|w@R(r~eAqgUe6lb5 z^DBcjk`9Cmdot&+8El=-VN}5QGVPQVYfD@SilBvYeK`3g7R2eFV0eiSR*Y?CC)z`a zs=+c;(N$pE4u(4m7VkP$d|Xpr-qn7u5VS_Md7i*iF?f*iBQd!D{=V3188#>h;$E;JknGh=UgdumK{J guLc4TprVxi0XCOR_`;pcRsaA107*qoM6N<$f-uWsGynhq literal 0 HcmV?d00001 diff --git a/doc/img/firefox-success.png b/doc/img/firefox-success.png new file mode 100644 index 0000000000000000000000000000000000000000..deb9d24abadf059dc89639bdc8c9b78b61b3096d GIT binary patch literal 770 zcmV+d1O5DoP)000&U0ssI22R!za00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0&_`3K~z{r?U=u7+dve@{V&+m|A_y9)>G(E zXwlGr!O(6drC^gK&Dy1thKdX=sEfTBWk>{}8XOG5prN&lO>ET(5+pLJ;5aZ`-<{-I z(eIcn7Cyd%bnm_MectyhW0h{~>-WNogI49>W3kk#02d*o^zQ5Pm!B$cemvtk)glRq zfD7nKz*;;!PrwCqB``D;D3X9~PnciI=@i2ko8Y_t2ou*j4ktvlDd8KT&=YAJ!p2Z> z3Awl05BF3%vtg%-Y9oSv&2te3OM0Kf(WlX)2|YYEOmz?pwKZ@9E5c?bQ(KfgS{a0m zt5fZ+%S-Fq4PMwo+41LzBl_2lC|FB+ffac%!_X16CfvdWA*-1>tOZNJPd`MEc}rJb zM|F)Y;#%!!4mZ5Gr?+WsN+rA$jTI|L7lKr6YKeGEK|@3XlIXtKB$@S9euPc!&j1rN z9oHy1J(htI4MN12)Eg5G0H)(ACmr@(M6VZJS$j=CE|Npnal1!XT?1`LD0%y%10ypP z50p%}ZZPjz>JMEGM48)5Z3wo|J~GFu+<;l+_KsM2Ob+u9yFLEg+e3^}2|)_<-rJBr z67WFTglvmw^gE^`p0HE@N&Cv?lXA|P)hk`T{J-o2Wf6h`kjZ$UY(j3#?i}$LPKVw5 z5{$ACoWSNp_fKi3&d&$^xk7D3$~SN+k|S8Axj1Y}{B-4aA*vjNAb>uie$p5Yz_39Z5zY}TU1KePgX%XiqI`tAtUclGYfrfQVuY=7q5lDw z*;|a0g1*H#seJhUssz6;012#MXra_910EsdA8>npDfJGffB*mh07*qoM6N<$f`x8R AKmY&$ literal 0 HcmV?d00001 diff --git a/doc/img/fireos-fail.png b/doc/img/fireos-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e7b9b9e1282bd7d844e9ba8355b1876508980c GIT binary patch literal 965 zcmV;$13LVPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&12#!SK~z{r?U=u7+dve@wY5w8FZdrYxJ$Yi znxzoP<|%Y2Wb@F1Mr~OGDa1=dC*uwVEe3-2`61GiRHjD^8) zeeZO(^~1945=d!ve23HB(|hO7z4tKUe(3s#moMHv;oigw7w`c}gb?m*FZKQ@_xTwo zK93bD-~*I^6_Sf#Z6lxrtT5Sp8?nL!tYTg}=pW*h`7}169g}(E%g7`%MerLugraz5 z3YOU)T^u-%6+xPq>OG%W8T>6ublQZNa<6TZ!MC4}#7h{`8-s%YvWg&2ohQ3>>$iM# z@px2IZu-|BSetnznwR~#!^kye3SV)XCHbDgxK8O-Q=yNB+%s&TYZbG)1{1a$YVQoY zevNUvG_F0l^f(+2aM3F6ucA}w8t&uJ3T&#nW1g}-kT8#j*Bpz#8J)niK z1+O*stm2$P+me^N2Djlw-P)sbdgk>}I5C~QhaO_9`XMv(X)`Z+=XA`J)0 z1Fz9<&#y8ChF!l2>-WU8G-m>t=sLjKeoxF_cRu5TPMfZT^!uiw4og^1P?8LBKoPt^ zm2}EYM@pxb^Z!uMykfZ(^V&@@uiX^$+D*tS{$9AH*!RM-z0|w-dvuh54^aB}`V|NN nKmZw#gJg>pCg20G2qC`#6CBds&-WPC00000NkvXXu0mjf>ngtc literal 0 HcmV?d00001 diff --git a/doc/img/fireos-success.png b/doc/img/fireos-success.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6289e063de5f7022e2cac418fd5852a1ab674f GIT binary patch literal 936 zcmV;Z16TZsP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0~tv~K~z{r?U=u7+dve@{Vycc|A_y9wo~X( zNb!*WpcvZCxD;%%q+L5ClZT27DY%Qh6yprB!9+uXK^QbNR)~qMIzfWiMim?a!S#D5 zIo6LzR!tzK==ct&yQlX~pL_3YE^{-xelNV(DsOImOtnhoO|YVrX5M{${_4}_oA1x^ z^=ztmff87OSO)x3WXT0qAeKSm1twC(3&c`tf35$Hns_+0a9C68?rdODQ{M|3Jcibx zR_Kc+rBl692u(e;a>p|O6QvoUJ^W} z`_3Y?t7vNOV7BU{p4${99EInaWj3oP_ilrVr3Q)EA2)*2qLH!1O(#3NG!jsIz}~Gv zr}Pq1^HyaNYTPXuT<|qN93`7SDV^a|v6W8OH4A7JHOK=l5?MXFI~l=18&_GfB%tG`yidTxSLjBbIT1}0g4Ae4ed)T&F^B@#O&^2vRDz-%R9-lQ?WAbu5TARcAJ6Y)gaom1WkT*}ZzyuK}H_hSNb- z`qtphyG4I~^E+U?b3EfC5x)k4uE=B2DN+}7NXe+B@++mbj#6stD5bWJQfljnQ!8(z zx01=lZzVVQ4fyBuIyaF(39LSRd!5056@UXjBwnf&DsKQ8rSuPjCc2qVVr6~+0000< KMNUMnLSTZv!K;b@ literal 0 HcmV?d00001 diff --git a/doc/img/ios-fail.png b/doc/img/ios-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8caf80736086f202655632a7528774fa656769 GIT binary patch literal 573 zcmV-D0>b@?P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0j^0zK~zXf?Up}F!$26uv+1H=p5C*S}Dng)_En+s5& zX(^x18pU%Gz0*;(B-_uevAE(FmdR1PV30(x^X1;+_P5)$v#5b&|zobY!BuDUr z%~Ty>8~8#C>`_H+R62-YSXM04CvNR2TN@2xAH%+z=d+rY#H2JkNgO z*4r8BicmCO^jnx5!E!uKGr2c6Ac5_i%wG|T#20BjnfYGvN_2sCdgeAQe!0VouUG78 z@%!V)oSrTX0~VIJA{3qd@k^KGR8Z-X&p}|j*@e+#Ga-$hW!m0@!RsHt_j+c2)>M6Y zBV%YKe!cp~Zy3Mf=LTLp7n^u&0eX9MsNh#c1PBDBNKC+iO$hk{!BAtggYvr=00000 LNkvXXu0mjfpv~~P literal 0 HcmV?d00001 diff --git a/doc/img/ios-success.png b/doc/img/ios-success.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf3b5ac773635d4188fa85c16eff5a254165883 GIT binary patch literal 550 zcmV+>0@?kEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0hdWcK~zXf?UpfX!ax+q^A!yBi}VAuouosD z;+F`tn^+2wF4hl`p`lB`F1nR0DhL@WLJ=}mQQC%963~hSj(~9e=VDN=Bua*)6p!C> z_wsl@-n+mFU*B(+>TymMbJuAgi>OX16)x_MPH)BY$Af$=n>?tC>TnQXl$L}Ks>4A* zbGShAz~R4nlns|UcKO%&PQ>w$db&gD)GkRI=gE5b5^Py7T|OF{Egn+m-k8)CE!eIk z_~vnu*ACV3yX$R;HD=%Rno|~}uCA`7tP|f@8mRayL;{3+AlfKCJA^L!tu~jnWSa+AQwf&^(MN9&+Xnyn{0AU06x=U04yX o9?k^(=}>_Ynv()@1`?Fg9|9!GmclbI6aWAK07*qoM6N<$f+>LK)c^nh literal 0 HcmV?d00001 diff --git a/doc/img/ubuntu-fail.png b/doc/img/ubuntu-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..ca82c79fa90acd2c65e60e65ad779de3658d5c19 GIT binary patch literal 649 zcmV;40(Sk0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0s2WqK~z{r?UylY!ax+qv$ae674iiHyR?hY zE`>n1jvY$7w~*1zwa|iHy4yj>D7ZK{1cYJ{L>!6+K|=)-hc*PHK?q#m-Pt4_mkS~V zBZfbCIsfnO{qEi!MEV*IpH7ah_oSNMG+Fm zn&D{AEh}-(McdS;HvE9|jO@JS<6am+|KyL)k&pz$!YpAB1219Q)ddH@uDy$$Y@*buRb!(#67PvJ z=#mvJWbrFKGhWZUjUE;GqlL@QH!XV6xn<}qeH&W8KEey(^~NgobDV#r>$nDO&~RmF z;8pu+s8#;>9EnLlaxE9lJ6p>I?afjmNouqs**t9*$@Y9{!FS_b%D;Xg|CjSq2`*`X j0Vdd>Gzu~Y41~}x{C literal 0 HcmV?d00001 diff --git a/doc/img/ubuntu-success.png b/doc/img/ubuntu-success.png new file mode 100644 index 0000000000000000000000000000000000000000..b15227db767a6af50209aded158bd89b989eab0c GIT binary patch literal 622 zcmV-!0+IcRP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0pCePK~z{r?U%nw!$26o^9l|2Mfw1`6$e3a z=qnV|Nf063w5y9#2aAgkmu8WYE)@y^D?%t_(m^T#OA6Hz0!N^5es`C)F}++Gi$hAo z4|2JDU+#YQ4{l10M#6 zfQ|%H7I~3rKxd000&U0ssI22R!za00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0)a_HK~z{r?U*rZ+fWe4wY5w075oJZ?$R!X zdMOyPbt)Z7vt?+(qqeMp7VM=VlTio5TM7Yt&|r!{Pz(lPJOovQssck|QDUKDEChnr zyL)aVEADei3Tf0l{@|z6>3qL?_nwiJbJu~CzO2)0c=XG^cgyqKRG!j&q5%_8; z<3`D$+3=m^%aL&>skl(aAs7%r3~KCNNm9Sy4&$>b#`O!rP!eBZ)!m5~@yJdstCA8nv0-Qgese!IT`GwW3o!5P>gCof5|vsb`5M+w##GV03SNpm8QI=Wek-!A)(q0Z&cTjK zhWo<4JZX6F<156$N$7|PIDbS!g#|5=fC%t7=RW}i%xjDrv(j_` O0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0%%D@K~z{r?U*rZ+dve@^%ZRDFOmW~;rH8>c8;g-a~#;tIS1hIuG5CXyV-8(yy z<>nmRK+Dy~AAEZ6>GXbjPbVzpYBqXlJld_7ci+gUdKu^_rOJzs51+g%Kl}VZZC2zH zZ~+}KDnKkNBp1*DqXNY(IOG#BZaMEw2PC19f3RZDs{t`=gyxFt9<&K(t>;9PPW?u0 z#dVAB!U;0ne}|Jp;_%M8Mem>K?{U^nkI1#9+l#{tvQSS<5k}&Wkk0}#V!@H$XmLwu z8h*egkwaqmiQQ2Z&#g9n4~~SyL>P%$%UZ_?%Au~=W6xQ$(V4E=m~r;Bh&WYDdOCTP>r7_keX9-n zyl(~T8@}g__cdD|ru=^WMt9%@0csqtfn?H$kR0nJ)?>-_2X3G5Lo~ShiTe=LB;*qa zhJd{m>%+x9G&dIZA<_DV-zPsD-ntt-pAu=yDVMgKatS%>rT^f6b_u_m97_G&Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0y{}WK~zXf?Uq4H<3JS0=eAz#SMUo2>SgyL ztQR5Rt*5ewg}tq?3q9r|2nzP%;;Ga_As3-w4*~ZO2rPv{&>j{ILK-NT7TFGkkPs-0 z@6E(E9W`o2n!^r%$Ykc_@tgO52_gSncmLD+*AL`N4g?qg!x$rbAB#U%$nh%C3(FT^ z01O}@U{08X00xk-bkfGs1xWv~Q0i63hmM9Zahe@P+D(*=wPss>JbPHZ?$WSRHRobp zr_7l_6#0#+no$ zlv%CP(TEC?)QB$K(ln+%7K_vzI>~I0_JCA8*;%oIR)?1WItmM1(bYExaU8}XYa*UPJ-$3|7 w{gJ1iW`H@|`b?lJfeZklbW0at025>E4%6p6>jF19od5s;07*qoM6N<$g6_IIKmY&$ literal 0 HcmV?d00001 diff --git a/doc/img/wp8-success.png b/doc/img/wp8-success.png new file mode 100644 index 0000000000000000000000000000000000000000..a37cad6971d8a57154ac01752725f483c8c4d7da GIT binary patch literal 679 zcmV;Y0$BZtP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0vJg|K~zXf?Uubt!%!5*^9n8IMSK9=#6eIp zZ10Fx*gW!Bw*cwOILtiKJ-9^oBfP*Zg=Z+!)aiqJhRVhs(o zw0+$>%VTux(dA|UC#%ALV%8Wj++S5=SH(4zPshr03j;C*j%l+A86&fFtKE4(L0au{ zGwK@SLv)eV(zV*6)UG+B`+7sJWAeiDXDD}LL~c{of{m1G_ciqaXP*qq^#%`p!iNW} zF@Q#6Fu5nLS$v=v;*6cWH8F9hNcyD3JjB16=T|b;nDv+aneMeA9z1u!^|Sp2#2}af zhf-$d+nI5-*mIUgZ7&F<49+Yi0i^0Bk9BF;cLh%%F!kME~?@9%f@&ll|k+E+_3 zMZZ(O#q}rn3YiqYPc!U&f0WAi{ZV%BVncw*1w