Commit Graph

53 Commits

Author SHA1 Message Date
Victoria Lease
8dc7d5ea26 clarify Paint flag docs
Bug: 10460797
Change-Id: Iae622b302cad3dc788f512b472e3a59ec227a8d7
2013-09-26 13:40:47 -07:00
Fabrice Di Meglio
41207bce2a Fix bug #10205316 CTS (KLP): android.graphics tests are failing
- fix null Shader case during copy

Related to https://googleplex-android-review.googlesource.com/#/c/336815/7

Change-Id: I920d6bb181ddb92d6f771e5060fd1858430e71ad
2013-08-08 19:11:34 -07:00
Fabrice Di Meglio
851761574a Merge "Fix Paint Shader copy" 2013-08-01 21:50:14 +00:00
Fabrice Di Meglio
e3c526f4f6 Fix Paint Shader copy
- Paint.setClassVariablesFrom(Paint paint) was using the same Shader
for the copy as the initial Paint. Make sure that we are using a copy.
- implement a copy() API for shaders

See bug #7034321 Need Drawable RTL support

Change-Id: I4b9cee386edc72ad670723266333b85f4d2b0ab8
2013-08-01 14:33:22 -07:00
Victoria Lease
1e546815bb Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)
Quite a few things going on in this commit:

- Enable bitmap strikes by default in Paint objects.

The SkPaint parameter that enables bitmap strikes was not previously
included in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap
fonts. Oops! It's for the best, though, as additional work was needed
in Skia to make bitmap fonts work anyway.

- Complain if TEXTURE_BORDER_SIZE is not 1.

Our glyph cache code does not currently handle any value other than 1
here, including zero. I've added a little C preprocessor check to
prevent future engineers (including especially future-me) from
thinking that they can change this value without updating the related
code.

- Add GL_RGBA support to hwui's FontRenderer and friends

This also happened to involve some refactoring for convenience and
cleanliness.

Bug: 9577689
Change-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c
2013-07-31 15:50:47 -07:00
Victoria Lease
626d3c2281 bidiFlags != SkPaint::Flags
We've a number of native functions in the text layout path that take
a bidiFlags argument. We've a number of callers of those functions
passing in SkPaint::Flags in that slot. This completely breaks text
directionality for the affected functions, as
SkPaint::kAntiAlias_Flag happens to share values with kBidi_RTL,
resulting in anti-aliased SkPaints measuring text as if it were RTL,
and non-anti-aliased SkPaints measuring text as if it were LTR,
regardless of the actual text directionality. Oops!

To address the issue, this commit replaces erroneous calls to
SkPaint.getFlags() with the value of Paint.mBidiFlags, and includes
the necessary plumbing to get that value where it needs to be.

Bug: 8471481
Change-Id: I2d04b70defed3130fc1ad13f4c9098f5fce4ffde
2013-03-28 15:56:14 -07:00
Fabrice Di Meglio
665f02c667 Fix bug #8437358 Clean any ICU related code from TextLayout / Paint and their dependencies
- remove the ICU related methods and update the methods using the "reserved" argument
- update to CTS in another CL too

Change-Id: I5509736568c342d9d17bfeafc17951117ab5d3cc
2013-03-20 14:56:05 -07:00
Fabrice Di Meglio
da12f389eb Revert "Clean Paint.mBidiFlags as it is no longer used"
This reverts commit 6d9fe5bd22.
2013-03-15 11:26:56 -07:00
Fabrice Di Meglio
a4bf8114a7 Revert "fix argument mismatches in Paint JNI"
This reverts commit b61fb10fe4.
2013-03-15 11:22:29 -07:00
Victoria Lease
8e04840f38 round subpixels up to next integer in measureText DO NOT MERGE
A common source of layout bugs we're seeing these days involves the
output of measureText() being fed into StaticLayout's constructor.
measureText() returns subpixel-accurate values, but StaticLayout only
takes integral bounds, resulting in the subpixel portion of the
bounds being truncated. This leaves StaticLayout with insufficient
space to layout the text that was just measured, causing all manner
of unexpected line breaks.

