History log of /frameworks/base/libs/hwui/hwui/Canvas.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
322bc57a338ec650347084ef379860c19b29d1b4 20-Mar-2018 Mike Reed <reed@google.com> detect api version, and start respecting offsets

Test: make

Bug: 36471624
Change-Id: Ica10c557bf35e8d707fabbafab49d22109916fd3
/frameworks/base/libs/hwui/hwui/Canvas.h
83143d005b38bf4d629825aaac037e759c68b8a6 15-Mar-2018 Seigo Nonaka <nona@google.com> Remove mtOffset from drawTextRun

Bug: 72998298
Test: atest CtsWidgetTestCases:EditTextTest
CtsWidgetTestCases:TextViewFadingEdgeTest
FrameworksCoreTests:TextViewFallbackLineSpacingTest
FrameworksCoreTests:TextViewTest FrameworksCoreTests:TypefaceTest
CtsGraphicsTestCases:TypefaceTest CtsWidgetTestCases:TextViewTest
CtsTextTestCases FrameworksCoreTests:android.text
CtsWidgetTestCases:TextViewPrecomputedTextTest

Change-Id: Ia886c1ce9f7387559d7fe00b34ce03378d56ecec
/frameworks/base/libs/hwui/hwui/Canvas.h
7717e22c85fd2eaba39f1dc38c65fb7f723882f4 06-Feb-2018 Stan Iliev <stani@google.com> Draw text with a hairline stroke as if it is fill style

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
/frameworks/base/libs/hwui/hwui/Canvas.h
ab802003b9e38215dc1feb570a174cf1556882de 24-Jan-2018 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Compute full text layout in MeasuredText and use it for drawing"
2d14213849d6df70d0fa80319ab4ffc08743a683 22-Jan-2018 Derek Sollenberger <djsollen@google.com> Initial implmentation of AnimatedImageDrawables on the RenderThread.

The current implementation schedules the next frame of the images
to be decoded after the current frame completes but potentially
schedules tasks that will result in a no-op execution if a new
frame is not yet needed.

Test: HwAccelerationTest
Change-Id: I0510cb5a1b801abd651327e924deb586af0306d6
/frameworks/base/libs/hwui/hwui/Canvas.h
783f961d2fa6f916009844dafeaa08ffaf96a4d3 20-Jan-2018 Seigo Nonaka <nona@google.com> Compute full text layout in MeasuredText and use it for drawing

The full layout is required for drawing text on UI thread.
To save this work, store the full layout result in MeasuredText and
compose the final layout from stored full layout if possible.

Currently justification/hyphenation is not supported but works normally
as before. Nothing changes on existing non measured text.

StaticLayout creation time for no style text (w/o patch -> w/ patch, N=30)
MeasuredText Balanced Hyphenation : 721,297 -> 720,657: (-0.1%)
MeasuredText Balanced NoHyphenation: 550,588 -> 546,069: (-0.8%)
MeasuredText Greedy Hyphenation : 503,582 -> 498,009: (-1.1%)
MeasuredText Greedy NoHyphenation : 502,344 -> 498,507: (-0.8%)
RandomText Balanced Hyphenation : 19,351,802 -> 19,176,024: (-0.9%)
RandomText Balanced NoHyphenation : 8,033,830 -> 7,973,336: (-0.8%)
RandomText Greedy Hyphenation : 7,957,335 -> 7,927,316: (-0.4%)
RandomText Greedy NoHyphenation : 7,988,884 -> 7,929,717: (-0.7%)

StaticLayout.draw time for no style text (w/o patch -> w/ patch, N=30)
MeasuredText NoStyled : 644,453 -> 660,684: (+2.5%)
MeasuredText NoStyled WithoutCache : 9,251,919 -> 648,992: (-93.0%)
MeasuredText Styled : 3,092,353 -> 870,702: (-71.8%)
MeasuredText Styled WithoutCache : 12,544,014 -> 1,114,557: (-91.1%)
RandomText NoStyled : 582,167 -> 572,092: (-1.7%)
RandomText NoStyled WithoutCache : 9,167,670 -> 9,056,447: (-1.2%)
RandomText Styled : 3,064,490 -> 3,029,028: (-1.2%)
RandomText Styled WithoutCache : 12,314,863 -> 12,283,026: (-0.3%)

