Difference between revisions of "SoC 2011/OpenGL Interface for VLC"
Line 85: | Line 85: | ||
===Classes=== | ===Classes=== | ||
Main: | Main: | ||
− | * GLIntf (module code, create main things) | + | * GLIntf (module code, create main things) (not a class, it's like C code) |
− | |||
* MainInterface (centralizes the others, issues drawing and updates) | * MainInterface (centralizes the others, issues drawing and updates) | ||
Line 92: | Line 91: | ||
* UserInputMonitor (handles input from multiple possible sources) | * UserInputMonitor (handles input from multiple possible sources) | ||
* AbstractUserInput (base class for an input type) | * AbstractUserInput (base class for an input type) | ||
− | * | + | * SDLUserInput (input from SDL events - touch / mouse, keys) |
− | * LircInput (buttons from remote control) | + | * LircInput (buttons from remote control) - planned |
Widgets: | Widgets: | ||
Line 100: | Line 99: | ||
* DynamicLayout (layout that can transition smoothly) | * DynamicLayout (layout that can transition smoothly) | ||
* Container (a widget that can contain other widgets and has a layout) | * Container (a widget that can contain other widgets and has a layout) | ||
+ | * ScrollableContainer (a container with scrolling possibilities) | ||
+ | * ScrollBar | ||
* PlaylistBrowser (the playlist) | * PlaylistBrowser (the playlist) | ||
* PlaylistItem (an item from the playlist) | * PlaylistItem (an item from the playlist) | ||
− | * | + | * SelectorPanel (choose Media Library, Internet, etc.) |
− | * | + | * SelectorItem (item for selecting media sources ^) |
* Button (base class for a button) | * Button (base class for a button) | ||
* Label (draws text) | * Label (draws text) | ||
− | * PlayButton | + | * MenuPanel |
+ | * PlayPanel | ||
+ | * PlayButton, VolumeWidget, StopButton, PrevButton, NextButton | ||
* SeekSlider | * SeekSlider | ||
− | |||
* VideoWidget ("holds" the video) | * VideoWidget ("holds" the video) | ||
− | * FilterEdit | + | * FilterEdit - planned |
Functionality: | Functionality: | ||
Line 116: | Line 118: | ||
* InputManager (like InputManager from Qt interface) | * InputManager (like InputManager from Qt interface) | ||
* Dialogs (to handle showing dialogs using a dialog provider) | * Dialogs (to handle showing dialogs using a dialog provider) | ||
+ | |||
+ | Effects: | ||
+ | * AbstractEffect (a generic effect) | ||
+ | * LinTransitionEffect | ||
+ | * ExpTransitionEffect | ||
+ | * ColorTransitionEffect | ||
Other: | Other: | ||
− | * | + | * TextCache |
− | * | + | * TexPicture |
+ | * EventQueue | ||
===GUI Sketches=== | ===GUI Sketches=== |
Revision as of 12:27, 22 August 2011
This project is part of Google Summer of Code 2011.
|
Contents
Abstract
A nice looking, intuitive, effect-oriented OpenGL interface for the VLC Media Player. It should combine the utility of the current Qt interface with the graphics of media centers. OpenGL will be used for all rendering operations for the interface, bringing a wide range of possibilities to develop pretty graphics. All the user interface elements will be specialized according to the needs of the VLC interface.
Progress
Task | Progress |
---|---|
Establish a primitive working interface module. | Done |
Create a basic OpenGL "engine" for the interface. | Done |
Additional planning and design | Done |
Work on the layout system. | Done |
Develop basic widgets and basic input | Done |
Basic play functionality (primitive playlist) | Done |
Selector / navigation, media library | Done |
More work on the media library + playlist view (current item, tree view) | Done |
Ensure scrolling around the playlist without problems | Done |
Open media dialogs, use a dialog provider | Done |
Text rendering using a VLC text renderer module | Done |
Play video, ensure layout transitions work smoothly | Done |
Implement basic effects for everything | Done |
Improve playlist item, add details | Planned |
Add more effects as much as possible | No time |
Nice play button, volume slider, stop, next, prev buttons | Done |
Further improvements on the playlist, display more meta-data | Planned |
Lirc input | Planned |
Extra buttons, improve media library | Planned |
Fullscreen mode and search / filter | Planned |
Implement missing features and general improvements | Done |
Planning and Design
The interface has 3 main parts - user input, GUI (widgets in OpenGL), functionality (interaction with VLC).
User -> user input -> GUI <-> VLC
User <- GUI <-> VLC
Classes
Main:
- GLIntf (module code, create main things) (not a class, it's like C code)
- MainInterface (centralizes the others, issues drawing and updates)
User Input:
- UserInputMonitor (handles input from multiple possible sources)
- AbstractUserInput (base class for an input type)
- SDLUserInput (input from SDL events - touch / mouse, keys)
- LircInput (buttons from remote control) - planned
Widgets:
- Widget (base class for every widget)
- Layout (sets positions, sizes of multiple widgets)
- DynamicLayout (layout that can transition smoothly)
- Container (a widget that can contain other widgets and has a layout)
- ScrollableContainer (a container with scrolling possibilities)
- ScrollBar
- PlaylistBrowser (the playlist)
- PlaylistItem (an item from the playlist)
- SelectorPanel (choose Media Library, Internet, etc.)
- SelectorItem (item for selecting media sources ^)
- Button (base class for a button)
- Label (draws text)
- MenuPanel
- PlayPanel
- PlayButton, VolumeWidget, StopButton, PrevButton, NextButton
- SeekSlider
- VideoWidget ("holds" the video)
- FilterEdit - planned
Functionality:
- PlaylistManager (like MainInputManager from Qt interface)
- InputManager (like InputManager from Qt interface)
- Dialogs (to handle showing dialogs using a dialog provider)
Effects:
- AbstractEffect (a generic effect)
- LinTransitionEffect
- ExpTransitionEffect
- ColorTransitionEffect
Other:
- TextCache
- TexPicture
- EventQueue
GUI Sketches
- Normal layout, nothing special. Large playlist items
- Video playing layout
- Fullscreen layout
- Normal layout, small items
Repository
Repo
http://git.videolan.org/?p=vlc/vlc-skelet.git;a=summary
git://git.videolan.org/vlc/vlc-skelet.git
Backup Repo
git://repo.or.cz/vlc/vlc-skelet.git
http://repo.or.cz/r/vlc/vlc-skelet.git
Contact
You can reach me at skeletk13 at gmail or as skelet on IRC. Any suggestions are welcome.