History log of /frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0c37a9eafb5a925e2d63314c697e4564d68e39b0 01-Feb-2017 Jerome Gaillard <jgaillard@google.com> Update Canvas_Delegate after Change I3edc963a

Test: layoutlib tests
Change-Id: I1f285c3baac267bd47324802c12b33d34f8b581f
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
57415885f0819df44b3cdf253e3bb19ff9648740 16-Jan-2017 Jerome Gaillard <jgaillard@google.com> Delete Canvas_Delegate.nClipRegion after Change I71f9bd68

Test: layoutlib tests
Change-Id: I9c04fa258cdaf06972b205e5dd5d3b505e5bea17
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
f666c0e2eaceb265069a77c520e84c1a08f08ae4 24-Nov-2016 Jerome Gaillard <jgaillard@google.com> Fix layoutlib to reflect recent changes in platform code

Test: Layoutlib tests
Change-Id: I81964233a9e580ccee9c9e9b0cf3525babf30bd4
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
a10973ebd1ca33c14f0cb06c22ea9d2f9828ac99 11-Nov-2016 Jerome Gaillard <jgaillard@google.com> Rename native methods that were changed in the platform

This is following commits f22859757b, 94931bd87e, 4387190d8e
and caa08ff5e9.

Test: Run TestDelegates
Change-Id: If90028492c036fc5f69913e4dcad5a1a5fca4b55
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
c93beed4e670f05104c4615d47265d125251b499 31-Oct-2016 Diego Perez <diegoperez@google.com> Remove refSkPixelRef

Change-Id: I4d6e7076d2b87dd208c0eba27491c13f56567420
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
5d1013cf13e59b7f8dc8f16b5811cb29982e0ef3 23-Feb-2016 Diego Perez <diegoperez@google.com> Implement native methods in VectorDrawable

Most of the VectorDrawable implementation has been moved to native code.
This CL implements most of the required functionality that existed in
Marshmallow.

Change-Id: I009bcd5c166f2bfa0795d2718fabab4a549eba9f
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
491523d52cd8368ef9a92e95fb3e9332bf86a996 07-Oct-2015 Deepanshu Gupta <deepanshu@google.com> LayoutLib fixes for N

Moves LayoutLib to Java 8 - YAY!
Fix delegates

Change-Id: I098996e43e330e995d33f12df1c16355bbc02f0f
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
b9c48d8f49d35e2682c7205a9d8d5fcc25d7c736 18-Dec-2015 Diego Perez <diegoperez@google.com> New path interpolation to paint vector drawables

Before this CL, PathMeasure_Delegate would use Path_Delegate.approximate
to get a path segment to draw. Path_Delegate.approximate uses a
flattening iterator to do the path approximation.
Unfortunately, because we do not control the stroke mode while painting,
in some cases the approximation would draw unwanted artifacts caused by
the rough approximation and the use of wrong miter values.
This CL does a much better calculation of the path and interpolates the
segments of the curves instead of replacing them with line segments.

This also fixes an issue with the calculation of empty paths.

Bug: http://b.android.com/187256

Change-Id: I450f7aa4c3d9efcbf902a40c3b4d6d388546893f
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
4064e118e2d738ddd13366bf08210bb8de9e32ca 07-Oct-2015 Deepanshu Gupta <deepanshu@google.com> Skip drawing empty shapes to keep Apple JRE happy.

Bug: http://b.android.com/178278
Change-Id: I693912678ed79e9c6690560b618a605da5a807c6
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
476e582d2ffdf25102d4c55f8c242baa3d21d37f 22-May-2015 Deepanshu Gupta <deepanshu@google.com> LayoutLib: Change nullity annotations.

Switch from using tools nullity annotations (com.android.annotations)
to android framework annotations (android.annotation).

A new sdk-common prebuilt is required for LayoutLib tests. The new
sdk-common requires an updated tools-common. The updated tools-common
doesn't have nullity annotations. So, instead of adding the annotation
dependency, just reuse the platform ones. This also paves the way to
include other platform annotations like IdRes etc.

Change-Id: I87b8f767d3681d914abe7d1329e26a87f49f50a7
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
d77b9ed7dcc42efca33b225c4594a30aab9e709c 12-May-2015 Deepanshu Gupta <deepanshu@google.com> Add missing delegates for M preview.