This could be causing issues elsewhere, as well. Until our text
pipeline is fully subpixel-perfect, it's best that measureText
guarantee that the value it returns will be sufficient to contain
the text, even if cast to int.

Cherry-pick of Ib84947f0d0a1229287f5b19b99e7efd40f5317f7

Bug: 8164205
Change-Id: I69795ba5770112c0a3d0e752158076a8d1646b1a
2013-02-27 11:38:05 -08:00
Victoria Lease
b61fb10fe4 fix argument mismatches in Paint JNI
Paint.getTextRunCursor() no longer has a "flags" argument on the Java
side. The native side, however, still had the argument, and was being
called with misaligned arguments, causing all manner of madcap fun.

Also, the version of Paint.getTextRunCursor() that took String as an
argument needed to lose the "flags" argument, as well, to prevent an
infinite loop in the CharSequence version of the function, which was
supposed to be calling the String version but was actually calling
itself.

Bug: 8201224
Change-Id: Iad0dabaf81185f29a082566cc64590f2ba9bc31c
2013-02-14 15:58:46 -08:00
Fabrice Di Meglio
6d9fe5bd22 Clean Paint.mBidiFlags as it is no longer used
See bug #7623824

Change-Id: Ie2f9422821f6dcc73c99e8695f448e966b587b1d
2013-02-12 13:12:13 -08:00
Romain Guy
a1dcc992ff Undeprecate linear text API
Hardware renderer support pending, but this API should not have
been deprecated in the first place.

Change-Id: I062dac6d65dffb5369e65d55ea159594a0971b59
2012-11-27 13:35:49 -08:00
Romain Guy
885d82d427 reset() should reset. Otherwise it would be called something else.
Bug #7256095

Change-Id: I610bbcaccdceaf2b5bb5f9d231283335911d4cd9
2012-09-28 19:24:37 -07:00
Fabrice Di Meglio
029b633038 Improve Paint.setTextLocale()
Change-Id: Iffc9f8816f48dbd431b3b430a7c48f8d646703f3
2012-04-12 18:44:16 -07:00
Fabrice Di Meglio
517825f1a9 Add Paint.setTextLocale()
- will be used for better shaping CJK and other goodies

Change-Id: If64945a337edd915f5ebb88f04b6fd18e92ca587
2012-04-12 17:31:17 -07:00
Romain Guy
68fc1dfce0 Remove unused code
Change-Id: Ife0a43f3cfe64a1e74401b10bf74d37cbeefb5af
2012-01-19 17:41:39 -08:00
Romain Guy
f9d9c065ed Deprecate unused APIs
Change-Id: I0107e246b632dda96b8b025217936954f1f46283
2012-01-19 17:16:38 -08:00
Romain Guy
f68832bcc1 Turn hinting back on
The difference is not obvious when compared to no hinting, and turning
off hinting has undesirable side effects because of the lack of sub-
pixel positioning when rendering text.

Change-Id: If2162ba079f68f33b33aed444e80036fdbf015bb
2011-09-12 13:14:42 -07:00
Fabrice Di Meglio
8b5a8b5bed Merge "Code cleaning" 2011-09-01 11:41:42 -07:00
Fabrice Di Meglio
7d892dcc8a Code cleaning
- remove unused constant
- fix spelling

Change-Id: I0053129b33c2ee472db84e14d4b2ace5d97d20a8
2011-08-31 19:31:51 -07:00
Fabrice Di Meglio
e7197a996f Merge "Fix bug #5233207 android.graphics.cts.PaintTest#testBreakText fails on IRK56F trygon-userdebug" 2011-08-31 10:30:27 -07:00
Fabrice Di Meglio
8fa6503feb Fix bug #5233207 android.graphics.cts.PaintTest#testBreakText fails on IRK56F trygon-userdebug
- Paint.breakText() API was regressing on the argument validation: a count < 0 is a valid one

Change-Id: I6d09294ee9f21901ba00017ce0d73f757fc7b147
2011-08-30 15:01:39 -07:00
Jeff Sharkey
bb66c21f01 Make Paint.set() copy shadow config.
Also unify all Java variable copying into single method.

