mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:12:43 +00:00 
			
		
		
		
	LibWeb: Add a JavaScript wrapper for HTMLImageElement :^)
This commit is contained in:
		
							parent
							
								
									22de1e47ec
								
							
						
					
					
						commit
						370befbf52
					
				
					 6 changed files with 114 additions and 0 deletions
				
			
		
							
								
								
									
										58
									
								
								Libraries/LibWeb/Bindings/HTMLImageElementWrapper.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Libraries/LibWeb/Bindings/HTMLImageElementWrapper.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include <AK/FlyString.h> | ||||
| #include <AK/Function.h> | ||||
| #include <LibJS/Interpreter.h> | ||||
| #include <LibJS/Runtime/PrimitiveString.h> | ||||
| #include <LibJS/Runtime/Value.h> | ||||
| #include <LibWeb/Bindings/HTMLImageElementWrapper.h> | ||||
| #include <LibWeb/DOM/HTMLImageElement.h> | ||||
| 
 | ||||
| namespace Web { | ||||
| namespace Bindings { | ||||
| 
 | ||||
| HTMLImageElementWrapper::HTMLImageElementWrapper(HTMLImageElement& element) | ||||
|     : ElementWrapper(element) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| HTMLImageElementWrapper::~HTMLImageElementWrapper() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| HTMLImageElement& HTMLImageElementWrapper::node() | ||||
| { | ||||
|     return static_cast<HTMLImageElement&>(NodeWrapper::node()); | ||||
| } | ||||
| 
 | ||||
| const HTMLImageElement& HTMLImageElementWrapper::node() const | ||||
| { | ||||
|     return static_cast<const HTMLImageElement&>(NodeWrapper::node()); | ||||
| } | ||||
| 
 | ||||
| } | ||||
| } | ||||
							
								
								
									
										47
									
								
								Libraries/LibWeb/Bindings/HTMLImageElementWrapper.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Libraries/LibWeb/Bindings/HTMLImageElementWrapper.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <LibWeb/Bindings/ElementWrapper.h> | ||||
| 
 | ||||
| namespace Web { | ||||
| namespace Bindings { | ||||
| 
 | ||||
| class HTMLImageElementWrapper : public ElementWrapper { | ||||
| public: | ||||
|     explicit HTMLImageElementWrapper(HTMLImageElement&); | ||||
|     virtual ~HTMLImageElementWrapper() override; | ||||
| 
 | ||||
|     HTMLImageElement& node(); | ||||
|     const HTMLImageElement& node() const; | ||||
| 
 | ||||
| private: | ||||
|     virtual const char* class_name() const override { return "HTMLImageElementWrapper"; } | ||||
| }; | ||||
| 
 | ||||
| } | ||||
| } | ||||
|  | @ -29,9 +29,11 @@ | |||
| #include <LibJS/Runtime/Value.h> | ||||
| #include <LibWeb/Bindings/DocumentWrapper.h> | ||||
| #include <LibWeb/Bindings/HTMLCanvasElementWrapper.h> | ||||
| #include <LibWeb/Bindings/HTMLImageElementWrapper.h> | ||||
| #include <LibWeb/Bindings/NodeWrapper.h> | ||||
| #include <LibWeb/DOM/Document.h> | ||||
| #include <LibWeb/DOM/HTMLCanvasElement.h> | ||||
| #include <LibWeb/DOM/HTMLImageElement.h> | ||||
| #include <LibWeb/DOM/Node.h> | ||||
| 
 | ||||
| namespace Web { | ||||
|  | @ -43,6 +45,8 @@ NodeWrapper* wrap(JS::Heap& heap, Node& node) | |||
|         return static_cast<NodeWrapper*>(wrap_impl(heap, to<Document>(node))); | ||||
|     if (is<HTMLCanvasElement>(node)) | ||||
|         return static_cast<NodeWrapper*>(wrap_impl(heap, to<HTMLCanvasElement>(node))); | ||||
|     if (is<HTMLImageElement>(node)) | ||||
|         return static_cast<NodeWrapper*>(wrap_impl(heap, to<HTMLImageElement>(node))); | ||||
|     if (is<Element>(node)) | ||||
|         return static_cast<NodeWrapper*>(wrap_impl(heap, to<Element>(node))); | ||||
|     return static_cast<NodeWrapper*>(wrap_impl(heap, node)); | ||||
|  |  | |||
|  | @ -36,6 +36,8 @@ class LayoutDocument; | |||
| 
 | ||||
| class HTMLImageElement : public HTMLElement { | ||||
| public: | ||||
|     using WrapperType = Bindings::HTMLImageElementWrapper; | ||||
| 
 | ||||
|     HTMLImageElement(Document&, const FlyString& tag_name); | ||||
|     virtual ~HTMLImageElement() override; | ||||
| 
 | ||||
|  |  | |||
|  | @ -40,6 +40,7 @@ class HTMLCanvasElement; | |||
| class HTMLElement; | ||||
| class HTMLHeadElement; | ||||
| class HTMLHtmlElement; | ||||
| class HTMLImageElement; | ||||
| class HtmlView; | ||||
| class LayoutDocument; | ||||
| class LayoutNode; | ||||
|  | @ -62,6 +63,7 @@ class EventWrapper; | |||
| class EventListenerWrapper; | ||||
| class EventTargetWrapper; | ||||
| class HTMLCanvasElementWrapper; | ||||
| class HTMLImageElementWrapper; | ||||
| class MouseEventWrapper; | ||||
| class NodeWrapper; | ||||
| class WindowObject; | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ LIBWEB_OBJS = \ | |||
|     Bindings/EventListenerWrapper.o \
 | ||||
|     Bindings/EventTargetWrapper.o \
 | ||||
|     Bindings/HTMLCanvasElementWrapper.o \
 | ||||
|     Bindings/HTMLImageElementWrapper.o \
 | ||||
|     Bindings/MouseEventWrapper.o \
 | ||||
|     Bindings/NavigatorObject.o \
 | ||||
|     Bindings/NodeWrapper.o \
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling