#LyX 2.0 created this file. For more info see http://www.lyx.org/
\lyxformat 413
\begin_document
\begin_header
\textclass beamer
\begin_preamble
%\usetheme{Warsaw}
% or ...
\usetheme{lankton-keynote}

\setbeamercovered{transparent}
% or whatever (possibly just delete it)
\usepackage{fontspec}
%\newfontface\cjk{ShanHeiSun-Uni}
%\newfontface\cjk{BousungEG-Light-GB}
\newfontface\cjk{GBZenKai-Medium}
%\newfontface\cjk{ZenKai-Medium}
%\newfontface\cjk{ShanHeiSun-Light}
%\newfontface\cjk{ZenKai-Uni}
\end_preamble
\options aspectratio=169,handout
\use_default_options false
\maintain_unincluded_children false
\language ngerman
\language_package auto
\inputencoding utf8x
\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100

\graphics default
\default_output_format pdf5
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize 12
\spacing single
\use_hyperref false
\papersize default
\use_geometry true
\use_amsmath 2
\use_esint 0
\use_mhchem 1
\use_mathdots 1
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\use_refstyle 0
\index Stichwortverzeichnis
\shortcut idx
\color #008000
\end_index
\secnumdepth 2
\tocdepth 2
\paragraph_separation indent
\paragraph_indentation default
\quotes_language german
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header

\begin_body

\begin_layout Title
net
\begin_inset ERT
status open

\begin_layout Plain Layout


\backslash
kern-.8ex
\backslash
lower1.5ex
\backslash
hbox{
\end_layout

\end_inset


\begin_inset Graphics
	filename net2o-logo.pdf
	lyxscale 10
	scale 10

\end_inset


\begin_inset ERT
status open

\begin_layout Plain Layout

}
\backslash
kern-.5ex
\end_layout

\end_inset

: Application Layer
\begin_inset Argument
status open

\begin_layout Plain Layout
net2o app layer
\end_layout

\end_inset


\end_layout

\begin_layout Subtitle
Bausteine für einen Browser
\end_layout

\begin_layout Author
Bernd Paysan
\end_layout

\begin_layout Date
Forth--Tagung 2013, Garmisch--Partenkirchen
\end_layout

\begin_layout Standard
\begin_inset ERT
status open

\begin_layout Plain Layout


\backslash
addtobeamertemplate{headline}{}{
\backslash
vbox{
\backslash
vspace{3ex}
\backslash
hbox to
\backslash
paperwidth{
\backslash
hfill
\end_layout

\end_inset


\begin_inset Graphics
	filename net2o-logo.pdf
	lyxscale 5
	scale 5

\end_inset


\begin_inset ERT
status open

\begin_layout Plain Layout

~~~}}}
\end_layout

\end_inset


\end_layout

\begin_layout BeginFrame
Übersicht
\end_layout

\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents

\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout Section
Motivation
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Wofür?
\end_layout

\begin_layout Standard
Die Leute möchten Informationen teilen (
\emph on
teilen 
\emph default
bedeutet 
\emph on
kopieren)
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Itemize
Texte, Fotos, Videos, Musik
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Längere, strukturierte Dokumente
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Echtzeit--Medien (Chat, Telefonie, Video--Konferez)
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Zusammen spielen
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Was möchte ich zeigen?
\end_layout

\begin_layout Itemize
Einen Vortrag des Titels habe ich schon 2011 in Wien gehalten --- da war
 das noch komplett Vaporware: Das war der Plan.
 
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Inzwischen gibt's was, nämlich funktionierende Teile, die zusammengebaut
 werden müssen.
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Und ein Konzept, wie das Zusammenbauen aussieht.
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Muss neben PCs auch auf mobilen Plattformen wie Android laufen, deren Umgebung
 
\begin_inset Quotes gld
\end_inset

etwas komisch
\begin_inset Quotes grd
\end_inset

 ist.
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout Section
Anforderungen
\end_layout

\begin_layout BeginFrame
Formate und Ausgabe
\end_layout

\begin_layout FrameSubtitle
Wie stellt man etwas dar?
\end_layout

\begin_layout Standard
\align center
\begin_inset Graphics
	filename formate+ausgabe.fig
	scale 36

\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Warum OpenGL?
\end_layout

\begin_layout FrameSubtitle
OpenGL kann alles
\end_layout

