History log of /frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
33253a4baa6279f81a73425b49dfb6abe5f5416e 01-Oct-2014 Neil Fuller <nfuller@google.com> Switch from FloatMath -> Math and Math.hypot where possible

The motivation is an API change: FloatMath is going to be
deprecated and/or removed. Performance is not the goal of
this change.

That said...

Math is faster than FloatMath with AOT compilation.

While making the change, occurances of:

{Float}Math.sqrt(x * x + y * y) and
{Float}Math.sqrt({Float}Math.pow(x, 2) + {Float}Math.pow(y, 2))

have been replaced with:

{(float)} Math.hypot(x, y)

Right now there is no runtime intrinsic for hypot so is not faster
in all cases for AOT compilation:

Math.sqrt(x * x + y * y) is faster than Math.hypot(x, y) with
AOT, but all other combinations of FloatMath, use of pow() etc.
are slower than hypot().

hypot() has the advantage of being self documenting and
could be optimized in future. None of the behavior differences
around NaN and rounding appear to be important for the cases
looked at: they all assume results and arguments are in range
and usually the results are cast to float.

Different implementations measured on hammerhead / L:

AOT compiled:

[FloatMath.hypot(x, y)]
benchmark=Hypot_FloatMathHypot} 633.85 ns; σ=0.32 ns @ 3 trials

[FloatMath.sqrt(x*x + y*y)]
benchmark=Hypot_FloatMathSqrtMult} 684.17 ns; σ=4.83 ns @ 3 trials

[FloatMath.sqrt(FloatMath.pow(x, 2) + FloatMath.pow(y, 2))]
benchmark=Hypot_FloatMathSqrtPow} 1270.65 ns; σ=12.20 ns @ 6 trials

[(float) Math.hypot(x, y)]
benchmark=Hypot_MathHypot} 96.80 ns; σ=0.05 ns @ 3 trials

[(float) Math.sqrt(x*x + y*y)]
benchmark=Hypot_MathSqrtMult} 23.97 ns; σ=0.01 ns @ 3 trials

[(float) Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))]
benchmark=Hypot_MathSqrtPow} 156.19 ns; σ=0.12 ns @ 3 trials

Interpreter:

benchmark=Hypot_FloatMathHypot} 1180.54 ns; σ=5.13 ns @ 3 trials
benchmark=Hypot_FloatMathSqrtMult} 1121.05 ns; σ=3.80 ns @ 3 trials
benchmark=Hypot_FloatMathSqrtPow} 3327.14 ns; σ=7.33 ns @ 3 trials
benchmark=Hypot_MathHypot} 856.57 ns; σ=1.41 ns @ 3 trials
benchmark=Hypot_MathSqrtMult} 1028.92 ns; σ=9.11 ns @ 3 trials
benchmark=Hypot_MathSqrtPow} 2539.47 ns; σ=24.44 ns @ 3 trials

Bug: https://code.google.com/p/android/issues/detail?id=36199
Change-Id: I06c91f682095e627cb547d60d936ef87941be692
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
c82618c660bbb76df05c11c548cc01724f5e5fc9 03-Dec-2013 Michael Jurka <mikejurka@google.com> [DO NOT MERGE] Fix wallpaper cropping bugs

- take into account that image decoder might not
respect inSampleSize
- check rounded values so we don't have crop rects
that lie outside a bitmap's dimensions
- correctly set initial scale on bitmaps that are
larger than the screen size
- switch to using asynctask when setting wallpaper
dimensions
(cherry picked from commit e39c9a953ca11319b747b3aa79f4ccd082b775b7)

Change-Id: I43372f0bff37f139c8bc83f9956a967d0b4a8708
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
69784065ea78550944b7eddb559c0dac952e20e8 14-Oct-2013 Michael Jurka <mikejurka@google.com> Add EXIF rotation support to system wallpaper cropper

Bug: 11137824
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
e72aa7f0a64ff55f747751b7972ccb8acebab7da 08-Oct-2013 Michael Jurka <mikejurka@google.com> Fix crash in built-in wallpaper cropper

Also, sync to latest version of WallpaperCropActivity

Bug: 10950237
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java
e8d1bf7a439450b9979701909164a6baffbe8bae 09-Sep-2013 Michael Jurka <mikejurka@google.com> Add new intent/method for cropping and setting wallpapers

Also, create a system fallback WallpaperCropper

Bug: 4225598

Change-Id: I6bc6d5a3bb3df1dc00f3db701978aa172020c568
/frameworks/base/packages/WallpaperCropper/src/com/android/wallpapercropper/CropView.java