- Remove ICU dependency (use the version bundled with platform).
- Restructure intelliJ project to move dependencies to module.
- Minor fixes to layoutlib tests.

TODO:
- Load ICU data.
- Hyphenator doesn't work.
- High quality line breaker not present.

Change-Id: I965e096e17bfc97ee995a649c3f4f6f64bb4f70d
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
8381e2cdcc24a5099b1e8811b0d7b8c125145899 28-Apr-2015 Deepanshu Gupta <deepanshu@google.com> Merge "Fix view outline for shadows in LayoutLib." into mnc-dev
c6abf5bff6bbfafa1f133644f02a5d50d5269b7f 24-Apr-2015 Raph Levien <raph@google.com> Expose drawTextRun publicly

For correct low-level drawing of low level text, a method that
includes context for shaping is necessary, and it's similarly useful
to provide the direction explicitly rather than running the BiDi
algorithm on the text. The drawTextRun method (in both char[] and
CharSequence variants) has provided this functionality for several
major releases but has been internal. This patch exposes the
methods publicly, and also improves the doc strings for both
the new method and some related ones.

Bug: 20193553
Change-Id: I9be33ca5ae3e7db2b69a56298400671d5ef8ad05
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
dbc7ca0bac64e6f0e6f8463ac8e3d43dfac27eae 20-Apr-2015 Deepanshu Gupta <deepanshu@google.com> Fix view outline for shadows in LayoutLib.

Set the bounds on the drawable before getting the view outline for
shadow. Also, reuse the temp outline object in AttachInfo rather than
allocating a new one each time.

Change-Id: I69793d38d60c5b9f9050569f2b22fbc7b90620bf
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
7c834296ac2561d0d630b2ef6b2530344be7afbd 24-Mar-2015 Deepanshu Gupta <deepanshu@google.com> Fix RoundRect radius.

Android APIs use radius for measuring the corner's curvature, but Java2D
APIs use diameter. Add the missing conversion.

Change-Id: I630fc8712e8301324c641885c0c4adf644d13b7e
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
1840e8f2c73570e7b51c66c03d3a50bd00f3f742 31-Jul-2014 Deepanshu Gupta <deepanshu@google.com> Fix Delegates

Change-Id: I2b6a6b679b7a5b2532b76b723155bc2763b70768
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
8ee6bcf8096803fe5c4fbc3838a296a692173e49 16-Jul-2014 Deepanshu Gupta <deepanshu@google.com> Use BlendComposite for advanced PorterDuff Modes. [DO NOT MERGE]

Not all PorterDuff modes are supported by Java's AlphaComposite. Use
BlendComposite for such modes.

Change-Id: I51486a40f09186cf8a87ce1e6a3d1cfcf39fb2d3
(cherry picked from commit b15709cd36d28c47660b0ae30918642bfd3d85f7)
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
84d1d431cfe3e66029380fa038f8816b06da120a 26-Jun-2014 Deepanshu Gupta <deepanshu@google.com> Update text rendering delegates.

The flags for RTL and LTR are simplified in commit
0a1d91862a3822dcbbb412bcd6d69b0f5f079f8b. This change follows up the
same in LayoutLib.

This also fixes the following bug which incorrectly computed runs with
'en-dash' (\u20132) as RTL.

Bug: http://b.android.com/69432
Change-Id: Iaed62d13ce31f107773576ed2ef412be6037cd04
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
509d860907691a8eb7ff4c8b949fbee36db70fea 26-Jun-2014 Deepanshu Gupta <deepanshu@google.com> Sort delegates in Canvas_Delegate

The order of the methods match the order of the declaration in the
Canvas file. This makes searching for the methods easier.

Change-Id: I230621d3999024cb2ff42a1aacd60908c7f0b161
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
bb5d0cc4369590ce892cca2f717f5d5568c5f655 26-Jun-2014 Deepanshu Gupta <deepanshu@google.com> Update LayoutLib delegates.

Change-Id: I64828bfb963048effbc49a622f5f2aa0203665e6
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
3510c58ad6db0ab06f0e63507fbc34205e3b04a6 24-Jun-2014 Deepanshu Gupta <deepanshu@google.com> am e558d180: Merge "LayoutLib: Support PorterDuffColorFilter" into lmp-preview-dev

