]> git.sesse.net Git - vlc/commitdiff
- doc/skins: some documentation about the skins
authorOlivier Teulière <ipkiss@videolan.org>
Tue, 18 Mar 2003 02:48:05 +0000 (02:48 +0000)
committerOlivier Teulière <ipkiss@videolan.org>
Tue, 18 Mar 2003 02:48:05 +0000 (02:48 +0000)
 - doc/skins/curve_maker: files for a VB project for easy Bezier curves
   creation
 - share/skins/default: a default skin. It's an awful one made for
   testing purposes, you'll be warned...

37 files changed:
doc/skins/curve_maker/Bezier.bas [new file with mode: 0644]
doc/skins/curve_maker/Bezier.frm [new file with mode: 0644]
doc/skins/curve_maker/Bezier.frx [new file with mode: 0644]
doc/skins/curve_maker/Bezier.vbw [new file with mode: 0644]
doc/skins/curve_maker/bezier.vbp [new file with mode: 0644]
doc/skins/events-howto.txt [new file with mode: 0644]
doc/skins/skins-howto.txt [new file with mode: 0644]
share/skins/default/b1.bmp [new file with mode: 0644]
share/skins/default/b1_down.bmp [new file with mode: 0644]
share/skins/default/b1_up.bmp [new file with mode: 0644]
share/skins/default/b2_down.bmp [new file with mode: 0644]
share/skins/default/b2_up.bmp [new file with mode: 0644]
share/skins/default/b3_disabled.bmp [new file with mode: 0644]
share/skins/default/b3_down.bmp [new file with mode: 0644]
share/skins/default/b3_up.bmp [new file with mode: 0644]
share/skins/default/b4_disabled.bmp [new file with mode: 0644]
share/skins/default/b4_down.bmp [new file with mode: 0644]
share/skins/default/b4_up.bmp [new file with mode: 0644]
share/skins/default/b5_disabled.bmp [new file with mode: 0644]
share/skins/default/b5_down.bmp [new file with mode: 0644]
share/skins/default/b5_up.bmp [new file with mode: 0644]
share/skins/default/b6_down.bmp [new file with mode: 0644]
share/skins/default/b6_up.bmp [new file with mode: 0644]
share/skins/default/b7_down.bmp [new file with mode: 0644]
share/skins/default/b7_up.bmp [new file with mode: 0644]
share/skins/default/body.bmp [new file with mode: 0644]
share/skins/default/cursor_down.bmp [new file with mode: 0644]
share/skins/default/cursor_up.bmp [new file with mode: 0644]
share/skins/default/dev_down.bmp [new file with mode: 0644]
share/skins/default/dev_up.bmp [new file with mode: 0644]
share/skins/default/log_down.bmp [new file with mode: 0644]
share/skins/default/log_up.bmp [new file with mode: 0644]
share/skins/default/playlist.bmp [new file with mode: 0644]
share/skins/default/quit_down.bmp [new file with mode: 0644]
share/skins/default/quit_up.bmp [new file with mode: 0644]
share/skins/default/slider.bmp [new file with mode: 0644]
share/skins/default/theme.xml [new file with mode: 0644]

