Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

display #2

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/flash/display/Bitmap.as
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ limitations under the License.

package flash.display
{

import flash.geom.Matrix;
public dynamic class Bitmap extends DisplayObject
{
public function Bitmap(bitmapData:BitmapData = null, pixelSnapping:String = "auto", smoothing:Boolean = false)
Expand All @@ -31,5 +33,23 @@ public dynamic class Bitmap extends DisplayObject
public var blendMode:String = "";

public var bitmapData:BitmapData;

private var _g:Graphics;
override public function updateGraphics():void {
super.updateGraphics();
if (bitmapData) {
g.updateGraphics();
}
}
private function get g():Graphics
{
if (_g==null) {
_g = new Graphics;
_g.sprite = this;
_g.beginBitmapFill(bitmapData, null, false, smoothing);
_g.drawRect(0, 0, bitmapData.width, bitmapData.height);
}
return _g;
}
}
}
16 changes: 14 additions & 2 deletions src/flash/display/BitmapData.as
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ package flash.display
import flash.utils.ByteArray;
import flash.utils.Dictionary;
import flash.utils.FlashTimingEngine;
import randori.webkit.html.canvas.CanvasPattern;

import randori.webkit.html.HTMLCanvasElement;
import randori.webkit.html.HTMLImageElement;
Expand All @@ -39,6 +40,9 @@ package flash.display

public class BitmapData implements IBitmapDrawable
{

public var noRepeatPatern:CanvasPattern;
public var repeatPatern:CanvasPattern;
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
{
this.width = width;
Expand Down Expand Up @@ -67,10 +71,18 @@ public class BitmapData implements IBitmapDrawable
}
(ctx as Object).putImageData(imageData, 0, 0);
image = canvas as JSImage;
updatePatern();
}
_rect = new Rectangle(0, 0, width, height);
}

public function updatePatern():void {
var g:Graphics = new Graphics;
var ctx:CanvasRenderingContext2D = g.getCanvas();
repeatPatern=ctx.createPattern2(image as HTMLImageElement, "repeat");
noRepeatPatern=ctx.createPattern2(image as HTMLImageElement, "no-repeat");
}

// WebGL Specific
public var image:JSImage;
public var imageData:JSImage; // Really is a ImageData
Expand Down Expand Up @@ -187,10 +199,10 @@ public class BitmapData implements IBitmapDrawable
{
// low, high, and randomSeed is ignored
// Ignoring channel's and grayscale for now and just randomizing all values 0xffffffff
for (var i:int = 0; i < bitmapBytes.length; i += 4)
for (var i:int = 0; i < bitmapBytes.length; i += 4)
{
bitmapBytes.position = i;
bitmapBytes.writeUnsignedInt(Math.random()*0xffffffff);
bitmapBytes.writeUnsignedInt(Math.random()*0xffffffff);
}

}
Expand Down
49 changes: 32 additions & 17 deletions src/flash/display/DisplayObject.as
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ public dynamic class DisplayObject extends EventDispatcher implements IBitmapDra

//public static var stageInstance:Stage;

public function get visible():Boolean
public function get visible():Boolean
{
return _visible;
}

public function set visible(value:Boolean):void
public function set visible(value:Boolean):void
{
_visible = value;
}
Expand All @@ -52,8 +52,9 @@ public dynamic class DisplayObject extends EventDispatcher implements IBitmapDra
name = "Instance" + DisplayObject.instanceCounter++;

transform = new Transform();
transform.target = this;
}
public var alpha : Number = 0.0;
public var alpha : Number = 1.0;
public var cacheAsBitmap : Boolean = false;
public var name:String = "";
public var mask:DisplayObject;
Expand All @@ -69,22 +70,22 @@ public dynamic class DisplayObject extends EventDispatcher implements IBitmapDra

public var _parent2:DisplayObjectContainer;

public function get mouseY():Number
public function get mouseY():Number
{
return _mouseY;
}