* commit 'e558d1806b29385aa14ba60f18e103e2c9aeef1b':
LayoutLib: Support PorterDuffColorFilter
f2af1f5d8aaff684f8cc6d8e31454c945e190976 22-Jun-2014 Deepanshu Gupta <deepanshu@google.com> LayoutLib: Support PorterDuffColorFilter

Add support for select modes for PorterDuffColorFilter.

Change-Id: Ia7b4a6a92c326be977dd87a70f54c1f8954b546d
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
eaa55cdc8731b13b18ca7eb5c6c1835164c86f01 06-Jun-2014 Deepanshu Gupta <deepanshu@google.com> am ee001119: Merge "LayoutLib: Add assertions for typeface." into lmp-preview-dev

* commit 'ee0011198ff150f972c8afbc5dff695bce2af1f1':
LayoutLib: Add assertions for typeface.
a19b8c111b6961f20e1fc9132c62d1fd7f98bafe 05-Jun-2014 Deepanshu Gupta <deepanshu@google.com> LayoutLib: Add assertions for typeface.

Framework passes typeface along with the paint object at many places.
Paint_Delegate is supposed to have the typeface object with it. Add
assertions to ensure that the two typefaces are indeed the same.

Change-Id: I68193513c2d99f269c0458d6493f23025bbda385
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
5c3d927e17e98e8fd4a9f3c86f7f4def0bcfa816 08-May-2014 Florin Malita <fmalita@google.com> Add a native Canvas wrapper.

Instead of storing a direct SkCanvas reference, Canvas now tracks
an opaque native wrapper class. The native wrapper can be used to
store additional info for emulating deprecated Skia features
(at this point it only stores a canvas).

Some notes:

* all native handle -> SkCanvas conversions are routed through a
handful of native utility methods.
* safeCanvasSwap() refactored as a lower level setNativeBitmp() - which
is what clients need.
* removed unused get_thread_msec() (Canvas.cpp)

Change-Id: I715a5a6f1e1621c1cfc1e510ae4f2ea15cf11114
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
baef8c1ffe5c900fb0da9512654bf249b5fc9269 20-May-2014 Deepanshu Gupta <deepanshu@google.com> Layoutlib fixes for L [DO NOT MERGE]

This adds the new delegates that were missing. This starts the work on
changes related to Minikin Fonts.

There are some changes related to TypedArray that still need to be
fixed.

Change-Id: Ic2397b64aa3f1f48926e849b14689c47d9ee7f8c
(cherry picked from commit 7ca3612094270183243938e79337c84effea7ad0)
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
130d2353edda445b8e36a6b5e4b176fd748035b0 20-May-2014 Deepanshu Gupta <deepanshu@google.com> Layoutlib fixes for L

This adds the new delegates that were missing. This starts the work on
changes related to Minikin Fonts.

There are some changes related to TypedArray that still need to be
fixed.

Change-Id: Ic2397b64aa3f1f48926e849b14689c47d9ee7f8c
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
6376c407d433c91174e4cef735ddb0014461a906 15-May-2014 Deepanshu Gupta <deepanshu@google.com> Layoutlib: Update delegates for L

Update delegate method signatures for L.

Change-Id: Ie607293bcae60b2d3a61d1cad3ac5f04bda2a238
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
c677675e9c465dc1de21ecf2e0421835c7eb55b4 07-May-2014 Florin Malita <fmalita@google.com> Encapsulate Canvas.mNativeCanvas

Currently, the native canvas is accessed/manipulated from several
unrelated classes.

In order to facilitate SaveFlags emulation, this CL encapsulates
the field and refactors its external users.

Two main changes:

* new getNativeCanvas() getter for use in Java-level clients.
* JNI canvas swappers (GraphicsBuffers, Surface, TextureView &
AssetAtlasService) are refactored based on the exising/equivalent
safeCanvasSwap() Canvas method.

Change-Id: I966bd4898f0838fb3699e226d3d3d51e0224ea97
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9be03c4e980d3058aeb3fd730da5f7d4a4a4f8a8 22-Feb-2014 Deepanshu Gupta <deepanshu@google.com> Update layoutlib tests to check methods return value.

The test in layoutlib bridge has been updated to check the return
value of the delegate method match the value of the overriden method.

This changeset also fixes the problems found due to this change.

