601 Commits

Author SHA1 Message Date
George Mount
7fe03a267e Add Path trimming.
Change-Id: Iafcf127a5136883ad4c0185d3c15f96d67f38d0d
2013-12-09 14:34:54 -08:00
Brian Carlstrom
e2aad50479 am 4a657244: am 59595f7a: am 8026b2ce: Merge "Use exceptionCheck after VMRuntime.newNonMovableArray/addressOf."
* commit '4a657244b3de44cf28aae952b8dc76f8598c61cb':
  Use exceptionCheck after VMRuntime.newNonMovableArray/addressOf.
2013-12-05 15:34:24 +00:00
Brian Carlstrom
59595f7a3e am 8026b2ce: Merge "Use exceptionCheck after VMRuntime.newNonMovableArray/addressOf."
* commit '8026b2ce23396262ad1f1e7a75093cd0e2467d4b':
  Use exceptionCheck after VMRuntime.newNonMovableArray/addressOf.
2013-12-05 07:25:20 -08:00
Mathieu Chartier
a1a19d28d0 Use exceptionCheck after VMRuntime.newNonMovableArray/addressOf.
Since VMRuntime.newNonMovableArray and VMRuntime.addressOf are java
methods implemented in Native, they don't necessarily return NULL
when an exception is thrown. Checking the exception instead of the
return value fixes errors which may occur if the runtime returns
garbage when an exception is pending.

Bug: 11971220
Change-Id: I70478834c9f14cc5d9e666e1e174d3fd09269719
2013-12-04 17:58:37 -08:00
Leon Scroggins III
aec09b6b98 Merge "Call SkBitmap::config() instead of ::getConfig()" 2013-12-04 18:14:29 +00:00
Victoria Lease
385739be8c Merge "Deprecate Android-specific SkPaint functions." 2013-12-03 23:30:30 +00:00
Victoria Lease
43b692d9a1 Deprecate Android-specific SkPaint functions.
The following functions were problematic:
 const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
 const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
 const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
Change-Id: Id746315d41aec5b211b78b172a883c2061130f08
2013-12-03 15:02:28 -08:00
Leon Scroggins III
4b9a19a8f8 Call SkBitmap::config() instead of ::getConfig()
getConfig() has been deprecated.

Change-Id: I32066256ab82ac4760c752c80856d1b56d291fae
2013-12-03 15:23:11 -05:00
Leon Scroggins III
82b7b0b2af Remove call to deprecated function.
setPrefConfigTable(array) is being removed in
https://codereview.chromium.org/99473004

Change-Id: I2d7e25052861f7f1d54e2418c11204d51bb88b1e
2013-12-02 17:17:21 -05:00
The Android Open Source Project
dbccd44a63 Merge commit 'b873a17ce7be0a9771c24999adca6964431728f6' into HEAD
Change-Id: I938755073e70602cc8f51ce9bd420fdcf870cecd
2013-11-22 11:18:57 -08:00
Derek Sollenberger
f8627d658d Merge "framework changes needed to support Skia at r12108." 2013-11-21 15:04:03 +00:00
Derek Sollenberger
ed79ff0026 framework changes needed to support Skia at r12108.
Change-Id: I231e187e7d2db84fa06bd6783c9b49abba5b4e70
2013-11-20 14:50:51 -05:00
George Mount
34d8519de4 Merge "Add animations along a Path." 2013-11-20 15:47:00 +00:00
George Mount
c96c7b2e54 Add animations along a Path.
Change-Id: If03bd10a3961ff874e33489e1253146b8dadca33
2013-11-20 07:39:26 -08:00
Raph Levien
aff6ea9516 Merge "Initial integration of Minikin to framework" 2013-11-18 19:38:18 +00:00
Raph Levien
a033630e80 Initial integration of Minikin to framework
With this patch, framework does at least some of its text rendering
using Minikin instead of TextLayoutCache. There's a lot of stuff broken
and not yet implemented, but the phone will boot.