Change-Id: I8fefa615f6f164ae5662913d612b388b46890089
2011-08-29 15:06:36 -07:00
Dianne Hackborn
f43fa5746e Turn off hinting by default for higher density displays.
Also adds an API for apps to control whether hinting is used.

Change-Id: I1a06b06255fbb8d0f02a8ce48c2cd60019088ed3
2011-08-12 18:59:39 -07:00
Xavier Ducrohet
7f9f99ea11 Make some methods/fields package private so that layoutlib can access them.
Change-Id: I4aeadfbaf8a4f6a459fa19937c21ac23d9e5fb64
2011-08-11 12:57:51 -07:00
Fabrice Di Meglio
8984b41665 Add more Paint text APIs parameters checks
Change-Id: Idd04e9937b821180f46852451405bb9c6d59da37
2011-08-09 16:03:01 -07:00
Fabrice Di Meglio
15c097a1c2 Add more optimizations for Text measuring / breaking / getting advances
- do not go to native if this is not needed (empty or null text)
- do expandMetricsFromPaint() in TextLine when needed instead of calling handleText()
with emty string just for doing expandMetricsFromPaint()

Change-Id: I1f566ccef66cbc990ebbb77ef149899119e37e84
2011-08-08 14:42:41 -07:00
Fabrice Di Meglio
4c7dbc0495 Fix bug #4584320 Single Line EditText not drawing correctly with spans applied (ICS)
- provide a better fix by still using the full context of the text (versus using the text only)

Change-Id: I542335e98117921d75c191e90a9b2018ca356ac9
2011-08-08 12:11:41 -07:00
Fabrice Di Meglio
f2ce877c1d Fix bug #4584320 Single Line EditText not drawing correctly with spans applied (ICS)
- use correct 0 index for computing advance thru the char buffer (the buffer is created from TextUtils.getChars())
- udpate unit tests

Change-Id: Iaeb07658b79ecdf5e17395d55afb7c84965bb0fc
2011-08-05 20:54:54 -07:00
Romain Guy
b1216dd916 Copy constructors should actually copy stuff.
Bug #5027094

Change-Id: Iab6bf652e0b9bdd1bbc794e7c4218f46bafdd1a4
2011-08-02 12:37:16 -07:00
Fabrice Di Meglio
0a1413e4bf Clean getTextRunAdvances() APIs
- remove ICU reference in API names
- use a "reserved" int parameter to pass either "0" for Harfbuzz or "1" for "ICU"

Change-Id: I88b4f76feafd203a6999cd7349402fa36a9a4b2a
2011-04-21 17:36:26 -07:00
Fabrice Di Meglio
eee49c699c Fix text redering issue where the text was sometimes truncated
- mostly was visible in Settings apps / Wi-Fi networks summary info for each network
- correctly setup the local SkPaint for advances computation
- improve test app for adding live resizing

Change-Id: Ia031fe1b115b521ba55c7e68f2a26300f02e48ca
2011-03-29 19:44:33 -07:00
Fabrice Di Meglio
9f82b580d7 Use Harfbuzz instead of ICU4C for computing advances
- use Harfbuzz shaper for shaping and getting glyphs
- add test app for showing result of drawText() and drawGlyphs()
- add private API in Canvas and Paint for test app

Change-Id: Ia15be216f8636d2d864066e9b7de2f53008c30f6
2011-03-22 19:36:30 -07:00
Brian Muramatsu
8a9f9d880d Fix Paint#breakText(char[]..) JavaDoc
The JavaDoc says that if the "...count is negative then the
characters before index are measured in reverse order. This
allows for measuring the end of string."

However, the native code doesn't work its way backwards
from the given index when the count is negative. It always
passes Skia the substring starting from index and the
absolute value of count.

Its better to fix the JavaDoc rather than the behavior, since
this API is public and has been this way for some time. It
is also used by TextUtils.ellipsize indirectly, so its best
to avoid breaking that sensitive code.

Change-Id: I8bd51def6ec98251e355370710eb44f58fb737c4
2011-02-16 14:58:45 -08:00
Gilles Debunne
1feba8bb02 Fix for an IOOBoundsException in Paint.
Bug 3331706

