#player_maximized .toggle, #player_minimized .toggle {
+ position: relative;
display: block;
overflow: hidden;
float: right;
height /**/:10px; /* for IE5/Win only */
background-image: url('../images/maximize.gif');
text-decoration: none;
- border: 0;
+ border: none;
}
+
#player_maximized .toggle:hover, #player_minimized .toggle:hover {
- background-position: 0 -10px;
+ background-position: 0px -10px;
}
#player_maximized {
clear: both;\r
height: 5px;\r
}\r
+\r
+.wazing {\r
+ clear: both;\r
+ position: relative;\r
+}\r
+\r
/* Min-width */\r
#layout {\r
min-width: 740px;\r
var map;
var provider;
var player;
+var player_image_url = null;
function togglePlayerMaximization() {
var view = $('#player');
}
}
+function change_visualizer() {
+ set_player_image_url($('#visualizer_id').get(0).value);
+ if (player)
+ player.refreshImage();
+ return false;
+}
+
function load_player(duration) {
$(document).ready(function () {
soundUrl = $('.ts-wave a').attr('href');
TimeSide.load(function() {
map = new TimeSide.MarkerMap();
provider = new TimeSide.SoundProvider({duration: duration});
- player = new TimeSide.Player('#player');
+ player = new TimeSide.Player('#player', {
+ image: get_player_image_src
+ });
controller = new TimeSide.Controller({
player: player,
soundProvider: provider,
map: map
});
+ change_visualizer();
+ player.resize();
});
+ $('#visualizer_id').change(change_visualizer);
+ $('#visualizer_id_form').submit(change_visualizer);
+
$('#player_maximized .toggle, #player_minimized .toggle').click(function() {
togglePlayerMaximization();
this.blur();
}
+function set_player_image_url(str) {
+ player_image_url = str;
+}
+
+function get_player_image_src(width, height) {
+ var src = null;
+ if (player_image_url && (width || height)) {
+ src = player_image_url.replace('WIDTH', width + '').replace('HEIGHT', height + '');
+ }
+ return src;
+}
soundManager.url = '{% url telemeta-swf "./" %}';\r
soundManager.flashVersion = 9;\r
soundManager.debugMode = false;\r
+set_player_image_url('{% url telemeta-item-visualize item.id|urlencode,visualizer_id,"WIDTH","HEIGHT" %}');\r
load_player({{ item.get_duration }});\r
</script>\r
\r
{% if item.file %}\r
<div id="player_maximized" class="ts-skin-lab">\r
<a href="#" class="toggle">Minimize</a>\r
- <div style="clear: both"></div>\r
+ <div class="wazing"></div>\r
</div>\r
<div id="rightcol">\r
<div id="player_minimized" class="ts-skin-lab">\r
<a href="#" class="toggle">Maximize</a>\r
- <div style="clear: both"></div>\r
+ <div class="wazing"></div>\r
<div id="player" class="ts-player">\r
<div class="ts-viewer">\r
<div class="ts-wave">\r
<div class="ts-image-container">\r
<a href="{% url telemeta-item-export item.id|urlencode,"mp3" %}">\r
- <img class="ts-image" src="{% url telemeta-item-visualize item.id|urlencode,visualizer_id %}" \r
+ <img class="ts-image" src="{% url telemeta-item-visualize item.id|urlencode,visualizer_id,360,200 %}" \r
alt="" /></a>\r
</div>\r
</div> \r
</div>\r
\r
<div class="item_visualization">\r
- <form method="get" action="#" onsubmit="player.setImage(this.visualizer_id.value); return false;">\r
+ <form id="visualizer_id_form" method="get" action="#">\r
<!--\r
<select name="visualizer_id" onchange="this.form.submit()">\r
{% for v in visualizers %}\r
{% endfor %}\r
</select>\r
-->\r
- <select name="visualizer_id" onchange="player.setImage(this.value);">\r
+ <select id="visualizer_id" name="visualizer_id">\r
{% for v in visualizers %}\r
- <option value="{% url telemeta-item-visualize item.id|urlencode,v.id %}">\r
+ <option value="{% url telemeta-item-visualize item.id|urlencode,v.id,"WIDTH","HEIGHT" %}">\r
{{v.name}}</option>\r
{% endfor %}\r
</select>\r
+ export_extensions + ')$',
web_view.item_export,
name="telemeta-item-export"),
- url(r'^items/(?P<item_id>' + i_ex + ')/visualize/(?P<visualizer_id>[0-9a-z_]+)/$',
+ url(r'^items/(?P<item_id>' + i_ex + ')/visualize/(?P<visualizer_id>[0-9a-z_]+)/(?P<width>[0-9A-Z]+)x(?P<height>[0-9A-Z]+)/$',
web_view.item_visualize,
name="telemeta-item-visualize"),
url(r'^items/(?P<item_id>' + i_ex + ')/item_xspf.xml$',
'visualizers': visualizers, 'visualizer_id': visualizer_id,
'analysers': analyzers, 'vamp_plugins': vamp_plugin_list})
- def item_visualize(self, request, item_id, visualizer_id):
+ def item_visualize(self, request, item_id, visualizer_id, width, height):
for visualizer in self.visualizers:
if visualizer.get_id() == visualizer_id:
break
item = MediaItem.objects.get(pk=item_id)
visualizer.set_colors((255,255,255), 'purple')
- stream = visualizer.render(item, width=1500, height=200)
+ stream = visualizer.render(item, width=int(width), height=int(height))
response = HttpResponse(stream, mimetype = 'image/png')
return response