Changes are hidden behind USE_MINIKIN, which should be set in
BoardConfig.mk for the brave. Without that, there are changes to
signatures in JNI methods and so on, but shouldn't be any visible
changes.

This commit also introduces a new abstraction for Typeface:

The new TypefaceImpl abstraction represents the functionality that
corresponds to a Java Typeface object. Currently it is backed by
SkTypeface, but in the migration to Minikin it is a FontCollection
combined with a FontStyle. This patch introduces a USE_MINIKIN
preprocessor switch, so there is no substantial change to existing
Skia-based code, but which lets us start replacing the implementation
with the Minikin version.

Change-Id: I532c4c2d32d4f4c1f349dc1db37caa112af587ea
2013-11-18 10:32:20 -08:00
Svetoslav
765c9dfd54 am ebd616e8: am 134631b9: am 90242fe5: Merge "Switch to the new Skia PDF generation APIs." into klp-dev
* commit 'ebd616e88dab185bbf5b309d29c92a9eea9817e0':
  Switch to the new Skia PDF generation APIs.
2013-11-07 16:28:39 -08:00
Svetoslav
ebd616e88d am 134631b9: am 90242fe5: Merge "Switch to the new Skia PDF generation APIs." into klp-dev
* commit '134631b9078df0b9277fb3b8319bf3b85f690727':
  Switch to the new Skia PDF generation APIs.
2013-11-07 16:25:32 -08:00
Svetoslav
35aacf2eb3 Switch to the new Skia PDF generation APIs.
The new Skia PDF generation APIs are a small extension to
the code that converts drawing commands to PDF (SkPDFDevice)
and this new functionality is exposed via new APIs. This
change switches to using these new APIs allowing us to
capitalize on the new perspective support for PDF
generation.

bug:11561776

Change-Id: Ief61f7ff6a5a22c27d3acbe99a48910cb679f594
2013-11-07 14:15:19 -08:00
Victoria Lease
d0d4b00ac5 am dd3776d6: am 30a3ef6c: am c89eaf91: Merge "Fix for Typeface.create(Typeface, style) semantics changed in KK" into klp-dev
* commit 'dd3776d673776785f32aa7d813871a38de906c5d':
  Fix for Typeface.create(Typeface, style) semantics changed in KK
2013-11-06 11:39:58 -08:00
Victoria Lease
dd3776d673 am 30a3ef6c: am c89eaf91: Merge "Fix for Typeface.create(Typeface, style) semantics changed in KK" into klp-dev
* commit '30a3ef6c85011ba82a777e6eef7f026323019f35':
  Fix for Typeface.create(Typeface, style) semantics changed in KK
2013-11-06 11:37:15 -08:00
Raph Levien
4f0064fa34 Fix for Typeface.create(Typeface, style) semantics changed in KK
This is a fix for bug 11553661. The "closest match" heuristic for
resolving a typeface when an exact match was not found changed between
JB MR2 and KK, resulting in loss of custom typeface when StyleSpan was
applied. This patch reinstates the logic that had been present. Also
reported externally as:
https://code.google.com/p/android/issues/detail?id=61771

Change-Id: Ia432fca07c4bf3b830ee2487cd8f5267a9cfb7ff
2013-11-06 11:16:01 -08:00
Victoria Lease
ec1ae35c3e am ed82a648: am 54b7e3e8: am a80d6424: Merge "Implement language-specific GSUB processing" into klp-dev
* commit 'ed82a6482806b44fa816b8224d8c06fbffcd5bd3':
  Implement language-specific GSUB processing
2013-10-21 09:03:28 -07:00
Victoria Lease
ed82a64828 am 54b7e3e8: am a80d6424: Merge "Implement language-specific GSUB processing" into klp-dev
* commit '54b7e3e81c39a5e94fd3dcd67cc4eba0f56351f2':
  Implement language-specific GSUB processing
2013-10-21 09:01:18 -07:00
Elliott Hughes
b1ce729fd0 am 9f13a608: am 2ec939ba: am cf4c7bdd: Merge "Fix whitespace issues after casts."
* commit '9f13a608a703d4d12bbfc65472de766ece0037da':
  Fix whitespace issues after casts.
