diff --git a/occon18/__init__.py b/occon18/__init__.py
new file mode 100644
index 0000000..9bd9ff1
--- /dev/null
+++ b/occon18/__init__.py
@@ -0,0 +1,178 @@
+#!/usr/bin/python3
+
+from renderlib import *
+from easing import *
+
+# URL to Schedule-XML
+scheduleUrl = 'https://cfp.owncloud.com/occon18/schedule/export?exporter=core-frab-xml'
+
+def introFrames(args):
+#fade in logo
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('logo', 'style', 'opacity', easeInQuad(i, 0, 1.5, frames)),
+ ('confname', 'style', 'opacity', easeInQuad(i, 0, 1.25, frames)),
+ ('confdate', 'style', 'opacity', easeInQuad(i, 0, 1, frames)),
+ ('title', 'style', 'opacity', 0),
+ ('subtitle', 'style', 'opacity', 0),
+ ('persons', 'style', 'opacity', 0),
+ ('id', 'style', 'opacity', 0),
+ )
+#fade in title, subtitle, person and id
+ frames = 4*fps
+ for i in range(0, frames):
+ yield (
+ ('logo', 'style', 'opacity', 1),
+ ('confname', 'style', 'opacity', 1),
+ ('confdate', 'style', 'opacity', 1),
+ ('title', 'style', 'opacity', easeInQuad(i, 0, 1, frames)),
+ ('subtitle', 'style', 'opacity', easeInQuad(i, 0, 1, frames)),
+ ('persons', 'style', 'opacity', easeInQuad(i, 0, 1, frames)),
+ ('id', 'style', 'opacity', easeInQuad(i, 0, 1, frames)),
+ )
+#show whole image
+ frames = 2*fps
+ for i in range(0, frames):
+ yield(
+ ('title', 'style', 'opacity', 1),
+ ('subtitle', 'style', 'opacity', 1),
+ ('persons', 'style', 'opacity', 1),
+ ('id', 'style', 'opacity', 1),
+ )
+
+def backgroundFrames(parameters):
+# 80 Sekunden
+
+ frames = 40*fps
+ for i in range(0, frames):
+ xshift = (i+1) * 300/frames
+ yshift = ((i+1) * (150/frames))
+ yield(
+ ('movingbg', 'attr', 'transform', 'translate(%.4f, %.4f)' % (xshift, yshift)),
+ )
+
+ frames = 40*fps
+ for i in range(0, frames):
+ xshift = 300 - ((i+1) * (300/frames))
+ yshift = 150 - ((i+1) * (150/frames))
+ yield(
+ ('movingbg', 'attr', 'transform', 'translate(%.4f, %.4f)' % (xshift, yshift)),
+ )
+
+def outroFrames(args):
+#fadein outro graphics
+ frames = 3*fps
+ for i in range(0, frames):
+ yield(
+ ('pillgroup', 'style', 'opacity', easeInQuad(i, 0.01, 1, frames)),
+ ('logotext', 'style', 'opacity', easeInQuad(i, 0.01, 1, frames)),
+ ('c3voclogo', 'style', 'opacity', easeInQuad(i, 0.01, 1, frames)),
+ ('c3voctext', 'style', 'opacity', easeInQuad(i, 0.01, 1, frames)),
+ ('bysalogo', 'style', 'opacity', easeInQuad(i, 0.01, 1, frames)),
+ ('bysatext', 'style', 'opacity', easeInQuad(i, 0.01, 1, frames)),
+ )
+ frames = 3*fps
+ for i in range(0, frames):
+ yield(
+ ('pillgroup', 'style', 'opacity', 1),
+ ('logotext', 'style', 'opacity', 1),
+ ('c3voclogo', 'style', 'opacity', 1),
+ ('c3voctext', 'style', 'opacity', 1),
+ ('bysalogo', 'style', 'opacity', 1),
+ ('bysatext', 'style', 'opacity', 1),
+ )
+
+def pauseFrames(args):
+#fade logo + pause
+ frames = int(2*fps)
+ for i in range(0, frames):
+ yield (
+ ('logo', 'style', 'opacity', easeInQuad(i, 0.1, 1, frames)),
+ ('pause', 'style', 'opacity', easeInQuad(i, 1, -0.9, frames)),
+ )
+ for i in range(0, frames):
+ yield (
+ ('logo', 'style', 'opacity', easeInQuad(i, 1, -0.9, frames)),
+ ('pause', 'style', 'opacity', easeInQuad(i, 0.1, 1, frames)),
+ )
+
+def debug():
+ render('intro.svg',
+ '../intro.ts',
+ introFrames,
+ {
+ '$id': '23',
+ '$title': 'Performance testing of OwnCloud using VirtualBox and Apache JMeter',
+ '$subtitle': 'Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar',
+ '$persons': 'Jean-Marie de Boer, Jean-Marie de Boer, Jean-Marie de Boer'
+ }
+ )
+
+# render('outro.svg',
+# '../outro.ts',
+# outroFrames
+# )
+
+ render(
+ 'background.svg',
+ '../background.ts',
+ backgroundFrames
+ )
+
+ render('pause.svg',
+ '../pause.ts',
+ pauseFrames
+ )
+
+
+def tasks(queue, args, idlist, skiplist):
+ # iterate over all events extracted from the schedule xml-export
+ for event in events(scheduleUrl):
+ if event['room'] not in ('Chirurgie (Saal 1.04)', 'Kreißsaal (Saal 1.11)'):
+ print("skipping room %s (%s [%s])" % (event['room'], event['title'], event['id']))
+ continue
+ if not (idlist==[]):
+ if 000000 in idlist:
+ print("skipping id (%s [%s])" % (event['title'], event['id']))
+ continue
+ if int(event['id']) not in idlist:
+ print("skipping id (%s [%s])" % (event['title'], event['id']))
+ continue
+
+ # generate a task description and put them into the queue
+ queue.put(Rendertask(
+ infile = 'intro.svg',
+ outfile = str(event['id'])+".ts",
+ sequence = introFrames,
+ parameters = {
+ '$id': event['id'],
+ '$title': event['title'],
+ '$subtitle': event['subtitle'],
+ '$persons': event['personnames']
+ }
+ ))
+
+ # place a task for the outro into the queue
+ if not "out" in skiplist:
+ queue.put(Rendertask(
+ infile = 'outro.svg',
+ outfile = 'outro.ts',
+ sequence = outroFrames
+ ))
+
+ # place the pause-sequence into the queue
+ if not "pause" in skiplist:
+ queue.put(Rendertask(
+ infile = 'pause.svg',
+ outfile = 'pause.ts',
+ sequence = pauseFrames
+ ))
+
+ # place the background-sequence into the queue
+ if not "bg" in skiplist:
+ queue.put(Rendertask(
+ infile = 'background.svg',
+ outfile = 'background.ts',
+ sequence = backgroundFrames
+ ))
diff --git a/occon18/artwork/background.svg b/occon18/artwork/background.svg
new file mode 100644
index 0000000..1bbe24d
--- /dev/null
+++ b/occon18/artwork/background.svg
@@ -0,0 +1,168 @@
+
+
+
+
diff --git a/occon18/artwork/intro.svg b/occon18/artwork/intro.svg
new file mode 100644
index 0000000..e38b4b6
--- /dev/null
+++ b/occon18/artwork/intro.svg
@@ -0,0 +1,365 @@
+
+
+
+
diff --git a/occon18/artwork/pause.svg b/occon18/artwork/pause.svg
new file mode 100644
index 0000000..5a8c5c8
--- /dev/null
+++ b/occon18/artwork/pause.svg
@@ -0,0 +1,584 @@
+
+
+
+
diff --git a/occon18/artwork/raw/OpenSUSE_official-logo-color.svg b/occon18/artwork/raw/OpenSUSE_official-logo-color.svg
new file mode 100644
index 0000000..83842e2
--- /dev/null
+++ b/occon18/artwork/raw/OpenSUSE_official-logo-color.svg
@@ -0,0 +1,29 @@
+
+
+
+
\ No newline at end of file
diff --git a/occon18/artwork/raw/boxcryptor-logo.png b/occon18/artwork/raw/boxcryptor-logo.png
new file mode 100644
index 0000000..7c83607
Binary files /dev/null and b/occon18/artwork/raw/boxcryptor-logo.png differ
diff --git a/occon18/artwork/raw/by-sa.svg b/occon18/artwork/raw/by-sa.svg
new file mode 100644
index 0000000..60b44e3
--- /dev/null
+++ b/occon18/artwork/raw/by-sa.svg
@@ -0,0 +1,74 @@
+
+
+
\ No newline at end of file
diff --git a/occon18/artwork/raw/kopano-logo-regular.svg b/occon18/artwork/raw/kopano-logo-regular.svg
new file mode 100644
index 0000000..5cc568f
--- /dev/null
+++ b/occon18/artwork/raw/kopano-logo-regular.svg
@@ -0,0 +1,40 @@
+
+
+
\ No newline at end of file
diff --git a/occon18/artwork/raw/owncloud-logo-community-raw-invers.svg b/occon18/artwork/raw/owncloud-logo-community-raw-invers.svg
new file mode 100644
index 0000000..fa84b60
--- /dev/null
+++ b/occon18/artwork/raw/owncloud-logo-community-raw-invers.svg
@@ -0,0 +1,44 @@
+
+
+
diff --git a/occon18/artwork/raw/owncloud-logo-community-raw.eps b/occon18/artwork/raw/owncloud-logo-community-raw.eps
new file mode 100644
index 0000000..d4d9039
--- /dev/null
+++ b/occon18/artwork/raw/owncloud-logo-community-raw.eps
@@ -0,0 +1,171 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.14.2 (http://cairographics.org)
+%%CreationDate: Tue Sep 5 18:02:38 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 1122 556
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 1122 556
+%%EndPageSetup
+q 0 0 1122 556 rectclip q
+0.113725 0.176471 0.266667 rg
+1077.602 0 m 1057.52 0 l 1022.559 0 994.078 29.762 994.078 66.398 c 994.078
+ 103.039 1022.559 132.801 1057.52 132.801 c 1108 132.801 l 1108 234.641
+l 1121.52 234.641 l 1121.52 126.078 l 1121.52 123.199 1122.078 65.441 1121.52
+ 44.961 c 1121.199 33.68 1115.84 22.16 1106.879 13.359 c 1098.398 5.039
+1087.441 0 1077.602 0 c h
+1057.52 119.281 m 1030 119.281 1007.602 95.602 1007.602 66.398 c 1007.602
+ 37.199 1030 13.52 1057.52 13.52 c 1077.602 13.52 l 1090.641 13.52 1107.52
+ 28.48 1108 45.281 c 1108.48 61.52 1108.16 102.879 1108.078 119.199 c 1057.52
+ 119.199 l h
+1057.52 119.281 m f
+904.641 0 m 869.68 0 841.199 29.762 841.199 66.398 c 841.199 126.641 l
+854.719 126.641 l 854.719 66.398 l 854.719 37.281 877.121 13.52 904.641
+13.52 c 932.16 13.52 954.559 37.199 954.559 66.398 c 954.559 126.641 l 968.078
+ 126.641 l 968.078 66.398 l 968.078 29.84 939.602 0 904.641 0 c h
+904.641 0 m f
+644 45.199 m 644 178.16 l 639.359 180.641 634.801 183.359 630.48 186.398
+ c 630.48 45.199 l 630.48 20.32 649.922 0.078 673.84 0.078 c 673.84 13.602
+ l 657.359 13.602 644 27.762 644 45.199 c h
+644 45.199 m f
+510.559 102.48 m 510.559 128.078 521.039 151.199 537.762 167.359 c 533.602
+ 169.281 529.602 171.762 525.922 174.641 c 508.078 156.16 497.039 130.641
+ 497.039 102.48 c 497.039 46.32 540.879 0.641 594.719 0.641 c 594.719 14.16
+ l 548.32 14.16 510.559 53.762 510.559 102.48 c h
+510.559 102.48 m f
+754.078 0 m 719.121 0 690.641 29.762 690.641 66.398 c 690.641 103.039 719.121
+ 132.801 754.078 132.801 c 789.039 132.801 817.52 103.039 817.52 66.398
+c 817.52 29.762 789.121 0 754.078 0 c h
+754.078 119.281 m 726.559 119.281 704.16 95.602 704.16 66.398 c 704.16
+37.199 726.559 13.52 754.078 13.52 c 781.602 13.52 804 37.199 804 66.398
+ c 804 95.602 781.602 119.281 754.078 119.281 c h
+754.078 119.281 m f
+470.48 7.441 m 456.961 7.441 l 456.961 67.68 l 456.961 96.801 434.559 120.559
+ 407.039 120.559 c 379.52 120.559 357.121 96.879 357.121 67.68 c 357.121
+ 7.441 l 343.602 7.441 l 343.602 67.68 l 343.602 104.32 372.078 134.078
+407.039 134.078 c 442 134.078 470.48 104.32 470.48 67.68 c h
+470.48 7.441 m f
+271.199 0 m 255.84 0 242.32 8.398 234.641 20.961 c 226.961 8.398 213.441
+ 0 198.078 0 c 174.16 0 154.719 20.238 154.719 45.121 c 154.719 126.641
+l 168.238 126.641 l 168.238 45.199 l 168.238 27.762 181.602 13.602 198.078
+ 13.602 c 214.559 13.602 227.922 27.762 227.922 45.199 c 227.922 126.641
+ l 241.441 126.641 l 241.441 45.199 l 241.441 27.762 254.801 13.602 271.281
+ 13.602 c 287.762 13.602 301.121 27.762 301.121 45.199 c 301.121 126.641
+ l 314.641 126.641 l 314.641 45.199 l 314.641 20.32 295.121 0 271.199 0
+c h
+271.199 0 m f
+63.441 0 m 28.48 0 0 29.762 0 66.398 c 0 103.039 28.48 132.801 63.441 132.801
+ c 98.398 132.801 126.879 103.039 126.879 66.398 c 126.879 29.762 98.398
+ 0 63.441 0 c h
+63.441 119.281 m 35.922 119.281 13.52 95.602 13.52 66.398 c 13.52 37.199
+ 35.922 13.52 63.441 13.52 c 90.961 13.52 113.359 37.199 113.359 66.398
+c 113.359 95.602 90.961 119.281 63.441 119.281 c h
+63.441 119.281 m f
+675.441 556 m 624.32 556 583.039 513.52 583.039 460.961 c 583.039 439.281
+ 590.078 419.359 601.922 403.359 c 627.602 433.922 665.441 453.281 707.762
+ 453.281 c 728.48 453.281 748.078 448.559 765.762 440.238 c 767.199 446.879
+ 767.922 453.84 767.922 460.961 c 767.84 513.52 726.559 556 675.441 556
+c h
+554.719 512.078 m 528.078 512.078 506.719 489.922 506.719 462.48 c 506.719
+ 453.602 508.961 445.281 512.879 438.078 c 528.961 447.359 547.52 452.801
+ 567.199 452.801 c 569.121 452.801 570.961 452.719 572.801 452.641 c 572.559
+ 455.441 572.398 458.16 572.398 461.039 c 572.398 476.32 575.602 490.801
+ 581.281 503.922 c 573.762 509.121 564.641 512.078 554.719 512.078 c h
+782.719 477.922 m 780.719 477.922 778.879 477.68 776.961 477.52 c 777.762
+ 472.078 778.398 466.641 778.398 460.961 c 778.398 452.16 777.281 443.602
+ 775.281 435.441 c 798.641 422.16 818 402.32 830.719 378.238 c 843.922 385.359
+ 858.719 389.84 874.398 390.879 c 870.32 439.602 831.121 477.922 782.719
+ 477.922 c h
+707.68 442.559 m 636.16 442.559 578.32 383.039 578.32 309.52 c 578.32 235.922
+ 636.16 176.48 707.68 176.48 c 779.199 176.48 837.039 236 837.039 309.52
+ c 837.039 383.039 779.199 442.559 707.68 442.559 c h
+567.281 442 m 511.762 442 466.879 395.84 466.879 338.719 c 466.879 305.121
+ 482.48 275.359 506.559 256.559 c 516.719 276.719 537.121 290.48 560.719
+ 290.48 c 563.602 290.48 566.32 290.16 569.039 289.762 c 568.16 296.238
+567.762 302.801 567.762 309.52 c 567.762 341.52 577.922 371.121 595.121
+395.039 c 584.801 408.32 577.441 424.238 574.32 441.602 c 572 441.762 569.602
+ 442 567.281 442 c h
+881.84 380.48 m 864.961 380.48 849.199 376.078 835.281 368.559 c 843.199
+ 350.559 847.602 330.559 847.602 309.52 c 847.602 270.078 832.16 234.32
+807.199 208.32 c 825.602 187.359 852.238 174.238 881.84 174.238 c 937.359
+ 174.238 982.238 220.398 982.238 277.52 c 982.238 334.641 937.281 380.48
+ 881.84 380.48 c h
+457.121 366.879 m 406 366.879 364.559 324.559 364.559 272 c 364.559 219.441
+ 406 176.801 457.121 176.801 c 476.559 176.801 494.559 183.039 509.52 193.602
+ c 503.359 203.441 499.762 215.199 499.762 227.68 c 499.762 234.16 500.719
+ 240.398 502.48 246.32 c 474.641 267.039 456.48 300.719 456.48 338.719 c
+ 456.48 348.398 457.68 357.68 459.922 366.641 c 458.879 366.719 458 366.879
+ 457.121 366.879 c h
+1000.48 285.281 m 997.762 285.281 995.121 284.961 992.48 284.559 c 992.641
+ 282.16 992.641 279.922 992.641 277.441 c 992.641 247.121 981.039 219.602
+ 962.16 199.199 c 971.441 188.16 985.039 181.121 1000.398 181.121 c 1028.398
+ 181.121 1051.121 204.32 1051.121 233.121 c 1051.199 261.922 1028.48 285.281
+ 1000.48 285.281 c h
+560.719 279.68 m 532.719 279.68 510.16 256.48 510.16 227.68 c 510.16 198.879
+ 532.719 175.52 560.719 175.52 c 582.16 175.52 600.398 189.281 607.84 208.719
+ c 589.762 227.68 576.801 251.762 571.039 278.641 c 567.68 279.281 564.32
+ 279.68 560.719 279.68 c h
+560.719 279.68 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
diff --git a/occon18/artwork/raw/owncloud-logo-community-raw.svg b/occon18/artwork/raw/owncloud-logo-community-raw.svg
new file mode 100644
index 0000000..eb162e3
--- /dev/null
+++ b/occon18/artwork/raw/owncloud-logo-community-raw.svg
@@ -0,0 +1,44 @@
+
+
+
diff --git a/occon18/artwork/raw/univention-logo.svg b/occon18/artwork/raw/univention-logo.svg
new file mode 100644
index 0000000..7e63e61
--- /dev/null
+++ b/occon18/artwork/raw/univention-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file