Test: minikin_test
Test: bit CtsTextTestCases:*
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Test: bit FrameworksCoreTests:android.text.MeasuredParagraphTest
Bug: 63897135

Change-Id: I7e6ec5c953d7d0f767aba4f61f94e62b6f3a3a2b
/frameworks/base/libs/hwui/hwui/Canvas.h
671cce2605ed50c9aba73ab5bd530cb7741c53cd 14-Jan-2018 Leon Scroggins III <scroggo@google.com> Make ImageDecoder return animated Drawables

Bug: 63909536
Bug: 63908092
Test: TODO

If ImageDecoder.decodeDrawable is called with an animated image Source
(currently GIF or WebP), return an object of a new (hidden) Drawable
subclass. The new Drawable animates, and it implements Animatable (TODO:
implement Animatable2) so users have some control over the animation.

In addition to the normal features of Drawable, this new one supports
many of the features of ImageDecoder, including scaling, cropping and
PostProcess, which enables circle masks/rounded corners and other
arbitrary after-effects. It does *not* support decoding directly to a
Hardware Bitmap, since it cycles through frames and reuses the same
bitmap memory. But it could be made to use shared memory (TODO?).

TODO: Use a better number for the native allocation registry
TODO: Use the RenderThread to drive the animation, and remove decoding
on the UI thread.
TODO: Add support for modifying the loop count

Android.bp:
- build new AnimatedImageDrawable.cpp

AndroidRuntime.cpp:
- register new native methods

AnimatedImageDrawable.java
AnimatedImageDrawable.cpp:
- new Drawable that handles animated images

Canvas.h, SkiaCanvas.h/.cpp
- New virtual method and implementation for drawing SkAnimatedImages

RecordingCanvas.h/.cpp
- Stub implementation of drawing SkAnimatedImages

ImageDecoder.h/cpp
- Allow code sharing with AnimatedImageDrawable.cpp
- postProcess
- access the ImageDecoder struct

Depends on https://skia-review.googlesource.com/c/skia/+/94660 in Skia.

Change-Id: Ie2ec98d9c52deda4d439c6ef8e5dea2861bb93a3
/frameworks/base/libs/hwui/hwui/Canvas.h
1bcacfdcab0eaa0cee92bd7f5a1b5e271dd68e52 03-Nov-2017 John Reck <jreck@google.com> Format the world (or just HWUI)

Test: No code changes, just ran through clang-format
Change-Id: Id23aa4ec7eebc0446fe3a30260f33e7fd455bb8c
/frameworks/base/libs/hwui/hwui/Canvas.h
7c93e868825225a270c993ac058687adde682626 26-Oct-2017 Seigo Nonaka <nona@google.com> Make casting to bidi flags explicit

Bug: 65024629
Test: checkbuild
Change-Id: I0771036359cc1ee5471e9fd4da304598a2f8bf98
/frameworks/base/libs/hwui/hwui/Canvas.h
938e884a1fcc385dba5a41475aad76d8b7189609 24-Aug-2017 John Reck <jreck@google.com> Avoid setting high contrast in every view draw

Test: high contrast text still works
Change-Id: I6674d1aca8dddf7eb9725a5346aed12ef1dbc195
/frameworks/base/libs/hwui/hwui/Canvas.h
891f481ef8ab3fd26f68602f634bd0b73f42005f 08-Aug-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Refactoring: Deprecate Paint.mNativeTypeface."
318ca04079bd6242cb6186d9005b9caeee22e845 02-Aug-2017 Seigo Nonaka <nona@google.com> Refactoring: Deprecate Paint.mNativeTypeface.