2013-10-18 12:16:53 -07:00
Elliott Hughes
9f13a608a7 am 2ec939ba: am cf4c7bdd: Merge "Fix whitespace issues after casts."
* commit '2ec939bac6263fefee2605d2b50136955cfcba6d':
  Fix whitespace issues after casts.
2013-10-18 12:11:42 -07:00
Elliott Hughes
f585655b4e am 4a5b3f0a: am ac6e036a: Merge "Remove dependency on jniGetNonMovableArrayElements."
* commit '4a5b3f0ad0b742fbdce154236b15185aaff87ffb':
  Remove dependency on jniGetNonMovableArrayElements.
2013-10-18 12:11:38 -07:00
Mathieu Chartier
6ecb7a9a27 Fix whitespace issues after casts.
Change-Id: Ief3e50fbedd193e22509aac783f16ba1288908de
2013-10-18 11:04:31 -07:00
Mathieu Chartier
7384b428c4 Remove dependency on jniGetNonMovableArrayElements.
jniGetNonMovableArrayElements is not safe and is going to be deleted.

Change-Id: I6daae1e4ac9e01ca593cda522fdbeb774eef1eff
(cherry picked from commit 75a5038849cecf38aba72721272ff07cca09501f)
2013-10-18 10:58:25 -07:00
Mathieu Chartier
75a5038849 Remove dependency on jniGetNonMovableArrayElements.
jniGetNonMovableArrayElements is not compaction safe and is going
to be deleted.

Change-Id: I6daae1e4ac9e01ca593cda522fdbeb774eef1eff
2013-10-18 09:53:45 -07:00
Raph Levien
677726b376 Implement language-specific GSUB processing
This patch allows HarfBuzz to select language-specific features based
on the language. It is a fix for bug 7004056.

Change-Id: I63f01b9580250728b900f19f357cefdeb9d36c72
2013-10-08 15:47:42 +02:00
Leon Scroggins III
6034ee95a0 am 25c4e987: am 97b707d5: am 80a058b3: Merge "Do not attempt to decode NULL SkData." into klp-dev
* commit '25c4e98711d29a69db96526e3c72604f7dbb1005':
  Do not attempt to decode  NULL SkData.
2013-10-08 06:41:06 -07:00
Leon Scroggins III
80a058b303 Merge "Do not attempt to decode NULL SkData." into klp-dev 2013-10-08 13:33:05 +00:00
Leon Scroggins III
f65183fd76 Do not attempt to decode NULL SkData.
NewFromFD fails if mmap fails. In that case, it returns a NULL
SkData. SkMemoryStream handles NULL input by calling SkData::NewEmpty,
which is not threadsafe. If the SkMemoryStream were to get some
busted SkData, its call to read might fail. Sidestep this problem
by not creating the SkMemoryStream if the SkData is NULL, skipping
the call to SkData::NewEmpty.

BUG:11028218
Change-Id: Id70299bef1c85ffb5d17102fdb5ea071b0bee68a
2013-10-07 17:30:47 -04:00
Victoria Lease
28ff40405d am e8200873: am 0d5a719d: am b088c9e0: Merge "reset mShapingPaint\'s SkTypeface before we use it" into klp-dev
* commit 'e8200873598cf872062126b86edd933620f594aa':
  reset mShapingPaint's SkTypeface before we use it
2013-10-04 18:04:57 -07:00
Victoria Lease
8450a6ef8b reset mShapingPaint's SkTypeface before we use it
Harfbuzz works in TTF glyph-space, but most of Skia works in
fallback glyph-space. shapeFontRun() helpfully calculates the
baseGlyphCount needed to convert between the two, but leaves
mShapingPaint's SkTypeface set to the specific TTF being shaped
rather than the original SkTypeface that was requested. Needless
to say, this causes all manner of horrific malady when glyph
indices are calculated in one glyph-index-space and then applied
to another.