Change-Id: I87cef323c4eaee4e9f60475f01156b276593fa50
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
3a9d89e28885d5d92423b9d28a1a2430b65e1559 06-Feb-2014 Deepanshu Gupta <deepanshu@google.com> am 1bcc286d: am db0427a0: am 5800b19a: am 50b0ce4e: am fd8cba3a: Merge "Fix the measurement of text bounds." into klp-dev

* commit '1bcc286def646f98747bce2c4dedb0737d5fcf9d':
Fix the measurement of text bounds.
1bcc286def646f98747bce2c4dedb0737d5fcf9d 06-Feb-2014 Deepanshu Gupta <deepanshu@google.com> am db0427a0: am 5800b19a: am 50b0ce4e: am fd8cba3a: Merge "Fix the measurement of text bounds." into klp-dev

* commit 'db0427a0ac986e0823e7bbe9b7c12a97aabe133e':
Fix the measurement of text bounds.
5800b19a7a3422620cb28e2327a96bf824f5cc9c 06-Feb-2014 Deepanshu Gupta <deepanshu@google.com> am 50b0ce4e: am fd8cba3a: Merge "Fix the measurement of text bounds." into klp-dev

* commit '50b0ce4e8ed353ed841782aeb58963bc084f2e16':
Fix the measurement of text bounds.
e05bb956ce429618fd4f971a9dc708b9313c59ea 29-Jan-2014 Deepanshu Gupta <deepanshu@google.com> Fix native method signatures

Some new methods have been added which are yet to be implemented.

Change-Id: Ie5a0657c7ccbe95200c270d5c15b516a385b083b
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
40582000e078361d2e5995abdf25f923fa656e86 29-Jan-2014 Narayan Kamath <narayan@google.com> Fix a few more delegate methods in layoutlib.

Change-Id: Icd7069452b9ac66498af69ec705d12c3acd1c848
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
84151432e7ead6666eb8cf6377bff577b2027694 27-Jan-2014 Narayan Kamath <narayan@google.com> Track 64bit changes to android/graphics.

All pointers are now 64bits wide, so should be
represented as java longs and not ints.

Also changed DelegateManager and SparseWeakArray to
reflect the new world order.

(cherry picked from commit 88a8364c386c694f7ad56662ef89713dbf7c9d63)

Change-Id: Ic2f55dd6235751169c5014f9d2ccf3f544259a87
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
88a8364c386c694f7ad56662ef89713dbf7c9d63 27-Jan-2014 Narayan Kamath <narayan@google.com> Track 64bit changes to android/graphics.

All pointers are now 64bits wide, so should be
represented as java longs and not ints.

Also changed DelegateManager and SparseWeakArray to
reflect the new world order.

Change-Id: Ic32b6b53818dbae9b949f03004c4fb6dae26cdbe
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
19acfb8e873a04d42619d222c43eda95d259d0a5 05-Sep-2013 Deepanshu Gupta <deepanshu@google.com> Fix text rendering

There are still some errors
1. Little vertical clippping for extra tall glyphs.
2. Breaking into scripts isn't perfect which results in incorrect layout
of text.

Change-Id: Ib7b008b4ab5e689038678825289199aeb4bd815b
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
282e181b58cf72b6ca770dc7ca5f91f135444502 24-Jan-2014 Adam Lesinski <adamlesinski@google.com> Revert "Move frameworks/base/tools/ to frameworks/tools/"

This reverts commit 9f6a119c8aa276432ece4fe2118bd8a3c9b1067e.
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
5ad7c183f39df43562c69aba21ea422ad69bdae0 07-Jan-2014 Deepanshu Gupta <deepanshu@google.com> Fix the measurement of text bounds.

Bug: 12366230
Change-Id: I203b678363dc7b688c744503ee10216baca658a9
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
0851945a72e10e1d31aafa459f7e69cdf7087bee 05-Sep-2013 Deepanshu Gupta <deepanshu@google.com> am b50de495: am dd4efc22: am 3a762d8b: Merge "Fix text rendering" into jb-mr2-dev

* commit 'b50de4951aaea6d6f01432dc17b7c5de778a2e71':
Fix text rendering
0d9c922c9614147d1277cb36cfb7296774415d15 12-Jul-2013 Deepanshu Gupta <deepanshu@google.com> Fix text rendering

There are still some errors
1. Little vertical clippping for extra tall glyphs.
2. Breaking into scripts isn't perfect which results in incorrect layout
of text.