\begin_layout Standard
OpenGL rendert:
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Enumerate
Dreiecke, Linien und Punkte --- simple Grundformen
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Enumerate
Texturen und Farbverläufe
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Enumerate
und nutzt dazu Shader--Programme --- und das ist das eigentlich Mächtige
 an OpenGL ab 2.0
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Standard
Die eigentliche Anforderung ist: Visualisierung von 
\emph on
irgendwelchen
\emph default
 Daten.
 OpenGL kann das.
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Wie verbindet man die Medien?
\end_layout

\begin_layout FrameSubtitle
Lemma: Jede Glue--Logik wird Turing--complete
\end_layout

\begin_layout Itemize
Bisher benutzer Glue: HTML+CSS+JavaScript
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Und als Container für Flash, Java, ActiveX, PDF, Google's NaCl\SpecialChar \ldots{}

\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Schussfolgerung: Von vornherein auf ein mächtiges Werkzeug setzen
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Der Browser ist eine Laufzeit- und Entwicklungsumgebung für Anwendungen
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Sicherheit
\end_layout

\begin_layout FrameSubtitle
Lemma: Jedes hinreichend komplizierte Format lässt sich für einen Exploit
 ausnutzen
\end_layout

\begin_layout Standard
Javas Ansatz, eine Sprache 
\begin_inset Quotes gld
\end_inset

von innen
\begin_inset Quotes grd
\end_inset

 heraus zu sichern, kann als gescheitert betrachtet werden.
 Java ist heute Einfallstor Nummer 1 für Schädlinge.
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Block
\begin_inset ERT
status open

\begin_layout Plain Layout

{Sandbox}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout Itemize
Den Prozess, der Netzwerkdaten interpretiert, in eine Sandbox sperren
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Netzwerkverbindungen über einen Proxy leiten --- da fehlt noch ein shared--memor
y--Modul für net2o
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Der Zugriff auf Schlüssel muss außerhalb der Sandbox stattfinden
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
\begin_inset Quotes gld
\end_inset

Same--Origin
\begin_inset Quotes grd
\end_inset

--Policies funktionieren in der Cloud nicht.
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout Section
Ein paar kleine Demos
\end_layout

\begin_layout Subsection
Slideshow
\end_layout

\begin_layout BeginFrame
Slideshow
\end_layout

\begin_layout FrameSubtitle
Die Slide--Show verwende ich für diese Präsentation
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{Fader}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code

\color cyan
:
\color inherit
 
\color cyan
fade 
\color green
{ n1 n2 f: delta-time -- }
\color inherit
 n1 n2 = 
\color yellow
?EXIT
\end_layout

\begin_layout LyX-Code
    ftime 
\color green
{ f: startt }
\end_layout

\begin_layout LyX-Code
    
\color yellow
BEGIN
\color inherit
  ftime startt f- delta-time f/ fdup 
\color red
1e
\color inherit
 f<  
\color yellow
WHILE
\end_layout

\begin_layout LyX-Code
            <draw-slide
\end_layout

\begin_layout LyX-Code
            
\color red
1e
\color inherit
 blend n1 draw-slide
\end_layout

\begin_layout LyX-Code
            
\color blue
( time )
\color inherit
 blend n2 draw-slide
\end_layout

\begin_layout LyX-Code
            draw-slide>  
\color yellow
REPEAT
\end_layout

\begin_layout LyX-Code
    <draw-slide 
\color red
1e
\color inherit
 blend n2 draw-slide draw-slide>
\end_layout

\begin_layout LyX-Code
    fdrop 
\color cyan
;
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Slideshow 2
\end_layout

\begin_layout FrameSubtitle
Noch mehr Effekte
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{Hslide}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code

\color cyan
: hslide
\color inherit
 
\color green
{ n1 n2 f: delta-time -- }
\color inherit
 n1 n2 = 
\color yellow
?EXIT
\end_layout

\begin_layout LyX-Code
    ftime 
\color green
{ f: startt }
\end_layout

\begin_layout LyX-Code
    
\color yellow
BEGIN
\color inherit
  ftime startt f- delta-time f/ fdup 
\color red
1e
\color inherit
 f<  
\color yellow
WHILE
\end_layout

\begin_layout LyX-Code
            <draw-slide
\end_layout

\begin_layout LyX-Code
            pi f* fcos 1e f- 