To fix this issue, I reset mShapingPaint's SkTypeface when done
with the Harfbuzz shaping operation so that the baseGlyphCount only
gets applied once.

Change-Id: Ia886f89d667634e15e5fc8d7af443c9d1ba89622
2013-10-04 17:33:35 -07:00
Derek Sollenberger
5380709c78 am fad41c8f: am 5db1f5aa: Merge "Fix Java API error where requesting another style for a provided family fails" into klp-dev
* commit 'fad41c8fd1024a8257bdced18dbcbc9cd67e407a':
  Fix Java API error where requesting another style for a provided family fails
2013-09-24 10:22:29 -07:00
Derek Sollenberger
fe8e21fd80 Fix Java API error where requesting another style for a provided family fails
Internally the API uses the same code path as SkTypeface::CreateFromName which
returns NULL if the requested style is not supported by the existing family.
However, the existing Java API expects that we return the default font in the
requested style so this CL ensures that we do.

bug: 10860066
Change-Id: Ide3a0cc24015e97fa35aef283b42e7d7d11edd9c
2013-09-23 09:22:56 -04:00
Svetoslav
6e1e8b17c5 am c0e1ae01: am facc08c7: Merge "Move PdfDocument to android.graphics.pdf" into klp-dev
* commit 'c0e1ae0176b2ce23ea1b19883507cd920712289a':
  Move PdfDocument to android.graphics.pdf
2013-09-20 11:21:05 -07:00
Leon Scroggins III
29baa03ba5 am 2360ada9: am 57989c0e: Merge "Skip writing zeroes to java allocated memory." into klp-dev
* commit '2360ada939b0abd4a6cca794288ff06701219f19':
  Skip writing zeroes to java allocated memory.
2013-09-20 11:20:22 -07:00
Derek Sollenberger
8fa4e29f16 am 23b7bc1b: am a2c6209f: Merge "Update SkTypeface::CreateFromName to handle NULL if familyName does not match" into klp-dev
* commit '23b7bc1b4409ca5844db5f17992b906aa3e63927':
  Update SkTypeface::CreateFromName to handle NULL if familyName does not match
2013-09-20 09:57:42 -07:00
Svetoslav
facc08c775 Merge "Move PdfDocument to android.graphics.pdf" into klp-dev 2013-09-20 01:14:02 +00:00
Svetoslav
6811f4e92c Move PdfDocument to android.graphics.pdf
1. Move PdfDocument to android.graphics.pdf.

2. Changed the PdfDocument as per API concil request.

3. Updated the documentation.

bug:10461180
bug:10552565
bug:10681585
bug:10552336

Change-Id: I08e15b34cf37bb064248c887e6f59808019cafe8
2013-09-19 17:12:47 -07:00
Leon Scroggins III
57989c0e04 Merge "Skip writing zeroes to java allocated memory." into klp-dev 2013-09-19 23:19:13 +00:00
Leon Scroggins III
1ffe727c06 Skip writing zeroes to java allocated memory.
If pixel memory was just allocated by Java, tell our decoders not
to write 0s, since the memory was initialized to 0. Likewise,
when drawing to a bitmap with memory just allocated by Java, do
not erase to 0.

Depends on a change to external/skia to add the new option on
image decoders:
https://googleplex-android-review.git.corp.google.com/362663

BUG:10016979
Change-Id: I9a3dc969870f8516e7d8495fe96d0a6b8225eda2
2013-09-19 16:22:57 -04:00
Derek Sollenberger
89ec829908 Update SkTypeface::CreateFromName to handle NULL if familyName does not match
This is a multi-project change with a dependency on external/skia

bug: 10730965
Change-Id: Ida880a86ebd182a221333bbd85eaa30d047a1618
2013-09-19 08:14:53 -04:00
Leon Scroggins III
44f65cb5fd am 2e4e9889: am 3490228e: Merge "Use a native buffer for decoding images." into klp-dev
* commit '2e4e98895b17ef248f5071202a3610ac715eaf0e':
  Use a native buffer for decoding images.