Bug: 64269689
Test: m checkbuild
Test: bit CtsGraphicsTestCases:*
Test: bit CtsViewTestCases:*
Test: bit CtsTextTestCases:*
Change-Id: Idc9f2b4612741be949204cd06efc41e1738d6587
/frameworks/base/libs/hwui/hwui/Canvas.h
fa3e340431cc8168d960e719a596bca31dcccb38 04-Aug-2017 Derek Sollenberger <djsollen@google.com> Use colorFilters when rendering to an sRGB bitmap.

Bug: 62347704
Test: CtsUiRenderingTestCases, CtsGraphicsTestCases, hwui_unit_tests
Change-Id: I3e237b64cd92217b02d4995bdd695a28d3f393ee
/frameworks/base/libs/hwui/hwui/Canvas.h
a7f6af2c51e70a3ff84bd3a8274f372bccfef8d0 02-Aug-2017 Derek Sollenberger <djsollen@google.com> Revert "Use colorFilters when rendering to an sRGB bitmap."

This reverts commit b851b197497783f894b72edcaed8f93d035ddea0.

Change-Id: I5bb8fe9bf9f5d411674e289c467b3f569f7bb068
/frameworks/base/libs/hwui/hwui/Canvas.h
b851b197497783f894b72edcaed8f93d035ddea0 01-Aug-2017 Derek Sollenberger <djsollen@google.com> Use colorFilters when rendering to an sRGB bitmap.

Bug: 62347704
Test: CtsUiRenderingTestCases, CtsGraphicsTestCases
Change-Id: I55a574ffd9305588b82345a598da7818952a131d
/frameworks/base/libs/hwui/hwui/Canvas.h
d0814db633dbd76ecdec08806199d49654562d48 13-Apr-2017 Matt Sarett <msarett@google.com> Add SkiaCanvas::captureCanvasState()

Test: Verified bug is fixed. Wrote unit test.

Bug: 37268771

Change-Id: I9deb7db353cd2129ad245e7f65419670463bb717
/frameworks/base/libs/hwui/hwui/Canvas.h
7c9fb6076e8d64dbca19cfe0628b02040c5750e2 07-Apr-2017 Matt Sarett <msarett@google.com> Merge "Xform bitmaps to sRGB on SW and PDF canvases" into oc-dev am: c29dffed16
am: fd5d5425ee

Change-Id: If960ccd900ebc2b841c2f13ca4f25820a48a950f
ea70d22dc8dc5d61f075edf6d03f86f6a68169cd 29-Mar-2017 Matt Sarett <msarett@google.com> Xform bitmaps to sRGB on SW and PDF canvases

For picture-backed canvases, we will defer the xform
until playback.

Test: Unit tests and cts test.
Bug: 32984164
Change-Id: Ib74663bcb688b74b6ba8792b403b0475126732af
/frameworks/base/libs/hwui/hwui/Canvas.h
826deefda55ead0036cdb0924bc14f17d2a85420 04-Apr-2017 Mike Reed <reed@google.com> switch over to SkVertices object, and stop using deprecated methods.

This allows Skia to remove
SK_SUPPORT_LEGACY_CANVAS_VERTICES
SK_SUPPORT_LEGACY_BITMAP_SETPIXELREF
SK_SUPPORT_LEGACY_PIXELREFFACTORY

Test: Existing CTS cover these changes

Running CtsGraphicsTestCases, there were 6 failures w/ and w/o this CL.
None of the 6 seems related to this CL.

Change-Id: I724082357d9f6cb699770df3c0b9ef555b957697
/frameworks/base/libs/hwui/hwui/Canvas.h
0b58d9928309e2c64c7cafad287e55a8151ab19a 31-Mar-2017 Stan Iliev <stani@google.com> Optimize Canvas::drawGlyphs

Avoid one memcpy in Canvas::drawGlyphs for all pipelines.