\end_layout

\begin_layout LyX-Code

\color yellow
            [
\color inherit
 
\color magenta
pi f2/ fnegate
\color inherit
 
\color yellow
]
\color inherit
 FLiteral f* fcos 1e f-
\end_layout

\begin_layout LyX-Code
            fdup n1 n2 > 
\color yellow
IF
\color inherit
 fnegate  
\color yellow
THEN
\color inherit
 xshift n1 draw-slide
\end_layout

\begin_layout LyX-Code
            
\color red
2e
\color inherit
 f+ n1 n2 > 
\color yellow
IF
\color inherit
 fnegate  
\color yellow
THEN
\color inherit
 xshift n2 draw-slide
\end_layout

\begin_layout LyX-Code
            draw-slide>  
\color yellow
REPEAT
\end_layout

\begin_layout LyX-Code
    <draw-slide n2 draw-slide draw-slide>
\end_layout

\begin_layout LyX-Code
    fdrop 
\color cyan
;
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Vorgehen und Probleme
\end_layout

\begin_layout FrameSubtitle
libSOIL: Einfache API zum Bilder--Laden
\end_layout

\begin_layout Standard
Die APIs von libjpeg und libpng sind ausgesprochen kompliziert.
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Standard
Alternative: libSOIL:
\end_layout

\begin_layout Pause

\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{libSOIL Textur laden}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code

\color cyan
: load-texture
\color inherit
 
\color blue
( addr u -- )
\end_layout

\begin_layout LyX-Code
    open-fpath-file throw rot close-file throw tilde_cstr
\end_layout

\begin_layout LyX-Code
    SOIL_LOAD_AUTO current-tex SOIL_FLAG_TEXTURE_REPEATS
\end_layout

\begin_layout LyX-Code
    SOIL_load_OGL_texture drop 
\color cyan
;
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout Subsection
Videos
\end_layout

\begin_layout BeginFrame
Zwiebel--Programmierung
\end_layout

\begin_layout FrameSubtitle
Von außen ziemlich groß
\end_layout

\begin_layout Standard
\align center
\begin_inset Graphics
	filename zwiebel/2013-04-16 18.31.34.jpg
	lyxscale 10
	height 75theight%

\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Zwiebel--Programmierung
\end_layout

\begin_layout FrameSubtitle
Martialisches Werkzeug wird empfohlen
\end_layout

\begin_layout Standard
\align center
\begin_inset Graphics
	filename zwiebel/2013-04-16 18.32.14.jpg
	lyxscale 10
	height 75theight%

\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Zwiebel--Programmierung
\end_layout

\begin_layout FrameSubtitle
Zwiebel 
\begin_inset Quotes gld
\end_inset

all the way down
\begin_inset Quotes grd
\end_inset


\end_layout

\begin_layout Standard
\align center
\begin_inset Graphics
	filename zwiebel/2013-04-16 18.32.30.jpg
	lyxscale 10
	height 75theight%

\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Video
\end_layout

\begin_layout FrameSubtitle
OpenMAX AL
\end_layout