2013-09-18 10:58:27 -07:00
Leon Scroggins III
7315f1baee Use a native buffer for decoding images.
Fixes BUG:10725383

Depends on https://googleplex-android-review.git.corp.google.com/#/c/357300/
in external/skia.

In the previous fix for BUG:8432093 and BUG:6493544
(https://googleplex-android-review.googlesource.com/#/c/346191/),
instead of calling mark on the provided input stream, we
copied the entire stream in native code (except in one case;
more details below), allowing rewind no matter how much of
the stream had been read. This was because two decoders
may rewind after reading an arbitrary amount of the stream:
SkImageDecoder_wbmp and SkImageDecoder_libjpeg.

It turns out that the jpeg decoder does not need this rewind
after arbitrary length (it is a failure recovery case, and
libjpeg has a default recovery we can use - the above referenced
CL in Skia uses the default).

Although the wbmp decoder could read any amount given a
stream with the "right" data, and then return false, such a
stream would not be a valid stream of another format, so it
is okay for this rewind to fail.

Further, the previous fix was inefficient in the common case
where the caller decodes just the bounds, resets, then decodes
the entire image (since we have copied the entire stream twice).
The copy also resulted in the crashes seen in BUG:10725383.

In this CL, buffer only the amount of input needed by
SkImageDecoder::Factory to determine the type of image decoder
needed. Do not mark the input stream provided by the caller,
so their mark (if any) can remain in tact. The new Skia class
SkFrontBufferedStream allows buffering just the beginning
of the stream.

core/jni/android/graphics/BitmapFactory.cpp:
Instead of calling GetRewindableStream (which has been removed),
call CreateJavaInputStreamAdaptor. Then wrap it in an
SkFrontBufferedStream, with a large enough buffer to determine
which type of image is used.

core/jni/android/graphics/CreateJavaOutputStreamAdaptor.h:
core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp:
Remove mark, markSupported, and rewind. CreateJavaInputStreamAdaptor
now turns an SkStream which is not rewindable. If the caller
needs rewind that needs to be handled differently (for example,
by using SkFrontBufferedStream, as is done in BitmapFactory and
Movie.
Remove RewindableJavaStream and GetRewindableStream.
Remove code specific to ByteArrayInputStream, which makes slow
JNI calls. Instead, depend on the caller to buffer the input
in the general case. There is no reason to special case this
stream (especially since we already have decodeByteArray).
Remove CheckForAssetStream, which is now always special cased
in Java.

core/jni/android/graphics/Movie.cpp:
Call CreateJavaInputStreamAdaptor and use an SkFrontBufferedStream.
Add a native function for decoding an Asset, and remove old
call to CheckForAssetStream.

graphics/java/android/graphics/BitmapFactory.java:
Write a helper function for decoding a stream to consolidate
common code.
Buffer enough of the input so that SkImageDecoder::Factory
can rewind after having read enough to determine the type.
Unlike the old code, do NOT mark the caller's stream. This is
handled in native code. The caller's mark (if any) is left alone.

graphics/java/android/graphics/Movie.java:
Check for an Asset stream before passing to native, and
call a native function for handling the asset directly.

BUG:6493544
BUG:8432093
BUG:10725383

Change-Id: Ide74d3606ff4bb2a8c6cdbf11bae3f96696f331a
2013-09-18 12:01:20 -04:00
Leon Scroggins III
5387aa5029 am 3b8a7a04: am b693ef60: Merge "Do not allocate so much memory on the stack." into klp-dev
* commit '3b8a7a0402fbc2cb34e59a5757b8134c8bdadedc':
  Do not allocate so much memory on the stack.
2013-09-16 10:45:01 -07:00
Leon Scroggins III
37b82e3232 Do not allocate so much memory on the stack.
Instead, allocate a smaller amount and grow as necessary.

BUG:10697851
Change-Id: Iec57a8a374a4a76a3770e241cf561d58f3c8e1dc
2013-09-12 20:00:46 -04:00