Change-Id: I54de3c05eca5e8affb1135c120eea24c3afe8a47
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9f6a119c8aa276432ece4fe2118bd8a3c9b1067e 28-Aug-2013 Mike Lockwood <lockwood@google.com> Move frameworks/base/tools/ to frameworks/tools/

Change-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
667fe1039feae068d3333de8fb7115313f4a517b 03-Aug-2013 Jonathan Dixon <joth@google.com> Refactor Canvas.drawPicture() to delegate to Picture

Bug: 9814370

To allow WebView.capturePicture() to return a subclass, we need to
ensure the subclass is always consulted when being drawn into a canvas.

Change-Id: Ia0357f95b6fafb3ac81e6bcfaef05739e619897a
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
279c00e8e0abb20f7e10577c77937c058da080bf 24-May-2013 Deepanshu Gupta <deepanshu@google.com> Add missing native methods.

Change-Id: I7b34e2ec0164520efc658053a80f307791a992b1
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
f18c68b83f4919cf903e249da056acb470b683af 09-May-2012 Xavier Ducrohet <xav@android.com> Add missing native method to Canvas_Delegate.

Change-Id: I86288c942004e5489eacc43ba5e112cf56f94487
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
46d43ccfd8cef75b4315828073c094cf1efb05ff 03-Feb-2012 Xavier Ducrohet <xav@android.com> Make Layoutlib compile on Java 6.

Change-Id: Ic8f0e321c6c218de83664fc01f253a07fa80852c
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
5bf2802ad9de237ccc014489dd36ff4baadadfaa 19-Jan-2012 Xavier Ducrohet <xav@android.com> Fix broken drawCircle LayoutLib.

Change-Id: I5e23bbe0119e385fa2f77854a8f88128351d3759
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
af64556de0064eeb5a4d4e6d634c3f074f5f40ce 20-Jul-2011 Xavier Ducrohet <xav@android.com> Layoutlib: misc fix + start of AndroidBidi support.

Change-Id: If2ce0b683da8cce01679322d503eed8dd474e521
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
66743a1ec0dddadec7cd8f026f9b6a2239f515be 15-Jun-2011 Xavier Ducrohet <xav@android.com> Fix changed native method delegates in layoutlib for ICS.

Change-Id: I49306868cd8a41b6b7d919c3e8b108d5c014530e
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
fb93ce9684120a36862b5b5e67b1865a652907e9 04-Jun-2011 Xavier Ducrohet <xav@android.com> Import the Layoutlib from hc-mr1.

This is squash commit of all the missing patches.

Change-Id: Ie081c46a173290646deddbde503a720d50c4400f
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9d76581faf9eb5f47eff922c14807e51702f363b 14-Mar-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Fix Arc rendering.

Looks like Java2D and Skia go in different directions for angles.

Change-Id: Ia0c9c70cd66c9a0941fa9921fecf8e4e83538af3
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
a4510a75757b82207f677609b970010f59c774ba 25-Feb-2011 Xavier Ducrohet <xav@android.com> LayoutLib: fix incorrect indices in one of the 2 native_drawTextRun methods.

Fixes http://b.android.com/15007

Change-Id: Iff06180def92c5fa25e82520b76192c089edd8cc
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
f0a53435f14d23d9555fc46014352ee6a7baa647 24-Feb-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Add debug mode.

Change-Id: If4263c7dba63a063f84e0c6988c270eb6d291ac3
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
c6083f2c9eadb1f8a502ea9806868f5b0148667e 23-Feb-2011 Xavier Ducrohet <xav@android.com> LayoutLib: misc fixes.

- implement some Paint methods that are needed for 2.x
- fix the phone system bar to display the icons on the right.

Change-Id: I3a938b14ec9a449dbc23a33303a3c8405a5369a8
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
cc4977d0fdaf657907912fd6cc2f9426dc8d2e36 22-Feb-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Hold onto delegate references.

When an object is given a delegate to hold onto, keep
the reference to the delegate instead of its native integer.

Also change the way the finalizer works by not explicitely deleting
the delegate. Instead we want the delegate to be deleted when
nothing holds a reference to it. To do this, instead of using
a regular SparseArray, we use a SparseArray of WeakReferences.
Because the main Java object that "owns" the delegate does not
actually holds a reference to the delegate, we fake this by
having the delegate manager hold a reference to delegates for
the main object. This is added/removed as the object is created
and the native finalized is called.

