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). 0007 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/..). 0015 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. 0022 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. 0026 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>". 0033 0034 KMPlayerPart and KMPlayerApp are classes that use the above for plugin 0035 and application. 0036 0037 Finally there is also a Settings class for general usage and for 0038 launching the configure dialog.