Test: CTS passed with exception of SweepTests#testBasicDraws
shadowtext, which fails with and without this CL.
Change-Id: I0841232dc7a6173eb3b03f939dbde15a84186296
/frameworks/base/libs/hwui/hwui/Canvas.h
b29b16e5423fe7deab8ebf3da512c6d2192f19b5 04-Jan-2017 Derek Sollenberger <djsollen@google.com> Remove clipRegion from the public API.

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
/frameworks/base/libs/hwui/hwui/Canvas.h
6e49c9f007c879f05b035c40c0ba543c00f9d0d0 02-Dec-2016 Mike Reed <reed@google.com> switch over clip calls to use SkClipOp instead of SkRegion::Op

Change-Id: I67d23c487b5249bc31d96e3b2393f693c0b2bcff
/frameworks/base/libs/hwui/hwui/Canvas.h
7de73858975fc4dbccfa1c188f6d1a12d39ce2c5 26-Oct-2016 Matt Sarett <msarett@google.com> Implement getTransparentRegion() using SkLatticeIter

This allows us to delete utils/NinePatchImpl.cpp and
utils/NinePatch.h

Test: Passed cts tests - DrawableTest, NinePatchTest,
NinePatchDrawableTest.

Change-Id: I6b5d09fa3479e758d8b931fa0e977c25f4435a7c
/frameworks/base/libs/hwui/hwui/Canvas.h
5fd2a1cb2726afa7d40fe4750e9defd89c24ed37 21-Oct-2016 sergeyv <sergeyv@google.com> Pass Bitmap instead of SkBitmap in drawNinePatch & drawBitmapMesh
Test: refactoring cl.
bug:32216791

Change-Id: I5adcd59daf752d36012456b0a9960c59d07e2e3d
/frameworks/base/libs/hwui/hwui/Canvas.h
fc9999505a36c66892d7ccce85187936105f4f36 17-Oct-2016 sergeyv <sergeyv@google.com> Pass Bitmap instead of SkBitmap for bitmap rect operation
Test: refactoring cl.
bug:32216791

Change-Id: I66d19194c57b3aa2c400aa87acffc774a533776a
/frameworks/base/libs/hwui/hwui/Canvas.h
aed7f58fb05a25ce2112829e77c0eb5dd268e8a7 15-Oct-2016 sergeyv <sergeyv@google.com> Pass Bitmap instead of SkBitmap in canvas.drawBitmap(Bitmap, float,float,Paint)
Test: refactoring cl.
bug:32216791

Change-Id: If9f9fbc19e683b14cce6c3c268258bd832d495d2
/frameworks/base/libs/hwui/hwui/Canvas.h
0154feef22d9fa5490f0285c2c3d83951b12bcc8 19-Oct-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Initial refactoring to enable reuse of SkiaDisplayList on a per RenderNode basis. With Skia renderer we see 30% speed improvement in Invalidate Tree UI Jank test, when SkiaDisplayList objects are reused."
c0e7a90f1f5f98e85dbeda021fac0dff79725933 13-Oct-2016 Stan Iliev <stani@google.com> Initial refactoring to enable reuse of SkiaDisplayList
on a per RenderNode basis. With Skia renderer we
see 30% speed improvement in Invalidate Tree UI Jank test,
when SkiaDisplayList objects are reused.

Test: manually built and run on angler-eng.
Change-Id: Ie4ec50ddb2015150e3ec678dde7ebed0c8d90067
/frameworks/base/libs/hwui/hwui/Canvas.h
260ab726486317496bc12a57d599ea96dcde3284 07-Oct-2016 Mike Reed <reed@google.com> use SkBlendMode instead of SkXfermode
use sk_sp versions of paint setters/getters