\begin_layout Itemize
Auf Android ist OpenMAX AL das Video--Framework --- ähnlich wie gstreamer,
 aber doch anders.
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Kann Videos in eine Textur rendern, aber auch aufzeichnen (von der Kamera)
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Input: MPEG Transport Stream
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
C--API ist C++--artig (Struktur von Funktionspointern, also eine vtable)
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Die Native--API ist nur halb implementiert, zum Starten muss man Java via
 JNI bemühen
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Videoplayer verwendet dann vier Sprachen: Forth, C, Java, OpenGL Shader
 Language
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
JNI--Deklarationen
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{
\end_layout

\end_inset

MediaPlayer
\begin_inset ERT
status open

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code
jni-class: android/media/MediaPlayer
\begin_inset Newline newline
\end_inset


\begin_inset Newline newline
\end_inset

jni-new: new-MediaPlayer ()V
\end_layout

\begin_layout LyX-Code
jni-method: prepare prepare ()V
\end_layout

\begin_layout LyX-Code
jni-method: start start ()V
\end_layout

\begin_layout LyX-Code
jni-method: setSurface setSurface (Landroid/view/Surface;)V
\end_layout

\begin_layout LyX-Code
jni-method: setVolume setVolume (FF)V
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
JNI--Deklarationen II
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{
\end_layout

\end_inset

SurfaceTexture
\begin_inset ERT
status open

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code
jni-class: android/graphics/SurfaceTexture
\begin_inset Newline newline
\end_inset


\begin_inset Newline newline
\end_inset

jni-new: new-SurfaceTexture (I)V
\end_layout

\begin_layout LyX-Code
jni-method: updateTexImage updateTexImage ()V
\end_layout

\begin_layout LyX-Code
jni-method: getTimestamp getTimestamp ()J
\end_layout

\begin_layout LyX-Code
jni-method: setDefaultBufferSize setDefaultBufferSize (II)V
\end_layout

\begin_layout LyX-Code
jni-method: getTransformMatrix getTransformMatrix ([F)V
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
JNI--Aufruf
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{
\end_layout

\end_inset

Timestamp abholen
\begin_inset ERT
status open

\begin_layout Plain Layout

}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code
: get-deltat ( -- f )
\end_layout

\begin_layout LyX-Code
    media-sft >o getTimestamp o> d>f 1e-9 f*
\end_layout

\begin_layout LyX-Code
    first-timestamp f@ f- ;
\end_layout

\end_deeper
\begin_layout Pause

\end_layout

\begin_layout Standard
Java--Calls fügen sich nahtlos in Mini--OOF2 ein (Mini--OOF mit aktuellem
 Objekt)
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
MTS? Alle Videos sind heute MKV!
\end_layout

\begin_layout FrameSubtitle
\begin_inset Quotes gld
\end_inset

Matroska
\begin_inset Quotes grd
\end_inset

 klingt schon auch nach Zwiebel--Programmierung\SpecialChar \ldots{}

\end_layout

\begin_layout Standard
Wozu überhaupt einen Container?
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Itemize
Übliche Begründung: Mehrere Dateien zu 
\begin_inset Quotes gld
\end_inset

unhandlich.
\begin_inset Quotes grd
\end_inset

 Ich finde Verzeichnisse mit mehreren Dateien eigentlich handlicher als
 noch eine Möglichkeit, Container zu bilden.
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Container bricht Video und Audio in einzelne Bilder und kurze Pakete auf
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Zeitstempel für synchronisierte Wiedergabe
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Index für das schnelle 
\begin_inset Quotes gld
\end_inset

Spulen
\begin_inset Quotes grd
\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Matroska--Interpreter
\end_layout

\begin_layout FrameSubtitle
Binäres XML--Format
\end_layout

\begin_layout Standard
Lösung: MKV einlesen, MTS ausspucken.
\end_layout

\begin_layout Pause

\end_layout

\begin_layout Itemize
Matroska--Parser hat eine Hash--Table für die binären Tags
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Jedem Tag ist noch eine Methode (mit Klarnamen) eines Mini--OOF2--Objekts
 zugeordnet
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Konkrete Parser können unterschiedliche Methoden haben, Beispiel: Dump zur
 Inspektion, und MTS--Konverter--Klasse.
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout Subsection
Text
\end_layout

\begin_layout BeginFrame
Fonts rendern
\end_layout

\begin_layout FrameSubtitle
Freetype--GL rendert OpenType--Fonts in OpenGL--Texturen
\end_layout

\begin_layout Itemize
Stand der Technik für Vektorfonts ist das OpenType--Format
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Gerendert werden Texturen, also muss der Vektorfont in die Textur
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
FreeType--GL packt Zeichen in eine Textur (Cache), und macht aus jedem Zeichen
 einen Glyph
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Diese Glyphen verwandelt man in zwei Dreiecke und rendert sie
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Text rendern Demo--Code
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{Fonts und Texte}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code
48e 
\color cyan
FConstant fontsize#
\end_layout

\begin_layout LyX-Code

\end_layout

\begin_layout LyX-Code
atlas 
\color red
"/system/fonts/DroidSans.ttf
\backslash
0"
\color inherit
 drop
\end_layout

\begin_layout LyX-Code
fontsize# texture_font_new 
\color cyan
Value font1
\end_layout

\begin_layout LyX-Code
atlas 
\color red
"/system/fonts/DroidSansFallback.ttf
\backslash
0"
\color inherit
 drop
\end_layout

\begin_layout LyX-Code
fontsize# texture_font_new 
\color cyan
Value font2
\end_layout

\begin_layout LyX-Code

\end_layout

\begin_layout LyX-Code

\color cyan
Variable text1$
\color inherit
 
\color red
"Dös isch a Tägscht."
\color inherit
 text1$ $!
\end_layout

\begin_layout LyX-Code

\color cyan
Variable text2$
\color inherit
 
\color red
"
\begin_inset ERT
status open

\begin_layout Plain Layout

{
\backslash
cjk 
\end_layout

\end_inset

这是一个文本：我爱彭秀清。
\begin_inset ERT
status open

\begin_layout Plain Layout

}
\end_layout

\end_inset

"
\color inherit
 text2$ $!
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout BeginFrame
Text rendern Demo--Code II
\end_layout

\begin_layout ExampleBlock
\begin_inset ERT
status open

\begin_layout Plain Layout

{Fonts und Texte}
\end_layout

\end_inset


\end_layout

\begin_deeper
\begin_layout LyX-Code

\color cyan
: glyph-demo
\color inherit
 
\color blue
( -- )
\color inherit
  hidekb
\end_layout

\begin_layout LyX-Code
    
\color red
1
\color inherit
 level# +!  
\color yellow
BEGIN
\end_layout

\begin_layout LyX-Code
        <render
\end_layout

\begin_layout LyX-Code
        
\color red
0.

\color inherit
 penxy 2!
\end_layout

\begin_layout LyX-Code
        font1 to font  text1$ $@ render-string
\end_layout

\begin_layout LyX-Code
        
\color red
-100e
\color inherit
 penxy sf! 
\color red
-60e
\color inherit
 penxy sfloat+ sf!
\end_layout

\begin_layout LyX-Code
        font2 to font  text2$ $@ render-string
\end_layout

\begin_layout LyX-Code
        render>
\end_layout

\begin_layout LyX-Code
        sync >looper
\end_layout

\begin_layout LyX-Code
    level# @ 0= 
\color yellow
UNTIL
\color inherit
 
\color cyan
;
\end_layout

\end_deeper
\begin_layout EndFrame

\end_layout

\begin_layout Section
Ausblick
\end_layout

\begin_layout BeginFrame
Ausblick
\end_layout

\begin_layout FrameSubtitle
Diese Präsentation ist mit LaTeX Beamer gerendert\SpecialChar \ldots{}

\end_layout

\begin_layout Itemize
Die nächste Präsentation muss komplett in MINOΣ2 gerendert sein
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Texte und Videos müssen über net2o geholt werden, und nicht schon vorbereitet
 auf dem Gerät sein
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Dazu fehlt noch eine Typesetting--Engine mit Boxes und Glues, Absatzumbruch
 und Silbentrennung
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Viel weniger Klassen als in MINOΣ --- dafür dann mehr Objekte
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Neben der hbox und vbox noch eine zbox für übereinander gestapeltes
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Animationen integriert
\end_layout

\begin_deeper
\begin_layout Pause

\end_layout

\end_deeper
\begin_layout Itemize
Die einzelnen GLSL--Programme müssen in einem Programm sein, mit Switch--Stateme
nt
\end_layout

\begin_layout EndFrame

\end_layout

\begin_layout Section*
\start_of_appendix
Appendix
\end_layout

\begin_layout Subsection*
Literatur&Links
\end_layout

\begin_layout BeginFrame
Literatur&Links
\end_layout

\begin_layout Bibliography
\labelwidthstring Literaturverzeichnis
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "net2o"

\end_inset


\noun on
Bernd Paysan
\noun default
 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
newblock
\end_layout

\end_inset


\emph on
net2o fossil repository
\emph default

\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
newblock
\end_layout

\end_inset

 
\begin_inset Flex URL
status open

\begin_layout Plain Layout

http://fossil.net2o.de/net2o/
\end_layout

\end_inset


\end_layout

\begin_layout Bibliography
\labelwidthstring Literaturverzeichnis

\noun on
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "minos2"

\end_inset

Bernd Paysan
\noun default
 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
newblock
\end_layout

\end_inset


\emph on
\color white
minos2 fossil repository
\emph default
\color inherit

\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
newblock
\end_layout

\end_inset

 
\begin_inset Flex URL
status open

\begin_layout Plain Layout

http://fossil.net2o.de/minos2/
\end_layout

\end_inset


\end_layout

\begin_layout EndFrame

\end_layout

\end_body
\end_document
