Merge "Add support for CMYK jpeg images." into jb-mr2-dev
diff --git a/Android.mk b/Android.mk
index a6cfb4a..68fd312 100644
--- a/Android.mk
+++ b/Android.mk
@@ -451,6 +451,7 @@
emoji/EmojiFont.cpp
LOCAL_SHARED_LIBRARIES := \
+ liblog \
libcutils \
libemoji \
libjpeg \
diff --git a/legacy/Android.mk b/legacy/Android.mk
index 9bb40f1..214bd89 100644
--- a/legacy/Android.mk
+++ b/legacy/Android.mk
@@ -271,6 +271,7 @@
LOCAL_SHARED_LIBRARIES := \
libcutils \
+ liblog \
libemoji \
libjpeg \
libutils \
@@ -310,4 +311,4 @@
LOCAL_MODULE:= libskia_legacy
-include $(BUILD_SHARED_LIBRARY)
\ No newline at end of file
+include $(BUILD_SHARED_LIBRARY)
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index d2d1b7f..57930eb 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -934,12 +934,12 @@
public:
SkAutoRestorePaintTextSizeAndFrame(const SkPaint* paint)
: fPaint((SkPaint*)paint) {
- fTextSize = paint->getTextSize();
- fStyle = paint->getStyle();
- fPaint->setStyle(SkPaint::kFill_Style);
#ifdef SK_BUILD_FOR_ANDROID
fGenerationID = fPaint->getGenerationID();
#endif
+ fTextSize = paint->getTextSize();
+ fStyle = paint->getStyle();
+ fPaint->setStyle(SkPaint::kFill_Style);
}
~SkAutoRestorePaintTextSizeAndFrame() {
diff --git a/src/images/SkImageDecoder_libwebp.cpp b/src/images/SkImageDecoder_libwebp.cpp
index 656ec3d..a42098c 100644
--- a/src/images/SkImageDecoder_libwebp.cpp
+++ b/src/images/SkImageDecoder_libwebp.cpp
@@ -183,33 +183,27 @@
return false;
}
- uint32_t bytes_remaining = contentSize;
- while (bytes_remaining > 0) {
- const uint32_t bytes_to_read =
- (bytes_remaining < WEBP_IDECODE_BUFFER_SZ) ?
- bytes_remaining : WEBP_IDECODE_BUFFER_SZ;
-
+ bool success = true;
+ VP8StatusCode status = VP8_STATUS_SUSPENDED;
+ do {
+ const uint32_t bytes_to_read = WEBP_IDECODE_BUFFER_SZ;
const size_t bytes_read = stream->read(input, bytes_to_read);
if (bytes_read == 0) {
+ success = false;
break;
}
- VP8StatusCode status = WebPIAppend(idec, input, bytes_read);
- if (status == VP8_STATUS_OK || status == VP8_STATUS_SUSPENDED) {
- bytes_remaining -= bytes_read;
- } else {
+ status = WebPIAppend(idec, input, bytes_read);
+ if (VP8_STATUS_OK != status && VP8_STATUS_SUSPENDED != status) {
+ success = false;
break;
}
- }
+ } while (VP8_STATUS_OK != status);
srcStorage.free();
WebPIDelete(idec);
WebPFreeDecBuffer(&config.output);
- if (bytes_remaining > 0) {
- return false;
- } else {
- return true;
- }
+ return success;
}
static bool webp_get_config_resize(WebPDecoderConfig& config,
diff --git a/src/ports/SkFontHost_android.cpp b/src/ports/SkFontHost_android.cpp
index 6dd9cab..aeb819a 100644
--- a/src/ports/SkFontHost_android.cpp
+++ b/src/ports/SkFontHost_android.cpp
@@ -1122,33 +1122,43 @@
* HB_SCRIPT_INHERITED
*/
+/* Harfbuzz (old) is missing a number of scripts in its table. For these,
+ * we include a value which can never happen. We won't get complex script
+ * shaping in these cases, but the library wouldn't know how to shape
+ * them anyway. */
+#define HB_Script_Unknown HB_ScriptCount
+
static HB_UnicodeMapping HB_UnicodeMappingArray[] = {
- {HB_Script_Armenian, HB_SCRIPT_ARMENIAN, 0x0531},
- {HB_Script_Hebrew, HB_SCRIPT_HEBREW, 0x0591},
- {HB_Script_Arabic, HB_SCRIPT_ARABIC, 0x0600},
- {HB_Script_Syriac, HB_SCRIPT_SYRIAC, 0x0710},
- {HB_Script_Thaana, HB_SCRIPT_THAANA, 0x0780},
- {HB_Script_Nko, HB_SCRIPT_NKO, 0x07C0},
- {HB_Script_Devanagari, HB_SCRIPT_DEVANAGARI, 0x0901},
- {HB_Script_Bengali, HB_SCRIPT_BENGALI, 0x0981},
- {HB_Script_Gurmukhi, HB_SCRIPT_GURMUKHI, 0x0A10},
- {HB_Script_Gujarati, HB_SCRIPT_GUJARATI, 0x0A90},
- {HB_Script_Oriya, HB_SCRIPT_ORIYA, 0x0B10},
- {HB_Script_Tamil, HB_SCRIPT_TAMIL, 0x0B82},
- {HB_Script_Telugu, HB_SCRIPT_TELUGU, 0x0C10},
- {HB_Script_Kannada, HB_SCRIPT_KANNADA, 0x0C90},
- {HB_Script_Malayalam, HB_SCRIPT_MALAYALAM, 0x0D10},
- {HB_Script_Sinhala, HB_SCRIPT_SINHALA, 0x0D90},
- {HB_Script_Thai, HB_SCRIPT_THAI, 0x0E01},
- {HB_Script_Lao, HB_SCRIPT_LAO, 0x0E81},
- {HB_Script_Tibetan, HB_SCRIPT_TIBETAN, 0x0F00},
- {HB_Script_Myanmar, HB_SCRIPT_MYANMAR, 0x1000},
- {HB_Script_Georgian, HB_SCRIPT_GEORGIAN, 0x10A0},
- // we don't currently support HB_Script_Ethiopic, it is a placeholder for an upstream merge
- //{HB_Script_Ethiopic, HB_SCRIPT_ETHIOPIC, 0x1200},
- {HB_Script_Ogham, HB_SCRIPT_OGHAM, 0x1680},
- {HB_Script_Runic, HB_SCRIPT_RUNIC, 0x16A0},
- {HB_Script_Khmer, HB_SCRIPT_KHMER, 0x1780},
+ {HB_Script_Armenian, HB_SCRIPT_ARMENIAN, 0x0531},
+ {HB_Script_Hebrew, HB_SCRIPT_HEBREW, 0x0591},
+ {HB_Script_Arabic, HB_SCRIPT_ARABIC, 0x0600},
+ {HB_Script_Syriac, HB_SCRIPT_SYRIAC, 0x0710},
+ {HB_Script_Thaana, HB_SCRIPT_THAANA, 0x0780},
+ {HB_Script_Nko, HB_SCRIPT_NKO, 0x07C0},
+ {HB_Script_Devanagari, HB_SCRIPT_DEVANAGARI, 0x0901},
+ {HB_Script_Bengali, HB_SCRIPT_BENGALI, 0x0981},
+ {HB_Script_Gurmukhi, HB_SCRIPT_GURMUKHI, 0x0A10},
+ {HB_Script_Gujarati, HB_SCRIPT_GUJARATI, 0x0A90},
+ {HB_Script_Oriya, HB_SCRIPT_ORIYA, 0x0B10},
+ {HB_Script_Tamil, HB_SCRIPT_TAMIL, 0x0B82},
+ {HB_Script_Telugu, HB_SCRIPT_TELUGU, 0x0C10},
+ {HB_Script_Kannada, HB_SCRIPT_KANNADA, 0x0C90},
+ {HB_Script_Malayalam, HB_SCRIPT_MALAYALAM, 0x0D10},
+ {HB_Script_Sinhala, HB_SCRIPT_SINHALA, 0x0D90},
+ {HB_Script_Thai, HB_SCRIPT_THAI, 0x0E01},
+ {HB_Script_Lao, HB_SCRIPT_LAO, 0x0E81},
+ {HB_Script_Tibetan, HB_SCRIPT_TIBETAN, 0x0F00},
+ {HB_Script_Myanmar, HB_SCRIPT_MYANMAR, 0x1000},
+ {HB_Script_Georgian, HB_SCRIPT_GEORGIAN, 0x10A0},
+ {HB_Script_Unknown, HB_SCRIPT_ETHIOPIC, 0x1200},
+ {HB_Script_Unknown, HB_SCRIPT_CHEROKEE, 0x13A0},
+ {HB_Script_Ogham, HB_SCRIPT_OGHAM, 0x1680},
+ {HB_Script_Runic, HB_SCRIPT_RUNIC, 0x16A0},
+ {HB_Script_Khmer, HB_SCRIPT_KHMER, 0x1780},
+ {HB_Script_Unknown, HB_SCRIPT_TAI_LE, 0x1950},
+ {HB_Script_Unknown, HB_SCRIPT_NEW_TAI_LUE, 0x1980},
+ {HB_Script_Unknown, HB_SCRIPT_TAI_THAM, 0x1A20},
+ {HB_Script_Unknown, HB_SCRIPT_CHAM, 0xAA00},
};
static hb_script_t getHBScriptFromHBScriptOld(HB_Script script_old) {