Change-Id: I86591a0a8ec92e6039776cbf00424ea24f585b28
/frameworks/base/libs/hwui/hwui/Canvas.h
7e03ffa772481387beba66e33a0a056af2642aa7 29-Jul-2016 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Use Canvas::create_recording_canvas instead of RecordingCanvas ctor"
06152cdd06da50762716cd455dcf7ab0117f25b0 27-Jul-2016 Stan Iliev <stani@google.com> Use Canvas::create_recording_canvas instead of RecordingCanvas ctor

Modify HWUI tests to support different recording canvases. Delete
TestCanvas class and use base Canvas class instead. Use
Canvas::create_recording_canvas to create recording canvas instances
instead of RecordingCanvas constructor.

Change-Id: I651fb9bb4add0874d7110bac467a2eb1012357fc
/frameworks/base/libs/hwui/hwui/Canvas.h
afc221499d943386256feb9db46c119ff834bf79 18-Jul-2016 Yuqian Li <liyuqian@google.com> More efficient text rendering on path

Change-Id: I004c15473b527df0f296c54a6a3e9b29505fd9b9
/frameworks/base/libs/hwui/hwui/Canvas.h
5e00c7ce063116c11315639f0035aca8ad73e8cc 07-Jul-2016 Chris Craik <ccraik@google.com> Delete old rendering pipeline

fixes: 30002246

Change-Id: I45df0e924708526cee045b14c291bd23aa1a92db
/frameworks/base/libs/hwui/hwui/Canvas.h
9688a3d33451134d6ff54f7b60f8db7a338a40f1 30-Jun-2016 John Reck <jreck@google.com> Fix compile issue

Change-Id: Ic3423cfb23c6057210efb2e9110551b694c0101c
/frameworks/base/libs/hwui/hwui/Canvas.h
cd1c3eba69d044b551cededad75474038f919890 14-Apr-2016 John Reck <jreck@google.com> Add a callback for when a gl functor is released

Bug: 27709981

Change-Id: Id5be3e8f88d6d84a9c59c7ed23e7e8862feefbe8
/frameworks/base/libs/hwui/hwui/Canvas.h
79abbf22d4f672208327546661e694d837f564a9 24-Mar-2016 Derek Sollenberger <djsollen@google.com> Update HWUI tests to use minikin to layout fonts.

This update is a precondition for landing additional tests
that depend on the minkin layout implementation.

bug: 27675371
Change-Id: I9bb98bae6b39462246e42cf8acb968b7df05292d
/frameworks/base/libs/hwui/hwui/Canvas.h
bad99183916ba2bac6659efc8a28273e344ba511 17-Mar-2016 sergeyv <sergeyv@google.com> Clean up and rename TypefaceImpl

bug:25865834
Change-Id: I77e8a627163e040a5c25865054a8a936052af367
/frameworks/base/libs/hwui/hwui/Canvas.h
dccca44ffda4836b56a21da95a046c9708ffd49c 21-Mar-2016 sergeyv <sergeyv@google.com> Reland: Move text logic from jni to hwui level

Initial CL: https://googleplex-android-review.git.corp.google.com/#/c/886854/

Change-Id: I9dfd85fe1d2a2c44f4360c8a29fd58d80e6f31c8
/frameworks/base/libs/hwui/hwui/Canvas.h
afbd0f1fef46ef0ddf633dfde0de724db3da1405 21-Mar-2016 Sergei Vasilinetc <sergeyv@google.com> Revert "Move text logic from jni to hwui level"

This reverts commit a7f6bba1a3565c19715e878dfe7f0e01022944ff.

Change-Id: If4f36f87a85411b6128fd92d391313803ccaf9dd
/frameworks/base/libs/hwui/hwui/Canvas.h
a7f6bba1a3565c19715e878dfe7f0e01022944ff 16-Mar-2016 sergeyv <sergeyv@google.com> Move text logic from jni to hwui level

bug:25865834
Change-Id: I2d8c9c9544afcb5ce1784f732aed3e54e0eda372
/frameworks/base/libs/hwui/hwui/Canvas.h