(function(){
(function(){
Luv.Graphics = Luv.Class('Luv.Graphics', {
As a game programmer, you will normally not instantiate the Luv.Graphics
class directly. Instead, you will call Luv({...})
. The variable returned by
that call will have a graphics
attribute which you can use.
var luv = Luv();
luv.graphics // this variable
init: function(el, media) {
this.el = el;
this.media = media;
},
parseColor
transforms a variety of parameters into a "standard js object" of the form
{r: 255, g: 0, b: 120}
.
Types of accepted params:
luv.graphics.parseColor(255, 0, 120)
luv.graphics.parseColor([255, 0, 120])
luv.graphics.parseColor({r:255, g:0, b:120})
luv.graphics.setColor("#ff0078")
luv.graphics.setColor("#f12")
luv.graphics.setColor("rgb(255,0,120)")
parseColor : function(r,g,b) {
return Luv.Graphics.parseColor(r,g,b);
},
Canvas
creates an instance of Luv.Graphics.Canvas
; an invisible object to draw things
"off the main drawing canvas". Canvases are drawable objects.
The two parameters will define the dimensions of the new canvas, in pixels. If no dimensions
are specified, the new canvas will have the same dimensions as the current canvas.
Canvas : function(width, height) {
width = width || this.el.getAttribute('width');
height = height || this.el.getAttribute('height');
return Luv.Graphics.Canvas(width, height);
},
Image
creates an instance of Luv.Graphics.Image
and the given path.
The advantage of using this method instead of directly instantiating Luv.Graphics.Image
manually
is that the a default media object is passed by default by the graphics library.
Image : function(path) {
return Luv.Graphics.Image(this.media, path);
},
Sprite
just invokes Luv.Graphics.Sprite
with the same parameters. Please refer to that class'
documentation for more details.
Sprite : function(image, l,t,w,h) {
return Luv.Graphics.Sprite(image, l,t,w,h);
},
SpriteSheet
is also a simple redirect. See the documentation of Luv.Graphics.SpriteSheet
for details.
SpriteSheet : function(image, w,h,l,t,b) {
return Luv.Graphics.SpriteSheet(image, w,h,l,t,b);
}
});
Luv.Graphics.parseColor
is a class method implementing parseColor
at the instance level. See the
parseColor
instance method above for details.
Luv.Graphics.parseColor = function(r,g,b) {
var m, p = parseInt;
if(Array.isArray(r)) { return { r: r[0], g: r[1], b: r[2] }; }
if(typeof r === "object") { return { r: r.r, g: r.g, b: r.b }; }
if(typeof r === "string") {
r = r.replace(/#|\s+/g,""); // Remove all spaces and #
ffffff
& #ffffff
m = /^([\da-fA-F]{2})([\da-fA-F]{2})([\da-fA-F]{2})/.exec(r);
if(m){ return { r: p(m[1], 16), g: p(m[2], 16), b: p(m[3], 16) }; }
fff
& #fff
m = /^([\da-fA-F])([\da-fA-F])([\da-fA-F])/.exec(r);
if(m){ return { r: p(m[1], 16) * 17, g: p(m[2], 16) * 17, b: p(m[3], 16) * 17 }; }
rgb(255,3,120)
m = /^rgb\(([\d]+),([\d]+),([\d]+)\)/.exec(r);
if(m){ return { r: p(m[1], 10), g: p(m[2], 10), b: p(m[3], 10) }; }
}
return { r: r, g: g, b: b };
};
}());