From 68deec61499f4f03756bd094a7c4e16b9fed4e6b Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Fri, 29 Jun 2018 11:27:59 -0700 Subject: [PATCH] Work on RenderContext, rename .element and .sprite to .dom and .flash (for consistency) --- .../_internal/backend/flash/FlashWindow.hx | 2 +- .../_internal/backend/html5/HTML5Window.hx | 2 +- src/lime/graphics/CairoRenderContext.hx | 86 ++++---- src/lime/graphics/Canvas2DRenderContext.hx | 45 ++++ src/lime/graphics/DOMRenderContext.hx | 194 +++--------------- src/lime/graphics/FlashRenderContext.hx | 103 +--------- src/lime/graphics/RenderContext.hx | 4 +- 7 files changed, 120 insertions(+), 316 deletions(-) create mode 100644 src/lime/graphics/Canvas2DRenderContext.hx diff --git a/src/lime/_internal/backend/flash/FlashWindow.hx b/src/lime/_internal/backend/flash/FlashWindow.hx index 0edf75f85..b71db89fd 100644 --- a/src/lime/_internal/backend/flash/FlashWindow.hx +++ b/src/lime/_internal/backend/flash/FlashWindow.hx @@ -178,7 +178,7 @@ class FlashWindow { stage.addEventListener (Event.RESIZE, handleWindowEvent); var context = new RenderContext (); - context.sprite = Lib.current; + context.flash = Lib.current; context.type = FLASH; context.version = Capabilities.version; context.window = parent; diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index 411479fe8..45182426a 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -276,7 +276,7 @@ class HTML5Window { if (div != null) { - context.element = cast div; + context.dom = cast div; context.type = DOM; context.version = ""; diff --git a/src/lime/graphics/CairoRenderContext.hx b/src/lime/graphics/CairoRenderContext.hx index d2cc6e3e5..e919a4828 100644 --- a/src/lime/graphics/CairoRenderContext.hx +++ b/src/lime/graphics/CairoRenderContext.hx @@ -1,47 +1,45 @@ package lime.graphics; -typedef CairoRenderContext = lime.graphics.cairo.Cairo; -// -// -//import lime.graphics.cairo.Cairo; -//import lime.graphics.cairo.CairoFormat; -//import lime.graphics.cairo.CairoSurface; -// -// -//class CairoRenderContext { - // - // - //public var version (get, null):Int; - //public var versionString (get, null):String; - // - // - //public function new () { - // - // - // - //} - // - // - // - // - //// Get & Set Methods - // - // - // - // - //private inline function get_version ():Int { - // - //return Cairo.version; - // - //} - // - // - //private function get_versionString ():String { - // - //return Cairo.versionString; - // - //} - // - // -//} \ No newline at end of file +#if (sys && lime_cairo && !doc_gen) + + +import lime.graphics.cairo.Cairo; + + +@:access(lime.graphics.RenderContext) + +@:forward() + +abstract CairoRenderContext(Cairo) from Cairo to Cairo { + + + @:from private static function fromRenderContext (context:RenderContext):CairoRenderContext { + + return context.cairo; + + } + + +} + + +#else + + +@:forward() + +abstract CairoRenderContext(Dynamic) from Dynamic to Dynamic { + + + @:from private static function fromRenderContext (context:RenderContext):CairoRenderContext { + + return null; + + } + + +} + + +#end \ No newline at end of file diff --git a/src/lime/graphics/Canvas2DRenderContext.hx b/src/lime/graphics/Canvas2DRenderContext.hx new file mode 100644 index 000000000..6a6e17de9 --- /dev/null +++ b/src/lime/graphics/Canvas2DRenderContext.hx @@ -0,0 +1,45 @@ +package lime.graphics; + + +#if (js && html5 && !doc_gen) + + +import js.html.CanvasRenderingContext2D; + + +@:access(lime.graphics.RenderContext) + +@:forward() + +abstract Canvas2DRenderContext(CanvasRenderingContext2D) from CanvasRenderingContext2D to CanvasRenderingContext2D { + + + @:from private static function fromRenderContext (context:RenderContext):Canvas2DRenderContext { + + return context.canvas2D; + + } + + +} + + +#else + + +@:forward() + +abstract Canvas2DRenderContext(Dynamic) from Dynamic to Dynamic { + + + @:from private static function fromRenderContext (context:RenderContext):Canvas2DRenderContext { + + return null; + + } + + +} + + +#end \ No newline at end of file diff --git a/src/lime/graphics/DOMRenderContext.hx b/src/lime/graphics/DOMRenderContext.hx index 06fa89be7..6ec543561 100644 --- a/src/lime/graphics/DOMRenderContext.hx +++ b/src/lime/graphics/DOMRenderContext.hx @@ -1,180 +1,42 @@ package lime.graphics; + + #if (js && html5 && !doc_gen) -typedef DOMRenderContext = js.html.DivElement; -#else -class DOMRenderContext { +import js.html.Element; + + +@:access(lime.graphics.RenderContext) + +@:forward() + +abstract DOMRenderContext(Element) from Element to Element { - public var accessKey:String; - public var align:String; - public var attributes (default, null):Dynamic /*NamedNodeMap*/; - public var baseURI (default, null):String; - public var childElementCount (default, null):Int; - public var childNodes (default, null):Dynamic /*NodeList*/; - public var children (default, null):Dynamic /*HTMLCollection*/; - public var classList (default, null):Dynamic /*DOMTokenList*/; - public var className:String; - public var clientHeight (default, null):Int; - public var clientLeft (default, null):Int; - public var clientTop (default, null):Int; - public var clientWidth (default, null):Int; - public var contentEditable:String; - public var dataset (default, null):Dynamic; - public var dir:String; - public var draggable:Bool; - public var dropzone:String; - public var firstChild (default, null):Dynamic /*Node*/; - public var firstElementChild (default, null):Dynamic /*Element*/; - public var hidden:Bool; - public var id:String; - public var innerHTML:String; - public var innerText:String; - public var isContentEditable (default, null):Bool; - public var lang:String; - public var lastChild (default, null):Dynamic /*Node*/; - public var lastElementChild (default, null):Dynamic /*Element*/; - public var localName (default, null):String; - public var namespaceURI (default, null):String; - public var nextElementSibling (default, null):Dynamic /*Element*/; - public var nextSibling (default, null):Dynamic /*Node*/; - public var nodeName (default, null):String; - public var nodeType (default, null):Int; - public var nodeValue:String; - public var offsetHeight (default, null):Int; - public var offsetLeft (default, null):Int; - public var offsetParent (default, null):Dynamic /*Element*/; - public var offsetTop (default, null):Int; - public var offsetWidth (default, null):Int; - public var onabort:Dynamic /*EventListener*/; - public var onbeforecopy:Dynamic /*EventListener*/; - public var onbeforecut:Dynamic /*EventListener*/; - public var onbeforepaste:Dynamic /*EventListener*/; - public var onblur:Dynamic /*EventListener*/; - public var onchange:Dynamic /*EventListener*/; - public var onclick:Dynamic /*EventListener*/; - public var oncontextmenu:Dynamic /*EventListener*/; - public var oncopy:Dynamic /*EventListener*/; - public var oncut:Dynamic /*EventListener*/; - public var ondblclick:Dynamic /*EventListener*/; - public var ondrag:Dynamic /*EventListener*/; - public var ondragend:Dynamic /*EventListener*/; - public var ondragenter:Dynamic /*EventListener*/; - public var ondragleave:Dynamic /*EventListener*/; - public var ondragover:Dynamic /*EventListener*/; - public var ondragstart:Dynamic /*EventListener*/; - public var ondrop:Dynamic /*EventListener*/; - public var onerror:Dynamic /*EventListener*/; - public var onfocus:Dynamic /*EventListener*/; - public var onfullscreenchange:Dynamic /*EventListener*/; - public var onfullscreenerror:Dynamic /*EventListener*/; - public var oninput:Dynamic /*EventListener*/; - public var oninvalid:Dynamic /*EventListener*/; - public var onkeydown:Dynamic /*EventListener*/; - public var onkeypress:Dynamic /*EventListener*/; - public var onkeyup:Dynamic /*EventListener*/; - public var onload:Dynamic /*EventListener*/; - public var onmousedown:Dynamic /*EventListener*/; - public var onmousemove:Dynamic /*EventListener*/; - public var onmouseout:Dynamic /*EventListener*/; - public var onmouseover:Dynamic /*EventListener*/; - public var onmouseup:Dynamic /*EventListener*/; - public var onmousewheel:Dynamic /*EventListener*/; - public var onpaste:Dynamic /*EventListener*/; - public var onreset:Dynamic /*EventListener*/; - public var onscroll:Dynamic /*EventListener*/; - public var onsearch:Dynamic /*EventListener*/; - public var onselect:Dynamic /*EventListener*/; - public var onselectstart:Dynamic /*EventListener*/; - public var onsubmit:Dynamic /*EventListener*/; - public var ontouchcancel:Dynamic /*EventListener*/; - public var ontouchend:Dynamic /*EventListener*/; - public var ontouchmove:Dynamic /*EventListener*/; - public var ontouchstart:Dynamic /*EventListener*/; - public var outerHTML:String; - public var outerText:String; - public var ownerDocument (default, null):Dynamic /*Document*/; - public var parentElement (default, null):Dynamic /*Element*/; - public var parentNode (default, null):Dynamic /*Node*/; - public var prefix:String; - public var previousElementSibling (default, null):Dynamic /*Element*/; - public var previousSibling (default, null):Dynamic /*Node*/; - public var pseudo:String; - public var scrollHeight (default, null):Int; - public var scrollLeft:Int; - public var scrollTop:Int; - public var scrollWidth (default, null):Int; - public var spellcheck:Bool; - public var style (default, null):Dynamic /*CSSStyleDeclaration*/; - public var tabIndex:Int; - public var tagName (default, null):String; - public var textContent:String; - public var title:String; - public var translate:Bool; - - - public function new () { - + @:from private static function fromRenderContext (context:RenderContext):DOMRenderContext { + return context.dom; } - public function addEventListener (type:String, listener:Dynamic /*EventListener*/, ?useCapture:Bool):Void {}; - public function appendChild (newChild:Dynamic /*Node*/):Dynamic /*Node*/ { return null; }; - public function blur ():Void {}; - public function click ():Void {}; - public function cloneNode (deep:Bool):Dynamic /*Node*/ { return null; }; - public function compareDocumentPosition (other:Dynamic /*Node*/):Int { return -1; }; - public function contains (other:Dynamic /*Node*/):Bool { return false; }; - public function dispatchEvent (event:Dynamic /*Event*/):Bool { return false; }; - public function focus ():Void {}; - public function getAttribute (name:String):String { return null; }; - public function getAttributeNS (?namespaceURI:String, localName:String):String { return null; }; - public function getAttributeNode (name:String):Dynamic /*Attr*/ { return null; }; - public function getAttributeNodeNS (?namespaceURI:String, localName:String):Dynamic /*Attr*/ { return null; }; - public function getBoundingClientRect ():Dynamic /*ClientRect*/ { return null; }; - public function getClientRects ():Dynamic /*ClientRectList*/ { return null; }; - public function getElementsByClassName (name:String):Dynamic /*NodeList*/ { return null; }; - public function getElementsByTagName (name:String):Dynamic /*NodeList*/ { return null; }; - public function getElementsByTagNameNS (?namespaceURI:String, localName:String):Dynamic /*NodeList*/ { return null; }; - public function hasAttribute (name:String):Bool { return false; }; - public function hasAttributeNS (?namespaceURI:String, localName:String):Bool { return false; }; - public function hasAttributes ():Bool { return false; }; - public function hasChildNodes ():Bool { return false; }; - public function insertAdjacentElement (where:String, element:Dynamic /*Element*/):Dynamic /*Element*/ { return null; }; - public function insertAdjacentHTML (where:String, html:String):Void {}; - public function insertAdjacentText (where:String, text:String):Void {}; - public function insertBefore (newChild:Dynamic /*Node*/, refChild:Dynamic /*Node*/):Dynamic /*Node*/ { return null; }; - public function isDefaultNamespace (?namespaceURI:String):Bool { return false; }; - public function isEqualNode (other:Dynamic /*Node*/):Bool { return false; }; - public function isSameNode (other:Dynamic /*Node*/):Bool { return false; }; - public function isSupported (feature:String, ?version:String):Bool { return false; }; - public function lookupNamespaceURI (?prefix:String):String { return null; }; - public function lookupPrefix (?namespaceURI:String):String { return null; }; - public function matchesSelector (selectors:String):Bool { return false; }; - public function normalize ():Void {}; - public function querySelector (selectors:String):Dynamic /*Element*/ { return null; }; - public function querySelectorAll (selectors:String):Dynamic /*NodeList*/ { return null; }; - public function remove ():Void {}; - public function removeAttribute (name:String):Void {}; - public function removeAttributeNS (namespaceURI:String, localName:String):Void {}; - public function removeAttributeNode (oldAttr:Dynamic /*Attr*/):Dynamic /*Attr*/ { return null; }; - public function removeChild (oldChild:Dynamic /*Node*/):Dynamic /*Node*/ { return null; }; - public function removeEventListener (type:String, listener:Dynamic /*EventListener*/, ?useCapture:Bool):Void {}; - public function replaceChild (newChild:Dynamic /*Node*/, oldChild:Dynamic /*Node*/):Dynamic /*Node*/ { return null; }; - public function requestFullScreen (flags:Int):Void {}; - public function requestFullscreen ():Void {}; - public function requestPointerLock ():Void {}; - public function scrollByLines (lines:Int):Void {}; - public function scrollByPages (pages:Int):Void {}; - public function scrollIntoView (?alignWithTop:Bool):Void {}; - public function scrollIntoViewIfNeeded (?centerIfNeeded:Bool):Void {}; - public function setAttribute (name:String, value:String):Void {}; - public function setAttributeNS (?namespaceURI:String, qualifiedName:String, value:String):Void {}; - public function setAttributeNode (newAttr:Dynamic /*Attr*/):Dynamic /*Attr*/ { return null; }; - public function setAttributeNodeNS (newAttr:Dynamic /*Attr*/):Dynamic /*Attr*/ { return null; }; +} + + +#else + + +@:forward() + +abstract DOMRenderContext(Dynamic) from Dynamic to Dynamic { + + + @:from private static function fromRenderContext (context:RenderContext):DOMRenderContext { + + return null; + + } } diff --git a/src/lime/graphics/FlashRenderContext.hx b/src/lime/graphics/FlashRenderContext.hx index c34ff1098..eba64886a 100644 --- a/src/lime/graphics/FlashRenderContext.hx +++ b/src/lime/graphics/FlashRenderContext.hx @@ -16,7 +16,7 @@ abstract FlashRenderContext(Sprite) from Sprite to Sprite { @:from private static function fromRenderContext (context:RenderContext):FlashRenderContext { - return context.sprite; + return context.flash; } @@ -42,105 +42,4 @@ abstract FlashRenderContext(Dynamic) from Dynamic to Dynamic { } -// abstract FlashRenderContext(RenderContext) from RenderContext to RenderContext { - - -// public var accessibilityImplementation:Dynamic /*flash.accessibility.AccessibilityImplementation*/; -// public var accessibilityProperties:Dynamic /*flash.accessibility.AccessibilityProperties*/; -// public var alpha:Float; -// public var blendMode:Dynamic /*BlendMode*/; -// public var blendShader (never, set):Dynamic /*Shader*/; -// public var buttonMode:Bool; -// public var cacheAsBitmap:Bool; -// public var contextMenu:Dynamic /*flash.ui.ContextMenu*/; -// public var doubleClickEnabled:Bool; -// public var dropTarget (get, never):Dynamic /*DisplayObject*/; -// public var filters:Array; -// public var focusRect:Dynamic; -// public var graphics (get, never):Dynamic /*Graphics*/; -// public var height:Float; -// public var hitArea:Dynamic /*Sprite*/; -// public var loaderInfo (get, never):Dynamic /*LoaderInfo*/; -// public var mask:Dynamic /*DisplayObject*/; -// public var mouseChildren:Bool; -// public var mouseEnabled:Bool; -// public var mouseX (get, never):Float; -// public var mouseY (get, never):Float; -// public var name:String; -// public var needsSoftKeyboard:Bool; -// public var numChildren (get, never):Int; -// public var opaqueBackground:Null; -// public var parent (get, never):Dynamic /*DisplayObjectContainer*/; -// public var root (get, never):Dynamic /*DisplayObject*/; -// public var rotation:Float; -// public var rotationX:Float; -// public var rotationY:Float; -// public var rotationZ:Float; -// public var scale9Grid:Dynamic /*flash.geom.Rectangle*/; -// public var scaleX:Float; -// public var scaleY:Float; -// public var scaleZ:Float; -// public var scrollRect:Dynamic /*flash.geom.Rectangle*/; -// public var softKeyboardInputAreaOfInterest:Dynamic /*flash.geom.Rectangle*/; -// public var soundTransform:Dynamic /*flash.media.SoundTransform*/; -// public var stage (get, never):Dynamic /*Stage*/; -// public var tabChildren:Bool; -// public var tabEnabled:Bool; -// public var tabIndex:Int; -// public var textSnapshot (get, never):Dynamic /*flash.text.TextSnapshot*/; -// public var transform:Dynamic /*flash.geom.Transform*/; -// public var useHandCursor:Bool; -// public var visible:Bool; -// public var width:Float; -// public var x:Float; -// public var y:Float; -// public var z:Float; - - -// public function new () { - - - -// } - - -// public function addChild (child:Dynamic /*DisplayObject*/):Dynamic /*DisplayObject*/ { return null; }; -// public function addChildAt (child:Dynamic /*DisplayObject*/, index:Int):Dynamic /*DisplayObject*/ { return null; }; -// public function addEventListener (type:String, listener:Dynamic->Void, useCapture:Bool = false, priority:Int = 0, useWeakReference:Bool = false):Void {}; -// public function areInaccessibleObjectsUnderPoint (point:Dynamic /*flash.geom.Point*/):Bool { return false; }; -// public function contains (child:Dynamic /*DisplayObject*/):Bool { return false; }; -// public function dispatchEvent (event:Dynamic /*Event*/):Bool { return false; }; -// public function getBounds (targetCoordinateSpace:Dynamic /*DisplayObject*/):Dynamic /*flash.geom.Rectangle*/ { return null; }; -// public function getChildAt (index:Int):Dynamic /*DisplayObject*/ { return null; }; -// public function getChildByName (name:String):Dynamic /*DisplayObject*/ { return null; }; -// public function getChildIndex (child:Dynamic /*DisplayObject*/):Int { return 0; }; -// public function getObjectsUnderPoint (point:Dynamic /*flash.geom.Point*/):Array { return null; }; -// public function getRect (targetCoordinateSpace:Dynamic /*DisplayObject*/):Dynamic /*flash.geom.Rectangle*/ { return null; }; -// public function globalToLocal (point:Dynamic /*flash.geom.Point*/):Dynamic /*flash.geom.Point*/ { return null; }; -// public function globalToLocal3D (point:Dynamic /*flash.geom.Point*/):Dynamic /*flash.geom.Vector3D*/ { return null; }; -// public function hasEventListener (type:String):Bool { return false; }; -// public function hitTestObject (obj:Dynamic /*DisplayObject*/):Bool { return false; }; -// public function hitTestPoint (x:Float, y:Float, shapeFlag:Bool = false):Bool { return false; }; -// public function local3DToGlobal (point3d:Dynamic /*flash.geom.Vector3D*/):Dynamic /*flash.geom.Point*/ { return null; }; -// public function localToGlobal (point:Dynamic /*flash.geom.Point*/):Dynamic /*flash.geom.Point*/ { return null; }; -// public function removeChild (child:Dynamic /*DisplayObject*/):Dynamic /*DisplayObject*/ { return null; }; -// public function removeChildAt (index:Int):Dynamic /*DisplayObject*/ { return null; }; -// public function removeChildren (beginIndex:Int = 0, endIndex:Int = 2147483647):Void {}; -// public function removeEventListener (type:String, listener:Dynamic->Void, useCapture:Bool = false):Void {}; -// public function requestSoftKeyboard ():Bool { return false; }; -// public function setChildIndex (child:Dynamic /*DisplayObject*/, index:Int):Void {}; -// public function startDrag (lockCenter:Bool = false, ?bounds:Dynamic /*flash.geom.Rectangle*/):Void {}; -// public function startTouchDrag (touchPointID:Int, lockCenter:Bool = false, ?bounds:Dynamic /*flash.geom.Rectangle*/):Void {}; -// public function stopAllMovieClips ():Void {}; -// public function stopDrag ():Void {}; -// public function stopTouchDrag (touchPointID:Int):Void {}; -// public function swapChildren (child1:Dynamic /*DisplayObject*/, child2:Dynamic /*DisplayObject*/):Void {}; -// public function swapChildrenAt (index1:Int, index2:Int):Void {}; -// public function toString ():String { return null; }; -// public function willTrigger (type:String):Bool { return false; }; - - -// } - - #end \ No newline at end of file diff --git a/src/lime/graphics/RenderContext.hx b/src/lime/graphics/RenderContext.hx index a54aaf4fa..9fb1d39cf 100644 --- a/src/lime/graphics/RenderContext.hx +++ b/src/lime/graphics/RenderContext.hx @@ -10,11 +10,11 @@ class RenderContext { public var cairo (default, null):CairoRenderContext; public var canvas2D (default, null):Canvas2DRenderContext; - public var element (default, null):DOMRenderContext; + public var dom (default, null):DOMRenderContext; + public var flash (default, null):FlashRenderContext; public var gl (default, null):OpenGLRenderContext; public var gles2 (default, null):OpenGLES2RenderContext; public var gles3 (default, null):OpenGLES3RenderContext; - public var sprite (default, null):FlashRenderContext; public var type (default, null):RenderContextType; public var version (default, null):String; public var webgl (default, null):WebGLRenderContext;