This makes layoutlib behave more like the JNI code where the native
objects are reference counted, and where the Java object can be
deleted but the delegate it owns is kept around (usually because
another type of delegates hold a reference on it.)

To properly handle the WeakReferences, we need to be able to
regularly clear the SparseArray of WeakReference that were
referencing objects that have been GC'ed.
Since the SparseArray is regularly being compacted (actually only
when items are removed), we use a custom SparseWeakArray (started
as a straight copy of SparseArray) that handles the WeakReference
and takes care of compacting the array by removing deleted indices
and WeakReference that returns null. Since our specific use case
doesn't call actually delete() or remove(), the compacting
only happens when the array needs to be resized.

Change-Id: Iacc5c1ff5b21732b8816fda87eb090da12d034e0
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
8a80a8555238cc564f445f902aff5231993a8f96 10-Feb-2011 Xavier Ducrohet <xav@android.com> LayoutLib: remove some exceptions.

We need to move away from throwing anything and instead
log errors/warnings.

Change-Id: Ib1af71a90c06e8565fbd0c061ba56f4d19baa3df
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9a4fe29c8d92014d2d9a848e9116b8cc9d0842f9 10-Feb-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Annotate the custom delegate methods.

Every method implementing a delegate needed by the
layoutlib_create bytecode modification must now be
annotated with LayoutlibDelegate.

The methods in the original source code that are delegated
are already automatically annotated. Now with the implementations
being annotated we can do bi-directional tests and find not
only missing implementations but also dead obsolete code.

This will be useful when backporting to earlier versions of
Android, or when native (non public) method disappear. In fact,
the new test detected one such method in Shader.

Change-Id: I491708b68ac2736ca5669aa86cd5e930a00f9db3
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
51a7e5447de94791c464cda5cc6ebbf616d73c80 15-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: update logs to use new data bundle

Also change some resource.resolve tags to resource.format

Change-Id: I3f0b0d2eb69a5ec98375e4014a3bb1bfceb8c855
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
bbefc8662ac733fd6abfae54d97730506b5e2bd6 14-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Fix multi-line text rendering.

Stupid indices.

Change-Id: I1dbdd04b8f25a5769de8dc21e6c513cef3e35635
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
918aaa5717fce6081557c82ce1c439b6922737d5 13-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Use the new log tag constants from LayoutLog

Change-Id: I29dd578ae16405358d3673caf13528be393f0967
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
56222cfbe9973c518f7e8c9113c614de80b5a4b2 13-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: use tags in logs.

Change-Id: Ib85272249d285ecef409bf063903bcd91514a424
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
b6e53f481294aec2edac5d83d9fde81827c23bd7 08-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: add a few misc implementations.

Change-Id: I586f1d5ecc4f254fc04ea1171eb499d06ac592eb
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
10af738336cb18c5d86710b2961d91e2d3e8d410 07-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: Finish the matrix delegate.

Change-Id: Ife70a4707c113f4a2aed18e303cb2f221c73db2a
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
a7cac5e0542779cadf0f5ccf71584e4b4425f7a6 07-Jan-2011 Xavier Ducrohet <xav@android.com> LayoutLib: fix clipping issues.

There were two issues:
- Graphics2D.setClip only works on rectangular shapes.
This means doing a setClip on a non rectangular shape should
basically reset the clip and intersect with the new shape.

- the current clip can be null, so the combineShape method
must handle it.

Change-Id: Id2cd7475e991d8b533ff2e8850cc2c27663f9e52
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
b44b43b1579486ff7ecd0f7528f17711acdeae98 23-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: Support Region through delegates.

also finish supporting some clip operation
on the canvas.

Change-Id: I743b9e52a7aa6e9340506f1c904cc1cfbf3ff81f
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
d43909c7503e11eb335a452d296a10804bb01fd6 23-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: add support for unsupported drawing modifiers.

DrawFilter, Rasterizer, ColorFilter and MaskFilter
are not supported but we need to provide their
JNI counterparts anyway, to at least display warnings
when they are used.

Also improved the API to query Paint for Shaders
and PathEffects, and clean up some code by
moving asserts into the DelegateManager.

