1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
/*!
Deck JS - deck.svg
Copyright (c) 2012 Rémi Emonet, as a major refactor from an early version from Rémi Barraquand.
*/
/*
This module provides a support for managed svg inclusion (allowing proper DOM access subsequently for animations, etc.).
*/
(function($, deck, undefined) {
var $d = $(document);
var may = function(f) {return f ? f : function() {}};
$.extend(true, $[deck].defaults, {
classes: {
svgPlaceholder: 'deck-svg'
}
});
/*
jQuery.deck('Init')
*/
$d.bind('deck.init', function() {
var opts = $[deck]('getOptions');
var container = $[deck]('getContainer');
/*
Load parameters from an Object element
*/
var loadObjectParams = function(objectElement) {
var attributes = {};
$(objectElement).children("param").each(function(index){
attributes[$(this).attr("name")] = $(this).attr("value");
});
return attributes;
}
/*
Return true if default params are set.
*/
var validateParams = function(params) {
return params['src'];// && params['width'] && params['height'];// && params['animator'];
}
/*
Create SVG placeholder
*/
var createSVG = function(object, attributes) {
var $canvas, $control, $next, $reload, $placeholder;
/* Create svg canvas */
$canvas = $("<div />").attr({
'id': $(object).attr('id'),
'class': opts.classes.svgPlaceholder + " " + $(object).attr('class')
}).css({
'height': attributes['height'],
'width': attributes['width']
});
return $canvas;
}
/* Go through all toplevel slides */
$($[deck]('getSlides')).each( function(i, $el) {
var $slide = $[deck]('getSlide', i);
/*
if ($slide.has("object[type='deckjs/svg']").length>0) {
$slide.data('animators', new Array());
}*/
/* Find all the object of type deckjs/svg */
if ($slide == null) return true;
$slide.find("object[type='deckjs/svg']").each(function(index, obj) {
//var id = $(this);
/* Load attributes and validate them */
var attributes = loadObjectParams(obj);
if (!validateParams(attributes) ) {
throw "Error while initializing "+$(obj).attr('id')+", please ensure you have setup the required parameters."
return false;
}
/* Add this animator to the list of animators of the current slide. */
//$slide.data('animators').push(attributes['animator']);
/* Create SVG placeholder */
var SVG = createSVG(obj, attributes);
$(obj).replaceWith(SVG);
// Finaly load the SVG data
//$[deck]('addLoading');
$[deck]("animWaitMore");
SVG.svg({
loadURL: attributes['src'],
onLoad: function($svg, w, h) {
var aa = $($svg.root());
if (aa.attr('viewBox') == undefined) {
var to = "0 0 " + w + " " + h;
$svg.root().setAttribute("viewBox", to);
aa.attr("svgViewBox", to);
if (attributes['stretch'] == 'true') $svg.root().setAttribute('preserveAspectRatio', "none");
}
$[deck]("animWaitLess");
/*
$[deck]('removeLoading')
*/
}
});
});
});
})
})(jQuery, 'deck');
|