nixcon2015: add intro
This commit is contained in:
parent
ec1ae7d951
commit
74d8aacd4c
2 changed files with 298 additions and 0 deletions
122
nixcon2015/__init__.py
Normal file
122
nixcon2015/__init__.py
Normal file
|
@ -0,0 +1,122 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from renderlib import *
|
||||
from easing import *
|
||||
import math
|
||||
|
||||
# URL to Schedule-XML
|
||||
scheduleUrl = 'https://n621.de/fud/nixcon.xml'
|
||||
|
||||
# For (really) too long titles
|
||||
titlemap = {
|
||||
#708: "Neue WEB-Anwendungen des LGRB Baden-Württemberg im Überblick"
|
||||
}
|
||||
|
||||
def introFrames(params):
|
||||
move=40
|
||||
|
||||
# wait
|
||||
frames = 1*fps
|
||||
for i in range(0, frames):
|
||||
yield (
|
||||
)
|
||||
|
||||
deltas = {}
|
||||
for segment in range(1, 7):
|
||||
angle = 60 * (segment - 1)
|
||||
dist = 1000
|
||||
|
||||
dx = -dist * math.cos(math.radians(angle))
|
||||
dy = -dist * math.sin(math.radians(angle))
|
||||
|
||||
deltas[segment] = (dx, dy)
|
||||
|
||||
# fly out
|
||||
frames = int(1.5*fps)
|
||||
for i in range(0, frames):
|
||||
placements = []
|
||||
for segment in range(1, 7):
|
||||
x = easeInCubic(i, 0, deltas[segment][0], frames)
|
||||
y = easeInCubic(i, 0, deltas[segment][1], frames)
|
||||
opacity = 1 - easeInCubic(i, 0, 1, int(0.8*frames))
|
||||
|
||||
placements.extend([
|
||||
('segment%u' % segment, 'attr', 'transform', 'translate(%.4f, %.4f)' % (x, y)),
|
||||
('segment%u' % segment, 'style', 'opacity', '%.4f' % opacity)
|
||||
])
|
||||
|
||||
logotext_dx = easeInCubic(i, 0, 2000, frames)
|
||||
logotext_opacity = 1 - easeInCubic(i, 0, 1, 20)
|
||||
|
||||
placements.extend([
|
||||
('logotext', 'attr', 'transform', 'translate(%.4f, 0)' % logotext_dx),
|
||||
('logotext', 'style', 'opacity', '%.4f' % logotext_opacity),
|
||||
])
|
||||
|
||||
if i > int(frames/2):
|
||||
sub_frames = frames - int(frames/2)
|
||||
sub_i = i - int(frames/2)
|
||||
|
||||
talk_opacity = easeInCubic(sub_i, 0, 1, sub_frames)
|
||||
|
||||
placements.extend([
|
||||
('title', 'style', 'opacity', '%.4f' % talk_opacity),
|
||||
('person', 'style', 'opacity', '%.4f' % talk_opacity),
|
||||
])
|
||||
|
||||
|
||||
yield placements
|
||||
|
||||
# wait
|
||||
frames = int(2.5*fps)
|
||||
for i in range(0, frames):
|
||||
yield (
|
||||
('title', 'style', 'opacity', '%.4f' % 1),
|
||||
('person', 'style', 'opacity', '%.4f' % 1),
|
||||
)
|
||||
|
||||
def outroFrames(params):
|
||||
pass
|
||||
|
||||
|
||||
def debug():
|
||||
#render(
|
||||
# 'outro.svg',
|
||||
# '../outro.dv',
|
||||
# outroFrames
|
||||
#)
|
||||
|
||||
render(
|
||||
'intro.svg',
|
||||
'../intro.dv',
|
||||
introFrames,
|
||||
{
|
||||
'$id': 904,
|
||||
'$title': 'The sorry state of Python packaging and how it reflects in Nix',
|
||||
'$personnames': 'Domen Kožar'
|
||||
}
|
||||
)
|
||||
|
||||
def tasks(queue, params):
|
||||
# iterate over all events extracted from the schedule xml-export
|
||||
for event in events(scheduleUrl, titlemap):
|
||||
|
||||
# generate a task description and put them into the queue
|
||||
queue.put(Rendertask(
|
||||
infile = 'intro.svg',
|
||||
outfile = str(event['id'])+".dv",
|
||||
sequence = introFrames,
|
||||
parameters = {
|
||||
'$id': event['id'],
|
||||
'$title': event['title'],
|
||||
'$subtitle': event['subtitle'],
|
||||
'$personnames': event['personnames']
|
||||
}
|
||||
))
|
||||
|
||||
# place a task for the outro into the queue
|
||||
#queue.put(Rendertask(
|
||||
# infile = 'outro.svg',
|
||||
# outfile = 'outro.dv',
|
||||
# sequence = outroFrames
|
||||
#))
|
176
nixcon2015/artwork/intro.svg
Normal file
176
nixcon2015/artwork/intro.svg
Normal file
|
@ -0,0 +1,176 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1024"
|
||||
height="576"
|
||||
viewBox="0 0 1024 576.00002"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="intro.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#2d3038"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.1162109"
|
||||
inkscape:cx="368.65793"
|
||||
inkscape:cy="288.00001"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="1177"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="logo"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-476.36217)"
|
||||
style="display:inline"
|
||||
sodipodi:insensitive="true">
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 311.54316,708.4196 -83.56048,144.71464 -19.5093,-33.0707 22.52007,-38.7574 -44.72456,-0.11753 -9.53177,-16.52496 9.73344,-16.90181 63.66078,0.20094 22.87923,-39.44302 z"
|
||||
id="segment6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:label="#use4863" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 317.95363,824.10231 167.10679,0.008 -18.88543,33.43088 -44.82492,-0.12423 22.26052,38.79131 -9.54516,16.51723 -19.50414,0.0219 -31.65633,-55.23231 -45.5983,-0.0925 z"
|
||||
id="segment4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:label="#use4865" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 415.21569,760.69189 -83.54631,-144.72285 38.39474,-0.36017 22.30484,38.88163 22.46405,-38.67385 19.07692,0.008 9.7707,16.88034 -32.00444,55.03137 22.71907,39.53552 z"
|
||||
id="segment2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:label="#use4867" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="segment5"
|
||||
d="m 281.38804,768.03246 83.5463,144.72284 -38.39473,0.36018 -22.30485,-38.88163 -22.46404,38.67385 -19.07693,-0.008 -9.7707,-16.88035 32.00445,-55.03136 -22.71907,-39.53553 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:label="#path4873" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="segment1"
|
||||
d="m 378.42785,704.2563 -167.1068,-0.008 18.88544,-33.43091 44.82491,0.12426 -22.26051,-38.79136 9.54516,-16.51724 19.50413,-0.0215 31.65633,55.23233 45.5983,0.0925 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:label="#use4875" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="segment3"
|
||||
d="m 384.94721,820.27391 83.56049,-144.71459 19.5093,33.07072 -22.52007,38.7574 44.72455,0.11746 9.53177,16.52496 -9.73343,16.90188 -63.66078,-0.201 -22.87923,39.44308 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
inkscape:label="#use4877" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.5px;line-height:125%;font-family:'Yanone Kaffeesatz';-inkscape-font-specification:'Yanone Kaffeesatz, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="717.6535"
|
||||
y="756.60602"
|
||||
id="logotext"
|
||||
sodipodi:linespacing="125%"
|
||||
inkscape:label="#text4160"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4162"
|
||||
x="717.6535"
|
||||
y="756.60602"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:70px;font-family:'Architects Daughter';-inkscape-font-specification:'Architects Daughter';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">NixCon</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="717.6535"
|
||||
y="844.10602"
|
||||
id="tspan4164"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:70px;font-family:'Architects Daughter';-inkscape-font-specification:'Architects Daughter';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">2015</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="title"
|
||||
style="display:inline">
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot4156"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;line-height:125%;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
|
||||
id="flowRegion4158"><rect
|
||||
id="rect4160"
|
||||
width="894.09625"
|
||||
height="136.17497"
|
||||
x="86.901138"
|
||||
y="250.79265"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;text-anchor:middle" /></flowRegion><flowPara
|
||||
id="flowPara4162" /></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot4164"
|
||||
style="font-style:normal;font-weight:normal;font-size:32px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
|
||||
id="flowRegion4166"><rect
|
||||
id="rect4168"
|
||||
width="717.60632"
|
||||
height="197.99126"
|
||||
x="113.77778"
|
||||
y="215.85301" /></flowRegion><flowPara
|
||||
id="flowPara4170" /></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="title"
|
||||
style="font-style:normal;font-weight:normal;font-size:32px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;opacity:0;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(-166.08106,-14.429571)"
|
||||
inkscape:label="#flowRoot4172"><flowRegion
|
||||
id="flowRegion4174"><rect
|
||||
id="rect4176"
|
||||
width="826.9046"
|
||||
height="169.32285"
|
||||
x="264.28696"
|
||||
y="272.29395" /></flowRegion><flowPara
|
||||
id="flowPara4178"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">$title<flowSpan
|
||||
style="font-size:60px"
|
||||
id="flowSpan4188" /></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="person"
|
||||
style="font-style:normal;font-weight:normal;font-size:35px;line-height:125%;font-family:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;opacity:0;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(166.31006,77.57043)"
|
||||
inkscape:label="#flowRoot4180"><flowRegion
|
||||
id="flowRegion4182"><rect
|
||||
id="rect4184"
|
||||
width="608.30792"
|
||||
height="51.961506"
|
||||
x="41.21085"
|
||||
y="112.8259"
|
||||
style="font-size:35px;text-align:center;text-anchor:middle" /></flowRegion><flowPara
|
||||
id="flowPara4186"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">$personnames</flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
Loading…
Add table
Reference in a new issue