public function set mouseY(value:Number):void
public function set mouseY(value:Number):void
{
_mouseY = value;
}

public function get mouseX():Number
public function get mouseX():Number
{
return _mouseX;
}

public function set mouseX(value:Number):void
public function set mouseX(value:Number):void
{
_mouseX = value;
}
Expand All @@ -96,12 +97,12 @@ public dynamic class DisplayObject extends EventDispatcher implements IBitmapDra

private var _rotation:Number = 0;

public function get rotation():Number
public function get rotation():Number
{
return _rotation;
}

public function set rotation(value:Number):void
public function set rotation(value:Number):void
{
_rotation = value;
}
Expand All @@ -119,49 +120,49 @@ public dynamic class DisplayObject extends EventDispatcher implements IBitmapDra

private var _width:Number = 0;

public function get width():Number
public function get width():Number
{
return _width;
}

public function set width(value:Number):void
public function set width(value:Number):void
{
_width = value;
}

private var _height:Number = 0;

public function get height():Number
public function get height():Number
{
return _height;
}

public function set height(value:Number):void
public function set height(value:Number):void
{
_height = value;
}


private var _x:Number = 0;

public function get x():Number
public function get x():Number
{
return _x;
}

public function set x(value:Number):void
public function set x(value:Number):void
{
_x = value;
}

private var _y:Number = 0;

public function get y():Number
public function get y():Number
{
return _y;
}

public function set y(value:Number):void
public function set y(value:Number):void
{
_y = value;
}
Expand Down Expand Up @@ -199,5 +200,19 @@ public dynamic class DisplayObject extends EventDispatcher implements IBitmapDra
return name;
}

public function updateGraphics():void {
transform.matrix.identity();
transform.matrix.scale(this.scaleX,this.scaleY);
transform.matrix.rotate(this.rotation*Math.PI/180);
transform.matrix.translate(this.x,this.y);

if(this.parent){
transform.worldMatrix.copyFrom(this.parent.transform.worldMatrix);
transform.worldMatrix.concat(transform.matrix);
}else {
transform.worldMatrix.copyFrom(this.transform.matrix);
}
}

}
}
26 changes: 18 additions & 8 deletions src/flash/display/DisplayObjectContainer.as
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public dynamic class DisplayObjectContainer extends InteractiveObject
public var tabChildren:Boolean = false;
public var mouseChildren:Boolean = false;

public function get numChildren():int
public function get numChildren():int
{
return children.length;
}
Expand All @@ -46,7 +46,7 @@ public dynamic class DisplayObjectContainer extends InteractiveObject
{
child._parent2 = this;

addChildAt(child, children.length-1);
addChildAt(child, children.length);

return child;
}
Expand All @@ -60,7 +60,7 @@ public dynamic class DisplayObjectContainer extends InteractiveObject
child.parent.removeChild(child);

child._parent2 = this;
children = children.splice(index, 0, child);
/*children =*/ children.splice(index, 0, child);

// TODO Make this work for index properly
if (child.domElement)
Expand All @@ -73,20 +73,21 @@ public dynamic class DisplayObjectContainer extends InteractiveObject

public function getChildAt(index:int):DisplayObject
{
for (var i:int = 0; i < children.length; i++)
return children[index];
/*for (var i:int = 0; i < children.length; i++)
{
if (i == index)
return children[i];
}
return null;
return null;*/
}

public function getChildIndex(child:DisplayObject):int
{
for (var i:int = 0; i < children.length; i++)
{
for (var i:int = 0; i < children.length; i++)
{
if (children[i] == child)
return i;
return i;
}
return -1;
}
Expand Down Expand Up @@ -151,5 +152,14 @@ public dynamic class DisplayObjectContainer extends InteractiveObject
(children[i] as EventDispatcher).dispatchEvent(event);
}
}

override public function updateGraphics():void
{
super.updateGraphics();

for each(var c:DisplayObject in children) {
c.updateGraphics();
}
}
}
}
Loading