Warning, /multimedia/kmplayer/src/DESIGN.txt is written in an unsupported language. File is not indexed.

0001 The core of kmplayer is in kmplayerpartbase.x. PartBase keeps
0002 the list of Source objects (dvd/vcd/url/..) and Process objects
0003 (mplayer/xine/gst/xv), controls the View or respond to its signals. Both
0004 application as kpart (for plugin) have one PartBase. However, in case of
0005 plugin for khtml, it's possible one PartBase controls multible View
0006 objects (see tests/controls.html).
0008 The View is the parent of ViewArea, PlayList and InfoWindow. ViewArea is
0009 the parent of Viewer (the output for the backend players) and
0010 ControlPanel.
0011 In case of smil animations, the Viewer widget can be hidden or made
0012 smaller so ViewArea background is where the rendering is done.
0013 Classes in kmplayerplaylist.x are actually base for the XML playlist
0014 formats (smil/asx/rss/..).
0016 There is always one Source object active. A Source object sets up the
0017 interface to the user as far possible, handling playlists and launching
0018 backends. This is not fully worked out yet, eg. URLSource should be able
0019 to launch multible backends for smil. Which probably means that PartBase
0020 should have a list of Process factories and Source objects a list of 
0021 running Process objects.
0023 Backends are instances of Process and should be simple, just passing
0024 data from/to external processes. A Recorder object is also a Process.
0025 Though for mplayer, there is quite some code for output parsing.
0027 The XML classes and parser provide a quick way for storing any XML file
0028 in the playlist. Tree nodes build the tree themselves and recognized
0029 multimedia elements more or less play the playlist themselves too.
0030 The parser is build to recover from all kinds of typos. This is because
0031 ASX is quite often full of XML errors that made other parsers give up,
0032 eg. I've seen something like "<Title>Laurel & Hardy< / title>".
0034 KMPlayerPart and KMPlayerApp are classes that use the above for plugin
0035 and application.
0037 Finally there is also a Settings class for general usage and for
0038 launching the configure dialog.