forked from openlp/openlp
Latest changes from head
This commit is contained in:
commit
46967d9ef9
@ -20,14 +20,20 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
import types
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib.toolbar import *
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class BaseListWithDnD(QtGui.QListView):
|
||||
"""
|
||||
Please put a short description of what this class does in here.
|
||||
"""
|
||||
|
||||
def __init__(self,parent = None):
|
||||
QtGui.QListView.__init__(self,parent)
|
||||
assert (self.PluginName) # this must be set by the class which is inheriting
|
||||
# this must be set by the class which is inheriting
|
||||
assert(self.PluginName)
|
||||
|
||||
def mouseMoveEvent(self, event):
|
||||
"""
|
||||
Drag and drop event does not care what data is selected
|
||||
@ -44,4 +50,3 @@ class BaseListWithDnD(QtGui.QListView):
|
||||
if dropAction == QtCore.Qt.CopyAction:
|
||||
self.close()
|
||||
|
||||
|
||||
|
@ -20,10 +20,12 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
import types
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib.toolbar import *
|
||||
from openlp.core.lib import translate
|
||||
from listwithpreviews import ListWithPreviews
|
||||
from serviceitem import ServiceItem
|
||||
|
||||
class MediaManagerItem(QtGui.QWidget):
|
||||
"""
|
||||
MediaManagerItem is a helper widget for plugins.
|
||||
@ -107,7 +109,7 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered()'), slot)
|
||||
return action
|
||||
|
||||
####################################################################################################
|
||||
###########################################################################
|
||||
### None of the following *need* to be used, feel free to override
|
||||
### them cmopletely in your plugin's implementation. Alternatively, call them from your
|
||||
### plugin before or after you've done etra things that you need to.
|
||||
@ -220,8 +222,7 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList())
|
||||
|
||||
def generateSlideData(self):
|
||||
#assert (0, 'This fn needs to be defined by the plugin');
|
||||
pass
|
||||
raise NotImplementedError(u'MediaManagerItem.generateSlideData needs to be defined by the plugin')
|
||||
|
||||
def onPreviewClick(self):
|
||||
log.debug(self.PluginTextShort+u'Preview Requested')
|
||||
|
@ -129,14 +129,12 @@ class Renderer:
|
||||
"""
|
||||
Render a set of lines according to the theme, return bounding box
|
||||
"""
|
||||
#print "########## Generate frame from lines ##################"
|
||||
log.debug(u'generate_frame_from_lines - Start')
|
||||
#print "Render Lines ", lines
|
||||
bbox = self._render_lines_unaligned(lines, False)
|
||||
if footer_lines is not None:
|
||||
bbox1 = self._render_lines_unaligned(footer_lines, True)
|
||||
# reset the frame. first time do not worry about what you paint on.
|
||||
# reset the frame. first time do not worry about what you paint on.
|
||||
self._frame = QtGui.QImage(self._bg_frame)
|
||||
x, y = self._correctAlignment(self._rect, bbox)
|
||||
bbox = self._render_lines_unaligned(lines, False, (x, y), True)
|
||||
@ -158,18 +156,22 @@ class Renderer:
|
||||
painter.begin(self._bg_frame)
|
||||
if self._theme.background_type == u'solid':
|
||||
painter.fillRect(self._frame.rect(), QtGui.QColor(self._theme.background_color))
|
||||
elif self._theme.background_type == u'gradient' : # gradient
|
||||
elif self._theme.background_type == u'gradient':
|
||||
# gradient
|
||||
gradient = None
|
||||
if self._theme.background_direction == u'horizontal':
|
||||
w = int(self._frame.width()) / 2
|
||||
gradient = QtGui.QLinearGradient(w, 0, w, self._frame.height()) # vertical
|
||||
# vertical
|
||||
gradient = QtGui.QLinearGradient(w, 0, w, self._frame.height())
|
||||
elif self._theme.background_direction == u'vertical':
|
||||
h = int(self._frame.height()) / 2
|
||||
gradient = QtGui.QLinearGradient(0, h, self._frame.width(), h) # Horizontal
|
||||
# Horizontal
|
||||
gradient = QtGui.QLinearGradient(0, h, self._frame.width(), h)
|
||||
else:
|
||||
w = int(self._frame.width()) / 2
|
||||
h = int(self._frame.height()) / 2
|
||||
gradient = QtGui.QRadialGradient(w, h, w) # Circular
|
||||
# Circular
|
||||
gradient = QtGui.QRadialGradient(w, h, w)
|
||||
gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor))
|
||||
gradient.setColorAt(1, QtGui.QColor(self._theme.background_endColor))
|
||||
painter.setBrush(QtGui.QBrush(gradient))
|
||||
@ -182,7 +184,8 @@ class Renderer:
|
||||
rectPath.lineTo(max_x, 0)
|
||||
rectPath.closeSubpath()
|
||||
painter.drawPath(rectPath)
|
||||
elif self._theme.background_type== u'image': # image
|
||||
elif self._theme.background_type== u'image':
|
||||
# image
|
||||
painter.fillRect(self._frame.rect(), QtCore.Qt.black)
|
||||
if self.bg_image is not None:
|
||||
painter.drawImage(0 ,0 , self.bg_image)
|
||||
@ -252,11 +255,14 @@ class Renderer:
|
||||
|
||||
def _correctAlignment(self, rect, bbox):
|
||||
x = rect.left()
|
||||
if int(self._theme.display_verticalAlign) == 0: # top align
|
||||
if int(self._theme.display_verticalAlign) == 0:
|
||||
# top align
|
||||
y = rect.top()
|
||||
elif int(self._theme.display_verticalAlign) == 2: # bottom align
|
||||
elif int(self._theme.display_verticalAlign) == 2:
|
||||
# bottom align
|
||||
y = rect.bottom() - bbox.height()
|
||||
elif int(self._theme.display_verticalAlign) == 1: # centre align
|
||||
elif int(self._theme.display_verticalAlign) == 1:
|
||||
# centre align
|
||||
y = rect.top() + (rect.height() - bbox.height()) / 2
|
||||
else:
|
||||
log.error(u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
|
||||
|
BIN
resources/videos/AspectRatioTest-16-9-ana.h264.mp4
Normal file
BIN
resources/videos/AspectRatioTest-16-9-ana.h264.mp4
Normal file
Binary file not shown.
BIN
resources/videos/AspectRatioTest-16-9-squ.h264.mp4
Normal file
BIN
resources/videos/AspectRatioTest-16-9-squ.h264.mp4
Normal file
Binary file not shown.
BIN
resources/videos/AspectRatioTest-16-9-squ.xvid.avi
Normal file
BIN
resources/videos/AspectRatioTest-16-9-squ.xvid.avi
Normal file
Binary file not shown.
BIN
resources/videos/AspectRatioTest-4-3-ana.h264.mp4
Normal file
BIN
resources/videos/AspectRatioTest-4-3-ana.h264.mp4
Normal file
Binary file not shown.
BIN
resources/videos/AspectRatioTest-4-3-squ.h264.mp4
Normal file
BIN
resources/videos/AspectRatioTest-4-3-squ.h264.mp4
Normal file
Binary file not shown.
BIN
resources/videos/AspectRatioTest-4-3-squ.xvid.avi
Normal file
BIN
resources/videos/AspectRatioTest-4-3-squ.xvid.avi
Normal file
Binary file not shown.
BIN
resources/videos/AspectRatioTest-rand-squ.h264.mp4
Normal file
BIN
resources/videos/AspectRatioTest-rand-squ.h264.mp4
Normal file
Binary file not shown.
BIN
resources/videos/left-720.png
Normal file
BIN
resources/videos/left-720.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 423 KiB |
BIN
resources/videos/normal-720.png
Normal file
BIN
resources/videos/normal-720.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 471 KiB |
BIN
resources/videos/right-720.png
Normal file
BIN
resources/videos/right-720.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 425 KiB |
6
resources/videos/synctest.24.avs
Normal file
6
resources/videos/synctest.24.avs
Normal file
@ -0,0 +1,6 @@
|
||||
# audio/video sync test
|
||||
# by: Andrew Lok
|
||||
# 2009-06-22
|
||||
|
||||
Import("synctest.avsi")
|
||||
SyncClip(23.976, 44100)
|
BIN
resources/videos/synctest.24.muxed.avi
Normal file
BIN
resources/videos/synctest.24.muxed.avi
Normal file
Binary file not shown.
BIN
resources/videos/synctest.24.muxed.mp4
Normal file
BIN
resources/videos/synctest.24.muxed.mp4
Normal file
Binary file not shown.
6
resources/videos/synctest.25.avs
Normal file
6
resources/videos/synctest.25.avs
Normal file
@ -0,0 +1,6 @@
|
||||
# audio/video sync test
|
||||
# by: Andrew Lok
|
||||
# 2009-06-22
|
||||
|
||||
Import("synctest.avsi")
|
||||
SyncClip(25, 48000)
|
BIN
resources/videos/synctest.25.muxed.avi
Normal file
BIN
resources/videos/synctest.25.muxed.avi
Normal file
Binary file not shown.
6
resources/videos/synctest.30.avs
Normal file
6
resources/videos/synctest.30.avs
Normal file
@ -0,0 +1,6 @@
|
||||
# audio/video sync test
|
||||
# by: Andrew Lok
|
||||
# 2009-06-22
|
||||
|
||||
Import("synctest.avsi")
|
||||
SyncClip(29.97, 32000)
|
BIN
resources/videos/synctest.30.muxed.avi
Normal file
BIN
resources/videos/synctest.30.muxed.avi
Normal file
Binary file not shown.
7
resources/videos/synctest.30.small.avs
Normal file
7
resources/videos/synctest.30.small.avs
Normal file
@ -0,0 +1,7 @@
|
||||
# audio/video sync test
|
||||
# by: Andrew Lok
|
||||
# 2009-06-22
|
||||
|
||||
Import("synctest.avsi")
|
||||
SyncClip(29.97, 22050)
|
||||
BicubicResize(640,360)
|
BIN
resources/videos/synctest.30.small.muxed.avi
Normal file
BIN
resources/videos/synctest.30.small.muxed.avi
Normal file
Binary file not shown.
47
resources/videos/synctest.avsi
Normal file
47
resources/videos/synctest.avsi
Normal file
@ -0,0 +1,47 @@
|
||||
# audio/video sync test
|
||||
# by: Andrew Lok
|
||||
# 2009-06-22
|
||||
|
||||
#
|
||||
# This code is part of OpenLP's testsuite
|
||||
# OpenLP - Open Source Lyrics Projection
|
||||
# Copyright (c) 2009 Andrew Lok
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
# Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
function SyncClip(float framerate, int audiorate)
|
||||
{
|
||||
frames=30
|
||||
seconds=frames/framerate
|
||||
|
||||
silence = Tone(seconds, 440, audiorate, 1, "silence", 1.0)
|
||||
tone = Tone(seconds, 440, audiorate, 1, "sine", 1.0)
|
||||
|
||||
silence2 = MonoToStereo(silence, silence)
|
||||
left = MonoToStereo(tone, silence)
|
||||
right = MonoToStereo(silence, tone)
|
||||
|
||||
leftvid=ImageSource("left-720.png",end = frames, fps=framerate, use_DevIL=true)
|
||||
rightvid=ImageSource("right-720.png",end = frames, fps=framerate, use_DevIL=true)
|
||||
normalvid=ImageSource("normal-720.png",end = frames, fps=framerate, use_DevIL=true)
|
||||
|
||||
cycle = AudioDub(leftvid,left) ++ AudioDub(normalvid,silence2) ++ AudioDub(rightvid,right) ++ AudioDub(normalvid,silence2)
|
||||
|
||||
final = loop(cycle,times=5)
|
||||
|
||||
final = final.ConvertToYV12()
|
||||
final = final.info()
|
||||
|
||||
return final
|
||||
}
|
Loading…
Reference in New Issue
Block a user