1 /* 2 * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #include "config.h" 27 28 #include "NotImplemented.h" 29 30 #include "BitmapImage.h" 31 #include "Image.h" 32 #include "ImageObserver.h" 33 #include "ImageBuffer.h" 34 #include "FloatRect.h" 35 #include "GraphicsContext.h" 36 #include "TransformationMatrix.h" 37 #include <wtf/java/JavaEnv.h> 38 #include "com_sun_webkit_graphics_GraphicsDecoder.h" 39 #include "GraphicsContextJava.h" 40 #include "PlatformContextJava.h" 41 #include "Logging.h" 42 43 class ImageBuffer; 44 45 namespace WebCore { 46 47 void Image::drawImage(GraphicsContext& gc, const FloatRect &dstRect, const FloatRect &srcRect, 48 CompositeOperator, BlendMode) 49 { 50 if (gc.paintingDisabled()) { 51 return; 52 } 53 54 NativeImagePtr currFrame = nativeImageForCurrentFrame(); 55 if (!currFrame) { 56 return; 57 } 58 59 gc.platformContext()->rq().freeSpace(72) 60 << (jint)com_sun_webkit_graphics_GraphicsDecoder_DRAWIMAGE 61 << currFrame 62 << dstRect.x() << dstRect.y() 63 << dstRect.width() << dstRect.height() 64 << srcRect.x() << srcRect.y() 65 << srcRect.width() << srcRect.height(); 66 67 if (imageObserver()) 68 imageObserver()->didDraw(*this); 69 } 70 71 Ref<Image> Image::loadPlatformResource(const char *name) 72 { 73 return BitmapImage::createFromName(name); 74 } 75 76 #if !USE(IMAGEIO) 77 NativeImagePtr ImageFrame::asNewNativeImage() const 78 { 79 JNIEnv* env = WebCore_GetJavaEnv(); 80 static jmethodID s_createWCImage_mID = env->GetMethodID( 81 PG_GetGraphicsManagerClass(env), "createFrame", 82 "(IILjava/nio/ByteBuffer;)Lcom/sun/webkit/graphics/WCImageFrame;"); 83 ASSERT(s_createWCImage_mID); 84 85 JLObject data(env->NewDirectByteBuffer( 86 m_bytes, 87 width() * height() * sizeof(PixelData))); 88 ASSERT(data); 89 90 JLObject frame(env->CallObjectMethod( 91 PL_GetGraphicsManager(env), 92 s_createWCImage_mID, 93 width(), 94 height(), 95 (jobject)data)); 96 ASSERT(frame); 97 CheckAndClearException(env); 98 99 return RQRef::create(frame); 100 } 101 #endif 102 } // namespace WebCore