< prev index next >

modules/javafx.web/src/main/native/Source/WebCore/platform/graphics/java/ImageBufferJava.cpp

Print this page
rev 11035 : imported patch 11.patch


 474         CheckAndClearException(env);
 475         if (data) {
 476             return String(env, data);
 477         }
 478     }
 479     return "data:,";
 480 }
 481 
 482 Vector<uint8_t> ImageBuffer::toData(const String& mimeType, std::optional<double>) const
 483 {
 484     if (MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType)) {
 485         // RenderQueue need to be processed before pixel buffer extraction.
 486         // For that purpose it has to be in actual state.
 487         context().platformContext()->rq().flushBuffer();
 488 
 489         JNIEnv* env = WebCore_GetJavaEnv();
 490 
 491         static jmethodID midToData = env->GetMethodID(
 492                 PG_GetImageClass(env),
 493                 "toData",
 494                 "(Ljava/lang/String;)Ljava/lang/String;");
 495         ASSERT(midToData);
 496 
 497         JLocalRef<jbyteArray> jdata((jbyteArray)env->CallObjectMethod(
 498                 m_data.getWCImage(),
 499                 midToData,
 500                 (jstring) JLString(mimeType.toJavaString(env))));
 501 
 502         CheckAndClearException(env);
 503         if (jdata) {
 504             uint8_t* dataArray = (uint8_t*)env->GetPrimitiveArrayCritical((jbyteArray)jdata, 0);
 505             Vector<uint8_t> data;
 506             data.append(dataArray, env->GetArrayLength(jdata));
 507             env->ReleasePrimitiveArrayCritical(jdata, dataArray, 0);
 508             return data;
 509         }
 510     }
 511     return { };
 512 }
 513 
 514 }


 474         CheckAndClearException(env);
 475         if (data) {
 476             return String(env, data);
 477         }
 478     }
 479     return "data:,";
 480 }
 481 
 482 Vector<uint8_t> ImageBuffer::toData(const String& mimeType, std::optional<double>) const
 483 {
 484     if (MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType)) {
 485         // RenderQueue need to be processed before pixel buffer extraction.
 486         // For that purpose it has to be in actual state.
 487         context().platformContext()->rq().flushBuffer();
 488 
 489         JNIEnv* env = WebCore_GetJavaEnv();
 490 
 491         static jmethodID midToData = env->GetMethodID(
 492                 PG_GetImageClass(env),
 493                 "toData",
 494                 "(Ljava/lang/String;)[B");
 495         ASSERT(midToData);
 496 
 497         JLocalRef<jbyteArray> jdata((jbyteArray)env->CallObjectMethod(
 498                 m_data.getWCImage(),
 499                 midToData,
 500                 (jstring) JLString(mimeType.toJavaString(env))));
 501 
 502         CheckAndClearException(env);
 503         if (jdata) {
 504             uint8_t* dataArray = (uint8_t*)env->GetPrimitiveArrayCritical((jbyteArray)jdata, 0);
 505             Vector<uint8_t> data;
 506             data.append(dataArray, env->GetArrayLength(jdata));
 507             env->ReleasePrimitiveArrayCritical(jdata, dataArray, 0);
 508             return data;
 509         }
 510     }
 511     return { };
 512 }
 513 
 514 }
< prev index next >