The temporary buffer starts at index 0 and shifts indexes by contextStart.
offset has to be changed accordingly.

Note that I didn't try to reproduce the monkey bug after this fix, but it
seems like a perfect explanation for the exception.

Change-Id: Ie69adc413670caed283bc46effc69f17a102922c
2011-01-27 18:39:42 -08:00
Chet Haase
27c1d4debb Fix minor animation and doc issues
Change-Id: I0ea077d9434ac3e22e8600f22ca4a24a6a46965c
2010-12-16 15:25:52 -08:00
Gilles Debunne
0bb000931b Fix in vertical measurement in text lines with different text sizes
The last span of the TextLine was defining the FontMetrics, instead of
min/maxing the different values.

Bug 3220698

Change-Id: I7394b1699a15aeee4cc38462d561faf329d3e1f6
2010-12-02 16:18:54 -08:00
Romain Guy
1e45aae5de Add drop shadows.
Change-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b
2010-08-13 19:41:14 -07:00
Romain Guy
694b519ac6 Add text rendering.
Change-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9
2010-07-21 21:33:20 -07:00
Romain Guy
a1db574036 Add preliminary support for text rendering.
Change-Id: I547eb631dbda24d13960d54b4144fb8908fd8a49
2010-07-20 16:37:27 -07:00
Doug Felt
f7cb1f75fd Support bidi/shaping for getTextPath
Move layout-related code into separate class since it's needed by both
canvas and paint.

Change-Id: Iba89a1d94d7cca650255ffa3cbc952b988a51b54
2010-07-12 13:50:08 -07:00
Romain Guy
c7d53494f1 Implement quickReject() and drawRect().
The OpenGL ES 2.0 renderer can now draw colored rectangles. At least there's
something on screen now.

Change-Id: I80a13ccc1dd56784edf74f2670a364f30700234a
2010-06-25 13:41:57 -07:00
Doug Felt
0c702b88c5 Move shaping to native.
Add internal API (getTextRunAdvances) to Paint, use when measuring.
Add internal API (getTextRunCursor) to Paint, use when determining
valid cursor positions.

Remove java-level shaping code.  Remove 'prep' code in TextLine
(except for replacement text) since shaping now is done on the fly as
needed in native.

Provide explicit shaping context bounds to internal text measuring,
cursor movement, and rendering APIs.

Update for to changes in external API in ushape.h.

Change-Id: I146958b624802ce8553125e5c3c6c03031bc9608
2010-06-10 14:03:22 -07:00
Doug Felt
f47d7405bb Modify Canvas drawText to run bidi and shape.
Adds drawTextRun as internal API on Canvas and GraphicsOperations.
Adds implementation to implementors of GraphicsOperations.

Adds state and API on Paint to control the bidi algorithm when used
by Canvas.  This API is currently hidden.

The drawText changes are incomplete since shaping is not yet available
in the native code.

Change-Id: I4368048aef9545df0953a349381771603e04b619
2010-05-12 18:50:02 -07:00
Mike Reed
d404d6f162 update dox for FILL_AND_STROKE style
Change-Id: I7835068a376dfa4d8c18d8bb20d97941a058e89f
http://b/issue?id=2590047
2010-04-14 14:46:46 -04:00
Dianne Hackborn
c20a9608f3 Whoops, these shouldn't be public.
Change-Id: I66057b1fb63b97ad79cea7056849274c6a7b3ed4
2009-09-29 11:38:01 -07:00
Dianne Hackborn
afa78967b8 Hack to fix issue #2125365: Sports Trivia compatability with Eclair
Adds a mechanism to tell Paint the scaling factor its target
canvas will have, for it to compute font metrics based on the
correct font size.  Only TextView uses this, but that is enough
for the large majority of apps.

Change-Id: I6cacaa0dd26d40ee3ad959bed0028678d6e9016e
2009-09-28 17:33:54 -07:00
Dirk Dougherty
33a31b314f AI 148752: Fix description of breakText() param.
BUG=1790234

Automated import of CL 148752
2009-05-12 18:47:45 -07:00
The Android Open Source Project
c39a6e0c51 auto import from //branches/cupcake/...@137873 2009-03-11 12:11:56 -07:00