diff --git a/doc/skins/curve_maker/Bezier.bas b/doc/skins/curve_maker/Bezier.bas
new file mode 100644 (file)
index 0000000..093cf06
--- /dev/null
@@ -0,0 +1,77 @@
+Attribute VB_Name = "Bezier"\r
+Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long\r
+Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long\r
+Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long\r
+\r
+Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long\r
+Public Const SRCCOPY = &HCC0020\r
+\r
+Global imgDC As Long\r
+\r
+Type pts\r
+    x As Single\r
+    y As Single\r
+End Type\r
+Global ft(30) As Single\r
+Global Pt(30) As pts\r
+Global MaxPt As Long\r
+\r
+Sub bezier_draw(nb As Long, OffX As Long, OffY As Long)\r
+Dim i As Long, pas As Single, t As Single, oldx As Single, oldy As Single, x As Single, y As Single\r
+\r
+pas = 1 / nb\r
+Call ini_factorielles\r
+oldx = Pt(0).x\r
+oldy = Pt(0).y\r
+\r
+For t = pas To 1 Step pas\r
+    x = bezier_ptx(t)\r
+    y = bezier_pty(t)\r
+    ppal.Line (OffX + oldx, OffY + oldy)-(OffX + x, OffY + y), QBColor(ppal.Color.Value)\r
+    oldx = x\r
+    oldy = y\r
+Next t\r
+For i = 0 To MaxPt\r
+    ppal.PSet (OffX + Pt(i).x, OffY + Pt(i).y), QBColor(ppal.Color.Value)\r
+Next i\r
+\r
+End Sub\r
+\r
+Function bezier_pty(t As Single) As Single\r
+Dim k As Long, i As Long\r
+k = 0\r
+For i = 0 To MaxPt\r
+    bezier_pty = bezier_pty + Pt(i).y * melange(k, MaxPt, t)\r
+    k = k + 1\r
+Next i\r
+\r
+End Function\r
+Function bezier_ptx(t As Single) As Single\r
+Dim k As Long, i As Long\r
+k = 0\r
+For i = 0 To MaxPt\r
+    bezier_ptx = bezier_ptx + Pt(i).x * melange(k, MaxPt, t)\r
+    k = k + 1\r
+Next i\r
+\r
+End Function\r
+\r
+Sub ini_factorielles()\r
+ft(0) = 1\r
+For i& = 1 To 30\r
+    ft(i&) = ft(i& - 1) * i&\r
+Next i&\r
+\r
+End Sub\r
+\r
+Sub make_pt(i As Long, x As Long, y As Long)\r
+Pt(i).x = x\r
+Pt(i).y = y\r
+\r
+End Sub\r
+\r
+Function melange(i As Long, n As Long, t As Single) As Single\r
+melange = CSng(ft(n) / ft(i) / ft(n - i)) * t ^ i * (1 - t) ^ (n - i)\r
+\r
+End Function\r
+\r
diff --git a/doc/skins/curve_maker/Bezier.frm b/doc/skins/curve_maker/Bezier.frm
new file mode 100644 (file)
index 0000000..1611a1e
--- /dev/null
@@ -0,0 +1,391 @@
+VERSION 5.00\r
+Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.1#0"; "COMDLG32.OCX"\r
+Begin VB.Form ppal \r
+   AutoRedraw      =   -1  'True\r
+   BackColor       =   &H00FFFFFF&\r
+   Caption         =   "VLC skin Curve Maker"\r
+   ClientHeight    =   7140\r
+   ClientLeft      =   165\r
+   ClientTop       =   450\r
+   ClientWidth     =   10440\r
+   Icon            =   "Bezier.frx":0000\r
+   LinkTopic       =   "Form1"\r
+   ScaleHeight     =   476\r
+   ScaleMode       =   3  'Pixel\r
+   ScaleWidth      =   696\r
+   StartUpPosition =   2  'CenterScreen\r
+   Begin VB.PictureBox Pict \r
+      AutoSize        =   -1  'True\r
+      BorderStyle     =   0  'None\r
+      Height          =   975\r
+      Left            =   2640\r
+      ScaleHeight     =   65\r
+      ScaleMode       =   3  'Pixel\r
+      ScaleWidth      =   73\r
+      TabIndex        =   4\r
+      Top             =   1800\r
+      Visible         =   0   'False\r
+      Width           =   1095\r
+   End\r
+   Begin VB.PictureBox toolbox \r
+      Align           =   1  'Align Top\r
+      BorderStyle     =   0  'None\r
+      Height          =   900\r
+      Left            =   0\r
+      ScaleHeight     =   900\r
+      ScaleWidth      =   10440\r
+      TabIndex        =   0\r
+      Top             =   0\r
+      Width           =   10440\r
+      Begin VB.HScrollBar Size \r
+         Height          =   255\r
+         Left            =   4920\r
+         Max             =   5\r
+         Min             =   1\r
+         TabIndex        =   3\r
+         Top             =   480\r
+         Value           =   1\r
+         Width           =   2655\r
+      End\r
+      Begin VB.HScrollBar Color \r
+         Height          =   255\r
+         Left            =   4920\r
+         Max             =   15\r
+         TabIndex        =   2\r
+         Top             =   120\r
+         Width           =   2655\r
+      End\r
+      Begin VB.TextBox Result \r
+         Height          =   615\r
+         Left            =   120\r
+         Locked          =   -1  'True\r
+         MultiLine       =   -1  'True\r
+         TabIndex        =   1\r
+         Top             =   120\r
+         Width           =   4575\r
+      End\r
+   End\r
+   Begin MSComDlg.CommonDialog Cmd \r
+      Left            =   7560\r
+      Top             =   120\r
+      _ExtentX        =   847\r
+      _ExtentY        =   847\r
+      _Version        =   327680\r
+   End\r
+   Begin VB.Menu m_file \r
+      Caption         =   "&File"\r
+      Begin VB.Menu m_load \r
+         Caption         =   "Load..."\r
+      End\r
+      Begin VB.Menu m_saveas \r
+         Caption         =   "Save as..."\r
+      End\r
+      Begin VB.Menu m_sep1 \r
+         Caption         =   "-"\r
+      End\r
+      Begin VB.Menu m_quit \r
+         Caption         =   "Quit"\r
+      End\r
+   End\r
+   Begin VB.Menu m_picture \r
+      Caption         =   "Picture"\r
+      Begin VB.Menu m_loadpicture \r
+         Caption         =   "Load..."\r
+      End\r
+   End\r
+   Begin VB.Menu m_tool \r
+      Caption         =   "Tool"\r
+      Visible         =   0   'False\r
+      Begin VB.Menu m_addpoint \r
+         Caption         =   "AddPoint"\r
+      End\r
+      Begin VB.Menu m_center \r
+         Caption         =   "Center"\r
+      End\r
+   End\r
+   Begin VB.Menu m_point \r
+      Caption         =   "Point"\r
+      Visible         =   0   'False\r
+      Begin VB.Menu m_deletept \r
+         Caption         =   "Delete"\r
+      End\r
+   End\r
+End\r
+Attribute VB_Name = "ppal"\r
+Attribute VB_GlobalNameSpace = False\r
+Attribute VB_Creatable = False\r
+Attribute VB_PredeclaredId = True\r
+Attribute VB_Exposed = False\r
+Dim xe As Single\r
+Dim ye As Single\r
+Dim Sel As Long\r
+\r
+Dim MouseX As Long\r
+Dim MouseY As Long\r
+Dim SelectPt As Long\r
+Dim PictureFile As String\r
+Dim CurveFile As String\r
+\r
+Dim OffsetX As Long\r
+Dim OffsetY As Long\r
+Sub form_draw()\r
+Dim i As Long\r
+Me.Cls\r
+\r
+\r
+BitBlt ppal.hdc, OffsetX, OffsetY, Pict.Width, Pict.Height, imgDC, 0, 0, SRCCOPY\r
+\r
+\r
+If MaxPt < 0 Then Exit Sub\r
+Call bezier_draw(40, OffsetX, OffsetY)\r
+\r
+Me.DrawWidth = 1\r
+For i = 0 To MaxPt\r
+    Me.Line (OffsetX + Pt(i).x - 6, OffsetY + Pt(i).y - 6)-(OffsetX + Pt(i).x + 6, OffsetY + Pt(i).y + 6), QBColor(Color.Value), B\r
+Next i\r
+Me.DrawWidth = Size.Value\r
+\r
+End Sub\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+Sub RefreshResult()\r
+Dim i As Long\r
+\r
+Result.Text = "abs="""\r
+For i = 0 To MaxPt\r
+    If i > 0 Then Result.Text = Result.Text & ","\r
+    Result.Text = Result.Text & Pt(i).x\r
+Next i\r
+Result.Text = Result.Text & """" & Chr$(13) & Chr$(10) & "ord="""\r
+For i = 0 To MaxPt\r
+    If i > 0 Then Result.Text = Result.Text & ","\r
+    Result.Text = Result.Text & Pt(i).y\r
+Next i\r
+Result.Text = Result.Text & """"\r
+\r
+End Sub\r
+\r
+Private Sub Color_Change()\r
+form_draw\r
+\r
+End Sub\r
+\r
+Private Sub Form_Load()\r
+PictureFile = "none"\r
+MaxPt = -1\r
+OffsetX = 0\r
+OffsetY = 0\r
+'Pict.Width = 0\r
+'Pict.Height = 0\r
+Call m_center_Click\r
+\r
+End Sub\r
+\r
+Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)\r
+Dim i As Long\r
+\r
+If Button = 2 Then\r
+    For i = 0 To MaxPt\r
+        If Pt(i).x + OffsetX > x - 5 And Pt(i).x + OffsetX < x + 5 Then\r
+            If Pt(i).y + OffsetY > y - 5 And Pt(i).y + OffsetY < y + 5 Then\r
+                SelectPt = i + 1\r
+                Me.PopupMenu m_point\r
+                Exit Sub\r
+            End If\r
+        End If\r
+    Next i\r
+    MouseX = x\r
+    MouseY = y\r
+    Me.PopupMenu m_tool\r
+ElseIf Button = 1 Then\r
+    For i = 0 To MaxPt\r
+        If Pt(i).x + OffsetX > x - 5 And Pt(i).x + OffsetX < x + 5 Then\r
+            If Pt(i).y + OffsetY > y - 5 And Pt(i).y + OffsetY < y + 5 Then\r
+                SelectPt = i + 1\r
+                Exit Sub\r
+            End If\r
+        End If\r
+    Next i\r
+    SelectPt = 0\r
+    Me.MousePointer = 5\r
+    MouseX = x\r
+    MouseY = y\r
+End If\r
+\r
+End Sub\r
+\r
+\r
+Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)\r
+\r
+If Button = 1 Then\r
+    If SelectPt > 0 Then\r
+        Pt(SelectPt - 1).x = x - OffsetX\r
+        Pt(SelectPt - 1).y = y - OffsetY\r
+        form_draw\r
+    Else\r
+        OffsetX = OffsetX - (x - MouseX)\r
+        OffsetY = OffsetY - (y - MouseY)\r
+        MouseX = x\r
+        MouseY = y\r
+        form_draw\r
+    End If\r
+ElseIf Button = 0 Then\r
+    For i = 0 To MaxPt\r
+        If Pt(i).x + OffsetX > x - 5 And Pt(i).x + OffsetX < x + 5 Then\r
+            If Pt(i).y + OffsetY > y - 5 And Pt(i).y + OffsetY < y + 5 Then\r
+                SelectPt = i + 1\r
+                Me.MousePointer = 10\r
+                Exit Sub\r
+            End If\r
+        End If\r
+    Next i\r
+    Me.MousePointer = 0\r
+End If\r
+\r
+End Sub\r
+\r
+\r
+Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)\r
+If Button = 1 Then\r
+    If SelectPt > 0 Then\r
+        SelectPt = 0\r
+        form_draw\r
+        Call RefreshResult\r
+    End If\r
+    Me.MousePointer = 0\r
+End If\r
+\r
+End Sub\r
+\r
+Private Sub m_addpoint_Click()\r
+MaxPt = MaxPt + 1\r
+Call make_pt(MaxPt, MouseX - OffsetX, MouseY - OffsetY)\r
+Call form_draw\r
+\r
+Call RefreshResult\r
+\r
+End Sub\r
+\r
+Private Sub m_center_Click()\r
+OffsetX = (Me.ScaleWidth - Pict.Width) / 2\r
+OffsetY = (Me.ScaleHeight - Pict.Height - toolbox.Height) / 2\r
+form_draw\r
+\r
+End Sub\r
+\r
+Private Sub m_deletept_Click()\r
+Dim i As Long\r
+MaxPt = MaxPt - 1\r
+For i = SelectPt - 1 To MaxPt\r
+    Pt(i).x = Pt(i + 1).x\r
+    Pt(i).y = Pt(i + 1).y\r
+Next\r
+form_draw\r
+Call RefreshResult\r
+\r
+End Sub\r
+\r
+Private Sub m_load_Click()\r
+Dim F As FileSystemObject\r
+Set F = New FileSystemObject\r
+Cmd.filename = CurveFile\r
+Cmd.CancelError = False\r
+Cmd.DialogTitle = "Open Curve"\r
+Cmd.Filter = "Fichier VLC curve |*.curve.vlc"\r
+Cmd.FilterIndex = 0\r
+Cmd.InitDir = App.Path\r
+Cmd.ShowOpen\r
+\r
+If Not F.FileExists(Cmd.filename) Then Exit Sub\r
+CurveFile = Cmd.filename\r
+Dim i As Long, l As Long\r
+Open CurveFile For Binary As #1\r
+    Get #1, , l\r
+    PictureFile = Space$(l)\r
+    Get #1, , PictureFile\r
+    Get #1, , OffsetX\r
+    Get #1, , OffsetY\r
+    Get #1, , MaxPt\r
+    For i = 0 To MaxPt\r
+        Get #1, , Pt(i).x\r
+        Get #1, , Pt(i).y\r
+    Next i\r
+Close #1\r
+If PictureFile <> "none" Then Pict.Picture = LoadPicture(PictureFile)\r
+Call form_draw\r
+Call RefreshResult\r
+\r
+End Sub\r
+\r
+Private Sub m_loadpicture_Click()\r
+Dim F As FileSystemObject\r
+Set F = New FileSystemObject\r
+Cmd.CancelError = False\r
+Cmd.DialogTitle = "Open picture"\r
+Cmd.Filter = "Fichier bitmap |*.bmp"\r
+Cmd.FilterIndex = 0\r
+Cmd.InitDir = App.Path\r
+Cmd.ShowOpen\r
+\r
+If Not F.FileExists(Cmd.filename) Then Exit Sub\r
+PictureFile = Cmd.filename\r
+Pict.Picture = LoadPicture(Cmd.filename)\r
+\r
+Dim HBitmap As Long\r
+HBitmap = LoadImage(0, Cmd.filename, 0, 0, 0, 16)\r
+imgDC = CreateCompatibleDC(0)\r
+SelectObject imgDC, HBitmap\r
+Pict.AutoSize = True\r
+\r
+Call m_center_Click\r
+\r
+End Sub\r
+\r
+\r
+Private Sub m_quit_Click()\r
+End\r
+\r
+End Sub\r
+\r
+Private Sub m_saveas_Click()\r
+Dim F As FileSystemObject\r
+Set F = New FileSystemObject\r
+On Error GoTo error\r
+Cmd.CancelError = True\r
+Cmd.DialogTitle = "Save Curve"\r
+Cmd.Filter = "Fichier VLC curve |*.curve.vlc"\r
+Cmd.FilterIndex = 0\r
+Cmd.InitDir = App.Path\r
+Cmd.ShowSave\r
+\r
+CurveFile = Cmd.filename\r
+\r
+Dim i As Long\r
+Open CurveFile For Binary As #1\r
+    Put #1, , CLng(Len(PictureFile))\r
+    Put #1, , PictureFile\r
+    Put #1, , OffsetX\r
+    Put #1, , OffsetY\r
+    Put #1, , MaxPt\r
+    For i = 0 To MaxPt\r
+        Put #1, , Pt(i).x\r
+        Put #1, , Pt(i).y\r
+    Next i\r
+Close #1\r
+\r
+error:\r
+\r
+End Sub\r
+\r
+\r
+Private Sub Size_Change()\r
+Me.DrawWidth = Size.Value\r
+form_draw\r
+\r
+End Sub\r
diff --git a/doc/skins/curve_maker/Bezier.frx b/doc/skins/curve_maker/Bezier.frx
new file mode 100644 (file)
index 0000000..c796795
Binary files /dev/null and b/doc/skins/curve_maker/Bezier.frx differ
diff --git a/doc/skins/curve_maker/Bezier.vbw b/doc/skins/curve_maker/Bezier.vbw
new file mode 100644 (file)
index 0000000..63346a7
--- /dev/null
@@ -0,0 +1,2 @@
+ppal = 27, 3, 755, 576, , 87, 80, 858, 718, \r
+Bezier = 125, 26, 841, 710, C\r
diff --git a/doc/skins/curve_maker/bezier.vbp b/doc/skins/curve_maker/bezier.vbp
new file mode 100644 (file)
index 0000000..96c04b6
--- /dev/null
@@ -0,0 +1,38 @@
+Type=Exe\r
+Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINNT\System32\stdole2.tlb#OLE Automation\r
+Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.1#0; COMDLG32.OCX\r
+Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#C:\WINNT\System32\scrrun.dll#Microsoft Scripting Runtime\r
+Form=Bezier.frm\r
+Module=Bezier; Bezier.bas\r
+IconForm="ppal"\r
+Startup="ppal"\r
+HelpFile=""\r
+Title="VLC Bezier Curve Maker"\r
+ExeName32="VLC-curve-maker.exe"\r
+Command32=""\r
+Name="Projet1"\r
+HelpContextID="0"\r
+CompatibleMode="0"\r
+MajorVer=1\r
+MinorVer=0\r
+RevisionVer=2\r
+AutoIncrementVer=0\r
+ServerSupportFiles=0\r
+VersionLegalCopyright="VideoLAN"\r
+CompilationType=0\r
+OptimizationType=0\r
+FavorPentiumPro(tm)=0\r
+CodeViewDebugInfo=0\r
+NoAliasing=0\r
+BoundsCheck=0\r
+OverflowCheck=0\r
+FlPointCheck=0\r
+FDIVCheck=0\r
+UnroundedFP=0\r
+StartMode=0\r
+Unattended=0\r
+ThreadPerObject=0\r
+MaxNumberOfThreads=1\r
+\r
+[MS Transaction Server]\r
+AutoRefresh=1\r
diff --git a/doc/skins/events-howto.txt b/doc/skins/events-howto.txt
new file mode 100644 (file)
index 0000000..a6de28e
--- /dev/null
@@ -0,0 +1,196 @@
+Before reading this document, you should first take a look at skins-howto.txt
+to understand general purpose about VLC skins.
+
+What is an event ?
+==================
+
+Events are the dynamic part of the skins. It means that beyond visual aspect,
+the interface must react with the user actions. An event describes a simple
+interaction, in fact one simple action such as playing a file, hiding a
+window...
+So when designing a skin you will have to specify what those interactions are.
+For this you will use simple actions that are described in event tags and you
+would be able to add them and associate them to controls.
+
+How to create an event ?
+========================
+
+An event describes a simple action as seen above.
+All attibutes are explained in the 'skins-howto.txt' file except the 'event'
+attribute wich is a bit special.
+In the 'event' attribute you will enter a simple script with the following
+syntax :
+  "EVENT(parameter1,parameter2,...)"
+
+The number of parameters depends on EVENT.
+All this is case sensitive.
+Don't add spaces.
+EVENT is the action to execute, it can be one of the followings
+
+ - VLC_NOTHING:
+   Action    : none, it executes nothing so don't use it !
+   Parameters: none.
+
+ - VLC_SHOW:
+   Action    : Open all windows of the interface with a fading effect if
+               selected.
+   Parameters: none.
+
+ - VLC_HIDE:
+   Action    : Close all windows of the interface with a fading effect if
+               selected.
+   Parameters:
+     - First 1 is an EVENT to execute when all windows have been closed.
+
+ - VLC_QUIT:
+   Action    : Quit the interface
+   Parameters: none.
+
+ - VLC_OPEN:
+   Action    : Open an "open file dialog box" to open a file to play.
+   Parameters: none.
+
+ - VLC_LOAD_SKIN:
+   Action    : Open an "open file dialog box" to change the current skin.
+   Parameters: none.
+
+ - VLC_LOG_SHOW:
+   Not supported yet
+
+ - VLC_LOG_CLEAR:
+   Not supported yet.
+
+ - VLC_INTF_REFRESH:
+   Action    : Force refreshing of the interface.
+   Parameters: none.
+
+ - VLC_CHANGE_TRAY:
+   Action    : if VLC is not visible in system tray, show it, else, hide it.
+   Parameters: none.
+
+ - VLC_CHANGE_TASKBAR:
+   Action    : if VLC is not visible in taskbar, show it, else, hide it.
+   Parameters: none.
+
+ - VLC_FULLSCREEN:
+   Action    : switch current playing file to fullscreen mode.
+   Parameters: none.
+
+ - VLC_PLAY:
+   Action    : play stream.
+   Parameters: none.
+
+ - VLC_STOP:
+   Action    : stop playing stream.
+   Parameters: none.
+
+ - VLC_PAUSE:
+   Action    : pause the stream.
+   Parameters: none.
+
+ - VLC_NEXT:
+   Action    : go to next file in playlist.
+   Parameters: none.
+
+ - VLC_PREV:
+   Action    : go to previous file in playlist.
+   Parameters: none.
+
+ - VLC_STREAMPOS:
+   Not supported yet.
+
+ - VLC_VOLUME_CHANGE:
+   Action    : change sound volume.
+   Parameters:
+     1: - VLC_VOLUME_MUTE: switch to mute mode.
+        - VLC_VOLUME_UP: raise sounds volume.
+        - VLC_VOLUME_DOWN:
+        - VLC_VOLUME_SET: set sound volume to second parameter
+     2: if first parameter is VLC_VOLUME_SET only, an integer between 0 and 100.
+
+ - VLC_PLAYLIST_ADD_FILE:
+   Action    : Open an "open file dialog box" to add files to playlist.
+   Parameters: none.
+
+ - VLC_WINDOW_MOVE:
+   Action    : initiate manual window movement.
+   Parameters: only one which must match the ID of a window. It should be
+               used with image controls.
+
+ - VLC_WINDOW_OPEN:
+   Action    : open a window with a fading effect if selected.
+   Parameters: only one which must match the ID of a window.
+
+ - VLC_WINDOW_CLOSE:
+   Action    : close a window with a fading effect if selected.
+   Parameters: only one who must match the ID of a window.
+
+ - CTRL_SET_SLIDER:
+   Not supported yet.
+
+ - CTRL_SET_TEXT:
+   Not supported yet.
+
+ - CTRL_ID_VISIBLE:
+   Action    : hide/show a control.
+   Parameters:
+     1: ID of the control to hide/show.
+     2: Describe what to do. Nothing is showing control. TRUE is the same. FALSE
+        is hiding control. CHANGE is switching between this to state.
+
+ - CTRL_ID_ENABLED:
+   Not supported yet.
+
+ - CTRL_ID_MOVE:
+   Action    : moves a control.
+   Parameters:
+     1: ID of the control to move.
+     2: horizontal offset of movement.
+     3: vertical offset of movement.
+
+ - PLAYLIST_ID_DEL:
+   Action    : remove items from playlist.
+   Parameters:
+     1: ID of the playlist.
+
+
+What to do with event ?
+=======================
+
+When creating your event, you must assign an ID to each of them.
+Now you have to associate events with controls.
+Some attributes of some controls are supposed to be filled with those IDs. That
+is to say that when the action correspounding to the attribute will be done,
+the event associated will be executed. The best exemple is assigning an event
+to the 'onclick' attribute of a button control. The event will be executed when
+clicking on the button.
+You can execute several events. To do this you just have to separate them with
+semicolon.
+Exemple:
+  <ButtonControl [...] onclick="event1;event2;event3"/>
+
+
+Do I have to create every event for each skin ?
+===============================================
+
+No, a set of predefined events are present. Here they are with their ID and
+shortcut.
+
+  ID           Shortcut     Description
+
+  tray         CTRL+T       Hide or show in the system tray.
+  taskbar      CTRL+B       Hide or show in the taskbar.
+  play         X            Play.
+  pause        C            Pause.
+  stop         V            Stop.
+  next         B            Next file.
+  prev         Z            Previous file.
+  fullscreen   F            Switch to fullscreen mode.
+  mute                      Mute the sound.
+  volume_up
+  volume_down
+  quit         CTRL+C       Quit VLC.
+  open         CTRL+O       Open a file.
+  add_file     CTRL+A       Add a file.
+  load_skin    CTRL+S       Change skin.
+
diff --git a/doc/skins/skins-howto.txt b/doc/skins/skins-howto.txt
new file mode 100644 (file)
index 0000000..00e508c
--- /dev/null
@@ -0,0 +1,337 @@
+Note: This document is short and highly incomplete. If you want to write a new,
+decent one, it will be more than welcome!
+
+
+
+Basic principles
+================
+
+A skin (or theme, the two words have almost the same meaning) for VLC is made
+of many BMP files (Windows Bitmap format) containing all the images needed, and
+of an XML file describing how these images should be displayed, what happens
+when the user clicks on a button, etc.
+
+Those of you who have already done skins for other softwares shouldn't have too
+many difficulties to understand how all this works.
+
+
+
+Bezier curves
+=============
+
+One cool thing with VLC sliders is that they are not necessarily rectilinear,
+but they can follow any Bezier curve. So if you want to have a slider moving
+on a half-circle, or even doing a loop, you can !
+
+This is not the place to explain how these curves work, the only thing to know
+is that a Bezier curve can be caracterised by a set of points. Once you have
+them (thanks to the graphical utility presented at the end of this file, for
+example), you just need to enter the list of abscissas in the 'abs' attribute
+and the list of ordinates (in the same order...) in the 'ord' attribute. The
+separator is the coma. Example: abs="2,45,88" ord="50,120,50"
+
+Bezier curves are used for the SliderControl and the PlaylistControl tags.
+
+
+
+The bitmaps
+===========
+
+Basically, you need one bitmap file by state of control. For example, with a
+image control you'll need 1 image, with a button 2 images (or 3 if you provide
+the disabled state). A slider will also need 2, one for the static part and
+another for the mobile part. Of course, the same bitmap file can be used for
+many controls, provided you want to display the same image!
+
+The bitmap format doesn't allow a transparent color, but in the XML file you
+can specify a color that will be considered as transparent wherever it appears
+in the bitmap file.
+
+
+
+The XML file
+============
+
+XML is a markup language, like HTML. It won't be explained here any further,
+please use Google if you don't know what is XML. You'll see, it's rather easy
+to understand.
+
+The XML file used for the VLC skins follows a predefined DTD. You can find this
+DTD in VLC CVS, and its reading is strongly advised, since it contains most of
+the default values used for the parameters. A skin that doesn't follow the DTD
+with which VLC was compiled won't be loaded by VLC (and it might even crash
+it...).
+
+For a better comprehension of what follows, you should have a look at the DTD
+(in modules/gui/skin/parser/dkin.dtd) and/or at an example of valid xml skin
+(such as modules/gui/skin/skins/default/theme.xml).
+
+OK, let's go for an enumeration of the different tags and theor attributes :
+
+ - Theme: The main tag.
+   Attributes:
+     - magnet: allows to select the range of action (in pixels) of magnetism
+       with border of screen : that is to say when the distance between the
+       border of the screen and a window is less than this value, the window
+       will stick to the border. 0 means no magnetism.
+       Default is "9".
+     - log: not yet supported.
+
+ - ThemeInfo: You can enter here some information about you (but this
+   information is currently unused by VLC...)
+   Attributes :
+     - name: not yet supported.
+     - author: not yet supported.
+     - email: not yet supported.
+     - webpage: not yet supported.
+
+ - Bitmap: Associates a bitmap file with a name (=identifiant) that will be
+   used by the various controls. Obviously, you need one Bitmap tag for each
+   bitmap file you have.
+   Attributes:
+     - id: this is the name of the bitmap that will be used with controls
+       ( 2 bitmaps shouldn't have the same name).
+     - alphacolor: this is the transparency color of the bitmap. It must be
+       indicated with the following format: "#RRGGBB" (where RR stands for the
+       hexadecimal value of the red component, GG for the green one, and BB for
+       the blue one).
+     - file: this attribute is used to indicate the path and name of the bitmap
+       file used. This path can be absolute (but you should avoid it as often as
+       possible), else it will be relative to the path of the xml file.
+
+ - Event: An action that will be associated to a control later.
+   Attributes :
+     - id: this is the name of the event that will be used with controls.
+       (2 events shouldn't have the same name).
+     - event: see event.howto.
+     - key: this is the shortcut key associated with the event. This means that
+       the event will be executed when hitting the correspounding key. It must
+       be indicated with following format : "MOD+L" where MOD is "CTRL" or "ALT"
+       if control or alt keys or associated the key and "L" is the letter and
+       must be in uppercase format ("MOD+" is optionnal).
+       Default is "none".
+
+ - Font: Declares a font to be used in a TextControl or PlaylistControl.
+   Attributes :
+      - id: this is the name of the event that will be used with controls
+        Default is "default". (2 fonts shouldn't have the same name).
+      - font: this is the name of the font
+        Default is "arial".
+      - size: this is the size of the police in point
+        Default is "12".
+      - color: this is the color of the font with the following format,
+        "#RRGGBB" (see bitmap).
+        Default is "#000000" (black).
+      - weight: this is the weight of the font. It must be between 0 and 1000
+        Default is "400" (normal weight). Fewer is thinner...
+      - italic: sets if the font must be in italic format.
+        Default is "false".
+      - underline: sets if the font must be underlined.
+        Default is "false".
+
+ - Window: A window that will appear on screen.
+      - id: this is the name of the window (it will be only used for events
+        but it is important : 2 windows shouldn't have the same name).
+      - visible: sets if the window should appear or not at the launch of VLC.
+        Default is "true".
+      - x: sets the left position of the window.
+        Default is "0".
+      - y: sets the top position of the window.
+        Default is "0".
+      - fadetime: sets the time in milliseconds of the hide/show fading
+        transition.
+        Default is "500".
+      - alpha: sets the transparency of the window. It must be between 1 and
+        255. 1 is nearly total transaprency and should be avoid. 255 is total
+        opacity.
+        Default is "255". You should use high values.
+      - movealpha: sets the transparency of the window when the window is
+        moving. Same range as alpha.
+        Default is "255".
+      - dragdrop: sets if drag and drop of media files is allowed in this
+        window.
+        Default is "true".
+
+ - ControlGroup: Adds an offset to the elements it contains. A ControlGroup is
+   only supposed to ease the job of the skin designer, who can adjust the
+   position of a group of controls without modifying all the coordinates, but
+   you can ignore it if you want (only one ControlGroup is necessary, just
+   inside Window). ControlGroup tags can be nested.
+   Attributes :
+     - x: try and guess.
+       Default is "0".
+     - y: what do you think ?
+       Default is "0".
+
+ - Anchor: Creates a "magnetic point" in the current Window. If an anchor of
+   another Window enters in the range of action of this anchor, the 2 anchors
+   will automatically be on the same place, and the windows are "sticked". Each
+   anchor has a priority ('priority' attribute), and the anchor with the
+   highest priority is the winner, which means that when moving its Window all
+   the other anchored Windows will move too. To break the effect of 2 linked
+   anchors, you need to move the Window whose anchor has the lower priority.
+   Attributes :
+     - x: is it really necessary to explain ?
+       Default is "0".
+     - y: ...
+       Default is "0".
+     - priority: priority of anchor (see the previous description).
+       No default, must de defined !!!
+     - range: Range of action in pixel of the anchor.
+       Default is "10".
+
+ - ImageControl, ButtonControl, CheckBoxControl, TextControl, SliderControl,
+   PlaylistControl: The various visual controls that constitute a Window. They
+   share some properties: 'x' and 'y' for the position, 'visible' for the
+   initial state, 'id' for identifying them (only needed if you want to create
+   an event acting on this particular control) and 'help' for a short
+   description of the control that could be displayed in a special TextControl
+   (see below). All the controls can also accept events, and you have the
+   possibility to associate many events to a control at once, separing them
+   with semicolons.
+
+ - ImageControl: Creates a simple image. Usefull for backgrounds.
+     - image: this attribute must be set to an identifiant of a Bitmap tag.
+     - onclick: the 'event' attribute can be used to associate an event to the
+       image (the event is triggered by a click on the image).
+       Typical use: an Event made with 'WINDOW_MOVE(window)' (where 'window' is
+       the name of a Window) can be associated to an ImageControl of this
+       Window. Hence the Window can be moved via the image...
+
+ - ButtonControl: Creates a button.
+     - up: identifiants of a bitmap. Used for drawing the up state of the
+       button.
+     - down: identifiants of a bitmap. Used for drawinf the down state of the
+       button.
+     - disabled : identifiants of a bitmap. Used for drawing the disabled state
+       of the button.
+     - onclick: event executed when clicking on the button.
+       Default is "none".
+     - tooltiptext : used to display a tooltip.
+       Default is "none". (no tooltip).
+
+ - CheckBoxControl: Creates a checkbox, i.e. a button with 2 states
+   (checked/unchecked). So you need 6 images for a full-featured checkbox: each
+   state has a basic image, an image corresponding to a click not yet released,
+   and an image for the disabled control. If you supply only the basic images,
+   the other ones will be identical.
+   Attributes:
+     - img1: identifiants of a bitmap. Used for drawing control in state 1.
+     - clickimg1: identifiants of a bitmap. Used for drawing control when
+       clicking on it in state 1.
+       Default is the value of 'img1' attribute.
+     - img2: identifiants of a bitmap. Used for drawing control in state 2.
+     - clickimg2: identifiants of a bitmap. Used for drawing control when
+       clicking on it in state 2.
+       Default is the value of 'img2' attribute.
+     - disabled1: identifiants of a bitmap. Used for drawing control in state 1
+       when disabling.
+       Default is the value of 'img1' attribute.
+     - disabled2: identifiants of a bitmap. Used for drawing control in state 1
+       when disabling.
+       Default is the value of 'img2' attribute.
+     - onclick1: event executed when clicking on the control in state 1.
+       Default is "none".
+     - onclick2: event executed when clicking on the control in state 2.
+       Default is "none".
+
+ - TextControl: Creates a text.
+   Attributes:
+     - font: the font to use, which must be one of the Font identifiants.
+     - text: the text to display.
+     - align: either 'left' or 'center' or 'right'.
+       Default is "left".
+     - scroll: if set to 'true', the text will scroll if it does not fit into
+       the 'scrollspace'.
+       Default is "true".
+     - scrollspace: size in pixel between two occurences of the text when
+       scrolling.
+       Default is "20".
+     - display: this value is a bit special, it allows to have a text
+       auto-updated by VLC. Possible values are 'time', 'left_time',
+       'total_time', 'file_name' (for the current file name) and 'help'
+       (for a help about the controls that defined their 'help' attribute).
+       You can specify several type by separating them with semicolons. TO
+       switch between then, just double click on the text.
+       Usefull to switch betxeen 'time' and 'left_time'.
+     - width: Width of the text in pixel. If set to "0", the width is
+       automatically calculated to fit with the current text.
+       Default is "0".
+
+ - SliderControl: Creates a slider. The 'abs' and 'ord' attributes are needed
+   for the Bezier curve that the slider will follow. 'up' and 'down' are the
+   images of the slider. The 'tooltiptext' attribute works, and the slider will
+   automatically append the percentage of the position.
+   Attributes:
+     - type: two 'types' of sliders are predefined: 'time' for a slider
+       allowing to seek in the stream, and 'volume' for a volume slider.
+       Default is "time".
+     - up: identifiants of a bitmap.
+     - down: identifiants of a bitmap.
+     - abs: see SliderControl description and bezier curve description.
+     - ord: see SliderControl description and bezier curve description..
+     - tooltiptext: see button.
+       Default is "none". Disable tooltip.
+
+ - PlaylistControl: Creates a playlist. This tag must contain a SliderControl
+   tag (to allow scrolling in the playlist). If the playlist contains entries
+   wider than the list width, an automatic tooltip will appear with
+   the full name of the entry. The other attributes are rather easy to
+   understand...
+   Attributes:
+     - width: width in pixel of the list. This is the whole width for file
+       name, number of file in the playlist and info text.
+       Default is "200".
+     - infowidth: width in pixel of the info text.
+       Default is "50".
+     - font: the font to use, which must be one of the Font identifiants.
+     - playfont: the font to use for current playing file, which must be one of
+       the Font identifiants.
+       Default is "none".
+     - selcolor: color in "#RRGGBB" format of the selected files.
+       Default is "#0000FF" (blue).
+     - abs: see PlaylistControl description and bezier curve description.
+     - ord: see PlaylistControl description and bezier curve description.
+
+
+
+Compression
+===========
+
+Once your skin is finished, instead of keeping many bitmap files and the XML
+file, you can compress them in a .tar.gz archive (Winzip and UmtimateZip can do
+it perfectly, for example). Before doing so, don't forget to rename your XML
+file into "theme.xml", or VLC won't be able to read it...  Then rename your
+compressed file with the .vlt extension and... that's all! VLC can load
+directly skins with the .vlt extension.
+
+
+
+Tools and advice
+================
+
+ - To generate easily Bezier curves, you can use the curve-maker. Basically,
+   you add and remove points at will, and you can move them to see how the
+   curve evolves. When you have reached the perfect curve, you just have to
+   copy-paste the list ob abscissas and ordinates in the 'abs' and 'ord'
+   attributes of your SliderControl or PlaylistControl. The curve-maker also
+   allows to load a bitmap, this could be useful if you want to follow a
+   specific pattern of a slider, for example.
+
+ - When you are creating your skin, you may want to see the VLC messages where
+   some errors are logged. For this, open a dos window, go to the directory
+   where VLC is installed, and type "vlc -I skin -v --extraintf logger". This
+   should open VLC and a log window (what's more, the logs should be saved in a
+   file called vlc-log.txt). The interesting lines are those with "skin
+   interface"...
+
+ - For the Bitmap tags, don't use absolute paths but relative paths (they are
+   relative to the XML file directory), so that your skin can be reused by
+   anybody without a particular file structure.
+
+ - To fully use the possibilities given, you should look at how other skins are
+   made, it's often very useful.
+
+
+Good luck!
+
diff --git a/share/skins/default/b1.bmp b/share/skins/default/b1.bmp
new file mode 100644 (file)
index 0000000..841e600
Binary files /dev/null and b/share/skins/default/b1.bmp differ
diff --git a/share/skins/default/b1_down.bmp b/share/skins/default/b1_down.bmp
new file mode 100644 (file)
index 0000000..57ae442
Binary files /dev/null and b/share/skins/default/b1_down.bmp differ
diff --git a/share/skins/default/b1_up.bmp b/share/skins/default/b1_up.bmp
new file mode 100644 (file)
index 0000000..fbc7956
Binary files /dev/null and b/share/skins/default/b1_up.bmp differ
diff --git a/share/skins/default/b2_down.bmp b/share/skins/default/b2_down.bmp
new file mode 100644 (file)
index 0000000..6647673
Binary files /dev/null and b/share/skins/default/b2_down.bmp differ
diff --git a/share/skins/default/b2_up.bmp b/share/skins/default/b2_up.bmp
new file mode 100644 (file)
index 0000000..0bdadd3
Binary files /dev/null and b/share/skins/default/b2_up.bmp differ
diff --git a/share/skins/default/b3_disabled.bmp b/share/skins/default/b3_disabled.bmp
new file mode 100644 (file)
index 0000000..db61504
Binary files /dev/null and b/share/skins/default/b3_disabled.bmp differ
diff --git a/share/skins/default/b3_down.bmp b/share/skins/default/b3_down.bmp
new file mode 100644 (file)
index 0000000..0ac070a
Binary files /dev/null and b/share/skins/default/b3_down.bmp differ
diff --git a/share/skins/default/b3_up.bmp b/share/skins/default/b3_up.bmp
new file mode 100644 (file)
index 0000000..b786bce
Binary files /dev/null and b/share/skins/default/b3_up.bmp differ
diff --git a/share/skins/default/b4_disabled.bmp b/share/skins/default/b4_disabled.bmp
new file mode 100644 (file)
index 0000000..d345b80
Binary files /dev/null and b/share/skins/default/b4_disabled.bmp differ
diff --git a/share/skins/default/b4_down.bmp b/share/skins/default/b4_down.bmp
new file mode 100644 (file)
index 0000000..c984726
Binary files /dev/null and b/share/skins/default/b4_down.bmp differ
diff --git a/share/skins/default/b4_up.bmp b/share/skins/default/b4_up.bmp
new file mode 100644 (file)
index 0000000..be83746
Binary files /dev/null and b/share/skins/default/b4_up.bmp differ
diff --git a/share/skins/default/b5_disabled.bmp b/share/skins/default/b5_disabled.bmp
new file mode 100644 (file)
index 0000000..7f0c3fb
Binary files /dev/null and b/share/skins/default/b5_disabled.bmp differ
diff --git a/share/skins/default/b5_down.bmp b/share/skins/default/b5_down.bmp
new file mode 100644 (file)
index 0000000..6c579a7
Binary files /dev/null and b/share/skins/default/b5_down.bmp differ
diff --git a/share/skins/default/b5_up.bmp b/share/skins/default/b5_up.bmp
new file mode 100644 (file)
index 0000000..ec66970
Binary files /dev/null and b/share/skins/default/b5_up.bmp differ
diff --git a/share/skins/default/b6_down.bmp b/share/skins/default/b6_down.bmp
new file mode 100644 (file)
index 0000000..4b451f8
Binary files /dev/null and b/share/skins/default/b6_down.bmp differ
diff --git a/share/skins/default/b6_up.bmp b/share/skins/default/b6_up.bmp
new file mode 100644 (file)
index 0000000..2aade3e
Binary files /dev/null and b/share/skins/default/b6_up.bmp differ
diff --git a/share/skins/default/b7_down.bmp b/share/skins/default/b7_down.bmp
new file mode 100644 (file)
index 0000000..a0bb807
Binary files /dev/null and b/share/skins/default/b7_down.bmp differ
diff --git a/share/skins/default/b7_up.bmp b/share/skins/default/b7_up.bmp
new file mode 100644 (file)
index 0000000..57ad8d1
Binary files /dev/null and b/share/skins/default/b7_up.bmp differ
diff --git a/share/skins/default/body.bmp b/share/skins/default/body.bmp
new file mode 100644 (file)
index 0000000..0269341
Binary files /dev/null and b/share/skins/default/body.bmp differ
diff --git a/share/skins/default/cursor_down.bmp b/share/skins/default/cursor_down.bmp
new file mode 100644 (file)
index 0000000..4766f13
Binary files /dev/null and b/share/skins/default/cursor_down.bmp differ
diff --git a/share/skins/default/cursor_up.bmp b/share/skins/default/cursor_up.bmp
new file mode 100644 (file)
index 0000000..2a613f8
Binary files /dev/null and b/share/skins/default/cursor_up.bmp differ
diff --git a/share/skins/default/dev_down.bmp b/share/skins/default/dev_down.bmp
new file mode 100644 (file)
index 0000000..a8ae278
Binary files /dev/null and b/share/skins/default/dev_down.bmp differ
diff --git a/share/skins/default/dev_up.bmp b/share/skins/default/dev_up.bmp
new file mode 100644 (file)
index 0000000..5744148
Binary files /dev/null and b/share/skins/default/dev_up.bmp differ
diff --git a/share/skins/default/log_down.bmp b/share/skins/default/log_down.bmp
new file mode 100644 (file)
index 0000000..2a9c3e0
Binary files /dev/null and b/share/skins/default/log_down.bmp differ
diff --git a/share/skins/default/log_up.bmp b/share/skins/default/log_up.bmp
new file mode 100644 (file)
index 0000000..7510010
Binary files /dev/null and b/share/skins/default/log_up.bmp differ
diff --git a/share/skins/default/playlist.bmp b/share/skins/default/playlist.bmp
new file mode 100644 (file)
index 0000000..a0f1876
Binary files /dev/null and b/share/skins/default/playlist.bmp differ
diff --git a/share/skins/default/quit_down.bmp b/share/skins/default/quit_down.bmp
new file mode 100644 (file)
index 0000000..25911d8
Binary files /dev/null and b/share/skins/default/quit_down.bmp differ
diff --git a/share/skins/default/quit_up.bmp b/share/skins/default/quit_up.bmp
new file mode 100644 (file)
index 0000000..c20336d
Binary files /dev/null and b/share/skins/default/quit_up.bmp differ
diff --git a/share/skins/default/slider.bmp b/share/skins/default/slider.bmp
new file mode 100644 (file)
index 0000000..adc961e
Binary files /dev/null and b/share/skins/default/slider.bmp differ
diff --git a/share/skins/default/theme.xml b/share/skins/default/theme.xml
new file mode 100644 (file)
index 0000000..e664d1e
--- /dev/null
@@ -0,0 +1,105 @@
+<!DOCTYPE Theme SYSTEM "skin.dtd">\r
+\r
+<Theme>\r
+    <ThemeInfo name="skin-test" author="Emmanuel Puig"\r
+            email="magic@karibu.org" webpage=""/>\r
+\r
+    <Bitmap id="body" file="skin-test/body.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="q_up" file="skin-test/quit_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="q_down" file="skin-test/quit_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b1_up" file="skin-test/b1_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b1_down" file="skin-test/b1_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b2_up" file="skin-test/b2_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b2_down" file="skin-test/b2_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b3_up" file="skin-test/b3_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b3_down" file="skin-test/b3_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b3_dis" file="skin-test/b3_disabled.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b4_up" file="skin-test/b4_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b4_down" file="skin-test/b4_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b4_dis" file="skin-test/b4_disabled.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b5_up" file="skin-test/b5_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b5_down" file="skin-test/b5_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b5_dis" file="skin-test/b5_disabled.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b6_up" file="skin-test/b6_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b6_down" file="skin-test/b6_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b7_up" file="skin-test/b7_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="b7_down" file="skin-test/b7_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="slider" file="skin-test/slider.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="cursor_up" file="skin-test/cursor_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="cursor_down" file="skin-test/cursor_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="log_up" file="skin-test/log_up.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="log_down" file="skin-test/log_down.bmp" alphacolor="#FF0000"/>\r
+    <Bitmap id="playlist" file="skin-test/playlist.bmp" alphacolor="#FF0000"/>\r
+\r
+    <Bitmap id="DEFAULT_VLC_NULL_IMAGE" file="skin-test/cursor_down.bmp" alphacolor="#FF0000"/>\r
+\r
+    <Event id="move_main" event="WINDOW_MOVE(mainwindow)"/>\r
+    <Event id="move_main2" event="WINDOW_MOVE(mainwindow2)"/>\r
+    <Event id="move_child" event="WINDOW_MOVE(child)"/>\r
+    <Event id="hide_child" event="WINDOW_CLOSE(child)"/>\r
+    <Event id="show_child" event="WINDOW_OPEN(child)"/>\r
+    <Event id="hide_test" event="CTRL_ID_VISIBLE(test)"/>\r
+\r
+    <Font id="time" font="system" size="7" color="#00FF00"/>\r
+    <Font id="defil" font="system" size="7" color="#000000"/>\r
+    <Font id="help" font="system" size="8" color="#000000"/>\r
+    <Font id="playlist" font="arial" size="8" color="#00FF00" weight="200"/>\r
+    <Font id="playlist2" font="arial" size="8" color="#FFFFFF" weight="200"/>\r
+\r
+    <Window id="mainwindow" x="100" y="100" alpha="255" fadetime="500" movealpha="192">\r
+        <ControlGroup x="0" y="0">\r
+            <ImageControl x="5" y="5" image="body" onclick="move_main"/>\r
+\r
+            <ButtonControl x="0" y="0" up="q_up" down="q_down" onclick="quit" tooltiptext="quit" help="test"/>\r
+\r
+            <!--<CheckBoxControl x="250" y="5" img1="log_up" img2="log_down" action1="show_log" action2="hide_log"/>\r
+            -->\r
+\r
+            <TextControl font="time" align="right" x="155" y="21" width="100" text="0:00:00" display="time;left_time"/>\r
+            <TextControl font="help" align="center" x="105" y="61" width="150" text=" " display="help"/>\r
+\r
+            <CheckBoxControl x="250" y="50" img1="log_up" img2="log_down" onclick1="show_child" onclick2="hide_child"/>\r
+\r
+\r
+            <ControlGroup x="9" y="122">\r
+                <ControlGroup x="0" y="0">\r
+                    <ButtonControl x="-27" y="0" up="b1_up" down="b1_down" onclick="show_child"/>\r
+\r
+                    <ButtonControl x="0" y="0" up="b1_up" down="b1_down" onclick="open"/>\r
+                    <ButtonControl x="27" y="0" up="b2_up" down="b2_down" onclick="prev"/>\r
+                    <ButtonControl x="54" y="0" up="b3_up" down="b3_down" disabled="b3_dis" onclick="stop"/>\r
+                </ControlGroup>\r
+                <ButtonControl x="81" y="0" up="b4_up" down="b4_down" disabled="b4_dis" onclick="play"/>\r
+                <ControlGroup x="107" y="0">\r
+                    <ButtonControl x="0" y="0" up="b5_up" down="b5_down" disabled="b5_dis" onclick="pause"/>\r
+                    <ButtonControl x="27" y="0" up="b6_up" down="b6_down" onclick="next"/>\r
+                    <ButtonControl x="54" y="0" up="b7_up" down="b7_down" onclick="load_skin"/>\r
+                    <ButtonControl x="81" y="0" up="b7_up" down="b7_down" onclick="hide_test"/>\r
+                    <ButtonControl id="test" x="108" y="0" up="b7_up" down="b7_down" onclick="fullscreen"/>\r
+                </ControlGroup>\r
+            </ControlGroup>\r
+\r
+            <ControlGroup x="9" y="92">\r
+                <ImageControl x="0" y="0" image="slider"/>\r
+                <SliderControl up="cursor_up" down="cursor_down" abs="10,184" ord="10,10" tooltiptext="Time"/>\r
+            </ControlGroup>\r
+            <ControlGroup x="9" y="172">\r
+                <ImageControl x="0" y="0" image="slider"/>\r
+                <SliderControl type="volume" up="cursor_up" down="cursor_down" abs="10,184" ord="10,10" tooltiptext="Sound"/>\r
+            </ControlGroup>\r
+\r
+        </ControlGroup>\r
+    </Window>\r
+\r
+    <Window id="child" x="350" y="100" alpha="255" fadetime="500" movealpha="192">\r
+        <ControlGroup x="0" y="0">\r
+            <ButtonControl x="0" y="0" up="q_up" down="q_down" onclick="quit"/>\r
+            <ImageControl x="0" y="0" image="playlist" onclick="move_child"/>\r
+            <PlayListControl font="playlist" playfont="playlist2" abs="119,87,100" ord="36,182,200">\r
+                                <SliderControl up="cursor_up" down="cursor_down" abs="265,310,321,330,327,315,308" ord="20,36,62,87,107,119,134"/>\r
+            </PlayListControl>\r
+        </ControlGroup>\r
+    </Window>\r
+\r
+</Theme>\r
+\r