Dew to a side effect of HWUI opengl pipeline, the hairline stroke
is not respected, but it is drawn as a fill style. Implement the
same behaviour for skiagl pipeline with SDK API 27 and older.
On SDK released with Android P, the hairline stroke is respected.
Bug: 72494357
Test: Ran duolingo app
Change-Id: I48bdcf3ddec4bf65b5e93e01c5002177c4e3da90
For apps targeting releases earlier than O setBitmap will attempt
to preserve the matrix from the previous bitmap. It does not however
attempt to reconstruct the save/restore stack or the clip.
Test: manual test of messenger app referenced in the bug
Bug: 37589964
Change-Id: I67f0928a3f84a8be41da38ef1868e79bdeb03e46
- identity matrix
- no save stack
- wide-open clip
Behavior around the new bitmap is the same.
Tests : CtsGraphicsTestCases
Change-Id: Ieaf8c2a1b96262ed33940dd852a86089eb93efdb
Operations that can expand the clip are difficult to support and
don't fit the parent child model that is used by the view system.
Test: compile
Bug: 14650725
Change-Id: I67e99d3e1a1eb0b231910ee5d277a38e8a953dc4
Bug: 33460152
Test: ViewShowHidePerfTests
Switches non-drawing @FastNative methods to @CriticalNative, except
where out arguments prevent it.
Performance in ViewShowHidePerfTests not significantly impacted.
Change-Id: I3edc963accb4f87f73d175c7b2534868602a7db3
This API is difficult to support for printing and has other negative
effects as it does not respect the current matrix/clip.
Test: compile
Bug: 14650725
Change-Id: I71f9bd687d446c7ce8910d755421aad8e09458db
update-api orders methods alhabetically by name, but when
there's multiple methods with the same name it falls back to
the ordering within the file.
Re-order the methods in canvas.java to match what's already in
current.txt to avoid unnecessary changes.
Also auto-formatted the draw methods as some were mis-indented.
Test: No behavior change, just method re-ordering
Change-Id: I2a7d313c8e7a6bd9187c4ed7dbde944b88aa32bb
All draw* calls in Canvas are regular JNI
All draw* calls in DisplayListCanvas are FastNative
Unifies Canvas JNI on nMethodName naming
CanvasPerf results before:
INSTRUMENTATION_STATUS: basicViewGroupDraw_min=12492
INSTRUMENTATION_STATUS: recordSimpleBitmapView_min=13912
and after:
INSTRUMENTATION_STATUS: basicViewGroupDraw_min=11945
INSTRUMENTATION_STATUS: recordSimpleBitmapView_min=13318
Test: refactor, makes & boots
Change-Id: I06000df1d125e17d60c6498865be7a7638a4a13e
Just the basic cleanup first, will follow-up with a more
comprehensive update later
Test: builds & boots, refactor no behavior change
Change-Id: Ie3a7144b5fefdfda085e2ab50da8b0e627a1ecb8
Don't save matrix if we just need clip saved
Early-reject the easy-to-reject cases in Canvas
before hitting JNI
Change-Id: I385ef90a31efbda31ce37837152f626aad553ee7
So that the native library isn't unloaded before we have a chance to
call the freeFunction.
Bug: 28406866
Change-Id: I889f1ccd91bba70e31fb8d09c0ec6d471fc35841
Put the native allocation support into a holder class. This allows
statically initializing the classes in the boot image.
Bug: 27265238
Bug: 23130675
Change-Id: I857aebfdbaec39067a5eb58afceb49630176af98
This also moves some functions that are only called when creating/completing
a displayList into the appropriate constructors and endRecording calls.
Change-Id: I9f6add156d7f476a52766934af713b0f852c8dea
Switch a few places to using android::canvas
instead of SkCanvas as well which eliminated
some JNI
Change-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc
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
Switch a few places to using android::canvas
instead of SkCanvas as well which eliminated
some JNI
Change-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc
Fix a bunch of places where mNativeBitmap was being
poked at directly, switch them either to the NDK API
or to GraphicsJNI where it made sense
Change-Id: I6b3df3712d6497cba828c2d3012e725cb4ebb64d
Also updates Canvas.drawText() docs to clarify that the y-origin is
actually the baseline rather than the top (which is what developers
expect).
BUG: 18864682
Change-Id: Ibfa2a79327d17b5135f90468195fbeca922a25c8