Skip to content
This repository was archived by the owner on Feb 23, 2023. It is now read-only.

Enum typing, custom filter impl typing #130

Merged
merged 15 commits into from
Jul 3, 2017
Merged
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
9 changes: 6 additions & 3 deletions samples/src/deviceinfo/Main.hx
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ class Main extends Application {
backgroundColor = 0x003366;
super.start();

_rendererType = ["Unknown", "WebGL", "Canvas"];

_info = new Container();
stage.addChild(_info);

Expand All @@ -35,7 +33,12 @@ class Main extends Application {
_info.addChild(txt);

txt = new Text("", {fill: "#FFFFFF"});
txt.text = "Renderer: \t\t\t\t\t" + _rendererType[renderer.type];
txt.text = "Renderer: \t\t\t\t\t" + switch (renderer.type)
{
case UNKNOWN: "Unknown";
case WEBGL: "WebGL";
case CANVAS: "Canvas";
};
txt.y = 80;
_info.addChild(txt);

Expand Down
143 changes: 78 additions & 65 deletions src/pixi/core/Pixi.hx
Original file line number Diff line number Diff line change
Expand Up @@ -280,89 +280,102 @@ extern class Pixi {
static var UPDATE_PRIORITY:UpdatePriotities;
}

typedef RendererType = {
var UNKNOWN:Int;
var WEBGL:Int;
var CANVAS:Int;

@:native("PIXI.RENDERER_TYPE")
extern enum RendererType
{
UNKNOWN;
WEBGL;
CANVAS;
}

typedef ScaleModes = {
var DEFAULT:Int;
var LINEAR:Int;
var NEAREST:Int;
@:native("PIXI.SCALE_MODES")
extern enum ScaleModes {
DEFAULT;
LINEAR;
NEAREST;
}

typedef WrapModes = {
var DEFAULT:Int;
var CLAMP:Int;
var REPEAT:Int;
var MIRRORED_REPEAT:Int;
@:native("PIXI.WRAP_MODES")
extern enum WrapModes {
DEFAULT;
CLAMP;
REPEAT;
MIRRORED_REPEAT;
}

typedef GCModes = {
var DEFAULT:Int;
var AUTO:Int;
var MANUAL:Int;
@:native("PIXI.GC_MODES")
extern enum GCModes {
DEFAULT;
AUTO;
MANUAL;
}

typedef BlendModes = {
var NORMAL:Int;
var ADD:Int;
var MULTIPLY:Int;
var SCREEN:Int;
var OVERLAY:Int;
var DARKEN:Int;
var LIGHTEN:Int;
var COLOR_DODGE:Int;
var COLOR_BURN:Int;
var HARD_LIGHT:Int;
var SOFT_LIGHT:Int;
var DIFFERENCE:Int;
var EXCLUSION:Int;
var HUE:Int;
var SATURATION:Int;
var COLOR:Int;
var LUMINOSITY:Int;
@:native("PIXI.BLEND_MODES")
extern enum BlendModes {
NORMAL;
ADD;
MULTIPLY;
SCREEN;
OVERLAY;
DARKEN;
LIGHTEN;
COLOR_DODGE;
COLOR_BURN;
HARD_LIGHT;
SOFT_LIGHT;
DIFFERENCE;
EXCLUSION;
HUE;
SATURATION;
COLOR;
LUMINOSITY;
}

typedef DrawModes = {
var POINTS:Int;
var LINES:Int;
var LINE_LOOP:Int;
var LINE_STRIP:Int;
var TRIANGLES:Int;
var TRIANGLE_STRIP:Int;
var TRIANGLE_FAN:Int;
@:native("PIXI.DRAW_MODES")
extern enum DrawModes {
POINTS;
LINES;
LINE_LOOP;
LINE_STRIP;
TRIANGLES;
TRIANGLE_STRIP;
TRIANGLE_FAN;
}

typedef Shapes = {
var POLY:Int;
var RECT:Int;
var CIRC:Int;
var ELIP:Int;
var RREC:Int;
@:native("PIXI.SHAPES")
extern enum Shapes {
POLY;
RECT;
CIRC;
ELIP;
RREC;
}

typedef Precisions = {
var LOW:String;
var MEDIUM:String;
var HIGH:String;
@:native("PIXI.PRECISIONS")
extern enum Precisions {
LOW;
MEDIUM;
HIGH;
}

typedef TextGradients = {
var LINEAR_VERTICAL:Int;
var LINEAR_HORIZONTAL:Int;
@:native("PIXI.TEXT_GRADIENT")
extern enum TextGradients {
LINEAR_VERTICAL;
LINEAR_HORIZONTAL;
}

typedef TransformModes = {
var STATIC:Int;
var DYNAMIC:Int;
@:native("PIXI.TRANSFORM_MODE")
extern enum TransformModes {
STATIC;
DYNAMIC;
}

typedef UpdatePriotities = {
var INTERACTION:Float;
var HIGH:Float;
var NORMAL:Float;
var LOW:Float;
var UTILITY:Float;
@:native("PIXI.UPDATE_PRIORITY")
extern enum UpdatePriotities {
INTERACTION;
HIGH;
NORMAL;
LOW;
UTILITY;
}
2 changes: 2 additions & 0 deletions src/pixi/core/RenderOptions.hx
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ import js.html.CanvasElement;
typedef RenderOptions = {
@:optional var width:Float;
@:optional var height:Float;

@:optional var transparent:Bool;
@:optional var antialias:Bool;
@:optional var preserveDrawingBuffer:Bool;
@:optional var resolution:Float;
@:optional var forceCanvas:Bool;
@:optional var legacy:Bool;

@:optional var sharedTicker:Bool;
@:optional var sharedLoader:Bool;

Expand Down
6 changes: 4 additions & 2 deletions src/pixi/core/renderers/SystemRenderer.hx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package pixi.core.renderers;

import pixi.core.Pixi.RendererType;
import pixi.core.display.Transform;
import pixi.core.textures.RenderTexture;
import pixi.core.textures.Texture;
import haxe.extern.EitherType;
Expand Down Expand Up @@ -37,7 +39,7 @@ extern class SystemRenderer extends EventEmitter {
* @member {CONST.RENDERER_TYPE}
* @default CONT.RENDERER_TYPE.UNKNOWN
*/
var type:Int;
var type:RendererType;

/**
* The width of the canvas view
Expand Down Expand Up @@ -167,5 +169,5 @@ extern class SystemRenderer extends EventEmitter {
* @param {PIXI.Transform} [transform] - A transformation to be applied
* @param {boolean} [skipUpdateTransform=false] - Whether to skip the update transform
*/
function render(displayObject:DisplayObject, ?renderTexture:RenderTexture, ?clear:Bool, ?transform:Dynamic, ?skipUpdateTransform:Bool):Void;
function render(displayObject:DisplayObject, ?renderTexture:RenderTexture, ?clear:Bool, ?transform:Transform, ?skipUpdateTransform:Bool):Void;
}
4 changes: 3 additions & 1 deletion src/pixi/core/renderers/webgl/filters/Filter.hx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package pixi.core.renderers.webgl.filters;
import pixi.core.renderers.webgl.managers.FilterManager;
import pixi.core.renderers.webgl.utils.RenderTarget;

@:native("PIXI.Filter")
extern class Filter {
Expand Down Expand Up @@ -85,5 +87,5 @@ extern class Filter {
* There are some useful properties in the currentState :
* target, filters, sourceFrame, destinationFrame, renderTarget, resolution
*/
function apply(filterManager:Dynamic, input:Dynamic, output:Dynamic, ?clear:Bool, ?currentState:Dynamic):Void;
function apply(filterManager:FilterManager, input:RenderTarget, output:RenderTarget, ?clear:Bool, ?currentState:Dynamic):Void;
}
24 changes: 23 additions & 1 deletion src/pixi/core/renderers/webgl/managers/FilterManager.hx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package pixi.core.renderers.webgl.managers;

import pixi.core.math.Matrix;
import pixi.core.math.shapes.Rectangle;
import pixi.core.sprites.Sprite;

extern class FilterManager extends WebGLManager {

Expand All @@ -27,7 +29,7 @@ extern class FilterManager extends WebGLManager {
* @param buffer {ArrayBuffer}
*/
function setFilterStack(filterStack:Dynamic):Void;

/**
* Applies the filter and adds it to the current filter stack.
*
Expand Down Expand Up @@ -76,4 +78,24 @@ extern class FilterManager extends WebGLManager {
* @param height {Float} the new height
*/
function resize(width:Float, height:Float):Void;

/*
* Multiply vTextureCoord to this matrix to achieve (0,0,1,1) for filterArea
* @param output {PIXI.Matrix} The mapped matrix.
*/
function calculateNormalizedScreenSpaceMatrix(output:Matrix):Void;

/**
* Calculates the mapped matrix.
* TODO playing around here.. this is temporary - (will end up in the shader) this returns a matrix that will normalise map filter cords in the filter to screen space
* @param output {PIXI.Matrix} The mapped matrix.
*/
function calculateScreenSpaceMatrix(output:Matrix):Void;

/**
* This will map the filter coord so that a texture can be used based on the transform of a sprite
* @param output {PIXI.Matrix} The mapped matrix.
* @param sprite {PIXI.Sprite} The sprite to map to.
*/
function calculateSpriteMatrix(output:Matrix, sprite:Sprite):Void;
}
10 changes: 9 additions & 1 deletion src/pixi/plugins/app/Application.hx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pixi.plugins.app;

import pixi.core.Pixi.RendererType;
import pixi.core.renderers.SystemRenderer;
import js.html.Event;
import pixi.core.RenderOptions;
Expand Down Expand Up @@ -237,7 +238,14 @@ class Application {

public function addStats() {
if (untyped __js__("window").Perf != null) {
new Perf().addInfo(["UNKNOWN", "WEBGL", "CANVAS"][app.renderer.type] + " - " + pixelRatio);
var renderer = switch (app.renderer.type)
{
case RendererType.UNKNOWN: "UNKNOWN";
case RendererType.WEBGL: "WEBGL";
case RendererType.CANVAS: "CANVAS";
};

new Perf().addInfo(renderer + " - " + pixelRatio);
}
}
}