Change-Id: I8942514565d28576d5608c6373bda25d86d42ff2
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
b1da1afa7418960b650780250bbd34c81af61aa3 22-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: improve bitmap support.

Change-Id: I703c2bdf51380b54fd5c20b08d3bc74833d9bc6e
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5 21-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: support for layers.

Layers require that drawing methods potentially
draw in more than one bitmaps.

To handle this this patch offers the following:
- move all drawing methods to use Drawable
- Drawables are now handled by GcSnapshot since
its the one handling the layers
- moved Canvas_Delegate.createCustomGraphics to
GcSnapshot which does not expose the Graphics2D
objects anymore so its draw() methods are the only
way to draw.
- handles creating layers in GcSnapshot.save() and
blitting them in restore()

Other changes:
- Clean up the create/save API in GcSnapshot
- Fixed drawing bitmaps with alpha and other
composite modes.

Change-Id: I1e230087493d044a10de71f4b6d29083e3f3bf64
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
63fd87113cea6abec97a6cd966e090e9b590fc3b 21-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: Misc rendering fixes.

- always set up the stroke. Paint may not have the proper
style when drawing lines. stroke should still be setup.

- Fixed vertical linear gradient. Old code generated
a gradient ratio of NaN

- Fixed alpha rendering when using shaders. In that
case the alpha channel from the paint color should be
used in conjunction with the shader.

- Fixed miter limit. Java expects the value to be multiplied
by the stroke width

- Fixed support for drawing ALPHA_8 bitmaps. Java2D doesn't
have bitmaps with only alpha channels, so we keep using
ARGB bitmaps but when drawing them into a bitmap we erase
the color information.

Change-Id: I4f04341fc843e3f7dadd1fdbf709b11a4f1e24b9
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
d348b6eaa98e23cb38d90906df109aaa2d20ea7f 20-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: support for Path and BitmapShader using delegates.

Also created delegates for all missing shader, xfermode
and patheffect classes. Moved the logic of the xfermode,
and patheffects that was in Canvas_Delegate into the
xfermode/patheffect classes, and added support (in all
3 clases) for knowing if the shader/xfermode/patheffect
is actually supported or not. Make use of fidelityWarning
in LayoutLog if they are not.
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
cfdc784b6cdcbbb2bf2ba4d53d9a9eb2c37278a3 15-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: replace the stack of Graphics2D with custom snapshots.

The first step is to allow the canvas to save only the matrix or
the clip. Previously, since the graphics2D were created completely
new on each save, everything was saved.

Also allows to set transform/clip on the Canvas when no bitmap
has been set (and therefore no Graphics2D exists).

This is required by BitmapFactory.

Change-Id: I37eff6dde1ca708d58ba317b40e9b3236f3ef3d0
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
8da36314fd76ae6fe4549773ad00dc1883cb6bff 14-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: implement more of Canvas/Paint.

Change-Id: I8e2a7a3bddbce08db5eb641b5075bedd75f7be27
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
168677c9e2f8438ec5687e3c6b0e41b986c5b230 06-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: Fix logging.

- Use the new logging API
- remove log object reference everywhere but in Bridge
- all logging code accesses Bridge.getLog()
- prepareScene sets the current scene log object in Bridge.

Change-Id: Ib0517ccd6454c4baf218b6baa978a126f91671e7
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9eb6d412af6859b6c0bb969c76bbfc48eec8fd4b 01-Dec-2010 Xavier Ducrohet <xav@android.com> LayoutLib: Reuse canvas when possible.

Also moved the prepare/cleanupThread methods to Bridge
as they are not really specific to the scene anymore.

Change-Id: I7b93821913ce4d2fcbe3d8be489be6533ff87e57
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
2eea6fab1cbb0a5c8f913491c2d622c904759893 24-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib: Animation support.

New locking mechanims to prevent concurrent renderings.

There's now a thread specific prepareThread() method (only
prepares the looper) and its associated cleanupThread().

For the rendering itself, acquire must be called before doing
any type of Android specific work on the scene (inflate or rendering)
After instantiation, init() must be called, which also acts as acquire.

Added a lot of checks to make sure method aren't called without
acquire or if scenes try to be rendered while acquire was called
from the same thread but on another scene.

Animation implementation:
- Handler delegate to use our own queue (since the animation runs
through handler messages). This uses a callback to process
the message. This callback is per-thread and only used in
animation threads.
- SystemClock delegate to provide clock implementation.
- AnimationThread to handle playing the animation and calling back
to the animation listener.

Change-Id: Ia39aba7ed476759df1da3200e413fe3e92590d15
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
2d56b273ef6e2984a4e8914fb67772b173d0a154 23-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib: use default nine patch classes.

Move away from using our own implementation of NinePatchDrawable.
Now use native delegate for a few methods of NinePatch.

The byte[] used to describe the 9-patch chunk is entirely controlled
by the delegate. Therefore, while the default version (JNI) use the
array as a representation of a C struct, this version uses the array
as a serialized version of NinePatchChunk.

A cache mechanism using SoftReferences allows us to not deserialize
the array every time rendering needs to access the chunk itself.

The Bridge-level cache mechanism for bitmaps and nine-patches as
changed. Since the new nine-patches doesn't hold the bitmap
data anymore (it's stored in a normal Android bitmap which
is cached itself through the cache), then the nine-patch cache
has been changed to only contain the nine patch chunk.

Also initialize the canvas with the display metrics to prepare
for correct scaling when density of the assets don't match the target
density.

Still to come: actual density support in the 9-patch drawing code.

Change-Id: Ibefcccf4432e1986e8436e0c41a0107741593536
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9223b6737c56619c02125ce988bb21fc4fde264b 20-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib: support for editing embedded layouts.

When Resources.getLayout(int) is called to return a parser
for an embedded layout, this queries the current parser for
a custom parser (Eclipse will provide one on top of the current
XML model being edited)

Change-Id: Ia9e837358f67daed0a835e1b3f4f50c0516ceee9
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9e27936e4ab227126e48c4d92a4352dad987e672 12-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib: Fix alpha support in Canvas/Paint.

Change-Id: I359098cfc542a7a0b7d99478c0eb13587b4439d0
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
c2e9651bf386a1f7bf7fc706cf5424950570470c 10-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib: New bridge implementation using the new API 5.

Since the new API prepare for stateful layoutlib, major
reorganization of the code.

New "android" sub-package for all extended android classes.
Also moved BridgeInflater in here so that all extended classes
are in this package. Only delegates and classes replacing
renamed classes are in their original android.* packages.
Also created full file for the empty implementations of
IWindow and IWindowSession.
New "impl" for the dirty work implementation.
Main package contains the basic implementation of the API.

Most of the code that was in Bridge is now in .impl.LayoutSceneImpl,
with the main init/inflate/render code split into the contrustrutor,
inflate() and render().

Change-Id: Ie15b15e5a1b2388cd6ef82e518345b1fc02ec981
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
e0c763f54f5848a2513990fe37791b6f60ef7760 05-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib: more text drawing.

Change-Id: I32f46d23e746b095be0577a53b61567a868f0b8a
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
4b606da91d2d76dd90a427cb3e37ea7df655e8e0 04-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib native delegate: path effects and xfermode.

Change-Id: Iafaac6dbaf452e2dba3e77c801089dad33ac4ea9
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
251d2e99245095369b52d891a660b2ed270f02e0 02-Nov-2010 Xavier Ducrohet <xav@android.com> Layoutlib native delegate: primitive shapes and shaders

Change-Id: Id2b0c6231589e82d8e96c9f019042eba348a6583
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
abff653ce84e5079f35afab008c906063b0b2b6c 02-Nov-2010 Xavier Ducrohet <xav@android.com> More layout Canvas/Paint implementation.

Change-Id: Ib3da4a4b2259dc7c53b24444b5c0b78cee15d387
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
5802deabf06a0754c36e990ce2af7b5c8727e543 02-Nov-2010 Xavier Ducrohet <xav@android.com> More implementation of the layoutlib Paint/Canvas delegates.

Change-Id: I0c0029b9a679af4ae0178488f70b2a90292ea42d
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java
9f63ff263b0a97f0fa63e97136c18f6abccbfc68 28-Oct-2010 Xavier Ducrohet <xav@android.com> Layoutlib Canvas and Paint implementation through native delegates

Also fix native delegate generation to put "this" parameter even
for methods that don't have any parameters.

Change-Id: I5dd0c505871370ff7b4cda16de84a5b3ae438f73
/frameworks/base/tools/layoutlib/bridge/src/android/graphics/Canvas_Delegate.java