]> git.sesse.net Git - vlc/commitdiff
Removed the old skins plugin
authorOlivier Teulière <ipkiss@videolan.org>
Sat, 21 Aug 2004 11:34:33 +0000 (11:34 +0000)
committerOlivier Teulière <ipkiss@videolan.org>
Sat, 21 Aug 2004 11:34:33 +0000 (11:34 +0000)
97 files changed:
build-vlc
configure.ac
modules/LIST
modules/gui/skins/Modules.am [deleted file]
modules/gui/skins/controls/button.cpp [deleted file]
modules/gui/skins/controls/button.h [deleted file]
modules/gui/skins/controls/checkbox.cpp [deleted file]
modules/gui/skins/controls/checkbox.h [deleted file]
modules/gui/skins/controls/controls.h [deleted file]
modules/gui/skins/controls/generic.cpp [deleted file]
modules/gui/skins/controls/generic.h [deleted file]
modules/gui/skins/controls/image.cpp [deleted file]
modules/gui/skins/controls/image.h [deleted file]
modules/gui/skins/controls/playlist.cpp [deleted file]
modules/gui/skins/controls/playlist.h [deleted file]
modules/gui/skins/controls/rectangle.cpp [deleted file]
modules/gui/skins/controls/rectangle.h [deleted file]
modules/gui/skins/controls/slider.cpp [deleted file]
modules/gui/skins/controls/slider.h [deleted file]
modules/gui/skins/controls/text.cpp [deleted file]
modules/gui/skins/controls/text.h [deleted file]
modules/gui/skins/os_api.h [deleted file]
modules/gui/skins/os_bitmap.h [deleted file]
modules/gui/skins/os_event.h [deleted file]
modules/gui/skins/os_font.h [deleted file]
modules/gui/skins/os_graphics.h [deleted file]
modules/gui/skins/os_theme.h [deleted file]
modules/gui/skins/os_window.h [deleted file]
modules/gui/skins/parser/flex.c [deleted file]
modules/gui/skins/parser/skin.act [deleted file]
modules/gui/skins/parser/skin.c [deleted file]
modules/gui/skins/parser/skin.dtd [deleted file]
modules/gui/skins/parser/skin.h [deleted file]
modules/gui/skins/parser/wrappers.cpp [deleted file]
modules/gui/skins/parser/wrappers.h [deleted file]
modules/gui/skins/src/anchor.cpp [deleted file]
modules/gui/skins/src/anchor.h [deleted file]
modules/gui/skins/src/banks.cpp [deleted file]
modules/gui/skins/src/banks.h [deleted file]
modules/gui/skins/src/bezier.cpp [deleted file]
modules/gui/skins/src/bezier.h [deleted file]
modules/gui/skins/src/bitmap.cpp [deleted file]
modules/gui/skins/src/bitmap.h [deleted file]
modules/gui/skins/src/dialogs.cpp [deleted file]
modules/gui/skins/src/dialogs.h [deleted file]
modules/gui/skins/src/event.cpp [deleted file]
modules/gui/skins/src/event.h [deleted file]
modules/gui/skins/src/font.cpp [deleted file]
modules/gui/skins/src/font.h [deleted file]
modules/gui/skins/src/graphics.cpp [deleted file]
modules/gui/skins/src/graphics.h [deleted file]
modules/gui/skins/src/skin_common.h [deleted file]
modules/gui/skins/src/skin_main.cpp [deleted file]
modules/gui/skins/src/theme.cpp [deleted file]
modules/gui/skins/src/theme.h [deleted file]
modules/gui/skins/src/themeloader.cpp [deleted file]
modules/gui/skins/src/themeloader.h [deleted file]
modules/gui/skins/src/vlcproc.cpp [deleted file]
modules/gui/skins/src/vlcproc.h [deleted file]
modules/gui/skins/src/window.cpp [deleted file]
modules/gui/skins/src/window.h [deleted file]
modules/gui/skins/win32/win32_api.cpp [deleted file]
modules/gui/skins/win32/win32_bitmap.cpp [deleted file]
modules/gui/skins/win32/win32_bitmap.h [deleted file]
modules/gui/skins/win32/win32_dragdrop.cpp [deleted file]
modules/gui/skins/win32/win32_dragdrop.h [deleted file]
modules/gui/skins/win32/win32_event.cpp [deleted file]
modules/gui/skins/win32/win32_event.h [deleted file]
modules/gui/skins/win32/win32_font.cpp [deleted file]
modules/gui/skins/win32/win32_font.h [deleted file]
modules/gui/skins/win32/win32_graphics.cpp [deleted file]
modules/gui/skins/win32/win32_graphics.h [deleted file]
modules/gui/skins/win32/win32_run.cpp [deleted file]
modules/gui/skins/win32/win32_theme.cpp [deleted file]
modules/gui/skins/win32/win32_theme.h [deleted file]
modules/gui/skins/win32/win32_window.cpp [deleted file]
modules/gui/skins/win32/win32_window.h [deleted file]
modules/gui/skins/x11/x11_api.cpp [deleted file]
modules/gui/skins/x11/x11_bitmap.cpp [deleted file]
modules/gui/skins/x11/x11_bitmap.h [deleted file]
modules/gui/skins/x11/x11_dragdrop.cpp [deleted file]
modules/gui/skins/x11/x11_dragdrop.h [deleted file]
modules/gui/skins/x11/x11_event.cpp [deleted file]
modules/gui/skins/x11/x11_event.h [deleted file]
modules/gui/skins/x11/x11_font.cpp [deleted file]
modules/gui/skins/x11/x11_font.h [deleted file]
modules/gui/skins/x11/x11_graphics.cpp [deleted file]
modules/gui/skins/x11/x11_graphics.h [deleted file]
modules/gui/skins/x11/x11_run.cpp [deleted file]
modules/gui/skins/x11/x11_theme.cpp [deleted file]
modules/gui/skins/x11/x11_theme.h [deleted file]
modules/gui/skins/x11/x11_timer.cpp [deleted file]
modules/gui/skins/x11/x11_timer.h [deleted file]
modules/gui/skins/x11/x11_window.cpp [deleted file]
modules/gui/skins/x11/x11_window.h [deleted file]
toolbox
vlc.win32.nsi

index ac53033dfd3c9cbbc69ab59bfd862d952bdf9d39..0971fe5263db5825db79edd8f38af5a1b99d0389 100755 (executable)
--- a/build-vlc
+++ b/build-vlc
@@ -1,7 +1,6 @@
 #!/bin/sh
 
 FEATURES="
-SKINS skins
 SKINS skins2
 FAMILIAR familiar
 WXWINDOWS wxwindows
index cc5a66b60ee7a4462a9912369daf0ce2ae1f32c0..7b80340d2c36d080c293acbcf3427ba426b4016c 100644 (file)
@@ -2113,7 +2113,7 @@ dnl
 dnl MP4 module
 dnl
 AC_CHECK_HEADERS(zlib.h, [
-  VLC_ADD_LDFLAGS([mp4 skins skins2 sap],[-lz])
+  VLC_ADD_LDFLAGS([mp4 skins2 sap],[-lz])
 ] )
 
 AC_CHECK_HEADERS(sysfs/libsysfs.h, [
@@ -2121,10 +2121,10 @@ AC_CHECK_HEADERS(sysfs/libsysfs.h, [
 ] )
 
 dnl
-dnl skins module
+dnl skins2 module
 dnl
 AC_CHECK_HEADERS(libtar.h, [
-  VLC_ADD_LDFLAGS([skins skins2],[-ltar])
+  VLC_ADD_LDFLAGS([skins2],[-ltar])
 ] )
 
 
@@ -3131,29 +3131,6 @@ then
     VLC_ADD_BUILTINS([beos])
 fi
 
-dnl
-dnl Skins module
-dnl
-AC_ARG_ENABLE(skins,
-  [  --enable-skins          Skins interface module (default enabled on Win32)])
-if test "${enable_skins}" != "no"; then
-  if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"; then
-
-    VLC_ADD_PLUGINS([skins])
-    ALIASES="${ALIASES} svlc"
-    VLC_ADD_CPPFLAGS([skins],[-U_OFF_T_ -U_off_t -Imodules/gui/skins])
-    VLC_ADD_CXXFLAGS([skins],[-O2 -fno-rtti])
-    VLC_ADD_LDFLAGS([skins],[-loleaut32 -lwinspool -lwinmm -lshell32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32])
-
-  else if test "${enable_skins}" = "yes"; then
-    VLC_ADD_PLUGINS([skins])
-    ALIASES="${ALIASES} svlc"
-    VLC_ADD_CPPFLAGS([skins],[-Imodules/gui/skins -I${x_includes} -I/usr/include/freetype2 -DX11_SKINS])
-    VLC_ADD_CXXFLAGS([skins],[-O2 -fno-rtti])
-    VLC_ADD_LDFLAGS([skins],[-L${x_libraries} -lImlib2 -lXext -lX11 -lfreetype -lpng -lz ])
-  fi fi
-fi
-
 dnl
 dnl Skins2 module
 dnl
@@ -4076,7 +4053,6 @@ AC_CONFIG_FILES([
   modules/gui/macosx/Makefile
   modules/gui/qnx/Makefile
   modules/gui/qt/Makefile
-  modules/gui/skins/Makefile
   modules/gui/skins2/Makefile
   modules/gui/wxwindows/Makefile
   modules/misc/Makefile
index 1f2088aa8fd909e350baa18ded19625f076fd433..d3731e1f6d6bd2f4ae353d9ef9248f2d3a61a476 100644 (file)
@@ -386,8 +386,6 @@ $Id$
 
  * skins2: Skinnable interface, new generation
 
- * skins: Skinnable interface
-
  * slp: input module to access SLP registered sessions
 
  * snapshot: a output module to save pictures from the vout.
diff --git a/modules/gui/skins/Modules.am b/modules/gui/skins/Modules.am
deleted file mode 100644 (file)
index 00d7302..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-SOURCES_skins = \
-       os_api.h \
-       os_bitmap.h \
-       os_event.h \
-       os_font.h \
-       os_graphics.h \
-       os_theme.h \
-       os_window.h \
-       \
-       controls/controls.h \
-       controls/button.cpp \
-       controls/button.h \
-       controls/checkbox.cpp \
-       controls/checkbox.h \
-       controls/generic.cpp \
-       controls/generic.h \
-       controls/image.cpp \
-       controls/image.h \
-       controls/playlist.cpp \
-       controls/playlist.h \
-       controls/rectangle.cpp \
-       controls/rectangle.h \
-       controls/slider.cpp \
-       controls/slider.h \
-       controls/text.cpp \
-       controls/text.h \
-       \
-       parser/flex.c \
-       parser/skin.h \
-       parser/skin.c \
-       parser/wrappers.h \
-       parser/wrappers.cpp \
-       \
-       src/anchor.cpp \
-       src/anchor.h \
-       src/banks.cpp \
-       src/banks.h \
-       src/bezier.cpp \
-       src/bezier.h \
-       src/bitmap.cpp \
-       src/bitmap.h \
-       src/dialogs.cpp \
-       src/dialogs.h \
-       src/event.cpp \
-       src/event.h \
-       src/font.cpp \
-       src/font.h \
-       src/graphics.cpp \
-       src/graphics.h \
-       src/skin_main.cpp \
-       src/skin_common.h \
-       src/theme.cpp \
-       src/theme.h \
-       src/themeloader.cpp \
-       src/themeloader.h \
-       src/vlcproc.cpp \
-       src/vlcproc.h \
-       src/window.cpp \
-       src/window.h \
-       \
-       win32/win32_api.cpp \
-       win32/win32_bitmap.cpp \
-       win32/win32_bitmap.h \
-       win32/win32_dragdrop.cpp \
-       win32/win32_dragdrop.h \
-       win32/win32_event.cpp \
-       win32/win32_event.h \
-       win32/win32_font.cpp \
-       win32/win32_font.h \
-       win32/win32_graphics.cpp \
-       win32/win32_graphics.h \
-       win32/win32_run.cpp \
-       win32/win32_theme.cpp \
-       win32/win32_theme.h \
-       win32/win32_window.cpp \
-       win32/win32_window.h \
-       \
-       x11/x11_api.cpp \
-       x11/x11_bitmap.cpp \
-       x11/x11_bitmap.h \
-       x11/x11_dragdrop.cpp \
-       x11/x11_dragdrop.h \
-       x11/x11_event.cpp \
-       x11/x11_event.h \
-       x11/x11_font.cpp \
-       x11/x11_font.h \
-       x11/x11_graphics.cpp \
-       x11/x11_graphics.h \
-       x11/x11_run.cpp \
-       x11/x11_theme.cpp \
-       x11/x11_theme.h \
-       x11/x11_timer.cpp \
-       x11/x11_timer.h \
-       x11/x11_window.cpp \
-       x11/x11_window.h \
-       $(NULL)
-
-EXTRA_DIST += \
-       parser/skin.dtd \
-       parser/skin.act
-
diff --git a/modules/gui/skins/controls/button.cpp b/modules/gui/skins/controls/button.cpp
deleted file mode 100644 (file)
index 6aced6a..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/*****************************************************************************
- * button.cpp: Button control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: button.cpp,v 1.15 2003/06/09 12:33:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/bitmap.h"
-#include "../src/banks.h"
-#include "generic.h"
-#include "button.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../src/skin_common.h"
-
-//---------------------------------------------------------------------------
-// Control Button
-//---------------------------------------------------------------------------
-ControlButton::ControlButton(
-    string id,
-    bool visible,
-    int x, int y,
-    string Up, string Down, string Disabled,
-    string onclick, string onmouseover, string onmouseout,
-    string tooltiptext, string help,
-    SkinWindow *Parent ) : GenericControl( id, visible, help, Parent )
-{
-    // General
-    Left            = x;
-    Top             = y;
-    State           = 1;                   // 1=up, 0=down
-    Selected        = false;
-    Enabled         = true;
-    CursorIn        = false;
-    this->Up        = Up;
-    this->Down      = Down;
-    this->Disabled  = Disabled;
-
-    // Actions
-    ClickActionName     = onclick;
-    MouseOverActionName = onmouseover;
-    MouseOutActionName  = onmouseout;
-
-    // Texts
-    ToolTipText = tooltiptext;
-}
-//---------------------------------------------------------------------------
-ControlButton::~ControlButton()
-{
-    if( ClickAction )
-    {
-        delete ClickAction;
-    }
-    if( MouseOverAction )
-    {
-        delete MouseOverAction;
-    }
-    if( MouseOutAction )
-    {
-        delete MouseOutAction;
-    }
-}
-//---------------------------------------------------------------------------
-void ControlButton::Init()
-{
-    // Init bitmaps
-    Img = new (Bitmap *[3]);
-    Img[0] = p_intf->p_sys->p_theme->BmpBank->Get( Up );
-    Img[1] = p_intf->p_sys->p_theme->BmpBank->Get( Down );
-    if( Disabled == "none" )
-        Img[2] = p_intf->p_sys->p_theme->BmpBank->Get( Up );
-    else
-        Img[2] = p_intf->p_sys->p_theme->BmpBank->Get( Disabled );
-
-    // Get size of control
-    Img[0]->GetSize( Width, Height );
-
-    // Create script
-    ClickAction     = new Action( p_intf, ClickActionName );
-    MouseOverAction = new Action( p_intf, MouseOverActionName );
-    MouseOutAction  = new Action( p_intf, MouseOutActionName );
-}
-//---------------------------------------------------------------------------
-bool ControlButton::ProcessEvent( Event *evt )
-{
-    switch( evt->GetMessage() )
-    {
-        case CTRL_ENABLED:
-            Enable( (Event*)evt->GetParam1(), (bool)evt->GetParam2() );
-            break;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlButton::MoveRelative( int xOff, int yOff )
-{
-    Left += xOff;
-    Top  += yOff;
-}
-//---------------------------------------------------------------------------
-void ControlButton::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    int xI, yI, wI, hI;
-    if( GetIntersectRgn( x,y,w,h,Left,Top,Width,Height, xI, yI, wI, hI ) )
-    {
-        // Button is in down state
-        if( State == 0 && Enabled )
-            Img[1]->DrawBitmap( xI-Left, yI-Top, wI, hI, xI-x, yI-y, dest );
-
-        // Button is in up state
-        if( State == 1 && Enabled )
-            Img[0]->DrawBitmap( xI-Left, yI-Top, wI, hI, xI-x, yI-y, dest );
-
-        // Button is disabled
-        if( !Enabled )
-            Img[2]->DrawBitmap( xI-Left, yI-Top, wI, hI, xI-x, yI-y, dest );
-    }
-}
-//---------------------------------------------------------------------------
-bool ControlButton::MouseUp( int x, int y, int button )
-{
-    // If hit in the button
-    // XXX: we suppose here that the expected behaviour is to have the MouseUp
-    // event above the "up" image, and not above the "down" one. This can give
-    // strange results when the "up" and "down" images have different sizes...
-    if( Img[1]->Hit( x - Left, y - Top ) )
-    {
-        if( !Enabled )
-            return true;
-
-        if( button == 1 && Selected )
-        {
-            State = 1;
-            Selected = false;
-            ClickAction->SendEvent();
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-        return true;
-    }
-
-    if( button == 1 )
-        Selected = false;
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlButton::MouseDown( int x, int y, int button )
-{
-    if( Img[0]->Hit( x - Left, y - Top ) )
-    {
-        if( !Enabled )
-            return true;
-
-        if( button == 1 )
-        {
-            State = 0;
-            Selected = true;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-        return true;
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlButton::MouseMove( int x, int y, int button )
-{
-    if( !Enabled )
-        return false;
-
-    if( MouseOver( x, y ) && !CursorIn )
-    {
-        if( button == 1 && Selected )
-        {
-            State = 0;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-
-        if( MouseOverActionName != "none" )
-        {
-            MouseOverAction->SendEvent();
-        }
-
-        CursorIn = true;
-        return true;
-    }
-    else if( !MouseOver( x, y ) && CursorIn )
-    {
-        if( button == 1 && Selected )
-        {
-            State = 1;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-
-        if( MouseOutActionName != "none" )
-        {
-            MouseOutAction->SendEvent();
-        }
-
-        CursorIn = false;
-        return true;
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlButton::MouseOver( int x, int y )
-{
-    if( Img[1 - State]->Hit( x - Left, y - Top ) )
-    {
-        return true;
-    }
-    else
-    {
-        return false;
-    }
-}
-//---------------------------------------------------------------------------
-bool ControlButton::ToolTipTest( int x, int y )
-{
-    if( MouseOver( x, y ) && Enabled )
-    {
-        ParentWindow->ChangeToolTipText( ToolTipText );
-        return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlButton::Enable( Event *event, bool enabled )
-{
-    if( !ClickAction->MatchEvent( event, ACTION_MATCH_ONE ) )
-        return;
-
-    if( enabled != Enabled )
-    {
-        Enabled = enabled;
-
-        // If cursor is in, send mouse out event
-        if( !Enabled && CursorIn )
-        {
-            if( MouseOutActionName != "none" )
-                MouseOutAction->SendEvent();
-            CursorIn = false;
-        }
-
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/controls/button.h b/modules/gui/skins/controls/button.h
deleted file mode 100644 (file)
index 52069c8..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*****************************************************************************
- * button.h: Button control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: button.h,v 1.3 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_BUTTON
-#define VLC_SKIN_CONTROL_BUTTON
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Action;
-class Graphics;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class ControlButton : public GenericControl
-{
-    private:
-        // Image IDs
-        string      Up;
-        string      Down;
-        string      Disabled;
-
-        // Control behaviour
-        bool        Selected;
-        bool        Enabled;
-        bool        CursorIn;
-
-        // List of actions to execute
-        Action     *ClickAction;
-        string      ClickActionName;
-        Action     *MouseOverAction;
-        string      MouseOverActionName;
-        Action     *MouseOutAction;
-        string      MouseOutActionName;
-
-        // ToolTip text
-        string      ToolTipText;
-
-    public:
-        // Constructor
-        ControlButton( string id,
-                       bool visible,
-                       int x, int y,
-                       string Up, string Down, string Disabled,
-                       string onclick, string onmousevoer, string onmouseout,
-                       string tooltiptext, string help,
-                       SkinWindow *Parent );
-
-        // Destructor
-        virtual ~ControlButton();
-
-        // Initializations
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-
-        // Draw button
-        virtual void Draw( int x1, int y1, int x2, int y2, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseUp( int x, int y, int button );
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseMove( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-        virtual bool ToolTipTest( int x, int y );
-
-        // Translate control
-        virtual void MoveRelative( int xOff, int yOff );
-
-        // Enabling control
-        virtual void Enable( Event *event, bool enabled );
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/controls/checkbox.cpp b/modules/gui/skins/controls/checkbox.cpp
deleted file mode 100644 (file)
index 1813b73..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/*****************************************************************************
- * checkbox.cpp: Checkbox control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: checkbox.cpp,v 1.9 2003/07/26 15:36:46 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/bitmap.h"
-#include "../src/banks.h"
-#include "generic.h"
-#include "checkbox.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../src/skin_common.h"
-
-
-#include "../os_event.h"
-#include "../os_window.h"
-
-//---------------------------------------------------------------------------
-// Checkbox Button
-//---------------------------------------------------------------------------
-ControlCheckBox::ControlCheckBox(
-    string id,
-    bool visible,
-    int x, int y,
-    string img1, string img2, string clickimg1, string clickimg2,
-    string disabled1, string disabled2,
-    string onclick1, string onclick2, string onmouseover1,
-    string onmouseout1, string onmouseover2, string onmouseout2,
-    string tooltiptext1, string tooltiptext2, string help,
-    SkinWindow *Parent ) : GenericControl( id, visible, help, Parent )
-{
-    Left             = x;
-    Top              = y;
-    State            = 1;                   // 1 = up - 0 = down
-    Selected         = false;
-    CursorIn         = false;
-    Act              = 1;
-    Enabled1         = true;
-    Enabled2         = true;
-    Img1             = img1;
-    Img2             = img2;
-    Click1           = clickimg1;
-    Click2           = clickimg2;
-    Disabled1        = disabled1;
-    Disabled2        = disabled2;
-
-    // Actions
-    ClickActionName1     = onclick1;
-    ClickActionName2     = onclick2;
-
-    MouseOverActionName1 = onmouseover1;
-    MouseOutActionName1  = onmouseout1;
-
-    if( onmouseover2 == "none" )
-        MouseOverActionName2 = MouseOverActionName1;
-    else
-        MouseOverActionName2 = onmouseover2;
-
-    if( onmouseout2 == "none" )
-        MouseOutActionName2 = MouseOutActionName1;
-    else
-        MouseOutActionName2  = onmouseout2;
-
-    // Tooltips
-    ToolTipText1     = tooltiptext1;
-    ToolTipText2     = tooltiptext2;
-}
-//---------------------------------------------------------------------------
-ControlCheckBox::~ControlCheckBox()
-{
-    if( ClickAction1 )
-    {
-        delete ClickAction1;
-    }
-    if( ClickAction2 )
-    {
-        delete ClickAction2;
-    }
-    if( MouseOverAction1 )
-    {
-        delete MouseOverAction1;
-    }
-    if( MouseOverAction2 )
-    {
-        delete MouseOverAction2;
-    }
-    if( MouseOutAction1 )
-    {
-        delete MouseOutAction1;
-    }
-    if( MouseOutAction2 )
-    {
-        delete MouseOutAction2;
-    }
-}
-//---------------------------------------------------------------------------
-void ControlCheckBox::Init()
-{
-    Img = new (Bitmap *[6]);
-
-    // Images for position 1
-    Img[0] = p_intf->p_sys->p_theme->BmpBank->Get( Img1 );
-    if( Click1 == "none" )
-        Img[1] = p_intf->p_sys->p_theme->BmpBank->Get( Img2 );
-    else
-        Img[1] = p_intf->p_sys->p_theme->BmpBank->Get( Click1 );
-
-    // Images for position 2
-    Img[2] = p_intf->p_sys->p_theme->BmpBank->Get( Img2 );
-    if( Click2 == "none" )
-        Img[3] = p_intf->p_sys->p_theme->BmpBank->Get( Img1 );
-    else
-        Img[3] = p_intf->p_sys->p_theme->BmpBank->Get( Click2 );
-
-    // Disabled images
-    if( Disabled1 == "none" )
-        Img[4] = p_intf->p_sys->p_theme->BmpBank->Get( Img1 );
-    else
-        Img[4] = p_intf->p_sys->p_theme->BmpBank->Get( Disabled1 );
-    if( Disabled2 == "none" )
-        Img[5] = p_intf->p_sys->p_theme->BmpBank->Get( Img2 );
-    else
-        Img[5] = p_intf->p_sys->p_theme->BmpBank->Get( Disabled2 );
-
-    // Get Size of control
-    Img[0]->GetSize( Width, Height );
-
-    // Create script
-    ClickAction1 = new Action( p_intf, ClickActionName1 );
-    ClickAction2 = new Action( p_intf, ClickActionName2 );
-    MouseOverAction1 = new Action( p_intf, MouseOverActionName1 );
-    MouseOutAction1  = new Action( p_intf, MouseOutActionName1 );
-    MouseOverAction2 = new Action( p_intf, MouseOverActionName2 );
-    MouseOutAction2  = new Action( p_intf, MouseOutActionName2 );
-}
-//---------------------------------------------------------------------------
-bool ControlCheckBox::ProcessEvent( Event *evt  )
-{
-    switch( evt->GetMessage() )
-    {
-        case CTRL_ENABLED:
-            Enable( (Event*)evt->GetParam1(), (bool)evt->GetParam2() );
-            break;
-        case CTRL_SYNCHRO:
-            if( ClickAction1->MatchEvent( (Event*)evt->GetParam1(),
-                ACTION_MATCH_ONE ) )
-            {
-                Act = 2;
-                ParentWindow->Refresh( Left, Top, Width, Height );
-            }
-            else if( ClickAction2->MatchEvent( (Event*)evt->GetParam1(),
-                ACTION_MATCH_ONE ) )
-            {
-                Act = 1;
-                ParentWindow->Refresh( Left, Top, Width, Height );
-            }
-            break;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlCheckBox::MoveRelative( int xOff, int yOff )
-{
-    Left += xOff;
-    Top  += yOff;
-}
-//---------------------------------------------------------------------------
-void ControlCheckBox::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    int xI, yI, wI, hI;
-    if( GetIntersectRgn( x,y,w,h,Left,Top,Width,Height, xI, yI, wI, hI ) )
-    {
-        if( Act == 1 )
-        {
-            if( State == 1 && Enabled1 )
-                Img[0]->DrawBitmap( xI-Left,yI-Top,wI,hI,xI-x,yI-y,dest );
-            else if( State == 0 && Enabled1 )
-                Img[1]->DrawBitmap( xI-Left,yI-Top,wI,hI,xI-x,yI-y,dest );
-            else
-                Img[4]->DrawBitmap( xI-Left,yI-Top,wI,hI,xI-x,yI-y,dest );
-        }
-        else if( Act == 2 )
-        {
-            if( State == 1 && Enabled2 )
-                Img[2]->DrawBitmap( xI-Left,yI-Top,wI,hI,xI-x,yI-y,dest );
-            else if( State == 0 && Enabled2 )
-                Img[3]->DrawBitmap( xI-Left,yI-Top,wI,hI,xI-x,yI-y,dest );
-            else
-                Img[5]->DrawBitmap( xI-Left,yI-Top,wI,hI,xI-x,yI-y,dest );
-        }
-    }
-}
-//---------------------------------------------------------------------------
-bool ControlCheckBox::MouseUp( int x, int y, int button )
-{
-    // Test enabled
-    if( ( !Enabled1 && Act == 1 && Img[1]->Hit( x - Left, y - Top ) ) ||
-        ( !Enabled2 && Act == 2 && Img[3]->Hit( x - Left, y - Top ) ) )
-            return true;
-
-    if( button == 1 && Selected )
-    {
-        if( Act == 1 && Img[1]->Hit( x - Left, y - Top ) )
-        {
-            State    = 1;
-            Selected = false;
-            Act      = 2;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-            ClickAction1->SendEvent();
-            return true;
-        }
-        else if( Act == 2 && Img[3]->Hit( x - Left, y - Top ) )
-        {
-            State    = 1;
-            Selected = false;
-            Act      = 1;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-            ClickAction2->SendEvent();
-            return true;
-        }
-    }
-    Selected = false;
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlCheckBox::MouseDown( int x, int y, int button )
-{
-
-    // Test enabled
-    if( ( !Enabled1 && Act == 1 && Img[1]->Hit( x - Left, y - Top ) ) ||
-        ( !Enabled2 && Act == 2 && Img[3]->Hit( x - Left, y - Top ) ) )
-            return true;
-    if( button == 1 )
-    {
-        if( Act == 1 && Img[0]->Hit( x - Left, y - Top ) )
-        {
-            State    = 0;
-            Selected = true;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-            return true;
-        }
-        else if( Act == 2 && Img[2]->Hit( x - Left, y - Top ) )
-        {
-            State    = 0;
-            Selected = true;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-            return true;
-        }
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlCheckBox::MouseMove( int x, int y, int button )
-{
-    // Test enabled
-    if( ( !Enabled1 && Act == 1 ) || ( !Enabled2 && Act == 2 ) )
-        return false;
-
-    // If mouse is entering control
-    if( MouseOver( x, y ) && !CursorIn )
-    {
-        // If control is already selected
-        if( button == 1 && Selected )
-        {
-            State = 0;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-
-        // Check events
-        if( Act == 1 && MouseOverActionName1 != "none" )
-            MouseOverAction1->SendEvent();
-        else if( Act == 2 && MouseOverActionName2 != "none" )
-            MouseOverAction2->SendEvent();
-
-        CursorIn = true;
-        return true;
-    }
-    // If mouse if leaving control
-    else if( !MouseOver( x, y ) && CursorIn )
-    {
-        // If control is already selected
-        if( button == 1 && Selected )
-        {
-            State = 1;
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-
-        // Check events
-        if( Act == 1 && MouseOutActionName1 != "none" )
-            MouseOutAction1->SendEvent();
-        else if( Act == 2 && MouseOutActionName2 != "none" )
-            MouseOutAction2->SendEvent();
-
-        CursorIn = false;
-        return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlCheckBox::MouseOver( int x, int y )
-{
-    if( Act == 1 )
-    {
-        if( Img[1 - State]->Hit( x - Left, y - Top ) )
-            return true;
-    }
-    else if( Act == 2 )
-    {
-        if( Img[3 - State]->Hit( x - Left, y - Top ) )
-            return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlCheckBox::ToolTipTest( int x, int y )
-{
-    if( Act == 1 && MouseOver( x, y ) && Enabled1 )
-    {
-        ParentWindow->ChangeToolTipText( ToolTipText1 );
-        return true;
-    }
-    else if( Act == 2 && MouseOver( x, y ) && Enabled2 )
-    {
-        ParentWindow->ChangeToolTipText( ToolTipText2 );
-        return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlCheckBox::Enable( Event *event, bool enabled )
-{
-    if( enabled != !Enabled1 &&
-        ClickAction1->MatchEvent( event, ACTION_MATCH_ONE ) )
-    {
-        Enabled1 = enabled;
-        if( Act == 1 )
-        {
-            // If cursor is in, send mouse out event
-            if( !Enabled1 && CursorIn )
-            {
-                if( MouseOutActionName2 != "none" )
-                    MouseOutAction2->SendEvent();
-                CursorIn = false;
-            }
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-    }
-
-
-
-    else if( enabled != !Enabled2 &&
-        ClickAction2->MatchEvent( event, ACTION_MATCH_ONE ) )
-    {
-        Enabled2 = enabled;
-        if( Act == 2 )
-        {
-            // If cursor is in, send mouse out event
-            if( !Enabled2 && CursorIn )
-            {
-                if( MouseOutActionName2 != "none" )
-                    MouseOutAction2->SendEvent();
-                CursorIn = false;
-            }
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-    }
-
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/controls/checkbox.h b/modules/gui/skins/controls/checkbox.h
deleted file mode 100644 (file)
index bb66c58..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*****************************************************************************
- * checkbox.h: Checkbox control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: checkbox.h,v 1.3 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_CHECKBOX
-#define VLC_SKIN_CONTROL_CHECKBOX
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Action;
-class Graphics;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class ControlCheckBox : public GenericControl
-{
-    private:
-        // Image IDs
-        string Img1;
-        string Img2;
-        string Click1;
-        string Click2;
-        string Disabled1;
-        string Disabled2;
-
-        // Behaviour
-        bool Enabled1;
-        bool Enabled2;
-        bool Selected;
-        bool CursorIn;
-
-        // List of actions to execute when clicking
-        int      Act;
-        Action  *ClickAction1;
-        string   ClickActionName1;
-        Action  *ClickAction2;
-        string   ClickActionName2;
-
-        Action     *MouseOverAction1;
-        string      MouseOverActionName1;
-        Action     *MouseOutAction1;
-        string      MouseOutActionName1;
-        Action     *MouseOverAction2;
-        string      MouseOverActionName2;
-        Action     *MouseOutAction2;
-        string      MouseOutActionName2;
-
-        // ToolTip text
-        string      ToolTipText1;
-        string      ToolTipText2;
-
-    public:
-        // Constructor
-        ControlCheckBox(
-            string id,
-            bool visible,
-            int x, int y,
-            string img1, string img2,  string clickimg1, string clickimg2,
-            string disabled1, string disabled2,
-            string onclick1, string onclick2, string onmouseover1,
-            string onmouseout1, string onmouseover2, string onmouseout2,
-            string tooltiptext1, string tooltiptext2, string help,
-            SkinWindow *Parent );
-
-        // Destructor
-        virtual ~ControlCheckBox();
-
-        // initialization
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-
-        // Draw button
-        virtual void Draw( int x1, int y1, int x2, int y2, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseUp( int x, int y, int button );
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseMove( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-        virtual bool ToolTipTest( int x, int y );
-
-        // Translate control
-        virtual void MoveRelative( int xOff, int yOff );
-
-        // Enabling control
-        virtual void Enable( Event *event, bool enabled );
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/controls/controls.h b/modules/gui/skins/controls/controls.h
deleted file mode 100644 (file)
index 334b0c9..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*****************************************************************************
- * controls.h:
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: controls.h,v 1.2 2003/03/18 04:08:45 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#include "generic.h"
-#include "button.h"
-#include "checkbox.h"
-#include "image.h"
-#include "slider.h"
-#include "playlist.h"
-#include "rectangle.h"
-#include "text.h"
diff --git a/modules/gui/skins/controls/generic.cpp b/modules/gui/skins/controls/generic.cpp
deleted file mode 100644 (file)
index e30ee2b..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/*****************************************************************************
- * generic.cpp: Generic control, parent of the others
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: generic.cpp,v 1.7 2003/05/31 23:23:59 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/bitmap.h"
-#include "../os_bitmap.h"
-#include "../src/banks.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "../src/event.h"
-#include "generic.h"
-#include "../src/window.h"
-#include "../src/theme.h"
-#include "../src/skin_common.h"
-
-
-//---------------------------------------------------------------------------
-// Generic Control
-//---------------------------------------------------------------------------
-GenericControl::GenericControl( string id, bool visible, string help,
-                                SkinWindow *Parent )
-{
-    ID      = id;
-    Visible = visible;
-    Help    = help;
-    ParentWindow = Parent;
-    Left    = 0;
-    Top     = 0;
-    Width   = 0;
-    Height  = 0;
-    State   = 0;
-    Img     = NULL;
-    p_intf  = Parent->GetIntf();
-}
-//---------------------------------------------------------------------------
-GenericControl::~GenericControl()
-{
-    if( Img != NULL )
-        delete[] Img;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::GenericProcessEvent( Event *evt )
-{
-    switch( evt->GetMessage() )
-    {
-        case CTRL_ID_VISIBLE:
-            if( (GenericControl *)evt->GetParam1() == this )
-            {
-                if( ( evt->GetParam2() == 0 && Visible ) ||
-                    ( evt->GetParam2() == 1 && !Visible ) ||
-                    ( evt->GetParam2() == 2 ) )
-                {
-                    Visible = !Visible;
-                    ParentWindow->Refresh( Left, Top, Width, Height );
-                }
-            }
-            return false;
-
-        case CTRL_ID_MOVE:
-            if( (GenericControl *)evt->GetParam1() == this )
-            {
-                int x = evt->GetParam2() & 0x7FFF;
-                int y = evt->GetParam2() >> 16 & 0x7FFF;
-                if( evt->GetParam2() & 0x8000 )
-                    x = -x;
-                if( evt->GetParam2() >> 16 & 0x8000 )
-                    y = -y;
-                MoveRelative( x, y );
-                ParentWindow->ReSize();
-                ParentWindow->RefreshAll();
-            }
-            return false;
-
-        default:
-            return ProcessEvent( evt );
-    }
-
-}
-//---------------------------------------------------------------------------
-void GenericControl::Init()
-{
-}
-//---------------------------------------------------------------------------
-bool GenericControl::ProcessEvent( Event *evt )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::MouseUp( int x, int y, int button )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::MouseDown( int x, int y, int button )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::MouseMove( int x, int y, int button )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::MouseOver( int x, int y )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::MouseDblClick( int x, int y, int button )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::MouseScroll( int x, int y, int direction )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::SendNewHelpText()
-{
-    if( Help != "" )
-    {
-        p_intf->p_sys->p_theme->EvtBank->Get( "help" )
-            ->PostTextMessage( Help );
-        return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool GenericControl::ToolTipTest( int x, int y )
-{
-    return false;
-}
-//---------------------------------------------------------------------------
-void GenericControl::Enable( Event *event, bool enabled )
-{
-}
-//---------------------------------------------------------------------------
-bool GenericControl::GetIntersectRgn( int x1, int y1, int w1, int h1, int x2,
-    int y2, int w2, int h2, int &x, int &y, int &w, int &h )
-{
-    if( x1 < x2 )       {x = x2;}      else {x = x1;}
-    if( y1 < y2 )       {y = y2;}      else {y = y1;}
-    if( x1+w1 < x2+w2 ) {w = x1+w1-x;} else {w = x2+w2-x;}
-    if( y1+h1 < y2+h2 ) {h = y1+h1-y;} else {h = y2+h2-y;}
-    return (w > 0 && h > 0);
-}
-//---------------------------------------------------------------------------
-void GenericControl::Move( int left, int top )
-{
-    MoveRelative( left - Left, top - Top );
-}
-//---------------------------------------------------------------------------
-void GenericControl::MoveRelative( int xOff, int yOff )
-{
-    Left += xOff;
-    Top  += yOff;
-}
-//---------------------------------------------------------------------------
-SkinRegion *GenericControl::CreateRegionFromBmp( Bitmap *bmp, int MoveX, int MoveY )
-{
-    // Initialization
-        SkinRegion *Buffer;
-        int w, h;
-        int x = 0, y = 0, x_first = 0;
-        bmp->GetSize( w, h );
-
-        Buffer = (SkinRegion *)new OSRegion;
-
-    // Parse bitmap
-        for( y = 0; y < h; y++ )
-        {
-            for( x = 0; x < w; x++ )
-            {
-
-                if( bmp->GetBmpPixel( x, y ) == bmp->GetAlphaColor() )
-                {
-                    if( x_first != x )
-                    {
-                        Buffer->AddRectangle( x_first + MoveX, y + MoveY,
-                                              x + MoveX, y + 1 + MoveY );
-                    }
-                    x_first = x + 1;
-                }
-            }
-            if( x_first != w )
-            {
-                Buffer->AddRectangle( x_first + MoveX, y + MoveY,
-                                        w + MoveX, y + 1 + MoveY );
-            }
-            x_first = 0;
-        }
-    // End of parsing
-    return Buffer;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/controls/generic.h b/modules/gui/skins/controls/generic.h
deleted file mode 100644 (file)
index 740e41e..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*****************************************************************************
- * generic.h: Generic control, parent of the others
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: generic.h,v 1.5 2003/05/31 23:23:59 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_GENERIC
-#define VLC_SKIN_CONTROL_GENERIC
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-class Bitmap;
-class Graphics;
-class SkinRegion;
-class Event;
-
-//---------------------------------------------------------------------------
-// Generic control class
-//---------------------------------------------------------------------------
-class GenericControl               // This is the generic control class
-{
-    protected:
-        SkinWindow * ParentWindow;
-        intf_thread_t *p_intf;
-        bool     Visible;
-        string   ID;
-        string   Help;
-        int Left;               // Left offset of the control
-        int Top;                // Top offset of the control
-        int Width;              // Width of the control
-        int Height;             // Height of the control
-        int State;              // Used to special state of the control
-                                // (for button, sets whether down or up)
-        Bitmap **Img;           // Array of bitmap used to draw control
-
-    private:
-    public:
-        // Constructor
-        GenericControl( string id, bool visible, string help,
-                        SkinWindow *Parent );
-
-        // Destructor
-        virtual ~GenericControl();
-
-        // initializations
-        virtual void Init();
-        bool GenericProcessEvent( Event *evt );
-        virtual bool ProcessEvent( Event *evt );
-
-        // Draw the control into the destination DC
-        virtual void Draw( int x, int y, int w, int h, Graphics *dest ) = 0;
-
-        // Simulate a mouse action on control at coordinates x/y
-        virtual bool MouseUp( int x, int y, int button );
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseMove( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-        virtual bool MouseDblClick( int x, int y, int button );
-        virtual bool MouseScroll( int x, int y, int direction );
-        virtual bool ToolTipTest( int x, int y );
-        virtual bool SendNewHelpText();
-
-        // Move control
-        void Move( int left, int top );
-        virtual void MoveRelative( int xOff, int yOff );
-
-        // Get two rectangle regions and return intersection
-        bool GetIntersectRgn( int x1, int y1, int w1, int h1, int x2,
-            int y2, int w2, int h2, int &x, int &y, int &w, int &h );
-
-        // Create a region from a bitmap with transcolor as empty region
-        SkinRegion *CreateRegionFromBmp( Bitmap *bmp, int MoveX, int MoveY );
-
-        // Enabling control
-        virtual void Enable( Event *event, bool enabled );
-
-        // Self explanatory
-        bool IsVisible()    { return Visible; }
-
-        // Getters
-        string GetId()      { return ID; }
-        int GetLeft()       { return Left; }
-        int GetTop()        { return Top; }
-        int GetWidth()      { return Width; }
-        int GetHeight()     { return Height; }
-};
-//---------------------------------------------------------------------------
-
-
-#endif
diff --git a/modules/gui/skins/controls/image.cpp b/modules/gui/skins/controls/image.cpp
deleted file mode 100644 (file)
index 78d2949..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*****************************************************************************
- * image.cpp: Image control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: image.cpp,v 1.8 2003/06/09 12:33:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/bitmap.h"
-#include "../src/banks.h"
-#include "generic.h"
-#include "image.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../src/skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-// Control Image
-//---------------------------------------------------------------------------
-ControlImage::ControlImage( string id, bool visible, int x, int y, string img,
-    string event, string help, SkinWindow *Parent )
-    : GenericControl( id, visible, help, Parent )
-{
-    Left                = x;
-    Top                 = y;
-    MouseDownActionName = event;
-    Enabled             = true;
-    Bg                  = img;
-}
-//---------------------------------------------------------------------------
-ControlImage::~ControlImage()
-{
-    if( MouseDownAction )
-    {
-        delete MouseDownAction;
-    }
-}
-//---------------------------------------------------------------------------
-void ControlImage::Init()
-{
-    Img    = new (Bitmap *[1]);
-    Img[0] = p_intf->p_sys->p_theme->BmpBank->Get( Bg );
-    Img[0]->GetSize( Width, Height );
-
-    // Create script
-    MouseDownAction = new Action( p_intf, MouseDownActionName );
-
-}
-//---------------------------------------------------------------------------
-bool ControlImage::ProcessEvent( Event *evt  )
-{
-
-    switch( evt->GetMessage() )
-    {
-        case CTRL_ENABLED:
-            Enable( (Event*)evt->GetParam1(), (bool)evt->GetParam2() );
-            break;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlImage::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    int xI, yI, wI, hI;
-    if( GetIntersectRgn(x, y, w, h, Left, Top, Width, Height, xI, yI, wI, hI ) )
-        Img[0]->DrawBitmap( xI-Left, yI-Top, wI, hI, xI-x, yI-y, dest );
-
-}
-//---------------------------------------------------------------------------
-bool ControlImage::MouseDown( int x, int y, int button )
-{
-    if( !Enabled || !Img[0]->Hit( x - Left, y - Top ) || button != 1 ||
-        !MouseDownAction->SendEvent() )
-            return false;
-
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ControlImage::MouseOver( int x, int y )
-{
-    if( Img[0]->Hit( x - Left, y - Top ) )
-        return true;
-    else
-        return false;
-}
-//---------------------------------------------------------------------------
-void ControlImage::Enable( Event *event, bool enabled )
-{
-    if( !MouseDownAction->MatchEvent( event, ACTION_MATCH_ONE ) )
-        return;
-
-    if( enabled != !Enabled )
-    {
-        Enabled = enabled;
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-
-}
-//---------------------------------------------------------------------------
-
-
diff --git a/modules/gui/skins/controls/image.h b/modules/gui/skins/controls/image.h
deleted file mode 100644 (file)
index 2362d6e..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*****************************************************************************
- * image.h: Image control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: image.h,v 1.2 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_IMAGE
-#define VLC_SKIN_CONTROL_IMAGE
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Action;
-class Graphics;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class ControlImage : public GenericControl
-{
-    private:
-        // Image ID
-        string Bg;
-
-        // Behaviour
-        bool Enabled;
-
-        // List of actions to execute when clicking
-        Action  *MouseDownAction;
-        string   MouseDownActionName;
-
-    public:
-        // Constructor
-        ControlImage( string id, bool visible, int x, int y, string img,
-            string event, string help, SkinWindow *Parent);
-
-        // Destructor
-        virtual ~ControlImage();
-
-        // initialization
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-
-        //Draw image
-        virtual void Draw( int x, int y, int w, int h, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-
-        // Enabling control
-        virtual void Enable( Event *event, bool enabled );
-
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/controls/playlist.cpp b/modules/gui/skins/controls/playlist.cpp
deleted file mode 100644 (file)
index 4a88543..0000000
+++ /dev/null
@@ -1,577 +0,0 @@
-/*****************************************************************************
- * playlist.cpp: Playlist control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id$
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- GENERAL ---------------------------------------------------------------
-#include <math.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/bitmap.h"
-#include "../src/banks.h"
-#include "../src/bezier.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "../src/font.h"
-#include "../os_font.h"
-#include "generic.h"
-#include "slider.h"
-#include "playlist.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../src/skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-// Control Playlist
-//---------------------------------------------------------------------------
-ControlPlayList::ControlPlayList( string id, bool visible, int width,
-    int infowidth, string font, string playfont, int selcolor, double *ptx,
-    double *pty, int nb, bool longfilename, string help, SkinWindow *Parent )
-    : GenericControl( id, visible, help, Parent )
-{
-    Left          = 0;
-    Top           = 0;
-    Column        = 1;
-    Line          = 1;
-    Margin        = 1;
-    Enabled       = true;
-    FontName      = font;
-    PlayFontName  = playfont;
-
-    // Text zone
-    CaseWidth    = width;
-    InfoWidth    = infowidth;
-    NumWidth     = 0;
-    FileWidth    = 0;
-    CaseHeight   = 1;
-    NumOfItems   = 0;
-    SelectColor  = selcolor;
-    TextCurve    = new Bezier( ptx, pty, nb, BEZIER_PTS_Y );
-    LongFileName = longfilename;
-
-    // Scroll
-    StartIndex  = 0;
-
-}
-//---------------------------------------------------------------------------
-ControlPlayList::~ControlPlayList()
-{
-    if( CaseLeft )
-    {
-        delete[] CaseLeft;
-    }
-    if( CaseRight )
-    {
-        delete[] CaseRight;
-    }
-    if( CaseTextLeft )
-    {
-        delete[] CaseTextLeft;
-    }
-    if( Slider )
-    {
-        delete Slider;
-    }
-    if( TextClipRgn )
-    {
-        delete TextClipRgn;
-    }
-    if( PlayList != NULL )
-    {
-        vlc_object_release( PlayList );
-    }
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::Init()
-{
-    int i, j, h;
-    int *x, *y;
-
-    // Font & events
-    UpdateEvent = p_intf->p_sys->p_theme->EvtBank->Get( "playlist_refresh" );
-    TextFont    = p_intf->p_sys->p_theme->FntBank->Get( FontName );
-    if( PlayFontName == "none" )
-        PlayFont = p_intf->p_sys->p_theme->FntBank->Get( FontName );
-    else
-        PlayFont = p_intf->p_sys->p_theme->FntBank->Get( PlayFontName );
-
-    TextFont->GetSize( "lp", h, CaseHeight );
-
-    // Get bitmap from list
-    Img = NULL;
-
-    // Get points for Text curve
-    h  = TextCurve->GetNumOfDifferentPoints();
-    x  = new int[h + 1];
-    y  = new int[h + 1];
-    TextCurve->GetDifferentPoints( x, y, 0, 0 );
-
-    // Get top of first point
-    TextCurve->GetPoint( 0, i, TextTop );
-
-    // Set number of lines
-    Line = 0;
-    for( i = 0; i < h; i++ )
-    {
-        if( ( Line + 1 ) * CaseHeight < y[i] - TextTop )
-            Line++;
-    }
-    CaseLeft     = new int[Line];
-    CaseRight    = new int[Line];
-    CaseTextLeft = new int[Line];
-    for( i = 0; i < Line; i++ )
-    {
-        CaseLeft[i]     = x[i * CaseHeight];
-        CaseTextLeft[i] = x[i * CaseHeight];
-        for( j = 1; j < CaseHeight; j++ )
-        {
-            if( x[i * CaseHeight + j] < CaseLeft[i] )
-                CaseLeft[i] = x[i * CaseHeight + j];
-            if( x[i * CaseHeight + j] > CaseTextLeft[i] )
-                CaseTextLeft[i] = x[i * CaseHeight + j];
-        }
-        CaseRight[i] = CaseTextLeft[i] + CaseWidth;
-    }
-
-    // Get size of text zone
-    TextHeight = Line * CaseHeight;
-    TextLeft   = CaseLeft[0];
-    TextWidth  = CaseRight[0];
-    for( i = 1; i < Line; i++ )
-    {
-        if( CaseLeft[i] < TextLeft )
-            TextLeft = CaseLeft[i];
-        if( CaseRight[i] > TextWidth )
-            TextWidth = CaseRight[i];
-    }
-    TextWidth -= TextLeft;
-
-    // Set Text Clipping Region
-    TextClipRgn = (SkinRegion *)new OSRegion;
-    for( i = 0; i < Line; i++ )
-    {
-        for( j = 0; j < CaseHeight; j++ )
-        {
-            h = i * CaseHeight + j;
-            TextClipRgn->AddRectangle( x[h] - TextLeft, h, CaseWidth, 1 );
-        }
-    }
-
-    // Curve is no more needed so delete it
-    delete TextCurve;
-    delete[] x;
-    delete[] y;
-
-    // Get size of control
-    Left   = Slider->GetLeft();
-    Top    = Slider->GetTop();
-    Width  = Slider->GetLeft() + Slider->GetWidth();
-    Height = Slider->GetTop()  + Slider->GetHeight();
-    if( TextLeft < Left )
-        Left = TextLeft;
-    if( TextTop  < Top  )
-        Top  = TextTop;
-    if( TextLeft + TextWidth  > Width )
-        Width  = TextLeft + TextWidth;
-    if( TextTop + TextHeight > Height )
-        Height  = TextTop  + TextHeight;
-    Width  -= Left;
-    Height -= Top;
-
-    // Getting playlist
-    PlayList = (playlist_t *)
-        vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-    if( PlayList == NULL )
-        msg_Err( p_intf, "cannot find a playlist object" );
-
-    Slider->Init();
-    Slider->Enable( p_intf->p_sys->p_theme->EvtBank->Get( "none" ), true );
-    RefreshList();
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::ProcessEvent( Event *evt )
-{
-    switch( evt->GetMessage() )
-    {
-        case CTRL_ENABLED:
-            Enable( (Event*)evt->GetParam1(), (bool)evt->GetParam2() );
-            break;
-
-        case CTRL_SYNCHRO:
-            if( UpdateEvent->IsEqual( (Event*)evt->GetParam1() ) )
-            {
-                RefreshList();
-                RefreshAll();
-            }
-            break;
-
-        case PLAYLIST_ID_DEL:
-            if( (GenericControl *)evt->GetParam1() == this )
-            {
-                for( int i = PlayList->i_size - 1; i >= 0; i-- )
-                {
-                    if( Select[i] && i != PlayList->i_index )
-                        playlist_Delete( PlayList, i );
-                }
-                RefreshList();
-                RefreshAll();
-            }
-            break;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::RefreshList()
-{
-    vlc_mutex_lock( &PlayList->object_lock );
-    
-    if( NumOfItems != PlayList->i_size )
-    {
-        if( NumOfItems > 0 )
-            delete[] Select;
-        NumOfItems = PlayList->i_size;
-        if( PlayList->i_size > 0 )
-        {
-            Select = new bool[NumOfItems];
-            for( int i = 0; i < NumOfItems; i++ )
-                Select[i] = false;
-            int h;
-            sprintf( Num, " %i", NumOfItems + 1 );
-            TextFont->GetSize( Num, NumWidth, h);
-            FileWidth = CaseWidth - NumWidth - InfoWidth;
-        }
-
-        int Range = PlayList->i_size - Line * Column;
-        if( Range < 0 )
-            Range = 0;
-
-        Slider->ChangeSliderRange( Range );
-        StartIndex = Slider->GetCursorPosition();
-    }
-
-    vlc_mutex_unlock( &PlayList->object_lock );
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::RefreshAll()
-{
-    ParentWindow->Refresh( TextLeft, TextTop, TextWidth, TextHeight );
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    int xI, yI, wI, hI;
-    // Slider Image
-    Slider->Draw( x, y, w, h, dest );
-
-    // TextZone
-    if( GetIntersectRgn( x, y, w, h, TextLeft, TextTop, TextWidth, TextHeight,
-                         xI, yI, wI, hI) )
-    {
-        // Change clipping region
-        SkinRegion *destClipRgn = (SkinRegion *)new OSRegion( 0, 0, w, h );
-        TextClipRgn->Move( TextLeft - x, TextTop - y );
-        dest->SetClipRegion( TextClipRgn );
-
-        // Draw each line
-        DrawAllCase( dest, x, y, wI, hI );
-
-        // Reset clipping region to old region
-        dest->SetClipRegion( destClipRgn );
-        delete destClipRgn;
-        TextClipRgn->Move( x - TextLeft, y - TextTop );
-    }
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::DrawAllCase( Graphics *dest, int x, int y, int w, int h )
-{
-    int i;
-    for( i = 0; i < NumOfItems - StartIndex && i < Line * Column; i++ )
-    {
-        DrawCase( dest, i + StartIndex, x, y, w, h );
-    }
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::DrawCase( Graphics *dest, int i, int x, int y, int w,
-                                int h )
-{
-    // Test if case is in range
-    int j = i - StartIndex;
-    if( j < 0 || j >= Line * Column )
-        return;
-
-    // Draw background if selected
-    if( Select[i] )
-    {
-        dest->DrawRect(
-            CaseLeft[j] - x,
-            TextTop + j * CaseHeight - y,
-            CaseRight[j] - CaseLeft[j],
-            CaseHeight,
-            SelectColor
-        );
-    }
-
-    // Choose font
-    SkinFont *F;
-    if( PlayList->i_index == i )
-        F = PlayFont;
-    else
-        F = TextFont;
-
-    // Print number
-    sprintf( Num, "%i", i + 1 );
-    F->Print( dest,
-        Num,
-        CaseTextLeft[j] - x, TextTop + j * CaseHeight - y,
-        NumWidth - Margin, CaseHeight, VLC_FONT_ALIGN_RIGHT );
-
-    // Print name
-    F->Print( dest,
-        GetFileName( i ),
-        NumWidth + Margin + CaseTextLeft[j] - x,
-        TextTop + j * CaseHeight - y,
-        FileWidth - 2 * Margin, CaseHeight, VLC_FONT_ALIGN_LEFT );
-
-    // Print info
-    F->Print( dest,
-        "no info",
-        NumWidth + FileWidth + Margin + CaseTextLeft[j] - x,
-        TextTop + j * CaseHeight - y,
-        InfoWidth - Margin, CaseHeight, VLC_FONT_ALIGN_CENTER );
-}
-//---------------------------------------------------------------------------
-char * ControlPlayList::GetFileName( int i )
-{
-    if( LongFileName )
-    {
-        return PlayList->pp_items[i]->input.psz_name;
-    }
-    else
-    {
-        string f = PlayList->pp_items[i]->input.psz_name;
-        int pos  = f.rfind( DIRECTORY_SEPARATOR, f.size() );
-        return PlayList->pp_items[i]->input.psz_name + pos + 1;
-    }
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::MoveRelative( int xOff, int yOff )
-{
-    Slider->MoveRelative( xOff, yOff );
-    Left     += xOff;
-    Top      += yOff;
-    TextLeft += xOff;
-    TextTop  += yOff;
-    for( int i = 1; i < Line; i++ )
-    {
-        CaseLeft[i]     += xOff;
-        CaseTextLeft[i] += xOff;
-        CaseRight[i]    += xOff;
-    }
-}
-//---------------------------------------------------------------------------
-double ControlPlayList::Dist( int x1, int y1, int x2, int y2 )
-{
-    return sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::MouseDown( int x, int y, int button )
-{
-    if( !Enabled )
-        return false;
-
-    // If hit into slider
-    if( Slider->MouseDown( x, y, button ) )
-    {
-        int New = Slider->GetCursorPosition();
-        if( New != StartIndex )
-        {
-            StartIndex = New;
-            ParentWindow->Refresh( TextLeft,TextTop,TextWidth,TextHeight );
-        }
-        return true;
-    }
-
-    if( !TextClipRgn->Hit( x - TextLeft, y - TextTop ) )
-        return false;
-
-    // If hit in a case
-    int i, j;
-    for( i = 0; i < PlayList->i_size - StartIndex && i < Line * Column; i++)
-    {
-        if( x >= CaseLeft[i] && x <= CaseRight[i] && y >= TextTop +
-            i * CaseHeight  && y < TextTop + (i + 1) * CaseHeight )
-        {
-            for( j = 0; j < NumOfItems; j++ )
-            {
-                if( button & KEY_CTRL )
-                {
-                    // CTRL is pressed
-                    if( j == i + StartIndex )
-                    {
-                        Select[j] = !Select[j];
-                    }
-                }
-                else
-                { 
-                    // CTRL is not pressed
-                    Select[j] = ( j == i + StartIndex );
-                }
-            }
-            RefreshAll();
-            return true;
-        }
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::MouseUp( int x, int y, int button )
-{
-    if( !Enabled )
-        return false;
-
-    // If hit into slider
-    if( Slider->MouseUp( x, y, button ) )
-        return true;
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::MouseMove( int x, int y, int button )
-{
-    if( !Enabled || !button )
-        return false;
-
-    // If hit into slider
-    if( Slider->MouseMove( x, y, button ) )
-    {
-        int New = Slider->GetCursorPosition();
-        if( New != StartIndex )
-        {
-            StartIndex = New;
-            RefreshAll();
-        }
-        return true;
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::MouseScroll( int x, int y, int direction )
-{
-    if( !Enabled )
-        return false;
-
-    if( !TextClipRgn->Hit( x - Left, y - Top ) && !Slider->MouseOver( x, y ) )
-        return false;
-
-    long pos = StartIndex;
-    switch( direction )
-    {
-        case MOUSE_SCROLL_UP:
-            if( pos > 0 ) pos--;
-            break;
-        case MOUSE_SCROLL_DOWN:
-            if( pos + Line  < NumOfItems ) pos++;
-            break;
-    }
-    StartIndex = pos;
-    Slider->SetCursorPosition( pos );
-    RefreshAll();
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::MouseOver( int x, int y )
-{
-    if( TextClipRgn->Hit( x - Left, y - Top ) || Slider->MouseOver( x, y ) )
-        return true;
-    else
-        return false;
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::MouseDblClick( int x, int y, int button )
-{
-    if( !Enabled || button != 1 )
-        return false;
-
-    int i;
-
-    if( !TextClipRgn->Hit( x - TextLeft, y - TextTop ) )
-        return false;
-
-    for( i = 0; i < PlayList->i_size - StartIndex && i < Line * Column; i++ )
-    {
-        if( x >= CaseLeft[i] && x <= CaseRight[i] && y >=
-            TextTop + i * CaseHeight  && y < TextTop + (i + 1) * CaseHeight )
-        {
-            playlist_Goto( PlayList, i + StartIndex );
-            OSAPI_PostMessage( NULL, VLC_INTF_REFRESH, 0, (int)false );
-            return true;
-        }
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlPlayList::ToolTipTest( int x, int y )
-{
-    if( !Enabled )
-        return false;
-
-    int i, w, h;
-    for( i = 0; i < PlayList->i_size - StartIndex && i < Line * Column; i++ )
-    {
-        if( x >= CaseLeft[i] && x <= CaseRight[i] && y >=
-            TextTop + i * CaseHeight  && y < TextTop + (i + 1) * CaseHeight )
-        {
-            TextFont->GetSize( PlayList->pp_items[i + StartIndex]->input.psz_name, w,
-                               h );
-            if( w > FileWidth )
-            {
-                ParentWindow->ChangeToolTipText(
-                    (string)PlayList->pp_items[i + StartIndex]->input.psz_name );
-                return true;
-            }
-        }
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlPlayList::InitSliderCurve( double *ptx, double *pty, int nb,
-                                       string scroll_up, string scroll_down )
-{
-    Slider = new ControlSlider( "none", true, "none", scroll_up, scroll_down,
-        ptx, pty, nb, "none", "", ParentWindow );
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/controls/playlist.h b/modules/gui/skins/controls/playlist.h
deleted file mode 100644 (file)
index 62afc84..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*****************************************************************************
- * playlist.h: Playlist control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: playlist.h,v 1.6 2003/05/31 23:23:59 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_PLAYLIST
-#define VLC_SKIN_CONTROL_PLAYLIST
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Event;
-class Graphics;
-class SkinWindow;
-class SkinFont;
-class Bezier;
-class SkinRegion;
-
-//---------------------------------------------------------------------------
-#define MAX_PLAYLIST_SIZE 7
-
-//---------------------------------------------------------------------------
-class ControlPlayList : public GenericControl
-{
-    private:
-        Event      *UpdateEvent;
-        SkinFont   *TextFont;
-        SkinFont   *PlayFont;
-        string      FontName;
-        string      PlayFontName;
-        bool        Enabled;
-        playlist_t *PlayList;
-
-        // Scroll slider
-        ControlSlider *Slider;
-        int StartIndex;
-
-        // Playlist text zone
-        int Margin;
-        int Column;
-        int Line;
-        int CaseHeight;
-
-        int CaseWidth;
-        int NumWidth;
-        int FileWidth;
-        int InfoWidth;
-        char Num[MAX_PLAYLIST_SIZE];
-
-        int *CaseRight;
-        int *CaseLeft;
-        int *CaseTextLeft;
-        int TextLeft;
-        int TextTop;
-        int TextHeight;
-        int TextWidth;
-        Bezier *TextCurve;
-        SkinRegion *TextClipRgn;
-
-        int  NumOfItems;
-        int  SelectColor;
-        bool *Select;
-
-        bool LongFileName;
-        char * GetFileName( int i );
-
-        // Calculate distance between two points
-        double Dist( int x1, int y1, int x2, int y2 );
-
-        // Text functions
-        void DrawAllCase( Graphics *dest, int x, int y, int w, int h );
-        void DrawCase( Graphics *dest, int i, int x, int y, int w, int h );
-        void RefreshList();
-        void RefreshAll();
-
-    public:
-        // Constructor
-        ControlPlayList( string id, bool visible, int width, int infowidth,
-                         string font, string playfont, int selcolor,
-                         double *ptx, double *pty, int nb, bool longfilename,
-                         string help, SkinWindow *Parent );
-
-        // Destructor
-        virtual ~ControlPlayList();
-
-        // initialization
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-        void InitSliderCurve( double *ptx, double *pty, int nb,
-                              string scroll_up, string scroll_down );
-
-        // Draw control
-        virtual void Draw( int x, int y, int w, int h, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseUp( int x, int y, int button );
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseMove( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-        virtual bool MouseDblClick( int x, int y, int button );
-        virtual bool MouseScroll( int x, int y, int direction );
-        virtual bool ToolTipTest( int x, int y );
-
-        // Translate control
-        virtual void MoveRelative( int xOff, int yOff );
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/controls/rectangle.cpp b/modules/gui/skins/controls/rectangle.cpp
deleted file mode 100644 (file)
index 7aee2a8..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*****************************************************************************
- * rectangle.cpp: Rectanglee control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: rectangle.cpp,v 1.4 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/graphics.h"
-#include "../src/bitmap.h"
-#include "../src/banks.h"
-#include "generic.h"
-#include "rectangle.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../src/skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-// Control Rectangle
-//---------------------------------------------------------------------------
-ControlRectangle::ControlRectangle( string id, bool visible, int x, int y,
-    int w, int h, int color, string event, string help, SkinWindow *Parent )
-    : GenericControl( id, visible, help, Parent )
-{
-    Left                = x;
-    Top                 = y;
-    Width               = w;
-    Height              = h;
-    MouseDownActionName = event;
-    Enabled             = true;
-    Color               = OSAPI_GetNonTransparentColor( color );
-}
-//---------------------------------------------------------------------------
-ControlRectangle::~ControlRectangle()
-{
-}
-//---------------------------------------------------------------------------
-void ControlRectangle::Init()
-{
-    // Create script
-    MouseDownAction = new Action( p_intf, MouseDownActionName );
-}
-//---------------------------------------------------------------------------
-bool ControlRectangle::ProcessEvent( Event *evt  )
-{
-
-    switch( evt->GetMessage() )
-    {
-        case CTRL_ENABLED:
-            Enable( (Event*)evt->GetParam1(), (bool)evt->GetParam2() );
-            break;
-        default:
-            break;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlRectangle::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    int xI, yI, wI, hI;
-    if( GetIntersectRgn(x, y, w, h, Left, Top, Width, Height, xI, yI, wI, hI ) )
-    {
-        dest->DrawRect( xI - x,  yI - y, wI, hI, Color );
-    }
-}
-//---------------------------------------------------------------------------
-bool ControlRectangle::MouseDown( int x, int y, int button )
-{
-    if( !Enabled || !MouseOver( x, y ) || button != 1 ||
-        !MouseDownAction->SendEvent() )
-        return false;
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ControlRectangle::MouseOver( int x, int y )
-{
-    if( x >= Left && x <= Left + Width && y >= Top && y <= Top + Height )
-        return true;
-    else
-        return false;
-}
-//---------------------------------------------------------------------------
-void ControlRectangle::Enable( Event *event, bool enabled )
-{
-    if( !MouseDownAction->MatchEvent( event, ACTION_MATCH_ONE ) )
-        return;
-
-    if( enabled != !Enabled )
-    {
-        Enabled = enabled;
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-}
-//---------------------------------------------------------------------------
-
-
diff --git a/modules/gui/skins/controls/rectangle.h b/modules/gui/skins/controls/rectangle.h
deleted file mode 100644 (file)
index e1dcf2b..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*****************************************************************************
- * rectangle.h: Rectangle control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: rectangle.h,v 1.3 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_RECTANGLE
-#define VLC_SKIN_CONTROL_RECTANGLE
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Action;
-class Graphics;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class ControlRectangle : public GenericControl
-{
-    private:
-        // Background color
-        int Color;
-
-        // Behaviour
-        bool Enabled;
-
-        // List of actions to execute when clicking
-        Action  *MouseDownAction;
-        string   MouseDownActionName;
-
-    public:
-        // Constructor
-        ControlRectangle( string id, bool visible, int x, int y, int w, int h,
-            int color, string event, string help, SkinWindow *Parent);
-
-        // Destructor
-        virtual ~ControlRectangle();
-
-        // initialization
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-
-        //Draw image
-        virtual void Draw( int x, int y, int w, int h, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-
-        // Enabling control
-        virtual void Enable( Event *event, bool enabled );
-
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/controls/slider.cpp b/modules/gui/skins/controls/slider.cpp
deleted file mode 100644 (file)
index 0d0cde0..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-/*****************************************************************************
- * slider.cpp: Slider control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: slider.cpp,v 1.10 2003/05/02 15:53:32 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- GENERAL ---------------------------------------------------------------
-#include <math.h>
-#include <stdio.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/bitmap.h"
-#include "../src/bezier.h"
-#include "../src/banks.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "generic.h"
-#include "slider.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../src/skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-// Control Slider
-//---------------------------------------------------------------------------
-ControlSlider::ControlSlider( string id, bool visible, string type,
-    string cursorUp, string cursorDown, double *ptx, double *pty, int nb,
-    string tooltiptext, string help, SkinWindow *Parent )
-    : GenericControl( id, visible, help, Parent )
-{
-    Type             = type;
-    Left             = 0;
-    Top              = 0;
-    State            = 1;
-    Value            = 0;
-    Selected         = false;
-    Enabled          = false;
-    this->cursorUp   = cursorUp;
-    this->cursorDown = cursorDown;
-    Curve            = new Bezier( ptx, pty, nb );
-    UpdateEvent      = NULL;
-    SliderRange      = SLIDER_RANGE;
-    LastRefreshTime  = OSAPI_GetTime();
-
-    // Tool tip text
-    BaseToolTipText = tooltiptext;
-    FullToolTipText = BaseToolTipText;
-}
-//---------------------------------------------------------------------------
-ControlSlider::~ControlSlider()
-{
-    delete[] CursorX;
-    delete[] CursorY;
-    delete (OSRegion *)HitRgn;
-}
-//---------------------------------------------------------------------------
-void ControlSlider::Init()
-{
-    int i;
-    // Get bitmap from list
-    Img    = new (Bitmap *[2]);
-    Img[0] = p_intf->p_sys->p_theme->BmpBank->Get( cursorUp );
-    Img[1] = p_intf->p_sys->p_theme->BmpBank->Get( cursorDown );
-
-    // Get images sizes
-    Img[0]->GetSize( CWidth, CHeight );
-
-    // Computing slider curve : get points
-    MaxValue = Curve->GetNumOfDifferentPoints();
-    CursorX  = new int[MaxValue + 1];
-    CursorY  = new int[MaxValue + 1];
-    Curve->GetDifferentPoints( CursorX, CursorY, -CWidth / 2, -CHeight / 2 );
-
-        // Search for size value
-        Left   = CursorX[0];
-        Top    = CursorY[0];
-        Width  = CursorX[0];
-        Height = CursorY[0];
-        for( i = 1; i <= MaxValue; i++ )
-        {
-            if( CursorX[i] < Left )
-                Left = CursorX[i];
-            if( CursorY[i] < Top )
-                Top  = CursorY[i];
-            if( CursorX[i] > Width )
-                Width = CursorX[i];
-            if( CursorY[i] > Height )
-                Height  = CursorY[i];
-        }
-        Width  += CWidth  - Left;
-        Height += CHeight - Top;
-
-        // Curve is no more needed so delete it
-        delete Curve;
-
-    // Create Hit Region
-    HitRgn = (SkinRegion *)new OSRegion;
-
-    // Create slider hit region and move cursor inside control
-    for( i = 0; i <= MaxValue; i++ )
-    {
-        HitRgn->AddElipse( CursorX[i], CursorY[i], CWidth, CHeight );
-        CursorX[i] -= Left;
-        CursorY[i] -= Top;
-    }
-
-    // Select type of slider
-    if( Type == "time" )
-    {
-        Enabled = false;
-        UpdateEvent = p_intf->p_sys->p_theme->EvtBank->Get( "time" );
-    }
-    else if( Type == "volume" )
-    {
-        Enabled = true;
-        UpdateEvent = p_intf->p_sys->p_theme->EvtBank->Get( "volume_refresh" );
-    }
-    else
-    {
-        Enabled = false;
-        UpdateEvent = p_intf->p_sys->p_theme->EvtBank->Get( "none" );
-    }
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::ProcessEvent( Event *evt )
-{
-    unsigned int msg = evt->GetMessage();
-    unsigned int p1  = evt->GetParam1();
-    int          p2  = evt->GetParam2();
-
-    switch( msg )
-    {
-        case CTRL_ENABLED:
-            Enable( (Event*)p1, (bool)p2 );
-            return true;
-
-        case CTRL_SET_SLIDER:
-            if( UpdateEvent->IsEqual( (Event*)p1 ) )
-            {
-                SetCursorPosition( (long)p2 );
-            }
-            return true;
-
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlSlider::MoveRelative( int xOff, int yOff )
-{
-    Left += xOff;
-    Top  += yOff;
-    HitRgn->Move( xOff, yOff );
-}
-//---------------------------------------------------------------------------
-void ControlSlider::SetCursorPosition( long Pos )
-{
-    if( Pos < 0 )
-        Pos = 0;
-    if( Pos > SliderRange )
-        Pos = SliderRange;
-
-    if( !Selected )
-    {
-        if( SliderRange == 0 )
-            MoveCursor( 0 );
-        else
-            MoveCursor( Pos * MaxValue / SliderRange );
-    }
-}
-//---------------------------------------------------------------------------
-long ControlSlider::GetCursorPosition()
-{
-    return SliderRange * Value / MaxValue;
-}
-//---------------------------------------------------------------------------
-void ControlSlider::MoveCursor( int newValue )
-{
-    int X, Y, W, H;
-    int OldValue = Value;
-    Value = newValue;
-    if( OldValue != Value )
-    {
-        X = (CursorX[Value] > CursorX[OldValue])
-            ? Left + CursorX[OldValue] : Left + CursorX[Value];
-        Y = (CursorY[Value] > CursorY[OldValue])
-            ? Top  + CursorY[OldValue] : Top  + CursorY[Value];
-        W = (CursorX[Value] > CursorX[OldValue])
-            ? CursorX[Value] - CursorX[OldValue] + CWidth
-            : CursorX[OldValue] - CursorX[Value] + CWidth;
-        H = (CursorY[Value] > CursorY[OldValue])
-            ? CursorY[Value] - CursorY[OldValue] + CHeight
-            : CursorY[OldValue] - CursorY[Value] + CHeight;
-        if( 2 * CWidth * CHeight < W * H )
-        {
-            ParentWindow->Refresh( Left + CursorX[OldValue],
-                Top + CursorY[OldValue], CWidth, CHeight );
-            ParentWindow->Refresh( Left + CursorX[Value],
-                Top + CursorY[Value], CWidth, CHeight );
-        }
-        else
-        {
-            ParentWindow->Refresh( X, Y, W, H );
-        }
-
-        // Change tooltip
-        if( BaseToolTipText != "none" )
-        {
-            char *percent = new char[6];
-            sprintf( percent, "%i %%", Value * 100 / MaxValue );
-            FullToolTipText = BaseToolTipText + " - " + (string)percent;
-            delete[] percent;
-        }
-    }
-}
-//---------------------------------------------------------------------------
-void ControlSlider::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    int xI, yI, wI, hI;
-
-    if( GetIntersectRgn( x, y, w, h, Left+CursorX[Value], Top+CursorY[Value],
-                         CWidth, CHeight, xI, yI, wI, hI ) )
-    {
-        Img[1 - State]->DrawBitmap( xI - Left - CursorX[Value],
-            yI - Top - CursorY[Value], wI, hI, xI - x, yI - y, dest );
-    }
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::MouseUp( int x, int y, int button )
-{
-    State = 1;
-    if( Enabled && Selected )
-    {
-        Selected = false;
-        ParentWindow->Refresh( Left + CursorX[Value],
-            Top + CursorY[Value], CWidth, CHeight );
-        UpdateEvent->SetParam2( GetCursorPosition() );
-        UpdateEvent->SendEvent();
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::MouseDown( int x, int y, int button )
-{
-    if( !Enabled )
-        return false;
-
-    // If hit into cursor or indide active slider region
-    if( HitRgn->Hit( x, y ) && button == 1 )
-    {
-        State = 0;
-        Selected = true;
-        ParentWindow->Refresh( Left + CursorX[Value],
-            Top + CursorY[Value], CWidth, CHeight );
-        MoveCursor( FindNearestPoint( x, y ) );
-        UpdateEvent->SetParam2( GetCursorPosition() );
-        UpdateEvent->SendEvent();
-        return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::MouseMove( int x, int y, int button )
-{
-    if( !Enabled || !Selected || !button )
-        return false;
-
-    MoveCursor( FindNearestPoint( x, y ) );
-
-    // Refresh value if time ellapsed since last refresh is more than 200 ms
-    int time = OSAPI_GetTime();
-    if( time > LastRefreshTime + 250 )
-    {
-        UpdateEvent->SetParam2( GetCursorPosition() );
-        UpdateEvent->SendEvent();
-        LastRefreshTime = time;
-    }
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::MouseOver( int x, int y )
-{
-    if( HitRgn->Hit( x, y ) )
-        return true;
-    else
-        return false;
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::MouseScroll( int x, int y, int direction )
-{
-    if( !Enabled || !MouseOver( x, y ) )
-        return false;
-
-    int val = Value;
-    switch( direction )
-    {
-        case MOUSE_SCROLL_DOWN:
-            if( val > 0 ) val--;
-            break;
-
-        case MOUSE_SCROLL_UP:
-            if( val < MaxValue ) val++;
-            break;
-    }
-
-    MoveCursor( val );
-    UpdateEvent->SetParam2( GetCursorPosition() );
-    UpdateEvent->SendEvent();
-
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ControlSlider::ToolTipTest( int x, int y )
-{
-    if( MouseOver( x, y ) )
-    {
-        if( BaseToolTipText == "none" )
-        {
-            ParentWindow->ChangeToolTipText( BaseToolTipText );
-        }
-        else
-        {
-            ParentWindow->ChangeToolTipText( FullToolTipText );
-        }
-        return true;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlSlider::ChangeSliderRange( int NewRange )
-{
-    if( NewRange == SliderRange )
-        return;
-
-    SliderRange = NewRange;
-
-    int Pos = GetCursorPosition();
-    SetCursorPosition( Pos );
-
-}
-//---------------------------------------------------------------------------
-void ControlSlider::Enable( Event *event, bool enabled )
-{
-    if( !UpdateEvent->IsEqual( event ) )
-        return;
-
-    if( enabled && !Enabled )
-    {
-        Enabled = true;
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-    else if( !enabled && Enabled )
-    {
-        Enabled = false;
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-}
-//---------------------------------------------------------------------------
-int ControlSlider::FindNearestPoint( int x, int y )
-{
-    int i, wx, wy;
-    double D;
-    double minD = 50;
-    int RefValue = Value;
-    // Move point inside control
-    OSAPI_GetMousePos( x, y );              // This is used to avoid bug with
-                                            // negative values
-    ParentWindow->GetPos( wx, wy );
-    x += -wx - Left - CWidth  / 2;
-    y += -wy - Top  - CHeight / 2;
-
-    // Search nearest point
-    for( i = 0; i <= MaxValue; i++ )
-    {
-        D = sqrt( ( CursorX[i] - x ) * ( CursorX[i] - x ) +
-                  ( CursorY[i] - y ) * ( CursorY[i] - y ) );
-        if( D < minD )
-        {
-            minD = D;
-            RefValue = i;
-        }
-    }
-    return RefValue;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/controls/slider.h b/modules/gui/skins/controls/slider.h
deleted file mode 100644 (file)
index 57db3f9..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*****************************************************************************
- * slider.h: Slider control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: slider.h,v 1.5 2003/04/28 12:25:34 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_SLIDER
-#define VLC_SKIN_CONTROL_SLIDER
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Event;
-class Graphics;
-class SkinWindow;
-class Bezier;
-class SkinRegion;
-
-//---------------------------------------------------------------------------
-class ControlSlider : public GenericControl
-{
-    private:
-        string Type;
-        string cursorUp;
-        string cursorDown;
-        Bezier *Curve;
-        bool Selected;
-        Event *UpdateEvent;
-        bool Enabled;       // Is the button active
-
-        // Cursor properties
-        int CWidth;         // Width of cursor
-        int CHeight;        // Height of cursor
-        int * CursorX;      // Array of x coordinates of slider points
-        int * CursorY;      // Array of y coordinates of slider points
-        SkinRegion *HitRgn;     // Active region for mouse events
-        int LastRefreshTime;
-
-        // Slider properties
-        int SliderRange;    // Should stay to SLIDER_RANGE
-        int MaxValue;       // Maximum value of the slider
-        int Value;          // Value of slider
-
-        // ToolTip text
-        string BaseToolTipText;
-        string FullToolTipText;
-
-        int FindNearestPoint( int x, int y );
-
-        // Move cursor (whether SLIDER_MAX in skin_common.h)
-        void MoveCursor( int newValue );
-
-
-    public:
-        // Constructor
-        ControlSlider( string id, bool visible, string type, string cursorUp,
-            string cursorDown, double *ptx, double *pty, int nb,
-            string tooltiptext, string help, SkinWindow *Parent );
-
-        // Destructor
-        virtual ~ControlSlider();
-
-        // initialization
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-
-        // Draw control
-        virtual void Draw( int x, int y, int w, int h, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseUp( int x, int y, int button );
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseMove( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-        virtual bool ToolTipTest( int x, int y );
-        virtual bool MouseScroll( int x, int y, int direction );
-
-        // Slider calls
-        void SetCursorPosition( long Pos );
-        long GetCursorPosition();
-
-        // Enabling control
-        virtual void Enable( Event *event, bool enabled );
-
-        // Translate control
-        virtual void MoveRelative( int xOff, int yOff );
-
-        // Change SliderRange (do not use if not sure)
-        void ChangeSliderRange( int NewRange );
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/controls/text.cpp b/modules/gui/skins/controls/text.cpp
deleted file mode 100644 (file)
index 12ca2e0..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-/*****************************************************************************
- * text.cpp: Text control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: text.cpp,v 1.12 2003/07/13 14:55:17 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *          Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/bitmap.h"
-#include "../src/banks.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "../src/font.h"
-#include "../os_font.h"
-#include "generic.h"
-#include "text.h"
-#include "../src/event.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/skin_common.h"
-
-#ifdef X11_SKINS
-#include "../x11/x11_timer.h"
-extern intf_thread_t *g_pIntf;
-#endif
-
-
-
-//---------------------------------------------------------------------------
-// Scrolling : one for each OS
-//---------------------------------------------------------------------------
-
-    #if defined( WIN32 )
-    //-----------------------------------------------------------------------
-    // Win32 methods
-    //-----------------------------------------------------------------------
-    void CALLBACK ScrollingTextTimer( HWND hwnd, UINT uMsg, UINT_PTR idEvent,
-        DWORD dwTime )
-    {
-        if( (ControlText *)idEvent != NULL
-            && !( (ControlText *)idEvent )->GetSelected() )
-        {
-            ( (ControlText *)idEvent )->DoScroll();
-        }
-
-    }
-    //-----------------------------------------------------------------------
-    void ControlText::StartScrolling()
-    {
-        SetTimer( ( (Win32Window *)ParentWindow )->GetHandle(), (UINT_PTR)this,
-                  100, (TIMERPROC)ScrollingTextTimer );
-    }
-    //-----------------------------------------------------------------------
-    void ControlText::StopScrolling()
-    {
-        KillTimer( ( (Win32Window *)ParentWindow )->GetHandle(),
-                   (UINT_PTR)this );
-    }
-    //-----------------------------------------------------------------------
-
-    #elif defined X11_SKINS
-
-    //-----------------------------------------------------------------------
-    // X11 methods
-    //----------------------------------------------------------------------- 
-    bool ScrollingTextTimer( void *data )
-    { 
-        if( (ControlText *)data != NULL
-            && !( (ControlText *)data )->GetSelected() )
-        {
-            ( (ControlText *)data )->DoScroll();
-        }
-        return True;
-    }
-
-    //-----------------------------------------------------------------------
-    void ControlText::StartScrolling()
-    {
-        X11Timer *timer = new X11Timer( g_pIntf, 100000, ScrollingTextTimer, 
-                                        (void*)this );
-        X11TimerManager *timerManager = X11TimerManager::Instance( g_pIntf );
-        timerManager->addTimer( timer );
-    }
-    //-----------------------------------------------------------------------
-    void ControlText::StopScrolling()
-    {
-    }
-    //-----------------------------------------------------------------------
-
-    #endif
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// CONTROL TEXT
-//---------------------------------------------------------------------------
-ControlText::ControlText( string id, bool visible, int x, int y, string text,
-    string font, int align, int width, string display, bool scroll,
-    int scrollspace, string help, SkinWindow *Parent )
-    : GenericControl( id, visible, help, Parent )
-{
-    InitLeft         = x;
-    Top              = y;
-    InitWidth        = width;
-    FontName         = font;
-    Text             = text;
-    Align            = align;
-    Selected         = false;
-
-    // Scrolling parameters
-    InitScroll       = scroll;
-    Scroll           = false;
-    ScrollSpace      = scrollspace;
-    PauseScroll      = false;
-
-    // Initialize display
-    if( display != "none" )
-    {
-        int begin = 0;
-        int pos = display.find( ';', 0 );
-        while( pos > 0 )
-        {
-            DisplayList.push_back( display.substr( begin, pos - begin ) );
-            begin = pos + 1;
-            pos = display.find( ';', begin );
-        }
-        DisplayList.push_back(
-            display.substr( begin, display.size() - begin ) );
-        Display = DisplayList.begin();
-    }
-
-}
-//---------------------------------------------------------------------------
-ControlText::~ControlText()
-{
-    if( TextClipRgn != NULL )
-        delete TextClipRgn;
-    TextWidth = 0;
-    SetScrolling();
-}
-//---------------------------------------------------------------------------
-void ControlText::Init()
-{
-    TextFont     = p_intf->p_sys->p_theme->FntBank->Get( FontName );
-
-    // Init clipping region
-    TextClipRgn = NULL;
-
-    // Get size of control
-    SetSize();
-    SetScrolling();
-}
-//---------------------------------------------------------------------------
-void ControlText::SetScrolling()
-{
-    if( !Scroll && TextWidth > Width )
-    {
-        if( InitScroll )
-        {
-            Scroll = true;
-            StartScrolling();
-        }
-    }
-    else if( Scroll && TextWidth <= Width )
-    {
-        Scroll = false;
-        StopScrolling();
-    }
-}
-//---------------------------------------------------------------------------
-void ControlText::SetSize()
-{
-    // Get size parameters
-    int w, h;
-    TextFont->GetSize( Text, w, h );
-    TextWidth = w;
-
-    // Get width if not set
-    if( InitWidth <= 0 )
-        Width  = w;
-    else
-        Width  = InitWidth;
-
-    // Set height
-    Height = h;
-
-    // Set position wether alignment
-    if( Align == VLC_FONT_ALIGN_CENTER )
-    {
-        Left     = InitLeft - Width / 2;
-        TextLeft = InitLeft - TextWidth / 2;
-    }
-    else if( Align == VLC_FONT_ALIGN_RIGHT )
-    {
-        Left     = InitLeft - Width;
-        TextLeft = InitLeft - TextWidth;
-    }
-    else
-    {
-        Left     = InitLeft;
-        TextLeft = InitLeft;
-    }
-
-    // Create clipping region
-    if( TextClipRgn != NULL )
-        delete TextClipRgn;
-
-    TextClipRgn = (SkinRegion *)new OSRegion( Left, Top, Width, Height );
-
-}
-//---------------------------------------------------------------------------
-bool ControlText::ProcessEvent( Event *evt )
-{
-    unsigned int msg = evt->GetMessage();
-    unsigned int p1  = evt->GetParam1();
-    long         p2  = evt->GetParam2();
-
-    switch( msg )
-    {
-        case CTRL_SET_TEXT:
-            if( DisplayList.size() > 0 )
-            {
-                if( p_intf->p_sys->p_theme->EvtBank->Get( (*Display) )
-                    ->IsEqual( (Event*)p1 ) )
-                {
-                    SetText( (char *)p2 );
-                }
-            }
-            break;
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-void ControlText::Draw( int x, int y, int w, int h, Graphics *dest )
-{
-    if( !Visible )
-        return;
-
-    // Test if control is in refresh zone
-    int xI, yI, wI, hI;
-    if( !GetIntersectRgn( x,y,w,h, Left,Top,Width,Height, xI,yI,wI,hI) )
-        return;
-
-    // Change clipping region
-    TextClipRgn->Move( -x, -y );
-    dest->SetClipRegion( TextClipRgn );
-
-    // Draw text
-    if( TextWidth <= Width || !Scroll )
-    {
-        TextFont->Print( dest, Text, Left - x, Top - y, Width, Height, Align );
-    }
-    else
-    {
-        if( TextLeft > Left + ScrollSpace )
-        {
-            TextFont->Print( dest, Text, TextLeft - x, Top - y,
-                         TextWidth, Height, Align );
-            TextFont->Print( dest, Text, TextLeft - x - TextWidth - ScrollSpace,
-                         Top - y, TextWidth, Height, Align );
-        }
-        else if( TextLeft + TextWidth + ScrollSpace < Left + Width )
-        {
-            TextFont->Print( dest, Text, TextLeft - x, Top - y,
-                         TextWidth, Height, Align );
-            TextFont->Print( dest, Text, TextLeft - x + TextWidth + ScrollSpace,
-                         Top - y, TextWidth, Height, Align );
-        }
-        else
-        {
-            TextFont->Print( dest, Text, TextLeft - x, Top - y,
-                         TextWidth, Height, Align );
-        }
-    }
-
-    // Reset clipping region to old region
-    SkinRegion *destClipRgn = (SkinRegion *)new OSRegion( 0, 0, w, h );
-    dest->SetClipRegion( destClipRgn );
-    delete destClipRgn;
-    TextClipRgn->Move( x, y );
-}
-//---------------------------------------------------------------------------
-void ControlText::SetText( const string newText )
-{
-    if( Text != newText )
-    {
-        Selected = false;
-        Text     = newText;
-        SetSize();
-        SetScrolling();
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-}
-//---------------------------------------------------------------------------
-void ControlText::DoScroll()
-{
-    if( !PauseScroll )
-    {
-        TextLeft -= 2;
-        if( TextLeft + TextWidth < Left )
-            TextLeft += TextWidth + ScrollSpace;
-
-        ParentWindow->Refresh( Left, Top, Width, Height );
-    }
-}
-//---------------------------------------------------------------------------
-void ControlText::MoveRelative( int xOff, int yOff )
-{
-    InitLeft += xOff;
-    Top      += yOff;
-    SetSize();
-}
-//---------------------------------------------------------------------------
-bool ControlText::MouseUp( int x, int y, int button )
-{
-    Selected = false;
-    if( MouseOver( x, y ) && button == 1 )
-    {
-        if( DisplayList.size() > 1 || TextWidth > Width )
-            return true;
-    }
-    return false;
-
-}
-//---------------------------------------------------------------------------
-bool ControlText::MouseDown( int x, int y, int button )
-{
-    if( MouseOver( x, y ) && button == 1 )
-    {
-        if( TextWidth > Width )
-        {
-            PauseScroll = !PauseScroll;
-            OSAPI_GetMousePos( MouseX, MouseY );
-            SelectedX = MouseX;
-            Selected = true;
-            return true;
-        }
-        else if( DisplayList.size() > 1 )
-        {
-            return true;
-        }
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlText::MouseMove( int x, int y, int button )
-{
-    if( Selected && button == 1 )
-    {
-        OSAPI_GetMousePos( MouseX, MouseY );
-
-        if( MouseX != SelectedX )
-        {
-            TextLeft += MouseX - SelectedX;
-            SelectedX = MouseX;
-
-            while( TextLeft + TextWidth < Left )
-                TextLeft += TextWidth + ScrollSpace;
-
-            while( TextLeft > Left + ScrollSpace )
-                TextLeft -= TextWidth + ScrollSpace;
-
-            ParentWindow->Refresh( Left, Top, Width, Height );
-        }
-    }
-    return false;
-}
-//---------------------------------------------------------------------------
-bool ControlText::MouseOver( int x, int y )
-{
-    if( x >= Left && x < Left + Width && y >= Top && y < Top + Height )
-        return true;
-    else
-        return false;
-}
-//---------------------------------------------------------------------------
-bool ControlText::MouseDblClick( int x, int y, int button )
-{
-    Selected = false;
-    if( x >= Left && x < Left + Width && y >= Top && y < Top + Height
-        && button == 1 && DisplayList.size() > 1 )
-    {
-        Display++;
-        if( Display == DisplayList.end() )
-            Display = DisplayList.begin();
-        return true;
-    }
-    else
-    {
-        return false;
-    }
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/controls/text.h b/modules/gui/skins/controls/text.h
deleted file mode 100644 (file)
index 603c93f..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-/*****************************************************************************
- * text.h: Text control
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: text.h,v 1.5 2003/04/28 12:25:34 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_CONTROL_TEXT
-#define VLC_SKIN_CONTROL_TEXT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class Event;
-class BitmapBank;
-class Graphics;
-class SkinWindow;
-class SkinRegion;
-class SkinFont;
-
-//---------------------------------------------------------------------------
-class ControlText : public GenericControl
-{
-    private:
-        // Scrolling parameters
-        bool     Scroll;
-        int      TextWidth;
-        int      TextLeft;
-        int      ScrollSpace;
-        bool     Selected;
-        int      SelectedX;
-        int      MouseX;
-        int      MouseY;
-        bool     PauseScroll;
-
-        // Initial parameters
-        bool     InitScroll;
-        int      InitLeft;
-        int      InitWidth;
-
-        // General parameters
-        string   Text;
-        int      Align;
-        SkinFont    *TextFont;
-        string   FontName;
-        list<string> DisplayList;
-        list<string>::const_iterator Display;
-        SkinRegion   *TextClipRgn;
-
-        // Internal methods
-        void SetSize();
-        void SetScrolling();
-        void StartScrolling();
-        void StopScrolling();
-
-    public:
-        // Constructor
-        ControlText( string id, bool visible, int x, int y, string text,
-            string font, int align, int width, string display,
-            bool scroll, int scrollspace, string help,  SkinWindow *Parent );
-
-        // initialization
-        virtual void Init();
-        virtual bool ProcessEvent( Event *evt );
-
-        // Destructor
-        ~ControlText();
-
-        // Draw control
-        virtual void Draw( int x, int y, int w, int h, Graphics *dest );
-
-        // Mouse events
-        virtual bool MouseUp( int x, int y, int button );
-        virtual bool MouseDown( int x, int y, int button );
-        virtual bool MouseMove( int x, int y, int button );
-        virtual bool MouseOver( int x, int y );
-        virtual bool MouseDblClick( int x, int y, int button );
-
-        // Move control
-        virtual void MoveRelative( int xOff, int yOff );
-
-        // Set text
-        void SetText( const string newText );
-
-        // Keep on scrolling
-        void DoScroll();
-
-        // Getters
-        bool GetSelected() { return Selected; };
-        bool IsScrolling() { return Scroll; };
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/os_api.h b/modules/gui/skins/os_api.h
deleted file mode 100644 (file)
index e5fc4e2..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*****************************************************************************
- * os_api.h: Wrapper for some os-specific functions
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_api.h,v 1.3 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_API
-#define VLC_SKIN_API
-
-#if defined( WIN32 )
-    #define DIRECTORY_SEPARATOR '\\'
-#else
-    #define DIRECTORY_SEPARATOR '/'
-#endif
-
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-// Event API
-//---------------------------------------------------------------------------
-// This functions send a message to the interface message stack
-// First argument is the destination window (NULL is broadcasting)
-// Second argument is the name of the message (see event.h)
-// Other parameters are the arguments of message
-// Send message is supposed to treat the message directly and should not be
-// used if possible
-void OSAPI_SendMessage( SkinWindow *win, unsigned int message, unsigned int param1,
-                        long param2 );
-void OSAPI_PostMessage( SkinWindow *win, unsigned int message, unsigned int param1,
-                        long param2 );
-
-//---------------------------------------------------------------------------
-// Graphic API
-//---------------------------------------------------------------------------
-// This function get a color and return the correspounding color regarding
-// color resolution. If it is black, it should return the nearest non black
-// color
-int  OSAPI_GetNonTransparentColor( int c );
-
-// This function get the size in pixel of the screen
-void OSAPI_GetScreenSize( int &w, int &h );
-
-//---------------------------------------------------------------------------
-// General
-//---------------------------------------------------------------------------
-// This function get the position in pixel of the mouse cursor position
-void OSAPI_GetMousePos( int &x, int &y );
-
-// This function returns the Title of the specified window
-string OSAPI_GetWindowTitle( SkinWindow *win );
-
-// This functions removes a directory and all its contents
-bool OSAPI_RmDir( string Path );
-
-// This function returns a time in millisecond whose reference should be fixed
-int  OSAPI_GetTime();
-
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/os_bitmap.h b/modules/gui/skins/os_bitmap.h
deleted file mode 100644 (file)
index 770bb14..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*****************************************************************************
- * os_bitmap.h: Wrapper for the Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_bitmap.h,v 1.6 2003/07/13 14:55:16 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#if defined( WIN32 )
-    #include "win32/win32_bitmap.h"
-    #define OSBitmap Win32Bitmap
-#elif defined X11_SKINS
-    #include "x11/x11_bitmap.h"
-    #define OSBitmap X11Bitmap
-#endif
-
-
diff --git a/modules/gui/skins/os_event.h b/modules/gui/skins/os_event.h
deleted file mode 100644 (file)
index fae31fc..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*****************************************************************************
- * os_event.h: Wrapper for the Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_event.h,v 1.6 2003/07/13 14:55:16 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#if defined( WIN32 )
-    #include "win32/win32_event.h"
-    #define OSEvent Win32Event
-#elif defined X11_SKINS
-    #include "x11/x11_event.h"
-    #define OSEvent X11Event
-#endif
-
diff --git a/modules/gui/skins/os_font.h b/modules/gui/skins/os_font.h
deleted file mode 100644 (file)
index 3b74df6..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*****************************************************************************
- * os_font.h: Wrapper for the OSFont class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_font.h,v 1.7 2003/07/13 14:55:16 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#if defined( WIN32 )
-    #include "win32/win32_font.h"
-    #define OSFont Win32Font
-
-    #define VLC_FONT_ALIGN_LEFT    DT_LEFT
-    #define VLC_FONT_ALIGN_CENTER  DT_CENTER
-    #define VLC_FONT_ALIGN_RIGHT   DT_RIGHT
-
-#elif defined X11_SKINS
-    #include "x11/x11_font.h"
-    #define OSFont X11Font
-
-    #define VLC_FONT_ALIGN_LEFT    0
-    #define VLC_FONT_ALIGN_CENTER  1
-    #define VLC_FONT_ALIGN_RIGHT   2
-
-#endif
diff --git a/modules/gui/skins/os_graphics.h b/modules/gui/skins/os_graphics.h
deleted file mode 100644 (file)
index 5414208..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*****************************************************************************
- * os_graphics.h: Wrapper for the Graphics and Region classes
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_graphics.h,v 1.7 2003/07/13 14:55:16 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#if defined( WIN32 )
-    #include "win32/win32_graphics.h"
-    #define SRC_COPY   SRCCOPY
-    #define SRC_AND    SRCAND
-    #define OSGraphics Win32Graphics
-    #define OSRegion   Win32Region
-#elif defined X11_SKINS
-    #include "x11/x11_graphics.h"
-    #define SRC_COPY   1
-    #define SRC_AND    2
-    #define OSGraphics X11Graphics
-    #define OSRegion   X11Region
-#endif
-
diff --git a/modules/gui/skins/os_theme.h b/modules/gui/skins/os_theme.h
deleted file mode 100644 (file)
index 5ca6993..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*****************************************************************************
- * os_theme.h: Wrapper for the OSTheme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_theme.h,v 1.6 2003/07/13 14:55:16 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#if defined( WIN32 )
-    #include "win32/win32_theme.h"
-    #define OSTheme Win32Theme
-#elif defined X11_SKINS
-    #include "x11/x11_theme.h"
-    #define OSTheme X11Theme
-#endif
diff --git a/modules/gui/skins/os_window.h b/modules/gui/skins/os_window.h
deleted file mode 100644 (file)
index a9cd92c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*****************************************************************************
- * os_window.h: Wrapper for the OSWindow class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: os_window.h,v 1.6 2003/07/13 14:55:16 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#if defined( WIN32 )
-    #include "win32/win32_dragdrop.h"
-    #include "win32/win32_window.h"
-    #define OSWindow Win32Window
-#elif defined X11_SKINS
-    #include "x11/x11_dragdrop.h"
-    #include "x11/x11_window.h"
-    #define OSWindow X11Window
-#endif
diff --git a/modules/gui/skins/parser/flex.c b/modules/gui/skins/parser/flex.c
deleted file mode 100644 (file)
index a02ba3e..0000000
+++ /dev/null
@@ -1,7037 +0,0 @@
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header: /root/vlc-cvs/modules/gui/skins/parser/flex.c,v 1.9 2003/10/22 19:12:56 ipkiss Exp $
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-#include <errno.h>
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#ifndef _WIN32
-#include <unistd.h>
-#else
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-#endif
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- *     if ( condition_holds )
- *             yyless( 5 );
- *     else
- *             do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               *yy_cp = yy_hold_char; \
-               YY_RESTORE_YY_MORE_OFFSET \
-               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-               } \
-       while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-       {
-       FILE *yy_input_file;
-
-       char *yy_ch_buf;                /* input buffer */
-       char *yy_buf_pos;               /* current position in input buffer */
-
-       /* Size of input buffer in bytes, not including room for EOB
-        * characters.
-        */
-       yy_size_t yy_buf_size;
-
-       /* Number of characters read into yy_ch_buf, not including EOB
-        * characters.
-        */
-       int yy_n_chars;
-
-       /* Whether we "own" the buffer - i.e., we know we created it,
-        * and can realloc() it to grow it, and should free() it to
-        * delete it.
-        */
-       int yy_is_our_buffer;
-
-       /* Whether this is an "interactive" input source; if so, and
-        * if we're using stdio for input, then we want to use getc()
-        * instead of fread(), to make sure we stop fetching input after
-        * each newline.
-        */
-       int yy_is_interactive;
-
-       /* Whether we're considered to be at the beginning of a line.
-        * If so, '^' rules will be active on the next match, otherwise
-        * not.
-        */
-       int yy_at_bol;
-
-       /* Whether to try to fill the input buffer when we reach the
-        * end of it.
-        */
-       int yy_fill_buffer;
-
-       int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-       /* When an EOF's been seen but there's still some text to process
-        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-        * shouldn't try reading from the input source any more.  We might
-        * still have a bunch of tokens to match, though, because of
-        * possible backing-up.
-        *
-        * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
-        */
-#define YY_BUFFER_EOF_PENDING 2
-       };
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;                /* whether we need to initialize */
-static int yy_start = 0;       /* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_is_interactive = is_interactive; \
-       }
-
-#define yy_set_bol(at_bol) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_at_bol = at_bol; \
-       }
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-
-#define yywrap() 1
-#define YY_SKIP_YYWRAP
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-       yytext_ptr = yy_bp; \
-       yyleng = (int) (yy_cp - yy_bp); \
-       yy_hold_char = *yy_cp; \
-       *yy_cp = '\0'; \
-       yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 404
-#define YY_END_OF_BUFFER 405
-static yyconst short int yy_accept[2505] =
-    {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  405,  403,
-       29,   10,   10,   29,   29,  382,   10,  382,    5,    6,
-        5,    8,    9,    8,  398,  390,  391,  399,  396,  399,
-      397,  402,  390,  391,  402,  404,  404,   35,   10,   35,
-       35,   35,   33,   35,  404,   39,   10,   39,  404,   39,
-      404,   49,   10,   49,   49,   49,   47,   49,   49,   49,
-       53,   10,   53,  404,   63,   10,   63,   63,   63,   61,
-       63,   63,   63,   67,   10,   67,  404,   85,   10,   85,
-
-       85,   85,   83,   85,   85,   85,   85,   85,   85,   89,
-       10,   89,  101,   10,  101,  101,  101,   99,  101,  101,
-      101,  101,  105,   10,  105,  404,  127,   10,  127,  127,
-      127,  125,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  404,  131,   10,  131,  139,   10,  139,  139,  139,
-      137,  139,  139,  404,  143,   10,  143,  143,  404,  155,
-       10,  155,  155,  155,  153,  155,  155,  155,  155,  159,
-       10,  159,  404,  177,   10,  177,  177,  177,  175,  177,
-      177,  177,  177,  177,  177,  181,   10,  181,  404,  203,
-       10,  203,  203,  203,  201,  203,  203,  203,  203,  203,
-
-      203,  203,  203,  207,   10,  207,  404,  235,   10,  235,
-      235,  235,  233,  235,  235,  235,  235,  235,  235,  235,
-      235,  235,  239,   10,  239,  404,  281,   10,  281,  281,
-      281,  279,  281,  281,  281,  281,  281,  281,  281,  281,
-      281,  285,   10,  285,  404,  311,   10,  311,  311,  311,
-      309,  311,  311,  311,  311,  311,  311,  311,  311,  311,
-      311,  315,   10,  315,  404,  343,   10,  343,  343,  343,
-      341,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  347,   10,  347,  404,  377,   10,  377,  377,
-      377,  375,  377,  377,  377,  377,  377,  377,  377,  377,
-
-      377,  377,  377,  377,  381,   10,  381,  398,  390,  391,
-      399,  399,  398,   10,    0,    2,    2,    0,    4,    7,
-      393,  392,    0,    0,    0,    0,    0,  401,    0,   34,
-       36,   36,    0,    0,    0,    0,    0,    0,   48,   50,
-       50,   50,   50,    0,   62,   64,   64,   64,   64,    0,
-       84,   86,   86,   86,   86,   86,   86,   86,   86,    0,
-      100,  102,  102,  102,  102,  102,    0,  126,  128,  128,
-      128,  128,  128,  128,  128,  128,    0,    0,    0,    0,
-        0,    0,  138,  140,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  154,  156,  156,
-
-      156,    0,    0,    0,    0,    0,  176,  178,  178,  178,
-      178,  178,  178,    0,    0,    0,    0,    0,  202,  204,
-      204,    0,    0,  204,  204,  204,  204,    0,    0,    0,
-        0,    0,    0,    0,  234,  236,  236,  236,  236,  236,
-      236,  236,  236,  236,    0,    0,    0,    0,    0,    0,
-      280,  282,  282,  282,  282,  282,  282,  282,  282,  282,
-        0,    0,    0,    0,    0,  310,  312,  312,  312,  312,
-      312,  312,  312,  312,  312,  312,    0,    0,    0,    0,
-        0,  342,  344,  344,  344,  344,  344,  344,  344,  344,
-      344,  344,    0,    0,    0,    0,    0,  376,  378,  378,
-
-      378,  378,  378,  378,  378,  378,  378,  378,  378,  378,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    3,    0,    0,    0,    0,    0,    0,    0,  400,
-        0,   36,    0,    0,    0,    0,    0,    0,    0,   50,
-       50,    0,    0,    0,    0,   64,    0,    0,   64,    0,
-        0,   86,   86,    0,    0,   86,   86,   86,   86,    0,
-        0,  102,  102,  102,  102,    0,    0,  128,  128,  128,
-        0,    0,  128,  128,  128,    0,  112,  111,    0,  114,
-      113,    0,    0,    0,    0,  134,  133,    0,  136,  135,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-      156,  156,    0,  146,  145,    0,  148,  147,    0,    0,
-      178,    0,    0,  178,  178,  178,    0,  166,  165,    0,
-      168,  167,    0,    0,  204,    0,  194,  193,  204,    0,
-        0,  204,  204,    0,  192,  191,    0,  188,  187,    0,
-      190,  189,    0,    0,  236,  236,  236,    0,    0,  236,
-      236,  236,    0,    0,  236,    0,  214,  213,    0,  216,
-      215,    0,    0,  282,  282,  282,    0,    0,  282,  282,
-      282,  282,  282,    0,  246,  245,    0,  248,  247,    0,
-        0,  312,  312,  312,    0,    0,  312,  312,  312,    0,
-        0,  312,    0,  292,  291,    0,  294,  293,    0,    0,
-
-      344,  344,  344,  344,    0,    0,  344,  344,  344,  344,
-        0,  322,  321,    0,  324,  323,    0,    0,  378,  378,
-      378,    0,    0,  378,  378,  378,  378,  378,  378,  378,
-        0,  354,  353,    0,  356,  355,    0,    0,    0,  395,
-        0,   28,    1,    0,    0,  388,    0,    0,    0,  385,
-      384,    0,    0,   36,    0,    0,    0,   38,    0,    0,
-        0,    0,    0,   50,   50,    0,   42,   41,    0,    0,
-       52,    0,   64,    0,   56,   55,    0,    0,    0,    0,
-       66,    0,   86,   86,    0,   70,   69,   86,   86,   86,
-       86,    0,    0,   88,    0,  102,  102,  102,  102,    0,
-
-        0,  104,    0,  128,  128,  128,    0,  108,  107,  128,
-      128,  128,    0,    0,    0,  130,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  142,    0,  156,
-      156,    0,    0,  158,    0,  178,    0,  162,  161,  178,
-      178,  178,    0,    0,  180,    0,  204,  204,    0,  184,
-      183,  204,  204,    0,    0,  206,    0,  236,  236,  236,
-        0,  210,  209,  236,  236,  236,    0,  218,  217,  236,
-        0,    0,  238,    0,  282,  282,  282,    0,  242,  241,
-      282,  282,  282,  282,  282,  282,    0,    0,  284,    0,
-        0,    0,  312,  312,    0,  288,  287,    0,    0,  312,
-
-      312,    0,  298,  297,  312,    0,    0,  314,    0,  344,
-      344,  344,  344,    0,  318,  317,  344,  344,  344,  344,
-        0,    0,  346,    0,    0,    0,  378,  378,    0,  350,
-      349,  378,  378,    0,    0,  378,  378,  378,  378,    0,
-        0,  380,    0,    0,    0,    0,  389,  383,    0,    0,
-        0,   36,    0,    0,    0,    0,   68,    0,   50,    0,
-        0,    0,   64,    0,   60,   59,    0,   86,    0,    0,
-       86,    0,    0,   86,   86,    0,  102,  102,    0,    0,
-      102,    0,  128,  128,  128,  128,  128,  128,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  156,
-
-      156,    0,    0,    0,  178,  178,  178,    0,  204,    0,
-        0,  204,  204,    0,  236,    0,    0,    0,    0,  236,
-      236,  236,  236,    0,  282,  282,    0,    0,    0,    0,
-        0,    0,  282,  282,  282,  282,    0,    0,  302,  301,
-        0,    0,    0,    0,    0,  304,  303,  312,    0,    0,
-      312,    0,  344,  344,    0,    0,    0,    0,  344,    0,
-        0,  344,  344,    0,    0,  368,  367,    0,    0,    0,
-        0,  378,  378,    0,  370,  369,  378,  378,  378,  378,
-        0,    0,    0,    0,    0,   12,    0,  386,  387,   30,
-       36,    0,    0,    0,   54,   68,    0,   50,    0,   44,
-
-       43,    0,    0,    0,    0,    0,    0,    0,   72,   71,
-       86,    0,   74,   73,   86,   86,    0,  102,    0,    0,
-        0,   92,   91,  102,    0,    0,    0,  128,  128,  128,
-      128,  128,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  156,    0,    0,    0,    0,  174,  173,
-        0,    0,  178,  178,    0,    0,    0,    0,  200,  199,
-      204,  204,    0,  236,    0,  220,  219,    0,  232,  231,
-      236,  236,  236,  236,    0,  282,  282,    0,  278,  277,
-        0,  250,  249,    0,  254,  253,  282,  282,  282,  282,
-        0,    0,  300,  299,    0,  308,  307,  312,    0,  296,
-
-      295,  312,    0,    0,    0,  344,    0,  328,  327,    0,
-      340,  339,  344,    0,  326,  325,  344,    0,    0,    0,
-        0,  362,  361,    0,  372,  371,  378,  378,  378,  378,
-      378,    0,    0,    0,    0,    0,    0,   11,   30,    0,
-        0,    0,    0,   40,   54,  106,   50,    0,    0,   58,
-       57,    0,    0,   76,   75,    0,    0,   86,    0,    0,
-        0,   87,    0,    0,    0,   96,   95,  102,    0,    0,
-      118,  117,  128,  128,  128,  128,  128,    0,    0,  144,
-        0,    0,    0,    0,    0,    0,    0,    0,  156,    0,
-      152,  151,    0,    0,  170,  169,  178,  178,    0,    0,
-
-      196,  195,  204,  204,    0,  236,  236,  236,  236,  236,
-        0,  282,  282,  282,  282,  282,  282,    0,  312,  312,
-        0,    0,  330,  329,  344,    0,    0,  344,  344,    0,
-      332,  331,    0,  378,  378,  378,  378,  378,    0,  358,
-      357,    0,    0,    0,    0,    0,   32,   31,    0,    0,
-       37,   40,  106,   50,    0,    0,   65,    0,   80,   79,
-       86,    0,   78,   77,    0,   94,   93,    0,    0,    0,
-      128,  128,  128,  128,    0,    0,    0,    0,  144,    0,
-        0,    0,    0,    0,    0,    0,    0,  156,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  236,
-
-        0,    0,  236,  236,    0,    0,    0,  282,  282,  282,
-      282,  282,  282,    0,    0,    0,  312,    0,    0,    0,
-        0,    0,    0,  336,  335,  344,    0,    0,    0,  378,
-      378,  378,  378,    0,    0,    0,    0,    0,    0,    0,
-       50,    0,   51,   86,    0,   98,   97,    0,    0,    0,
-        0,    0,  128,  128,    0,  110,  109,    0,    0,  129,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  157,    0,  172,  171,    0,  164,  163,    0,    0,
-      198,  197,    0,  186,  185,    0,    0,    0,    0,  224,
-      223,  236,  236,  236,    0,  212,  211,    0,  282,  282,
-
-      282,  282,    0,    0,    0,    0,  282,  282,  282,    0,
-      244,  243,    0,  312,    0,  290,  289,    0,    0,  334,
-      333,  344,    0,  320,  319,    0,  378,  378,    0,    0,
-        0,    0,    0,  352,  351,    0,  394,    0,    0,   90,
-       50,    0,    0,    0,    0,  122,  121,    0,  116,  115,
-        0,    0,  128,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  150,  149,    0,    0,    0,  222,  221,
-      236,  236,  236,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  262,  261,    0,  264,  263,  282,  282,
-      282,    0,  312,    0,  344,    0,    0,    0,  378,    0,
-
-      364,  363,    0,  366,  365,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   90,    0,
-        0,    0,   82,   81,    0,    0,  120,  119,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  236,  236,    0,    0,  252,  251,    0,
-      256,  255,    0,  258,  257,    0,  260,  259,  282,  282,
-      282,  282,    0,  312,    0,  344,    0,    0,  360,  359,
-      378,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   46,   45,
-        0,  103,    0,  124,  123,    0,    0,    0,    0,    0,
-
-        0,    0,  316,    0,    0,    0,    0,  228,  227,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  282,  282,
-      282,  282,    0,    0,    0,    0,    0,    0,    0,  378,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  132,    0,    0,  160,
-        0,    0,    0,  316,    0,    0,    0,    0,  226,  225,
-        0,  230,  229,    0,    0,  268,  267,    0,  272,  271,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      306,  305,    0,    0,  338,  337,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,  132,  208,    0,  160,
-        0,    0,  286,    0,    0,    0,    0,    0,  266,  265,
-        0,  270,  269,    0,  274,  273,    0,  276,  275,    0,
-        0,    0,  345,    0,  374,  373,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  208,    0,    0,    0,  286,    0,
-      141,    0,  179,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  240,  348,    0,    0,    0,
-      237,    0,    0,  313,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  240,  348,  182,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  182,    0,    0,  283,    0,  379,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  205,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   16,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   14,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       17,    0,    0,    0,    0,   18,    0,   22,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   21,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       19,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   27,
-        0,    0,    0,    0,   20,    0,   23,    0,    0,    0,
-        0,    0,    0,   13,    0,    0,    0,    0,    0,    0,
-        0,   25,    0,    0,    0,    0,    0,   24,    0,   26,
-
-        0,    0,   15,    0
-    } ;
-
-static yyconst int yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
-        1,    1,    1,    1,   10,   11,   12,   13,   14,   15,
-       13,   13,   13,   13,   13,   13,   13,   16,   17,   18,
-       19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
-       28,   16,   29,   16,   16,   30,   31,   16,   32,   33,
-       16,   34,   35,   36,   16,   16,   37,   16,   38,   16,
-       39,    1,   40,    1,   16,    1,   41,   42,   43,   44,
-
-       45,   46,   47,   48,   49,   16,   50,   51,   52,   53,
-       54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
-       64,   65,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst int yy_meta[66] =
-    {   0,
-        1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
-        3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
-        1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    1,    1,
-        9,    9,    9,    9,    9,    9,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5
-    } ;
-
-static yyconst short int yy_base[2667] =
-    {   0,
-        0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
-       14,   17,   33,   36,   49,   55,   45,   61,   66,   72,
-      101,  153,   75,   78,  121,  124,  127,  130,  133,  173,
-      176,  179,  182,  185,  205,  254,  225,  229,  232,  235,
-      303,  353,  274,  278,  281,  284,  403,    0,  323,  326,
-      329,  332,  468,  530,  373,  376,  379,  382,  592,    0,
-      488,  492,  496,  499,  550,  554,  657,  721,  558,  561,
-      677,  680,  683,  686,  689,  741,  744,  747,  785,  849,
-      750,  753,  805,  808,  913,    0,  811,  814,  817,  869,
-      978,    0,  872,  875,  878,  881, 1043,    0, 1107, 1110,
-
-     1113, 1116, 1134,    0, 1198, 1201, 1204, 1207, 1225,    0,
-     1289, 1292, 1295, 1298, 1316,    0, 1380, 1383, 1386, 1389,
-     1407,    0, 1471, 1474, 1477, 1480, 1482, 1493, 7368, 8250,
-     8250,   84,   95,   29,   41, 8250,  238,   51, 8250, 8250,
-     7353, 8250, 8250, 7342, 8250, 7357, 7353, 1480, 8250, 8250,
-     8250, 8250, 7351, 7351, 7309, 8250, 1483, 8250,  287, 7328,
-        0,  499, 8250, 7306, 1488, 8250,  335, 1502, 1489,  506,
-      561, 8250,  385, 7322,    0,  507, 8250, 7290, 7291, 7291,
-     8250,  520,  568,  689, 8250,  583, 7314,    0,  569, 8250,
-     7272, 7284, 7282, 8250,  709,  697,  753, 8250,  773, 7306,
-
-        0,  695, 8250, 7267, 7266,  655, 7270, 7261, 7268, 8250,
-      779,  758, 8250,  834, 7292,    0,  698, 8250, 7247, 7254,
-     7264, 7255, 8250,  841,  886, 1497, 8250,  898, 7279,    0,
-      825, 8250, 7247, 7236, 7251, 7247, 7232, 7234, 7235, 1538,
-     1541,  887, 8250, 1119, 1525, 8250, 1210, 6989,    0,  826,
-     8250, 1545, 1548, 1563, 8250, 1301, 6996, 1549, 1550, 8250,
-     1392, 6987,    0,  889, 8250, 6949, 6964, 1571, 1574, 8250,
-     1577, 1583, 1584, 8250, 1598, 6984,    0, 1548, 8250, 6958,
-       39, 6949, 6952, 1604, 1607, 8250, 1612, 1607, 1612, 8250,
-     1618, 6979,    0, 1561, 8250, 6944, 1628, 6953, 6943, 6941,
-
-     1632, 1635, 1638, 8250, 1641, 1643, 1644, 8250, 1656, 6969,
-        0, 1645, 8250,   17, 6942, 6942, 6927, 6907, 6901, 6906,
-     1659, 1666, 8250, 1672, 1667, 1666, 8250, 1678, 6933,    0,
-     1672, 8250, 6901, 6893, 6878,   48, 6869, 6866, 6870, 1692,
-     1695, 8250, 1698, 1698, 1686, 8250, 1702, 6897,    0, 1687,
-     8250, 6856, 6835, 6841, 6835, 6803,  451, 6800, 6804, 1713,
-     1720, 8250, 1723, 1708, 1707, 8250, 1731, 6832,    0, 1725,
-     8250, 6799, 6792, 6782, 6788, 6787, 6784, 6777, 6765, 6764,
-     1734, 1738, 8250, 1745, 1739, 1740, 8250, 1752, 6790,    0,
-     1745, 8250, 6766, 6749, 6757,   94, 6742, 6734, 6739, 6742,
-
-     6736, 6731, 1760, 1765, 8250, 1768, 1753, 8250, 6775, 6765,
-     1745, 6762, 6724, 1773,   18, 6699, 8250, 6739, 6728, 8250,
-     8250, 8250, 1767,   91, 6686, 6671, 6669, 6708, 6675, 8250,
-        0, 6675, 6672, 6675, 6661, 6640, 6642, 6646, 8250,    0,
-     6638, 6641, 1785, 6667, 8250,    0, 6644, 1791, 6623, 6656,
-     8250,    0, 6623, 6620, 1795, 6630, 6603, 6619, 6613, 6623,
-     8250,    0, 6589, 6606, 6588, 6593, 6596, 8250,    0, 6551,
-     6560, 6554, 1803, 6526, 6531, 6513, 1809, 1814, 1822, 1829,
-     6515, 6531, 8250,    0, 1840, 1843, 1851, 1854, 6513, 6505,
-       41, 6511, 6496, 6493, 6486, 6490, 6510, 8250,    0, 6479,
-
-     6460, 1862, 1865, 1873, 1876, 6490, 8250,    0, 6460, 1884,
-     6468, 6462, 6446, 1887, 1891, 1905, 1908, 6464, 8250,    0,
-     6429, 1916, 1919, 6421, 1927, 6428, 6412, 1930, 1934, 1948,
-     1951, 1959, 1962, 6434, 8250,    0, 6400, 6391, 6401, 1970,
-      147, 6387, 1973, 6382, 1977, 1981, 1991, 1995, 6414, 6388,
-     8250,    0, 6380, 6370, 6375, 2003, 6378,  152, 6369, 6357,
-     2009, 2012, 2021, 2027, 6380, 8250,    0, 6345, 6334, 6344,
-     2035, 6347, 6336, 6328, 2039, 6317, 2042, 2046, 2060, 2063,
-     6334, 8250,    0, 6319, 6308, 6310, 6293, 2071, 6267, 6249,
-     6253, 6253, 2074, 2078, 2092, 2095, 6260, 8250,    0, 6232,
-
-     6234, 6234, 2103, 6238, 6229, 6237, 6238, 6226, 6216, 6212,
-     2106, 2110, 2124, 2127, 6220, 6212, 6226, 6214, 6223,  535,
-     6179, 8250, 2124,    0, 6171, 6171, 6206, 6201, 6163, 8250,
-     6170, 6157, 6164, 2142, 2145, 6148, 6161, 6147, 6143, 6114,
-     6113, 2148, 2151, 2166, 2169, 6097, 2172, 2175, 2192, 2195,
-     2199, 6090, 6084, 2202, 2220, 6090, 6084, 6083, 6075, 2205,
-     2210, 6069, 6067, 6069, 6051, 2229, 2232, 6057, 6056, 6053,
-     2235, 2238, 6052, 6031, 6044, 2253, 8250, 8250, 2263, 8250,
-     8250, 6039, 2271, 2274, 2279, 8250, 8250, 2293, 8250, 8250,
-     6047, 6018, 6031, 6025, 6024, 6020, 6006, 5990, 2301, 2304,
-
-     5996, 5996, 2307, 8250, 8250, 2316, 8250, 8250, 2324, 2327,
-     5987, 2330, 2333, 5993, 5981, 5981, 2348, 8250, 8250, 2357,
-     8250, 8250, 2365, 2368, 5975, 2372, 8250, 8250, 5972, 2380,
-     2387, 5970, 5971, 2398, 8250, 8250, 2406, 8250, 8250, 2415,
-     8250, 8250, 2423, 2426, 5977, 5964, 5956, 2429, 2432, 5957,
-     5950, 5950, 2447, 2450, 5946, 2458, 8250, 8250, 2466, 8250,
-     8250, 2474, 2477, 5933, 5930, 5914, 2480, 2483,  135, 5917,
-     5912, 5907, 5908, 2498, 8250, 8250, 2506, 8250, 8250, 2514,
-     2518, 2521, 2524, 2527, 2545, 2548, 2556, 2559, 2566, 2569,
-     2577, 2587, 2590, 8250, 8250, 2598, 8250, 8250, 2610, 2613,
-
-     5905, 5896, 5890, 5885, 2616, 2619, 5885, 5878, 5887, 5875,
-     2635, 8250, 8250, 2643, 8250, 8250, 2651, 2654, 2657, 2663,
-     2666, 2675, 2684, 2693, 2698, 2701, 2704, 2707, 2711, 2725,
-     2729, 8250, 8250, 2737, 8250, 8250, 2749, 2752, 5909, 8250,
-     5911, 8250, 8250,  178, 5862, 8250, 5895, 5893, 5847, 8250,
-     8250, 5845, 5850, 5855, 5847, 2755, 2759, 8250, 2762, 5845,
-     5831, 5823, 5837, 5838, 2774, 2783, 8250, 8250, 2792, 2795,
-     8250, 2798, 5819, 2802, 8250, 8250, 2817, 2820, 2828, 2831,
-     8250, 2835, 5817, 2839, 2843, 8250, 8250, 5823, 2857, 5814,
-     5821, 2861, 2864, 8250, 2867, 5807, 5809, 2870, 5809, 2875,
-
-     2888, 8250, 2894, 5807, 5800, 5772, 2897, 8250, 8250, 5789,
-     5774, 5781, 5763, 2907, 2913, 8250, 2920, 5764, 5752, 5766,
-     5753, 5735, 5738, 5748, 5732, 2926, 2932, 8250, 2939, 5727,
-     5738, 2945, 2951, 8250, 2954, 2958, 2966, 8250, 8250, 2976,
-     2979, 2982, 2985, 3000, 8250, 3005, 5724, 3008, 3013, 8250,
-     8250, 5731, 5726, 3027, 3030, 8250, 3033, 5718, 3036, 3039,
-     3057, 8250, 8250, 5710, 5697, 5693, 3065, 8250, 8250, 5707,
-     3075, 3078, 8250, 3081, 5694, 5699, 3084, 3087, 8250, 8250,
-     3102, 3105, 5678, 5666, 5654, 5669, 3108, 3111, 8250, 3114,
-     3123, 3135, 3143, 3146, 3149, 8250, 8250, 3164, 3167, 3175,
-
-     3178, 3182, 8250, 8250, 3196, 3199, 3202, 8250, 3205, 5651,
-     5650, 3208, 3214, 3226, 8250, 8250, 5631, 3237, 5638, 5624,
-     3240, 3243, 8250, 3246, 3249, 3255, 3267, 3270, 3273, 8250,
-     8250, 3281, 3288, 3291, 3295, 3309, 3312, 3316, 3319, 3322,
-     3337, 8250, 3342, 5639, 1783, 3348, 8250, 8250, 5632, 5615,
-     5584, 5562, 5569, 3345, 5563, 5522, 3357, 5519, 5528, 3368,
-     3371, 3382, 3386, 3389, 8250, 8250, 3397, 3404, 3407, 3410,
-     3418, 3425, 3429, 3437, 3443, 3449, 5509, 3455, 3461, 3464,
-     5516, 3473, 3479, 3482, 3487, 3492, 3501, 3510, 5496, 3513,
-     5494, 5471, 5473, 5472, 5480, 5461, 5455, 5468, 3520, 5428,
-
-     3528, 3524, 3546, 3549, 3564, 3567, 3571, 3560, 3574, 3585,
-     3592, 3609, 3612, 3615, 5411, 3621, 3630, 3639, 3642, 5399,
-     5376, 5366, 5310, 3651, 5296, 5266, 3657, 3663, 3675, 3678,
-     3686, 3689, 5267, 5226, 5205, 5178, 3697, 3700, 8250, 8250,
-     3709, 3712, 3720, 3723, 3732, 8250, 8250, 5168, 3740, 3743,
-     5112, 3751, 3754, 3758, 3761, 3766, 3779, 3782, 3790, 3798,
-     3801, 3809, 3812, 3816, 3820, 8250, 8250, 3830, 3836, 3844,
-     3848, 5106, 5087, 3862, 8250, 8250, 5069, 5066, 5051, 3870,
-     3874, 5067,  210, 5063, 3878, 8250, 5037, 8250, 8250, 3881,
-     3884, 5022, 3888, 4964, 3893, 3897, 4930, 4937, 3903, 8250,
-
-     8250, 3911, 3915, 3918, 3926, 3938, 3941, 3952, 8250, 8250,
-     3960, 3963, 8250, 8250, 3971, 3974, 3933, 3978, 3984, 3992,
-     4002, 8250, 8250, 4944, 4010, 4013, 4019, 4031, 4034, 4037,
-     4040, 4043, 4918, 4061, 4914, 4902, 4886, 4870, 4844, 4824,
-     4802, 4763, 4067, 4746, 4064, 4070, 4087, 4091, 8250, 8250,
-     4099, 4102, 4110, 4117, 4123, 4128, 4131, 4142, 8250, 8250,
-     4150, 4153, 4161, 4740, 4171, 8250, 8250, 4180, 8250, 8250,
-     4717, 4712, 4645, 4639, 4188, 4567, 4562, 4201, 8250, 8250,
-     4209, 8250, 8250, 4217, 8250, 8250, 4556, 4517, 4491, 4499,
-     4225, 4228, 8250, 8250, 4237, 8250, 8250, 4486, 4245, 8250,
-
-     8250, 4464, 4253, 4257, 4260, 4268, 4275, 8250, 8250, 4286,
-     8250, 8250, 4297, 4300, 8250, 8250, 4308, 4311, 4315, 4332,
-     4335, 8250, 8250, 4345, 8250, 8250, 4447, 4400, 4381, 4354,
-     4335, 4355, 4358, 4366, 4307,  464,  124, 8250, 4191, 4369,
-     4373, 4278, 4381, 4387, 4390, 4395, 4272, 4400, 4403, 8250,
-     8250, 4411, 4415, 8250, 8250, 4423, 4426, 4434, 4437, 4441,
-     4455, 8250, 4458, 4461, 4470, 8250, 8250, 4478, 4481, 4486,
-     8250, 8250, 4496, 4500, 4504, 4509, 4514, 4207, 4518, 4522,
-     4228, 4145, 4125, 4113, 4092, 4099, 4069, 4527, 4011, 4533,
-     8250, 8250, 4551, 4554, 8250, 8250, 4546, 4565, 4570, 4573,
-
-     8250, 8250, 4583, 4593, 4589, 3940, 4596, 3869, 3852, 4601,
-     4614, 3857, 3826,  283, 3773, 3674, 4619, 4623, 3671, 4626,
-     4629, 4648, 8250, 8250, 4637, 4656, 4659, 4668, 4674, 4679,
-     8250, 8250, 4687, 3626, 3604, 3547, 3546, 4692, 4695, 8250,
-     8250, 4706, 3563,  320,    3, 4710, 8250, 8250, 3535, 4633,
-     8250, 4718, 4725, 3467, 4728, 4731, 8250, 4734, 8250, 8250,
-     4742, 4750, 8250, 8250, 4760, 8250, 8250, 4769, 4772, 4780,
-     4787, 4790, 4793, 4799, 4811, 4817, 3471, 4825, 4833, 3376,
-     3318, 3326, 3317, 3282, 3252, 3246, 4836, 4839, 4844, 4847,
-     4859, 4867, 4870, 4878, 4881, 4886, 4899, 4902, 4910, 4917,
-
-     4920, 4925,  335, 3257, 4939, 4942, 4913,  511,  563, 4950,
-     4957,  645, 3210, 4960, 4964, 4978, 3168, 4981, 4984, 4992,
-     4999, 5002, 5011, 8250, 8250, 5019, 5022, 5025, 5033, 3088,
-     3070, 5040, 5043, 5046, 5052, 5064, 3080, 5067,  781, 3019,
-     3008, 5070, 8250, 5073, 5076, 8250, 8250, 5091, 5094, 5097,
-     5105, 5112, 5123, 5126, 5129, 8250, 8250, 2995, 5137, 8250,
-     2995, 2966, 2823, 2793, 2722, 2622, 2574, 5144, 5147, 5150,
-     5158, 8250, 5165, 8250, 8250, 5173, 8250, 8250, 5181, 5184,
-     8250, 8250, 5193, 8250, 8250, 5201, 5204, 5207, 5216, 8250,
-     8250, 2568, 2560, 2492, 5224, 8250, 8250, 5233, 5236, 5239,
-
-     5242, 5245, 5263, 5266, 5274, 5277, 2434, 2446, 2425, 5286,
-     8250, 8250, 5294, 2381, 5297, 8250, 8250, 5305, 5309, 8250,
-     8250, 5317, 5320, 8250, 8250, 5328, 5331, 2356, 5335, 5338,
-     5349, 5360, 5368, 8250, 8250, 5376, 8250, 5434,  539, 5379,
-     5382, 5386, 5389, 5405, 5408, 8250, 8250, 5417, 8250, 8250,
-     5425, 5437, 5428, 2333, 2256, 2235, 2131, 2131, 1976, 1897,
-     1782, 5446, 5470, 8250, 8250, 5478, 5481, 5484, 8250, 8250,
-     5492, 1733, 1726, 5502, 5505, 5510, 5525, 5529, 5537, 5543,
-     5555, 5558, 5566, 8250, 8250, 5574, 8250, 8250,  752, 1721,
-     1672, 5582, 1570, 5585, 5588, 5591, 5594, 5606, 1513, 5614,
-
-     8250, 8250, 5622, 8250, 8250, 5632, 1479, 1780, 1893,  329,
-     1571,  299,  201, 1493,  250, 1789,  688, 1598, 5400, 5638,
-     5641, 5656, 8250, 8250, 5651, 5664, 8250, 8250, 5672, 5675,
-     1503, 1505, 1455, 1449, 1347, 1260, 1252, 1255, 5683, 5686,
-     5690, 5693, 5696, 5705, 5713, 5716, 5719, 8250, 8250, 5736,
-     8250, 8250, 5744, 8250, 8250, 5752, 8250, 8250, 5760, 5763,
-      758,  813, 5731, 5767, 5770, 5774, 5785, 5792, 8250, 8250,
-     1175, 5800,   74, 1497, 1500, 1538, 1574, 1664, 1633,  845,
-     1583,  473, 1486, 1739, 1763, 1636, 1795, 5804, 8250, 8250,
-     5812, 8250, 5815, 8250, 8250, 1163, 1161, 1073,  846,   93,
-
-      143,  147, 5449, 5823, 5831, 5838, 5843, 8250, 8250, 5834,
-     5853, 5861, 5864, 5873, 5884, 5892, 5887, 5905, 5913, 5916,
-     5919, 5922, 5925, 5940, 5944, 5952, 5958, 5961, 5971, 5977,
-     5980, 1853,  349, 1885, 1807, 1949, 1819, 1950,  499,  653,
-     1968, 1882, 1997, 1831, 1895, 5983, 5597,  198,  222, 5727,
-      288,  340,  478, 5986, 5990, 5995, 6003, 6010, 8250, 8250,
-     6022, 8250, 8250, 6032, 6035, 8250, 8250, 6045, 8250, 8250,
-     6055, 6058, 6066, 6069, 6077, 6085, 6080, 6098, 6106, 6109,
-     8250, 8250, 6117, 6121, 8250, 8250, 6129, 6132, 6136, 6144,
-     1842, 1907, 1966, 1771, 1841, 2012, 6150, 2006,  561, 1962,
-
-     2014,  885, 2015, 1999, 6153, 6157, 6165, 6172,  710, 6176,
-      715,  721, 6179, 6182, 6185, 6188, 6191, 6195, 8250, 8250,
-     6210, 8250, 8250, 6218, 8250, 8250, 6226, 8250, 8250, 6234,
-     6237, 6241, 8250, 6246, 8250, 8250, 6256, 2063, 1663, 1938,
-     1104, 2037, 6260, 6263, 1106, 1896, 2050, 2066, 2048, 6266,
-     2027, 6269, 6313, 6353, 6290,  771,  782,  780, 6297, 6303,
-     8250, 6306, 8250, 6325, 6344, 6347, 6374, 6377, 6382, 6385,
-     1109, 2080, 2112, 6404, 2097, 2104, 1884, 2068, 1197, 2065,
-     6407, 2139, 6396, 6442, 6482, 6300, 6333,  790, 6410, 6415,
-     8250, 6418, 6453, 8250, 6472, 6475, 6494, 2136, 1939,  875,
-
-     2144, 1864, 2163, 2141, 2197, 2207, 2225, 2190, 2120, 6504,
-     1203, 6336, 6339, 6430, 6513, 6516, 6523, 2230, 2233, 2167,
-     1288, 2243, 2223, 2250, 2231, 1291, 2267, 2226, 2281, 2320,
-     2294, 2326, 6463, 6528, 6538, 8250, 6542, 8250, 2321, 2342,
-     2333, 2325, 2383, 2375, 1377, 2366, 2385, 1382, 2386, 2393,
-     2378, 6547, 2420, 6550, 8250, 2422, 2437, 2454, 2443, 2445,
-     1379, 2475, 2478, 2483, 2499, 2519, 2493, 2272, 6553, 2567,
-     2396, 2515, 2513, 2525, 2554, 2577, 6557, 2575, 2604, 2545,
-     2630, 6572, 2609, 2642, 2622, 2612, 2652, 2698, 2714, 6576,
-     6579, 6591, 6582, 2716, 2614, 2763, 6587, 6601, 2790, 2661,
-
-     6606, 6610, 6613, 2671, 6616, 6625, 2122, 2631, 6621, 2796,
-     2717, 6635, 2678, 6640, 2808, 6650, 6655, 6663, 6674, 2789,
-     2704, 2836, 2855, 2323, 2833, 2750, 2834, 2884, 6677, 2931,
-     2868, 2873, 2892, 6682, 2887, 2905, 2956, 2986, 2899, 6696,
-     3029, 2882, 2944, 2072, 2345, 3037, 6701, 3003, 2980, 2885,
-     2976, 3025, 2760, 2993, 3036, 3042, 3050, 3079, 3082, 3100,
-     6704, 3136, 2699, 3140, 3077, 3134, 3154, 6711, 6715, 3201,
-     2924, 3143, 3144, 6723, 3176, 3217, 3175, 3268, 3283, 3288,
-     3242, 3123, 2973, 3276, 3310, 2770, 3203, 3261, 3137, 6730,
-     3358, 3102, 3362, 3383, 6738, 3307, 3376, 3434, 3489, 3539,
-
-     3577, 3398, 3245, 3200, 3499, 3526, 2273, 2470, 3333, 3472,
-     3316, 3422, 6734, 3571, 3588, 3477, 3480, 3585, 3609, 3589,
-     3636, 3653, 3756, 3429, 3435, 6749, 2842, 2947, 3384, 3459,
-     6753, 3601, 3521, 3514, 6757, 3540, 3582, 3600, 3607, 3767,
-     3786, 3663, 3676, 3730, 3746, 6768, 3452, 6772, 3776, 3810,
-     3817, 3823, 6780, 3711, 3650, 6791, 3731, 3801, 3873, 3890,
-     3648, 3699, 3835, 3882, 3940, 3948, 3950, 3951, 6795, 3928,
-     3931, 3971, 3980, 3982, 1485, 4040, 3999, 4038, 4078, 3836,
-     6803, 3998, 4011, 4007, 4034, 3655, 3805, 4057, 4079, 4122,
-     4141, 4181, 4189, 4129, 4130, 6814, 4032, 4060, 2536, 4108,
-
-     6817, 4147, 4156, 6822, 4139, 4138, 4158, 3759, 4204, 2807,
-     4265, 3833, 3905, 4194, 4224, 4216, 4271, 4276, 4274, 4215,
-     4247, 6826, 4273, 4346, 6836, 6841, 8250, 4361, 4367, 6845,
-     6855, 4300, 4313, 4197, 4287, 6860, 4285, 4402, 4322, 4391,
-     6864, 6867, 4403, 4429, 4288, 4413, 4325, 4474, 6870, 8250,
-     4558, 4594, 4428, 4476, 6879, 4494, 4512, 3972, 4590, 6874,
-     8250, 4266, 4306, 6889, 6893, 8250, 6898, 8250, 4649, 4653,
-     4520, 4539, 4644, 4704, 4738, 4757, 4563, 4624, 4659, 4660,
-     4672, 4727, 4449, 4544, 4604, 4766, 6901, 8250, 4759, 4787,
-     4805, 4811, 4788, 4847, 4855, 4905, 4858, 4877, 4802, 4890,
-
-     4927, 4945, 4446, 4646, 4448, 4730, 4930, 4955, 4791, 4804,
-     4683, 4740, 4745, 4796, 4957, 4977, 4958, 5032, 4989, 5019,
-     5020, 5068, 6904, 4876, 5084, 5099, 5169, 5100, 5114, 5150,
-     5171, 5239, 5240, 5145, 5204, 5153, 5172, 5085, 5253, 6908,
-     8250, 5212, 5284, 5323, 5329, 5194, 5254, 5265, 5282, 5355,
-     5356, 5335, 5345, 5374, 5445, 6912, 5458, 5285, 5338, 5386,
-     6923, 6927, 5396, 5471, 5455, 5477, 5514, 5307, 6931, 8250,
-     6934, 5498, 5559, 6937, 8250, 6942, 8250, 5602, 5607, 5495,
-     5523, 6946, 6956, 8250, 5530, 5404, 5545, 5413, 5617, 5619,
-     6961, 8250, 6965, 6968, 5663, 5610, 6971, 8250, 6975, 8250,
-
-     6980, 6990, 8250, 8250, 7010, 7019, 7028, 7037, 7046, 7055,
-     7064, 7073, 7082, 7091, 7100, 7109, 7118, 7127, 7136, 7145,
-     7154, 7163, 7172, 7181, 7190, 7199, 7208, 7217, 7226, 7235,
-     7244, 7253, 7262, 7271, 7278, 7285, 7292, 7299, 7306, 7313,
-     7320, 7327, 7334, 7341, 7348, 7355, 7362, 7369, 7376, 7385,
-     7390, 7395, 7400, 7405, 7410, 7415, 7420, 7425, 7430, 7435,
-     7440, 7445, 7450, 7455, 7460, 7469, 7475, 7482, 7490, 7497,
-     7505, 7512, 7520, 7527, 7535, 7542, 7550, 7557, 7565, 7573,
-     7580, 7588, 7595, 7603, 7610, 7618, 7625, 7633, 7640, 7648,
-     7656, 7664, 7671, 7679, 7687, 7695, 7704, 7710, 7717, 7725,
-
-     7732, 7740, 7747, 7755, 7762, 7770, 7777, 7785, 7792, 7800,
-     7808, 7815, 7823, 7831, 7839, 7846, 7854, 7861, 7869, 7876,
-     7884, 7892, 7900, 7907, 7915, 7923, 7931, 7940, 7949, 7956,
-     7964, 7971, 7979, 7987, 7995, 8003, 8011, 8018, 8026, 8034,
-     8042, 8050, 8057, 8065, 8073, 8081, 8089, 8097, 8104, 8112,
-     8119, 8127, 8134, 8142, 8150, 8158, 8165, 8173, 8182, 8191,
-     8199, 8207, 8214, 8222, 8231, 8240
-    } ;
-
-static yyconst short int yy_def[2667] =
-    {   0,
-     2505, 2505, 2506, 2506, 2506, 2506, 2507, 2507, 2508, 2508,
-     2509, 2509, 2510, 2510, 2510, 2510, 2511, 2511, 2512, 2512,
-     2513, 2513, 2512, 2512, 2514, 2514, 2512, 2512, 2514, 2514,
-     2514, 2514, 2512, 2512, 2515, 2515, 2516, 2516, 2512, 2512,
-     2517, 2517, 2518, 2518, 2512, 2512, 2504,   47, 2519, 2519,
-     2512, 2512, 2520, 2520, 2521, 2521, 2512, 2512, 2504,   59,
-     2512, 2512, 2522, 2522, 2512, 2512, 2523, 2523, 2512, 2512,
-     2512, 2512, 2524, 2524, 2524, 2524, 2512, 2512, 2525, 2525,
-     2526, 2526, 2512, 2512, 2504,   85, 2527, 2527, 2512, 2512,
-     2504,   91, 2528, 2528, 2512, 2512, 2504,   97, 2529, 2529,
-
-     2512, 2512, 2504,  103, 2530, 2530, 2512, 2512, 2504,  109,
-     2531, 2531, 2512, 2512, 2504,  115, 2532, 2532, 2512, 2512,
-     2504,  121, 2512, 2512, 2533, 2533, 2534, 2534, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2535, 2504, 2504, 2535, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2536, 2504, 2504, 2536, 2536, 2536,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2537, 2504, 2504,
-     2537, 2537, 2537, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-
-     2538, 2504, 2504, 2538, 2538, 2538, 2538, 2538, 2538, 2504,
-     2504, 2504, 2504, 2504, 2504, 2539, 2504, 2504, 2539, 2539,
-     2539, 2539, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2540,
-     2504, 2504, 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
-     2540, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2541, 2504,
-     2504, 2541, 2541, 2504, 2504, 2504,  254, 2504, 2504, 2504,
-     2504, 2504, 2542, 2504, 2504, 2542, 2542, 2542, 2542, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2543, 2504, 2504, 2543,
-     2543, 2543, 2543, 2543, 2543, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2544, 2504, 2504, 2544, 2544, 2544, 2544, 2544,
-
-     2544, 2544, 2544, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2545, 2504, 2504, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
-     2545, 2545, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2546,
-     2504, 2504, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
-     2546, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2547, 2504,
-     2504, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547,
-     2547, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2548, 2504,
-     2504, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548,
-     2548, 2548, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2549,
-     2504, 2504, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549,
-
-     2549, 2549, 2549, 2549, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2550, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2535, 2535, 2504, 2551, 2504, 2504, 2504, 2504, 2504, 2536,
-     2536, 2536, 2536, 2552, 2504, 2537, 2537, 2537, 2537, 2553,
-     2504, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2554,
-     2504, 2539, 2539, 2539, 2539, 2539, 2555, 2504, 2540, 2540,
-     2540, 2540, 2540, 2540, 2540, 2540, 2504, 2504, 2504, 2504,
-     2504, 2556, 2504, 2541, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2557, 2504, 2542, 2542,
-
-     2542, 2504, 2504, 2504, 2504, 2558, 2504, 2543, 2543, 2543,
-     2543, 2543, 2543, 2504, 2504, 2504, 2504, 2559, 2504, 2544,
-     2544, 2504, 2504, 2544, 2544, 2544, 2544, 2504, 2504, 2504,
-     2504, 2504, 2504, 2560, 2504, 2545, 2545, 2545, 2545, 2545,
-     2545, 2545, 2545, 2545, 2504, 2504, 2504, 2504, 2561, 2504,
-     2504, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
-     2504, 2504, 2504, 2504, 2562, 2504, 2547, 2547, 2547, 2547,
-     2547, 2547, 2547, 2547, 2547, 2547, 2504, 2504, 2504, 2504,
-     2563, 2504, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548,
-     2548, 2548, 2504, 2504, 2504, 2504, 2564, 2504, 2549, 2549,
-
-     2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549,
-     2504, 2504, 2504, 2504, 2565, 2504, 2504, 2566, 2504, 2566,
-     2504, 2504, 2504, 2567, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2568, 2504, 2569, 2569, 2504, 2504, 2504, 2504, 2570,
-     2570, 2504, 2504, 2571, 2571, 2572, 2504, 2504, 2572, 2573,
-     2573, 2574, 2574, 2504, 2504, 2574, 2574, 2574, 2574, 2575,
-     2575, 2576, 2576, 2576, 2576, 2577, 2577, 2578, 2578, 2578,
-     2504, 2504, 2578, 2578, 2578, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2579, 2579, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2580, 2580,
-
-     2581, 2581, 2504, 2504, 2504, 2504, 2504, 2504, 2582, 2582,
-     2583, 2504, 2504, 2583, 2583, 2583, 2504, 2504, 2504, 2504,
-     2504, 2504, 2584, 2584, 2585, 2504, 2504, 2504, 2585, 2504,
-     2504, 2585, 2585, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2586, 2586, 2587, 2587, 2587, 2504, 2504, 2587,
-     2587, 2587, 2504, 2504, 2587, 2504, 2504, 2504, 2504, 2504,
-     2504, 2588, 2588, 2589, 2589, 2589, 2504, 2504, 2589, 2589,
-     2589, 2589, 2589, 2504, 2504, 2504, 2504, 2504, 2504, 2590,
-     2590, 2591, 2591, 2591, 2504, 2504, 2591, 2591, 2591, 2504,
-     2504, 2591, 2504, 2504, 2504, 2504, 2504, 2504, 2592, 2592,
-
-     2593, 2593, 2593, 2593, 2504, 2504, 2593, 2593, 2593, 2593,
-     2504, 2504, 2504, 2504, 2504, 2504, 2594, 2594, 2595, 2595,
-     2595, 2504, 2504, 2595, 2595, 2595, 2595, 2595, 2595, 2595,
-     2504, 2504, 2504, 2504, 2504, 2504, 2596, 2596, 2504, 2504,
-     2597, 2504, 2504, 2597, 2504, 2504, 2598, 2504, 2504, 2504,
-     2504, 2504, 2504, 2599, 2504, 2504, 2600, 2504, 2600, 2504,
-     2504, 2504, 2504, 2601, 2601, 2504, 2504, 2504, 2504, 2602,
-     2504, 2602, 2603, 2504, 2504, 2504, 2504, 2504, 2504, 2604,
-     2504, 2604, 2605, 2605, 2504, 2504, 2504, 2605, 2605, 2605,
-     2605, 2504, 2606, 2504, 2606, 2607, 2607, 2607, 2607, 2504,
-
-     2608, 2504, 2608, 2609, 2609, 2609, 2504, 2504, 2504, 2609,
-     2609, 2609, 2504, 2504, 2610, 2504, 2610, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2611, 2504, 2611, 2612,
-     2612, 2504, 2613, 2504, 2613, 2614, 2504, 2504, 2504, 2614,
-     2614, 2614, 2504, 2615, 2504, 2615, 2616, 2616, 2504, 2504,
-     2504, 2616, 2616, 2504, 2617, 2504, 2617, 2618, 2618, 2618,
-     2504, 2504, 2504, 2618, 2618, 2618, 2504, 2504, 2504, 2618,
-     2504, 2619, 2504, 2619, 2620, 2620, 2620, 2504, 2504, 2504,
-     2620, 2620, 2620, 2620, 2620, 2620, 2504, 2621, 2504, 2621,
-     2504, 2504, 2622, 2622, 2504, 2504, 2504, 2504, 2504, 2622,
-
-     2622, 2504, 2504, 2504, 2622, 2504, 2623, 2504, 2623, 2624,
-     2624, 2624, 2624, 2504, 2504, 2504, 2624, 2624, 2624, 2624,
-     2504, 2625, 2504, 2625, 2504, 2504, 2626, 2626, 2504, 2504,
-     2504, 2626, 2626, 2504, 2504, 2626, 2626, 2626, 2626, 2504,
-     2627, 2504, 2627, 2504, 2628, 2629, 2504, 2504, 2504, 2504,
-     2504, 2630, 2504, 2631, 2504, 2504, 2504, 2504, 2632, 2504,
-     2504, 2633, 2634, 2504, 2504, 2504, 2635, 2636, 2504, 2504,
-     2636, 2504, 2504, 2636, 2636, 2637, 2638, 2638, 2504, 2504,
-     2638, 2639, 2640, 2640, 2640, 2640, 2640, 2640, 2504, 2641,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2642, 2643,
-
-     2643, 2644, 2504, 2504, 2645, 2645, 2645, 2646, 2647, 2504,
-     2504, 2647, 2647, 2648, 2649, 2504, 2504, 2504, 2504, 2649,
-     2649, 2649, 2649, 2650, 2651, 2651, 2504, 2504, 2504, 2504,
-     2504, 2504, 2651, 2651, 2651, 2651, 2652, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2653, 2504, 2504,
-     2653, 2654, 2655, 2655, 2504, 2504, 2504, 2504, 2655, 2504,
-     2504, 2655, 2655, 2656, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2657, 2657, 2504, 2504, 2504, 2657, 2657, 2657, 2657,
-     2658, 2504, 2659, 2660, 2660, 2504, 2660, 2504, 2504, 2504,
-     2661, 2504, 2662, 2504, 2504, 2504, 2504, 2663, 2504, 2504,
-
-     2504, 2664, 2504, 2504, 2635, 2504, 2504, 2504, 2504, 2504,
-     2636, 2504, 2504, 2504, 2636, 2636, 2637, 2638, 2504, 2504,
-     2504, 2504, 2504, 2638, 2639, 2504, 2504, 2640, 2640, 2640,
-     2640, 2640, 2504, 2641, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2642, 2643, 2504, 2504, 2644, 2504, 2504, 2504,
-     2504, 2504, 2645, 2645, 2646, 2504, 2504, 2504, 2504, 2504,
-     2647, 2647, 2648, 2649, 2504, 2504, 2504, 2504, 2504, 2504,
-     2649, 2649, 2649, 2649, 2650, 2651, 2651, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2651, 2651, 2651, 2651,
-     2652, 2504, 2504, 2504, 2504, 2504, 2504, 2653, 2504, 2504,
-
-     2504, 2653, 2654, 2504, 2504, 2655, 2504, 2504, 2504, 2504,
-     2504, 2504, 2655, 2504, 2504, 2504, 2655, 2504, 2504, 2656,
-     2504, 2504, 2504, 2504, 2504, 2504, 2657, 2657, 2657, 2657,
-     2657, 2504, 2504, 2658, 2504, 2659, 2660, 2504, 2504, 2504,
-     2504, 2504, 2662, 2504, 2504, 2504, 2663, 2664, 2504, 2504,
-     2504, 2635, 2504, 2504, 2504, 2504, 2504, 2636, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2638, 2639, 2504,
-     2504, 2504, 2640, 2640, 2640, 2640, 2640, 2504, 2641, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2642, 2643, 2504,
-     2504, 2504, 2644, 2504, 2504, 2504, 2645, 2645, 2646, 2504,
-
-     2504, 2504, 2647, 2647, 2648, 2649, 2649, 2649, 2649, 2649,
-     2650, 2651, 2651, 2651, 2651, 2651, 2651, 2652, 2653, 2653,
-     2654, 2504, 2504, 2504, 2655, 2504, 2504, 2655, 2655, 2504,
-     2504, 2504, 2656, 2657, 2657, 2657, 2657, 2657, 2504, 2504,
-     2504, 2658, 2504, 2659, 2660, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2663, 2664, 2504, 2504, 2504, 2504, 2504,
-     2636, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2639,
-     2640, 2640, 2640, 2640, 2504, 2504, 2504, 2641, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2642, 2643, 2644, 2504,
-     2504, 2504, 2504, 2646, 2504, 2504, 2504, 2504, 2648, 2649,
-
-     2504, 2504, 2649, 2649, 2504, 2504, 2650, 2651, 2651, 2651,
-     2651, 2651, 2651, 2504, 2504, 2652, 2653, 2504, 2504, 2654,
-     2504, 2504, 2504, 2504, 2504, 2655, 2504, 2504, 2656, 2657,
-     2657, 2657, 2657, 2504, 2504, 2658, 2504, 2659, 2660, 2504,
-     2663, 2504, 2504, 2636, 2504, 2504, 2504, 2639, 2504, 2504,
-     2504, 2504, 2640, 2640, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2642, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2646, 2504,
-     2504, 2504, 2504, 2504, 2504, 2648, 2504, 2504, 2504, 2504,
-     2504, 2649, 2649, 2649, 2504, 2504, 2504, 2650, 2651, 2651,
-
-     2651, 2651, 2504, 2504, 2504, 2504, 2651, 2651, 2651, 2504,
-     2504, 2504, 2652, 2653, 2504, 2504, 2504, 2654, 2504, 2504,
-     2504, 2655, 2504, 2504, 2504, 2656, 2657, 2657, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2658, 2504, 2659, 2660, 2504,
-     2663, 2504, 2504, 2639, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2640, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2642, 2504, 2504, 2504, 2646, 2648, 2504, 2504, 2504,
-     2649, 2649, 2649, 2650, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2651, 2651,
-     2651, 2652, 2653, 2654, 2655, 2656, 2504, 2504, 2657, 2504,
-
-     2504, 2504, 2504, 2504, 2504, 2658, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2660, 2504, 2504,
-     2504, 2504, 2504, 2504, 2639, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2642, 2646,
-     2648, 2504, 2504, 2649, 2649, 2650, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2651, 2651,
-     2651, 2651, 2652, 2653, 2654, 2655, 2656, 2504, 2504, 2504,
-     2657, 2658, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2660, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-
-     2504, 2504, 2504, 2642, 2646, 2648, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2650, 2504, 2504, 2504, 2504, 2651, 2651,
-     2651, 2651, 2652, 2504, 2504, 2654, 2504, 2504, 2656, 2657,
-     2658, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2660, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2642, 2646, 2648, 2504, 2504, 2504,
-     2504, 2504, 2504, 2650, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2652, 2504,
-     2504, 2504, 2654, 2504, 2504, 2504, 2656, 2504, 2504, 2658,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-
-     2659, 2659, 2659, 2659, 2660, 2660, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2642, 2646, 2648, 2650, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2652,
-     2654, 2504, 2504, 2504, 2504, 2504, 2658, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2660, 2665, 2666, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2648, 2650, 2652, 2654, 2658, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2665, 2666, 2504, 2504, 2504, 2648, 2504,
-     2504, 2652, 2504, 2504, 2658, 2659, 2659, 2659, 2659, 2659,
-
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2660, 2504, 2504, 2504, 2648, 2652, 2658, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2504, 2648, 2504, 2504, 2504, 2504, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2504, 2504, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2504, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2504,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2504, 2659, 2659, 2659, 2659, 2504, 2659, 2504, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2504, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2504, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2504,
-     2659, 2659, 2659, 2659, 2504, 2659, 2504, 2659, 2659, 2659,
-     2659, 2659, 2659, 2504, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2504, 2659, 2659, 2659, 2659, 2659, 2504, 2659, 2504,
-
-     2659, 2659, 2504,    0, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504
-    } ;
-
-static yyconst short int yy_nxt[8316] =
-    {   0,
-     2504,  132,  133,  132,  132,  133,  132,  132,  133,  132,
-      132,  133,  132,  137,  133,  137,  143,  134,  140,  143,
-      134,  140, 1186,  135, 2504,  141,  135,  619,  141,  138,
-      137,  133,  137,  415,  144,  146,  147,  144,  146,  147,
-      148,  149,  620,  148,  149,  415,  138,  153,  154,  416,
-      150,  146,  147,  150,  151,  418,  148,  146,  147, 1539,
-      151,  417,  148,  153,  154,  537,  150,  133,  133,  133,
-      538,  417,  150,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  510,  157,  155,  414,  414,  414,  693,  157,
-      511,  556,  165,  842,  682,  165,  414,  414,  414,  557,
-
-      155,  158,  159,  133,  159,  158,  158,  158,  158,  158,
-      158,  158,  160,  158,  158,  158, 1832,  158,  162,  158,
-      163,  158,  167,  133,  167,  167,  133,  167,  133,  133,
-      133,  133,  133,  133,  167,  133,  167,  603,  168,  158,
-      158,  168,  625, 1186,  169,  626,  604,  169,  981,  982,
-      168, 1851,  164,  158,  159,  133,  159,  158,  158,  158,
-      158,  158,  158,  158,  160,  158,  158,  158, 1445,  158,
-      162,  158,  163,  158,  167,  133,  167,  167,  133,  167,
-      167,  133,  167,  133,  133,  133,  133,  133,  133,  750,
-      168,  158,  158,  170,  770, 1852,  170,  842,  751,  171,
-
-     1853, 1045,  171,  771,  164,  172,  173,  133,  173,  172,
-      172,  172,  172,  172,  172,  172,  174,  172,  172,  172,
-      842,  172,  176,  172,  177,  172,  182,  133,  182,  842,
-      182,  133,  182,  133,  133,  133,  133,  133,  133,  414,
-      414,  414,  183,  172,  172,  178,  183, 1336, 1908,  184,
-      179, 1781,  184,  180,  172,  173,  133,  173,  172,  172,
-      172,  172,  172,  172,  172,  174,  172,  172,  172,  842,
-      172,  176,  172,  177,  172,  195,  133,  195, 1909,  195,
-      133,  195,  133,  133,  133,  133,  133,  133,  414,  414,
-      414,  196,  172,  172,  178,  196, 1510, 1511,  197,  179,
-
-     1783,  197,  180,  185,  186,  133,  186,  185,  185,  185,
-      185,  185,  185,  185,  187,  185,  185,  185,  842,  185,
-      189,  185,  190,  185,  211,  133,  211,  211,  133,  211,
-      133,  133,  133,  133,  133,  133,  414,  414,  414,  842,
-      212,  185,  185,  212, 1911, 1538,  165,  191,  842,  165,
-     1780,  192,  193,  185,  186,  133,  186,  185,  185,  185,
-      185,  185,  185,  185,  187,  185,  185,  185,  842,  185,
-      189,  185,  190,  185,  224,  133,  224,  224,  133,  224,
-      133,  133,  133,  133,  133,  133,  414,  414,  414, 1778,
-      225,  185,  185,  225, 1592, 1593,  226,  191, 1912,  226,
-
-     1892,  192,  193,  198,  199,  133,  199,  198,  198,  198,
-      198,  198,  198,  198,  200,  198,  198,  198,  201,  198,
-      202,  198,  203,  198,  201,  201,  201,  201,  201,  201,
-      201,  201,  201,  201,  201,  201,  201,  201,  201,  201,
-      201,  198,  198,  201,  201,  204,  201,  201,  205,  201,
-      201,  206,  201,  201,  201,  201,  201,  201,  201,  201,
-      207,  201,  208,  201,  209,  201,  201,  201,  213,  214,
-      133,  214,  213,  213,  213,  213,  213,  213,  213,  215,
-      213,  213,  213,  842,  213,  217,  213,  218,  213,  133,
-      133,  133,  842,  133,  133,  133, 1444,  244,  133,  244,
-
-      244,  133,  244,  418,  573,  242,  213,  213,  219,  242,
-      418,  418,  220,  245,  574, 1841,  245,  434,  842,  417,
-      221,  414,  414,  414, 1599, 1600,  417,  417, 1913,  222,
-      213,  214,  133,  214,  213,  213,  213,  213,  213,  213,
-      213,  215,  213,  213,  213, 1898,  213,  217,  213,  218,
-      213,  133,  133,  133,  842,  133,  133,  133, 1186,  133,
-      133,  133,  133,  133,  133,  418,  844,  242,  213,  213,
-      219,  242,  418,  418,  220,  254, 1601, 1602,  254,  444,
-      842,  417,  221,  435,  414,  414,  414, 1718,  417,  417,
-     1946,  222,  227,  228,  133,  228,  227,  227,  227,  227,
-
-      227,  227,  227,  229,  227,  227,  227,  230,  227,  231,
-      227,  232,  227,  230,  230,  230,  230,  230,  230,  230,
-      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
-      227,  227,  233,  230,  230,  234,  230,  235,  230,  230,
-      236,  230,  230,  237,  230,  230,  238,  230,  230,  230,
-      230,  230,  239,  230,  240,  241,  230,  246,  247,  133,
-      247,  246,  246,  246,  246,  246,  246,  246,  248,  246,
-      246,  246,  842,  246,  250,  246,  251,  246,  133,  133,
-      133,  133,  133,  133,  256,  133,  256,  256,  133,  256,
-      256,  133,  256,  418,  254,  246,  246,  254,  455,  418,
-
-      257,  418,  418,  257, 1607, 1608,  258,  842,  450,  417,
-      414,  414,  414,  456,  436,  417, 1899,  417,  417,  252,
-      253,  246,  247,  133,  247,  246,  246,  246,  246,  246,
-      246,  246,  248,  246,  246,  246, 1786,  246,  250,  246,
-      251,  246,  256,  133,  256,  133,  133,  133,  133,  133,
-      133,  271,  133,  271,  271,  133,  271,  418,  258,  246,
-      246,  259,  418, 1956,  259, 1759, 1760,  272, 1957,  460,
-      272, 1819, 1820,  417,  414,  414,  414, 1958,  417,  437,
-      414,  414,  414,  252,  253,  260,  261,  133,  261,  260,
-      260,  260,  260,  260,  260,  260,  262,  260,  260,  260,
-
-     1186,  260,  264,  260,  265,  260,  133,  133,  133,  133,
-      133,  133,  287,  133,  287,  287,  133,  287,  133,  133,
-      133, 1986,  273,  260,  260,  273, 1821, 1822,  288,  418,
-      418,  288, 1987, 1988,  289,  414,  414,  414, 1639,  266,
-     2014,  267,  414,  414,  414,  417,  417,  268,  269,  260,
-      261,  133,  261,  260,  260,  260,  260,  260,  260,  260,
-      262,  260,  260,  260,  842,  260,  264,  260,  265,  260,
-      133,  133,  133,  305,  133,  305,  305,  133,  305,  133,
-      133,  133,  133,  133,  133, 1839,  289,  260,  260,  306,
-      418,  418,  306,  418,  842,  307, 1850,  467,  307,  414,
-
-      414,  414, 2022,  266,  842,  267,  417,  417, 1949,  417,
-      481,  268,  269,  274,  275,  133,  275,  274,  274,  274,
-      274,  274,  274,  274,  276,  274,  274,  274,  277,  274,
-      278,  274,  279,  274,  277,  277,  277,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
-      277,  274,  274,  277,  277,  277,  277,  277,  277,  277,
-      280,  281,  277,  277,  277,  277,  282,  277,  277,  277,
-      277,  277,  277,  283,  277,  284,  285,  277,  290,  291,
-      133,  291,  290,  290,  290,  290,  290,  290,  290,  292,
-      290,  290,  290,  293,  290,  294,  290,  295,  290,  293,
-
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  290,  290,  293,  293,
-      296,  293,  293,  293,  293,  297,  298,  293,  293,  293,
-      293,  299,  293,  293,  293,  293,  293,  293,  300,  301,
-      302,  303,  293,  308,  309,  133,  309,  308,  308,  308,
-      308,  308,  308,  308,  310,  308,  308,  308,  311,  308,
-      312,  308,  313,  308,  311,  311,  311,  311,  311,  311,
-      311,  311,  311,  311,  311,  311,  311,  311,  311,  311,
-      311,  308,  308,  311,  311,  311,  314,  311,  311,  311,
-      315,  316,  311,  311,  311,  311,  317,  311,  311,  311,
-
-      311,  318,  319,  320,  311,  321,  322,  311,  324,  133,
-      324,  324,  133,  324,  133,  133,  133,  133,  133,  133,
-      414,  414,  414,  842,  325,  842, 1972,  325,  842, 1976,
-      326, 1849, 1998,  326,  327,  328,  133,  328,  327,  327,
-      327,  327,  327,  327,  327,  329,  327,  327,  327,  330,
-      327,  331,  327,  332,  327,  330,  330,  330,  330,  330,
-      330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
-      330,  330,  327,  327,  330,  330,  333,  334,  330,  330,
-      330,  335,  336,  330,  330,  330,  330,  337,  330,  330,
-      330,  330,  338,  330,  339,  330,  340,  341,  330,  343,
-
-      133,  343,  343,  133,  343,  133,  133,  133,  133,  133,
-      133,  414,  414,  414, 1848,  344,  842, 1847,  344, 1830,
-     2006,  345, 1186, 1187,  345,  346,  347,  133,  347,  346,
-      346,  346,  346,  346,  346,  346,  348,  346,  346,  346,
-      349,  346,  350,  346,  351,  346,  349,  349,  349,  349,
-      349,  349,  349,  349,  349,  349,  349,  349,  349,  349,
-      349,  349,  349,  346,  346,  352,  349,  349,  353,  349,
-      349,  349,  354,  355,  349,  349,  349,  349,  356,  349,
-      349,  349,  349,  357,  358,  359,  349,  360,  361,  349,
-      363,  133,  363,  363,  133,  363,  133,  133,  133,  133,
-
-      133,  133,  414,  414,  414, 1803,  364,  842, 1802,  364,
-      842, 2042,  365, 1801, 2047,  365,  366,  367,  133,  367,
-      366,  366,  366,  366,  366,  366,  366,  368,  366,  366,
-      366,  369,  366,  370,  366,  371,  366,  369,  369,  369,
-      369,  369,  369,  369,  369,  369,  369,  369,  369,  369,
-      369,  369,  369,  369,  366,  366,  372,  369,  369,  373,
-      369,  374,  369,  375,  376,  369,  369,  369,  369,  369,
-      369,  369,  369,  377,  378,  369,  379,  380,  381,  382,
-      369,  384,  133,  384,  384,  133,  384,  133,  133,  133,
-      133,  133,  133,  414,  414,  414,  842,  385,  842, 1800,
-
-      385,  842, 2062,  386, 2076, 2065,  386,  387,  388,  133,
-      388,  387,  387,  387,  387,  387,  387,  387,  389,  387,
-      387,  387,  390,  387,  391,  387,  392,  387,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  387,  387,  393,  390,  390,
-      390,  390,  394,  390,  395,  396,  390,  397,  390,  390,
-      398,  399,  390,  390,  400,  390,  390,  401,  402,  403,
-      404,  390,  133,  133,  133,  133,  133,  133,  406,  133,
-      406,  406,  133,  406,  409,  410,  423,  418,  345,  411,
-     2301,  345,  418,  418,  407,  409,  410,  407,  842,  412,
-
-      411,  418, 1799,  417,  842,  842,  418, 1798,  417,  417,
-      412,  435,  842,  434,  436,  437,  842,  417,  429,  842,
-      424,  413,  417,  433,  435,  438,  425,  436,  437,  418,
-      426, 1773,  413,  438, 1842,  427,  482, 1782,  438,  477,
-      477,  477,  479,  479,  479,  417,  485,  485,  485,  487,
-      487,  487,  418,  418,  418, 1833,  478,  842, 1834,  480,
-      497, 1797, 1796,  486, 1771,  418,  488,  418,  417,  417,
-      417,  489,  502,  502,  502,  504,  504,  504,  414,  414,
-      414,  417, 1835,  417,  489,  490,  491,  418,  418,  503,
-      842,  492,  505,  842,  506,  493,  494,  495,  496,  414,
-
-      414,  414,  842,  417,  417,  514,  514,  514,  516,  516,
-      516,  418,  492,  414,  414,  414,  418, 1186,  518,  414,
-      414,  414,  515, 1840, 1779,  517, 1836,  417, 1764,  522,
-      522,  522,  417,  528,  528,  528,  530,  530,  530,  532,
-      532,  532,  414,  414,  414,  494,  523,  418,  418,  418,
-      529, 1787,  842,  531,  534,  842,  533,  414,  414,  414,
-      545,  545,  545,  417,  417,  417,  490,  547,  547,  547,
-      418,  418,  524,  414,  414,  414,  418,  546,  549,  414,
-      414,  414,  842,  842,  548, 1838,  417,  417, 1845,  550,
-      418,  418,  417,  561,  561,  561,  563,  563,  563,  414,
-
-      414,  414,  418,  414,  414,  414,  417,  417, 1837,  565,
-      562,  418,  418,  564,  577,  577,  577, 1970,  417,  581,
-      495,  579,  579,  579,  414,  414,  414,  417,  417,  418,
-     1762,  578,  414,  414,  414,  593,  593,  593,  580,  595,
-      595,  595,  496,  418,  418,  417,  414,  414,  414,  418,
-      597,  423,  594,  414,  414,  414,  596,  418,  842,  417,
-      417,  611,  611,  611,  615,  417,  613,  613,  613,  414,
-      414,  414,  493,  417,  414,  414,  414, 1761,  612,  623,
-      623,  623,  842,  614, 1745,  424,  642,  642,  642, 1744,
-      842,  425,  647,  647,  647,  426,  654,  654,  654,  842,
-
-      427, 1843,  842,  643,  671,  671,  671, 1844,  842,  648,
-      477,  477,  477,  655, 1186,  676,  676,  676, 1183,  677,
-     1941,  672,  678,  479,  479,  479,  842,  478, 1774,  624,
-      679,  679,  679, 1784,  680, 1738, 1785,  681,  842, 1775,
-      480,  485,  485,  485,  685,  685,  685, 1846,  686, 1894,
-      842,  687,  487,  487,  487,  688,  688,  688,  486,  689,
-      842,  842,  690,  502,  502,  502,  703,  703,  703,  488,
-      704, 1896,  842,  705,  504,  504,  504,  706,  706,  706,
-      503,  707, 1903,  842,  708,  712,  712,  712,  514,  514,
-      514,  505,  717,  717,  717, 1938,  718, 1942, 2024,  719,
-
-     1891,  842,  713,  842,  842,  515,  516,  516,  516,  720,
-      720,  720,  842,  721,  842,  842,  722,  522,  522,  522,
-      726,  726,  726,  517,  727, 1901,  842,  728,  730,  730,
-      730,  528,  528,  528,  523,  734,  734,  734, 1904,  735,
-     1776, 2004,  736, 1893, 1977,  731, 1777, 1939,  529,  530,
-      530,  530,  737,  737,  737, 1737,  738,  842,  842,  739,
-      532,  532,  532,  740,  740,  740,  531,  741,  842,  842,
-      742,  748,  748,  748,  753,  753,  753,  533,  545,  545,
-      545,  842,  756,  756,  756,  842,  757,  842,  749,  758,
-     1971,  754,  547,  547,  547,  546,  759,  759,  759, 1736,
-
-      760, 2021, 1947,  761,  767,  767,  767, 1895, 1897,  548,
-      561,  561,  561,  774,  774,  774,  842,  775,  842, 1940,
-      776,  768,  563,  563,  563,  842, 1900,  562,  777,  777,
-      777,  842,  778,  842,  842,  779,  785,  785,  785,  564,
-      790,  790,  790,  577,  577,  577,  842,  793,  793,  793,
-     1945,  794, 1951,  786,  795, 1902,  842,  791, 1948, 1950,
-      578,  579,  579,  579,  796,  796,  796,  842,  797,  842,
-     1943,  798,  805,  805,  805,  593,  593,  593,  580,  811,
-      811,  811,  842,  812,  842,  842,  813,  842, 1983,  806,
-     1973,  842,  594,  595,  595,  595,  814,  814,  814,  842,
-
-      815, 1980, 1978,  816,  822,  822,  822,  611,  611,  611,
-      596,  831,  831,  831, 2005,  832,  842, 2007,  833, 1969,
-     2165,  823, 1979,  842,  612,  613,  613,  613,  834,  834,
-      834,  842,  835, 1999, 2002,  836,  623,  623,  623,  842,
-      846,  842,  614,  856,  856,  856,  856,  856,  856,  642,
-      642,  642,  866,  866,  866,  842,  867, 2003,  842,  868,
-      842,  858, 2000,  842,  858, 2031,  643,  869,  869,  869,
-      869,  869,  869,  647,  647,  647,  874,  874,  874, 2124,
-      875, 2023,  842,  876, 1735,  871,  842, 1734,  871, 2020,
-      648, 2009,  859,  877,  877,  877,  879,  879,  879, 2026,
-
-      879,  879,  879,  654,  654,  654,  892,  892,  892,  842,
-      878,  892,  892,  892,  881, 2025,  842,  872,  881, 2041,
-      655,  885,  885,  885,  894,  886,  842, 2030,  887,  894,
-      900,  900,  900,  900,  900,  900,  671,  671,  671,  907,
-      907,  907,  842,  908,  842,  842,  909, 2027,  902,  842,
-      842,  902,  842,  672,  676,  676,  676, 2044,  677,  882,
-     2028,  678,  842,  895,  679,  679,  679, 2039,  680,  842,
-     2040,  681,  914,  914,  914,  914,  914,  914, 2049,  903,
-      685,  685,  685, 2029,  686, 2045,  842,  687, 1733, 2046,
-      916,  842,  842,  916,  688,  688,  688, 2083,  689, 2043,
-
-      842,  690,  926,  926,  926,  926,  926,  926,  703,  703,
-      703, 2048,  704,  842, 1732,  705, 2229,  706,  706,  706,
-      928,  707,  917,  928,  708,  932,  932,  932,  932,  932,
-      932,  712,  712,  712,  937,  937,  937, 2050,  938,  842,
-      842,  939,  842,  934,  842,  842,  934, 2052,  713,  717,
-      717,  717,  842,  718, 2051, 2056,  719,  929,  720,  720,
-      720,  842,  721, 2053,  842,  722,  943,  943,  943,  943,
-      943,  943, 2144,  726,  726,  726, 2057,  727, 2059,  935,
-      728,  730,  730,  730,  945,  842, 1731,  945,  949,  949,
-      949, 2058,  950, 2166,  842,  951, 1699,  842,  731,  734,
-
-      734,  734,  842,  735,  842,  842,  736,  737,  737,  737,
-     2061,  738,  842, 2068,  739,  842,  740,  740,  740,  946,
-      741, 2086, 2063,  742,  954,  954,  954,  954,  954,  954,
-      748,  748,  748,  961,  961,  961, 2060,  962, 2064,  842,
-      963,  842,  956, 1693, 2066,  956, 2067,  749,  753,  753,
-      753,  967,  967,  967, 2070,  968,  842, 2071,  969,  756,
-      756,  756,  842,  757,  842,  754,  758,  759,  759,  759,
-      957,  760, 2072,  842,  761,  971,  971,  971,  971,  971,
-      971,  767,  767,  767,  978,  978,  978, 1691,  979,  842,
-     1690,  980, 1689,  973,  842, 2074,  973,  842,  768,  774,
-
-      774,  774,  842,  775, 2075, 2077,  776,  777,  777,  777,
-     2073,  778,  842, 2230,  779,  987,  987,  987,  842,  987,
-      987,  987,  991,  991,  991, 2504, 2504, 2504, 2504, 2504,
-     2504, 2078,  842,  989,  842, 2079,  974,  989,  842,  992,
-     2087, 2325, 2504, 2082,  842, 2504,  785,  785,  785,  995,
-      995,  995, 2080,  996, 1673,  842,  997,  998,  998,  998,
-     2504, 2504, 2504,  786,  842,  990, 2088, 2504, 2504, 2504,
-      790,  790,  790,  842,  999, 2081,  993, 2504, 1002, 1002,
-     1002,  994, 1003, 2089, 2504, 1004,  842,  791, 2504, 2504,
-     2504,  793,  793,  793,  842,  794,  842, 2095,  795,  796,
-
-      796,  796, 2085,  797, 1672, 2504,  798, 2091, 2090, 1000,
-     1001, 1006, 1006, 1006, 1006, 1006, 1006,  805,  805,  805,
-     1014, 1014, 1014,  842, 1015, 2093, 1671, 1016,  842, 1008,
-     1661,  842, 1008,  842,  806, 1005,  811,  811,  811, 2098,
-      812,  842, 2101,  813,  814,  814,  814, 2100,  815,  842,
-      842,  816, 1021, 1021, 1021, 1021, 1021, 1021, 1025, 1025,
-     1025,  842, 2094, 1009, 2504, 2504, 2504, 2504, 2504, 2504,
-     1023,  842, 2111, 1023, 1660, 1026,  822,  822,  822, 2099,
-      842, 2504, 2102, 2096, 2504, 1029, 1029, 1029, 2125, 1030,
-      842, 2116, 1031,  823, 2504, 2504, 2504,  842, 1024, 2504,
-
-     2504, 2504, 1034, 1034, 1034, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2130, 2504,  842,  842, 1035,
-     1028, 1027, 2504,  842, 2120, 2504, 2504, 2504, 2504, 2504,
-      831,  831,  831,  842,  832,  842,  842,  833,  834,  834,
-      834, 2141,  835, 2504, 1033,  836, 1032, 2184, 2103, 1037,
-     1040, 1040, 1040, 1040, 1040, 1040,  856,  856,  856, 1038,
-      856,  856,  856,  856,  856,  856, 1659, 1036, 1042,  842,
-     2104, 1042, 2110, 2128,  858, 1060, 1060, 1060,  858,  842,
-     2207,  858,  842, 1039,  866,  866,  866, 2146,  867,  842,
-     2174,  868, 1061,  869,  869,  869,  869,  869,  869,  869,
-
-      869,  869, 1043,  874,  874,  874, 1054,  875,  842,  842,
-      876,  871, 2336, 2112,  871,  842, 1658,  871,  877,  877,
-      877, 1064, 1064, 1064, 2115, 1065,  842,  842, 1066,  879,
-      879,  879,  879,  879,  879,  878,  879,  879,  879, 2140,
-     1069, 1069, 1069, 2133,  885,  885,  885,  881,  886, 2127,
-      881,  887,  842,  842,  881,  842, 1062, 1070, 1072, 1072,
-     1072,  842,  892,  892,  892,  892,  892,  892,  892,  892,
-      892, 1079, 1079, 1079,  842, 1073,  900,  900,  900, 1067,
-      894, 1657, 2145,  894, 2147, 2249,  894,  842, 1080,  900,
-      900,  900,  842, 2142,  902,  900,  900,  900,  907,  907,
-
-      907,  842,  908,  842,  842,  909,  842,  902,  914,  914,
-      914,  842, 2143,  902,  914,  914,  914, 2153,  842, 1076,
-     2171,  914,  914,  914,  842, 2151,  916,  926,  926,  926,
-     2152, 2163,  916,  926,  926,  926, 2160, 2148, 1082,  916,
-      926,  926,  926,  842, 2156,  928,  932,  932,  932, 2192,
-      842,  928,  932,  932,  932,  932,  932,  932,  928, 1103,
-     1103, 1103, 2157,  842,  934, 2150,  842,  937,  937,  937,
-      934,  938, 1090,  934,  939,  842, 1104, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504,  943,  943,  943, 1656,
-     2250, 1099,  842, 2164, 2504,  842, 1102, 2504, 2204,  842,
-
-     2504,  943,  943,  943,  945,  842,  943,  943,  943, 1110,
-     1110, 1110,  842, 2158,  949,  949,  949, 2170,  950,  945,
-     1105,  951,  842, 1107,  945, 2172, 1111, 1106,  954,  954,
-      954,  954,  954,  954,  954,  954,  954, 1116, 1116, 1116,
-     1118, 1118, 1118, 2159,  842, 1108,  956, 1655,  842,  956,
-     2175, 1654,  956, 2169, 1117,  842,  842, 1119,  961,  961,
-      961,  842,  962, 2162, 1641,  963,  967,  967,  967,  842,
-      968, 2167, 1640,  969, 2173, 1114,  971,  971,  971,  971,
-      971,  971,  971,  971,  971, 1127, 1127, 1127,  978,  978,
-      978, 2177,  979, 2176,  973,  980,  842,  973,  842, 2178,
-
-      973,  842, 1128, 1129, 1129, 1129, 1131, 1131, 1131,  987,
-      987,  987,  987,  987,  987,  987,  987,  987, 1637,  842,
-     1130,  842, 1628, 1132,  991,  991,  991,  989, 2179, 2186,
-      989, 2180, 2213,  989, 2181, 1627, 1138, 1138, 1138, 1124,
-     1139,  992,  842, 1140, 1141, 1141, 1141, 1143, 1143, 1143,
-      995,  995,  995,  842,  996,  842,  842,  997, 1137,  842,
-     2203, 1142,  842,  842, 1144,  998,  998,  998, 1145, 1145,
-     1145, 2183, 1146,  842, 2210, 1147, 2504, 2504, 2504, 1149,
-     1149, 1149,  999, 1002, 1002, 1002, 2187, 1003, 2185, 2188,
-     1004, 2193, 2194, 2504,  842,  842, 1150, 2504, 2504, 2504,
-
-     1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1155,
-     1155, 1155, 1614, 2208, 2504, 1157, 1157, 1157, 1008,  842,
-      842, 1008,  842, 2198, 1008, 2196, 1156, 1014, 1014, 1014,
-     2226, 1015, 1158, 1148, 1016, 2191,  842, 1151, 1160, 1160,
-     1160, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
-     1025, 1025, 1025, 1152, 1609, 1161, 1165, 1165, 1165, 1023,
-     1166,  842, 1023, 1167,  842, 1023, 2197, 1026, 1168, 1168,
-     1168, 1170, 1170, 1170, 1029, 1029, 1029, 2202, 1030, 2225,
-      842, 1031, 2504, 2504, 2504, 1169, 2209,  842, 1171, 2504,
-     2504, 2504, 1034, 1034, 1034,  842, 1174, 1174, 1174, 2504,
-
-     1175, 1594,  842, 1176, 1567, 1566, 2504,  842, 1164, 1035,
-     2504, 2504, 2504, 2504, 2504, 2504, 2199, 2504, 2504, 2504,
-     2504, 2504, 2504, 1040, 1040, 1040,  842, 2504, 2205,  842,
-     2504, 2200, 1565, 1173, 2504,  842, 2201, 2504, 1040, 1040,
-     1040, 1042, 1172, 1040, 1040, 1040,  856,  856,  856, 1185,
-     1185, 1185,  842, 2233, 1177, 2218, 1042, 1179, 1196, 1196,
-     1196, 1042, 2206, 2231,  858, 1178, 1180, 1186, 1187, 1060,
-     1060, 1060, 1199, 1199, 1199, 1564, 1200,  842, 1563, 1201,
-     1562,  842, 1181,  869,  869,  869, 1061, 1203, 1203, 1203,
-     1064, 1064, 1064, 2212, 1065,  842, 1193, 1066,  879,  879,
-
-      879,  871,  842,  842, 1204, 1206, 1206, 1206, 1069, 1069,
-     1069, 1208, 1208, 1208, 2214, 1209,  881,  842, 1210, 2504,
-     2504, 2504, 1207, 2224, 2219, 1070, 1072, 1072, 1072, 1561,
-     1212, 1212, 1212, 1202, 1213, 2215, 2504, 1214, 2504, 2504,
-     2504,  842, 2251, 1073, 2504, 2504, 2504, 2234,  842, 1205,
-      892,  892,  892,  842,  842, 2504, 1219, 1219, 1219, 2246,
-     1211, 2504, 1079, 1079, 1079, 1221, 1221, 1221,  894, 1222,
-     2247,  842, 1223, 1220,  900,  900,  900, 2270,  842, 1080,
-     1226, 1226, 1226, 2504, 2504, 2504, 2220, 1215, 2504, 2504,
-     2504,  842,  902, 2504, 2504, 2504,  842, 1227, 1558,  842,
-
-     2504, 1216, 2504, 2504, 2504, 2504, 2232, 1217,  842, 2227,
-     2504, 2504, 2504, 2504,  914,  914,  914, 2252,  842, 2504,
-     1541,  926,  926,  926, 1225,  932,  932,  932, 2504, 1245,
-     1245, 1245,  916,  842, 2238, 1229, 2228, 2239, 1228,  928,
-      842, 2221, 1230,  934, 2256,  842, 1246, 1103, 1103, 1103,
-     1248, 1248, 1248, 1231, 1249, 2255, 1234, 1250,  842,  842,
-     1232,  943,  943,  943, 1104, 1251, 1251, 1251, 2504, 2504,
-     2504, 1247, 2504, 2504, 2504, 1256, 1256, 1256, 1243,  945,
-     1540, 2236, 1252, 2259, 1537, 2504, 1110, 1110, 1110, 2504,
-      842, 2222, 1257, 1258, 1258, 1258,  842, 1259, 2237, 2242,
-
-     1260,  842, 1533, 1111,  842, 1532, 1255,  842,  842, 1253,
-     2504, 2504, 2504, 2504, 2504, 2504,  954,  954,  954,  842,
-      842, 1254, 1116, 1116, 1116, 2260,  842, 2504,  842, 2223,
-     2504, 1265, 1265, 1265,  956, 1266, 2254, 2240, 1267, 1117,
-     1118, 1118, 1118, 1268, 1268, 1268, 2243, 1269, 1531, 2261,
-     1270, 1261,  971,  971,  971,  842, 2262, 1119, 1127, 1127,
-     1127, 2241, 1262, 2244, 1278, 1278, 1278,  842, 1279,  842,
-      973, 1280,  842, 1263,  842, 1128, 1129, 1129, 1129, 1281,
-     1281, 1281,  842, 1282, 1530, 2280, 1283, 1131, 1131, 1131,
-     1284, 1284, 1284, 1130, 1285,  842, 2286, 1286,  987,  987,
-
-      987, 1138, 1138, 1138, 1132, 1139, 2265, 2312, 1140, 1275,
-     1141, 1141, 1141, 1292, 1292, 1292,  989, 1293,  842, 2266,
-     1294, 1143, 1143, 1143, 1295, 1295, 1295, 1142, 1296, 1517,
-      842, 1297, 1513, 1145, 1145, 1145, 2279, 1146, 1144, 1291,
-     1147, 1149, 1149, 1149, 1299, 1299, 1299, 2287, 1300,  842,
-      842, 1301, 1006, 1006, 1006, 1304, 1304, 1304, 1150, 2504,
-     2504, 2504, 1155, 1155, 1155,  842, 2245, 1307, 1307, 1307,
-     1008, 1308, 1305, 2267, 1309,  842, 2504, 2263,  842, 1156,
-     1157, 1157, 1157, 1310, 1310, 1310,  842, 1311, 2282, 2268,
-     1312, 2504, 2504, 2504, 1303,  842, 2264, 1158, 1306, 1160,
-
-     1160, 1160, 1314, 1314, 1314,  842, 1315, 2334, 2504, 1316,
-     2504, 2504, 2504, 1318, 1318, 1318, 1161, 1021, 1021, 1021,
-      842, 1165, 1165, 1165,  842, 1166, 1512, 2504, 1167,  842,
-     1319, 1168, 1168, 1168, 2273, 1023,  842, 1321, 1321, 1321,
-     1313, 1322,  842, 2337, 1323, 1170, 1170, 1170, 1169, 1324,
-     1324, 1324,  842, 1325,  842,  842, 1326, 2313, 2283, 1317,
-     2275, 2305, 1171, 1174, 1174, 1174, 2276, 1175, 2274, 1509,
-     1176, 1332, 1332, 1332, 1320, 1040, 1040, 1040, 2288, 1185,
-     1185, 1185, 1339, 1339, 1339, 1340, 1340, 1340, 1333,  856,
-      856,  856,  842, 1042, 1345, 1345, 1345, 1186, 1196, 1196,
-
-     1196,  842, 1341, 1508, 1199, 1199, 1199,  858, 1200,  842,
-     1504, 1201,  869,  869,  869, 2338, 1203, 1203, 1203, 1349,
-     1349, 1349, 1503, 1350,  842, 2289, 1351,  879,  879,  879,
-      871, 2284, 1343, 1204, 1361, 1361, 1361, 1334, 1337, 1206,
-     1206, 1206, 1353, 1353, 1353,  881, 1354,  842, 2285, 1355,
-      842, 1348, 1362, 1208, 1208, 1208, 1207, 1209, 2296,  842,
-     1210, 1356, 1356, 1356, 1212, 1212, 1212,  842, 1213,  842,
-      842, 1214, 2504, 2504, 2504, 1359, 1359, 1359, 1357, 1363,
-     1363, 1363, 2383, 1500, 1352, 1219, 1219, 1219, 2297, 2504,
-      842,  842, 1360, 1365, 1365, 1365, 1364, 1366, 2290,  842,
-
-     1367,  842, 1220, 1221, 1221, 1221, 2291, 1222, 2292, 2293,
-     1223,  900,  900,  900, 1226, 1226, 1226,  842,  842, 1358,
-     1370, 1370, 1370, 2299, 1371, 2300,  842, 1372, 2298,  902,
-      842, 1227, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2308, 2301, 2504,
-     2310,  842, 2504,  842, 1369, 2504, 2302,  842, 2504,  842,
-     2309, 2504,  914,  914,  914, 1245, 1245, 1245,  926,  926,
-      926, 1390, 1390, 1390, 1488, 1391,  842, 2311, 1392,  842,
-      916, 2323, 1246, 1376, 1373, 1374,  928, 1377,  932,  932,
-      932, 1375, 1248, 1248, 1248, 2303, 1249,  842,  842, 1250,
-
-     1251, 1251, 1251, 1394, 1394, 1394,  934, 1395, 2304, 2324,
-     1396, 2504, 2504, 2504, 1379, 2314, 2325, 1252, 2504, 2504,
-     2504, 1486, 1485, 1388,  943,  943,  943,  842, 2504, 1256,
-     1256, 1256, 1400, 1400, 1400, 2504, 1401, 2315, 1484, 1402,
-     1393,  842,  945, 1258, 1258, 1258, 1257, 1259,  842,  842,
-     1260, 2504, 2504, 2504, 2504, 2504, 2504,  842,  842, 1397,
-      842, 1398,  954,  954,  954, 2316,  842, 1399, 2504, 2331,
-     1483, 2504, 1265, 1265, 1265,  842, 1266,  842, 1482, 1267,
-      956, 1268, 1268, 1268, 2317, 1269, 2320, 2321, 1270,  971,
-      971,  971, 1339, 1339, 1339, 2332, 2328, 1404, 1481, 1403,
-
-      842, 1405, 1278, 1278, 1278, 2329, 1279,  973,  842, 1280,
-     1281, 1281, 1281,  842, 1282, 2333,  842, 1283, 1284, 1284,
-     1284, 2341, 1285,  842, 2318, 1286,  987,  987,  987, 1292,
-     1292, 1292, 2319, 1293,  842,  842, 1294, 2339, 1295, 1295,
-     1295, 1411, 1296,  842,  989, 1297, 1299, 1299, 1299, 2358,
-     1300, 1480, 2335, 1301, 1006, 1006, 1006, 1477, 1304, 1304,
-     1304, 1422, 1422, 1422, 2343, 1423,  842, 2340, 1424, 2504,
-     2504, 2504, 1008, 2336, 1418, 1305, 1307, 1307, 1307, 2341,
-     1308, 2342, 2342, 1309,  842,  842, 2504, 1310, 1310, 1310,
-      842, 1311,  842,  842, 1312,  842, 2344, 1421, 1426, 1426,
-
-     1426, 1314, 1314, 1314,  842, 1315,  842,  842, 1316, 2504,
-     2504, 2504, 1318, 1318, 1318, 1427, 1430, 1430, 1430,  842,
-     1431, 2347, 1454, 1432, 2385,  842, 2504, 2364, 2362, 1319,
-     1449, 1425,  842, 1021, 1021, 1021, 1321, 1321, 1321, 2359,
-     1322,  842, 1443, 1323,  842, 2371, 1324, 1324, 1324, 2356,
-     1325, 1023, 1429, 1326, 1428, 1433, 1332, 1332, 1332, 1439,
-     1439, 1439, 2357, 1440, 2386,  842, 1441, 1040, 1040, 1040,
-     1340, 1340, 1340, 1333, 1446, 1446, 1446, 2373, 1447, 1438,
-      842, 1448, 1450, 1450, 1450, 1042,  842, 1341, 1452, 1452,
-     1452, 1345, 1345, 1345, 2348, 1442, 1453, 1453, 1453, 2364,
-
-     1451,  869,  869,  869, 1349, 1349, 1349, 1437, 1350, 2351,
-      842, 1351, 1456, 1456, 1456, 2352, 1353, 1353, 1353,  871,
-     1354,  842,  842, 1355, 1356, 1356, 1356, 1458, 1458, 1458,
-     1457, 1459,  842, 1436, 1460, 2504, 2504, 2504, 1359, 1359,
-     1359, 1357, 1462, 1462, 1462, 2363, 1463,  842,  842, 1464,
-     1435, 2369, 2504, 2423, 1455, 1360, 1361, 1361, 1361, 1363,
-     1363, 1363, 1465, 1465, 1465,  842, 1466,  842,  842, 1467,
-     2372, 1365, 1365, 1365, 1362, 1366, 1364, 2370, 1367, 1468,
-     1468, 1468,  900,  900,  900, 2377, 1461, 1370, 1370, 1370,
-     1434, 1371, 2403,  842, 1372,  842, 1469, 2504, 2504, 2504,
-
-      902, 2504, 2504, 2504, 2421, 2504, 2504, 2504, 1420, 1470,
-     2504, 2504, 2504,  842, 2504, 1475, 1475, 1475, 2504,  914,
-      914,  914, 2504, 1479, 1479, 1479, 2374, 2504,  926,  926,
-      926,  842, 1476, 2378, 1390, 1390, 1390,  916, 1391,  842,
-     1419, 1392, 2381, 1417, 1472, 1416,  928, 1490, 1490, 1490,
-     1471, 1473,  932,  932,  932, 1394, 1394, 1394,  842, 1395,
-     2382, 1415, 1396,  842, 1491, 1474, 1492, 1492, 1492, 2391,
-      934,  943,  943,  943, 1400, 1400, 1400,  842, 1401, 1478,
-     1487, 1402,  842, 1493, 1495, 1495, 1495, 2404, 2392,  945,
-      954,  954,  954, 1494, 1497, 1497, 1497, 1501, 1501, 1501,
-
-     2384, 1496, 1505, 1505, 1505, 1414, 1413, 1489,  956,  842,
-     2375, 1498, 2397,  842, 1502,  971,  971,  971, 1412, 1506,
-     1514, 1514, 1514,  842,  987,  987,  987, 1518, 1518, 1518,
-     1006, 1006, 1006,  973, 1450, 1450, 1450, 1515, 1521, 1521,
-     1521, 1499,  989,  842, 1519, 1516, 2376, 2405, 1008, 1422,
-     1422, 1422, 1451, 1423, 2393, 1522, 1424, 1426, 1426, 1426,
-     1523, 1523, 1523,  842, 1524,  842, 1507, 1525,  842, 2504,
-     2504, 2504,  842, 2398, 1427, 1527, 1527, 1527,  842,  842,
-     1430, 1430, 1430, 1410, 1431, 1520, 2504, 1432, 1021, 1021,
-     1021,  842, 1528, 1534, 1534, 1534, 1439, 1439, 1439, 1409,
-
-     1440, 2389,  842, 1441, 2422, 2390, 1023, 1040, 1040, 1040,
-     1535, 1446, 1446, 1446, 2394, 1447, 2399, 2400, 1448, 1452,
-     1452, 1452, 1526,  842, 2401, 1042, 1453, 1453, 1453, 1542,
-     1542, 1542, 1456, 1456, 1456, 1458, 1458, 1458, 2423, 1459,
-     1529, 2428, 1460, 2504, 2504, 2504,  842, 1543, 2395,  842,
-     1457, 1462, 1462, 1462, 1536, 1463, 1408,  842, 1464,  842,
-     2504, 1465, 1465, 1465,  842, 1466, 1407, 2396, 1467, 2407,
-     1468, 1468, 1468, 1545, 1545, 1545,  842, 1546,  842, 2402,
-     1547,  900,  900,  900, 1406,  842, 1544, 1469, 1549, 1549,
-     1549, 1551, 1551, 1551, 2504, 2504, 2504, 2408, 2429,  902,
-
-     2504, 2504, 2504, 2430, 1389, 1550,  842,  842, 1552, 2406,
-      842, 2504, 1475, 1475, 1475,  842, 1387, 2504, 1555, 1555,
-     1555,  842, 1556,  842,  842, 1557, 1559, 1559, 1559, 1476,
-      842, 2411, 1548, 1553, 1479, 1479, 1479,  926,  926,  926,
-     1569, 1569, 1569, 2426, 1560, 1571, 1571, 1571, 1490, 1490,
-     1490, 2417, 1554, 2409, 2431,  928, 2427, 1570, 1386, 2410,
-     1573, 1573, 1573, 1572, 1574, 1491,  842, 1575, 1492, 1492,
-     1492, 1576, 1576, 1576,  842, 1577, 1385,  842, 1578,  943,
-      943,  943, 1495, 1495, 1495, 1493, 1568, 1580, 1580, 1580,
-     2412, 1581, 1384, 1383, 1582,  842,  842,  945, 2413, 1496,
-
-     1497, 1497, 1497, 1583, 1583, 1583, 2415, 1584, 1382,  842,
-     1585,  954,  954,  954,  971,  971,  971, 1498, 1587, 1587,
-     1587, 1501, 1501, 1501,  842, 2416, 1589, 1589, 1589,  956,
-     1590, 1579,  973, 1591, 2442, 1588, 1598, 2419, 1502, 2418,
-     1505, 1505, 1505, 1595, 1595, 1595,  842, 1596, 2414,  842,
-     1597, 1603, 1603, 1603, 1381, 2420, 1586, 1506, 1605, 1605,
-     1605, 1514, 1514, 1514,  842, 1610, 1610, 1610, 1604, 1611,
-     1380, 1378, 1612, 2424,  842, 1606,  842,  842, 1515,  987,
-      987,  987, 1518, 1518, 1518, 1615, 1615, 1615, 1368, 1616,
-     1347, 1346, 1617, 1006, 1006, 1006,  842,  989, 2425, 1519,
-
-     1521, 1521, 1521, 1619, 1619, 1619, 2434, 1620,  842, 2432,
-     1621, 1008, 1523, 1523, 1523, 1618, 1524, 1522, 1344, 1525,
-     2504, 2504, 2504, 1527, 1527, 1527, 1623, 1623, 1623, 2433,
-     1624, 1613, 2436, 1625, 1021, 1021, 1021, 2504,  842,  842,
-     1528, 1629, 1629, 1629, 1631, 1631, 1631, 1534, 1534, 1534,
-     1342,  842, 1023, 1633, 1633, 1633, 1338, 1634, 1630, 1622,
-     1635, 1632, 2437, 2438, 1535, 1040, 1040, 1040, 1638, 1638,
-     1638, 1542, 1542, 1542, 1642, 1642, 1642, 1545, 1545, 1545,
-     2435, 1546, 1186, 1042, 1547, 1626,  842,  842, 1335, 1543,
-     2456, 1643,  900,  900,  900, 1549, 1549, 1549, 1645, 1645,
-
-     1645, 1331, 1646,  842,  842, 1647, 1551, 1551, 1551, 2444,
-      902, 2439, 1550, 1648, 1648, 1648, 1330, 1649,  842,  842,
-     1650, 1636, 1329, 1552, 1651, 1651, 1651, 2504, 2504, 2504,
-     1555, 1555, 1555,  842, 1556, 1328, 1644, 1557, 1559, 1559,
-     1559, 1652, 2443, 2446, 2504,  926,  926,  926, 1569, 1569,
-     1569, 1663, 1663, 1663, 1327, 1664, 1560, 2447, 1665, 1571,
-     1571, 1571, 1302,  928,  842, 1570, 1573, 1573, 1573,  842,
-     1574, 1662,  842, 1575, 1576, 1576, 1576, 1572, 1577, 2445,
-     1653, 1578,  943,  943,  943, 1580, 1580, 1580,  842, 1581,
-      842,  842, 1582, 2448, 1583, 1583, 1583, 2452, 1584, 2461,
-
-      945, 1585,  954,  954,  954, 1587, 1587, 1587, 1668, 1668,
-     1668, 2454, 1669,  842, 2449, 1670, 1298, 1589, 1589, 1589,
-      956, 1590, 1588,  842, 1591, 1595, 1595, 1595, 1290, 1596,
-     2455,  842, 1597, 1666,  971,  971,  971, 1675, 1675, 1675,
-     1677, 1677, 1677, 1679, 1679, 1679, 1681, 1681, 1681, 2450,
-     2451, 1667,  973, 1289, 1676, 2457, 2453, 1678,  842,  842,
-     1680, 2456, 2461, 1682, 1603, 1603, 1603, 1683, 1683, 1683,
-     2462, 1684,  842,  842, 1685, 1605, 1605, 1605, 1686, 1686,
-     1686, 1604, 1687, 1288,  842, 1688, 1674, 1610, 1610, 1610,
-     2462, 1611, 1606, 2471, 1612,  987,  987,  987, 1615, 1615,
-
-     1615,  842, 1616,  842,  842, 1617, 1006, 1006, 1006, 1287,
-     1619, 1619, 1619,  989, 1620, 2482, 1277, 1621, 2504, 2504,
-     2504, 1623, 1623, 1623, 1008, 1624,  842, 2458, 1625, 1021,
-     1021, 1021, 1697, 1697, 1697, 2504, 1629, 1629, 1629, 1700,
-     1700, 1700,  842, 1701, 1276, 2465, 1702, 1023,  842, 1698,
-     1631, 1631, 1631, 1630,  842, 2466, 1692,  842, 1694, 1695,
-     1274, 1703, 1703, 1703,  842, 1704, 2459, 1632, 1705, 1633,
-     1633, 1633, 2460, 1634,  842,  842, 1635, 1040, 1040, 1040,
-     1719, 1719, 1719, 1720, 1720, 1720, 1696, 1642, 1642, 1642,
-     1722, 1722, 1722,  842, 1723, 1042, 2472, 1724, 2463, 2464,
-
-     1721, 1719, 1719, 1719, 1643,  842,  900,  900,  900, 1645,
-     1645, 1645, 2493, 1646, 1273,  842, 1647, 2467, 1648, 1648,
-     1648, 2494, 1649,  842,  902, 1650, 1651, 1651, 1651, 1729,
-     1729, 1729,  842, 1272, 1706, 1638, 1638, 1638, 1726, 1726,
-     1726, 1271, 1727, 1652, 2473, 1728, 1730,  926,  926,  926,
-     1854, 1854, 1854,  842, 2478, 1707, 1708, 1709, 1725, 1710,
-     1711, 1264, 1712, 2471,  842,  928, 1713, 1714, 1715, 1716,
-     1717, 1663, 1663, 1663,  842, 1664, 1244,  842, 1665,  943,
-      943,  943,  954,  954,  954, 1668, 1668, 1668, 2468, 1669,
-      842, 1242, 1670, 1742, 1742, 1742,  842,  945, 2480, 1241,
-
-      956, 1240, 1739,  971,  971,  971, 1675, 1675, 1675, 1239,
-     1743, 1747, 1747, 1747,  842, 1748, 1238,  842, 1749, 2482,
-     2481,  973, 1237, 1676, 1236, 1741, 1677, 1677, 1677, 2479,
-     1750, 1750, 1750,  842, 1751, 2493, 1740, 1752, 1679, 1679,
-     1679, 2485,  842, 1678, 1753, 1753, 1753, 1235, 1754,  842,
-     2494, 1755, 1233, 2489, 1746, 1680, 1681, 1681, 1681, 1756,
-     1756, 1756, 1224, 1757,  842, 1218, 1758, 1683, 1683, 1683,
-     1198, 1684, 1197, 1682, 1685, 1686, 1686, 1686,  842, 1687,
-     1195, 2490, 1688,  987,  987,  987, 1006, 1006, 1006, 2504,
-     2504, 2504, 1021, 1021, 1021, 1697, 1697, 1697, 1907, 1907,
-
-     1907,  989, 2486, 1194, 1008, 1763, 2504, 1768, 1768, 1768,
-     1023, 1769, 1698, 1192, 1770, 1700, 1700, 1700, 2501, 1701,
-     1191,  842, 1702, 1703, 1703, 1703,  842, 1704, 1190,  842,
-     1705, 1189, 1766, 1040, 1040, 1040,  842, 1765,  842, 1720,
-     1720, 1720, 1788, 1788, 1788, 2487, 1789, 1767, 1188, 1790,
-     2488, 1042, 1791, 1791, 1791, 1772, 1721, 1722, 1722, 1722,
-     2495, 1723, 2496, 1182, 1724, 1726, 1726, 1726, 2501, 1727,
-     1792, 1163, 1728, 1729, 1729, 1729, 1793, 1793, 1793, 1162,
-     1794, 1159,  842, 1795,  926,  926,  926,  943,  943,  943,
-     1730,  954,  954,  954, 1742, 1742, 1742, 1807, 1807, 1807,
-
-     1154, 1808,  928, 1153, 1809,  945, 1810, 1810, 1810,  956,
-     1136, 1743, 1135, 1806, 1812, 1812, 1812,  971,  971,  971,
-     1747, 1747, 1747, 1811, 1748, 1134, 1133, 1749, 1910, 1910,
-     1910, 1813,  987,  987,  987,  973, 1804, 1750, 1750, 1750,
-     1126, 1751, 1805, 1125, 1752, 1753, 1753, 1753, 1123, 1754,
-      989, 1122, 1755, 1756, 1756, 1756, 1121, 1757, 1120, 1115,
-     1758, 1815, 1815, 1815, 1817, 1817, 1817, 1113, 1824, 1824,
-     1824, 1006, 1006, 1006, 1814, 1827, 1827, 1827, 1816, 1112,
-     1109, 1818, 1101, 1100, 1823, 1825, 1021, 1021, 1021, 1008,
-     1098, 1097, 1828, 1768, 1768, 1768, 1096, 1769, 1095, 1094,
-
-     1770, 1040, 1040, 1040, 1023, 1788, 1788, 1788, 1093, 1789,
-     1092, 1091, 1790, 1791, 1791, 1791, 1793, 1793, 1793, 1042,
-     1794, 1089, 1088, 1795,  926,  926,  926, 1087, 1826, 1086,
-     1085, 1792,  943,  943,  943, 1810, 1810, 1810, 1829,  954,
-      954,  954,  928, 1084, 1807, 1807, 1807, 1083, 1808, 1081,
-      945, 1809, 1811, 1831, 1858, 1858, 1858,  956, 1859, 1078,
-     1077, 1860, 1812, 1812, 1812, 1861, 1861, 1861, 1075, 1862,
-     1074, 1071, 1863, 1068,  971,  971,  971, 1063, 1059, 1813,
-     1058, 1057, 1855, 1056, 1856, 1815, 1815, 1815, 1817, 1817,
-     1817, 1857,  973, 1865, 1865, 1865, 1055, 1866, 1053, 1052,
-
-     1867, 1051, 1816, 1050, 1049, 1818, 1868, 1868, 1868, 1048,
-     1869, 1047, 1046, 1870, 1871, 1871, 1871, 1873, 1873, 1873,
-     1875, 1875, 1875, 1877, 1877, 1877,  987,  987,  987, 1864,
-      842, 1872, 1044, 1020, 1874, 1019, 1018, 1876, 1017, 1013,
-     1878, 1824, 1824, 1824,  989, 1880, 1880, 1880, 1012, 1881,
-     1011, 1010, 1882, 1006, 1006, 1006,  986,  985, 1825, 1827,
-     1827, 1827, 1884, 1884, 1884,  984, 1885,  983,  977, 1886,
-      976, 1008, 1021, 1021, 1021,  975, 1828, 1879, 1888, 1888,
-     1888, 1040, 1040, 1040, 1905, 1905, 1905, 1854, 1854, 1854,
-     1023,  926,  926,  926,  970, 1889,  943,  943,  943, 1042,
-
-      966, 1906, 1186,  965,  954,  954,  954,  964, 1883,  928,
-      960, 1858, 1858, 1858,  945, 1859,  959,  958, 1860,  953,
-      952, 1887,  956, 1861, 1861, 1861,  948, 1862,  947,  942,
-     1863,  941, 1890,  971,  971,  971, 1865, 1865, 1865,  940,
-     1866,  936,  931, 1867, 1914, 1915, 1868, 1868, 1868,  930,
-     1869,  973,  925, 1870,  924, 1916, 1871, 1871, 1871, 1918,
-     1918, 1918,  923, 1919,  922,  921, 1920, 1873, 1873, 1873,
-     1921, 1921, 1921, 1872, 1922,  920,  919, 1923, 1875, 1875,
-     1875, 1877, 1877, 1877, 1874, 1917, 1924, 1924, 1924,  918,
-     1925,  913,  912, 1926,  911, 1876,  910,  906, 1878, 1927,
-
-     1927, 1927,  905, 1928,  904,  899, 1929,  987,  987,  987,
-     1880, 1880, 1880,  898, 1881,  897,  896, 1882, 1006, 1006,
-     1006,  891, 1884, 1884, 1884,  989, 1885,  890,  889, 1886,
-     1932, 1932, 1932, 1888, 1888, 1888, 1008, 1934, 1934, 1934,
-      888, 1935,  884,  883, 1936, 1040, 1040, 1040, 1933,  873,
-     1889, 1944, 1944, 1944, 1905, 1905, 1905,  865, 1952, 1952,
-     1952,  864, 1953, 1042, 1930, 1954, 1907, 1907, 1907,  842,
-     1931, 1906, 1186, 1955, 1955, 1955, 1186, 1910, 1910, 1910,
-     1959, 1959, 1959, 1960, 1960, 1960, 1962, 1962, 1962,  954,
-      954,  954,  971,  971,  971,  863, 1918, 1918, 1918,  862,
-
-     1919, 1961, 1937, 1920, 1963,  861,  860,  956,  855,  854,
-      973, 1921, 1921, 1921,  853, 1922,  852,  851, 1923, 1924,
-     1924, 1924,  850, 1925,  849,  848, 1926, 1927, 1927, 1927,
-      845, 1928,  843,  842, 1929,  987,  987,  987, 1006, 1006,
-     1006, 1965, 1932, 1932, 1932,  840, 1964, 1934, 1934, 1934,
-      839, 1935,  838,  989, 1936,  830, 1008, 1040, 1040, 1040,
-     1933, 1974, 1974, 1974, 1944, 1944, 1944, 1981, 1981, 1981,
-     1952, 1952, 1952,  829, 1953, 1042,  828, 1954,  827,  842,
-      826,  825,  842,  824,  821,  842,  820, 1967, 1186,  819,
-     1966, 1955, 1955, 1955, 1982,  818,  810, 1975, 1959, 1959,
-
-     1959, 2012, 2012, 2012, 1960, 1960, 1960, 1962, 1962, 1962,
-      809,  808, 1968, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
-     1184, 1184, 1961,  807, 1184, 1963,  954,  954,  954, 1184,
-     1184, 1184, 1186, 1184, 2013, 2013, 2013, 2012, 2012, 2012,
-     2013, 2013, 2013,  804,  956, 1990, 1990, 1990,  987,  987,
-      987, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
-     1184, 1184,  803, 1991, 1184,  802,  989,  801,  800, 1184,
-     1184, 1184, 1186, 1184,  792, 1993, 1993, 1993, 1040, 1040,
-     1040, 1989,  789, 1996, 1996, 1996, 1997, 1997, 1997,  788,
-      787, 1184, 1184, 1994,  784,  783, 1042, 2010, 2010, 2010,
-
-     1992,  842,  782,  781,  842, 1974, 1974, 1974, 1981, 1981,
-     1981,  954,  954,  954,  773,  842, 1990, 1990, 1990,  987,
-      987,  987,  772,  842,  769,  766,  842,  765,  764,  956,
-     1995, 2033, 2033, 2033, 1991,  693,  763,  989, 2001,  755,
-      752, 2008, 1184, 1184, 1184, 1184, 1184, 2011, 1184, 1184,
-     1184,  747,  746, 1184, 1993, 1993, 1993,  745, 1184, 1184,
-     1184, 1186, 1184, 2015, 2033, 2033, 2033,  744, 2016,  733,
-      732,  729, 1994, 1040, 1040, 1040, 1996, 1996, 1996,  725,
-     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
-     2011, 1042,  724, 1184,  842, 1997, 1997, 1997, 1184, 1184,
-
-     1184, 1186, 1184,  716,  715, 2010, 2010, 2010,  714, 2018,
-      711,  710,  702,  842,  954,  954,  954, 2035, 2035, 2035,
-     1184, 1184, 2017,  842, 2037, 2037, 2037,  701, 2019, 2054,
-     2054, 2054,  956,  700,  698, 2036,  697,  696, 2032, 2035,
-     2035, 2035, 2038, 2037, 2037, 2037,  695, 2055, 2069, 2069,
-     2069, 2054, 2054, 2054, 2069, 2069, 2069, 2036, 2092, 2092,
-     2092, 2038,  694, 2034,  692,  691,  842,  684,  682, 2055,
-      675,  674,  842, 2097, 2097, 2097,  842, 2105, 2105, 2105,
-     2106, 2106, 2106, 2109, 2109, 2109,  673, 2084, 2097, 2097,
-     2097,  842, 2092, 2092, 2092,  842, 2107,  670,  842, 2108,
-
-      669,  842, 2114, 2114, 2114,  668,  842, 2117, 2117, 2117,
-      842, 2118, 2118, 2118, 2119, 2119, 2119, 2105, 2105, 2105,
-      842, 2113, 2109, 2109, 2109,  842, 2106, 2106, 2106,  842,
-     2122,  667,  842, 2123,  665,  842, 2129, 2129, 2129,  664,
-      842, 2114, 2114, 2114,  842, 2131,  663,  662, 2132,  661,
-     2121, 2134, 2134, 2134,  842, 2126, 2117, 2117, 2117,  842,
-     2135,  659,  658, 2136, 2118, 2118, 2118,  657, 2137,  842,
-      656, 2138,  653,  652,  842, 2119, 2119, 2119, 2129, 2129,
-     2129,  651,  842, 2134, 2134, 2134,  649, 2154,  646,  645,
-     2155,  641,  640,  842,  639,  638,  842, 2161, 2161, 2161,
-
-      637,  842, 2168, 2168, 2168, 2161, 2161, 2161, 2139,  636,
-      635, 2149, 2168, 2168, 2168,  842, 2190, 2190, 2190,  633,
-      842,  632,  631,  842, 2195, 2195, 2195,  630,  629,  628,
-      842, 2190, 2190, 2190,  842, 2235, 2235, 2235, 2182, 2195,
-     2195, 2195,  842, 2216,  627, 2189, 2217,  622,  619,  842,
-     2248, 2248, 2248,  842, 2253, 2253, 2253,  842, 2235, 2235,
-     2235,  621, 2257,  617, 2211, 2258,  616,  422,  842, 2269,
-     2269, 2269,  842, 2248, 2248, 2248,  842, 2271,  421,  610,
-     2272, 2253, 2253, 2253,  609, 2277,  608,  842, 2278,  607,
-      606,  842, 2281, 2281, 2281,  605, 2269, 2269, 2269,  842,
-
-     2294,  602,  601, 2295, 2281, 2281, 2281,  600, 2306,  598,
-      842, 2307,  592,  591,  842, 2322, 2322, 2322, 2326, 2326,
-     2326,  590,  842, 2330, 2330, 2330,  589, 2322, 2322, 2322,
-      588, 2345,  587,  842, 2346,  586, 2327, 2349, 2349, 2349,
-      585,  842, 2326, 2326, 2326,  842, 2330, 2330, 2330,  584,
-     2353,  582,  576, 2354,  575, 2350, 2355, 2355, 2355,  572,
-     2327, 2360, 2360, 2360,  842, 2365, 2365, 2365, 2367, 2367,
-     2367, 2349, 2349, 2349,  842, 2360, 2360, 2360,  571, 2361,
-     2355, 2355, 2355, 2366, 2379,  570, 2368, 2380,  569, 2350,
-     2387, 2387, 2387, 2361, 2365, 2365, 2365,  568,  842, 2367,
-
-     2367, 2367, 2387, 2387, 2387, 2440, 2440, 2440, 2388, 2440,
-     2440, 2440, 2366, 2469, 2469, 2469,  566, 2368,  560,  559,
-     2388,  558,  555, 2441, 2474, 2474, 2474, 2441, 2476, 2476,
-     2476, 2470, 2469, 2469, 2469, 2483, 2483, 2483, 2474, 2474,
-     2474,  554, 2475, 2476, 2476, 2476, 2477, 2491, 2491, 2491,
-     2470,  553,  551, 2484,  544,  543, 2475, 2483, 2483, 2483,
-      542, 2477, 2491, 2491, 2491, 2492, 2497, 2497, 2497, 2499,
-     2499, 2499, 2497, 2497, 2497, 2484, 2499, 2499, 2499,  541,
-     2492, 2502, 2502, 2502, 2498,  540,  539, 2500,  535,  527,
-     2498, 2502, 2502, 2502, 2500,  526,  525,  521,  519, 2503,
-
-      513,  512,  509,  507,  501,  500,  498,  497,  483, 2503,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  131,
-      131,  131,  131,  131,  131,  131,  131,  131,  136,  136,
-      136,  136,  136,  136,  136,  136,  136,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  142,  142,  142,  142,
-      142,  142,  142,  142,  142,  145,  145,  145,  145,  145,
-      145,  145,  145,  145,  152,  152,  152,  152,  152,  152,
-      152,  152,  152,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  161,  161,  161,  161,  161,  161,  161,  161,
-      161,  166,  166,  166,  166,  166,  166,  166,  166,  166,
-
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  194,  194,  194,
-      194,  194,  194,  194,  194,  194,  210,  210,  210,  210,
-      210,  210,  210,  210,  210,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  223,  223,  223,  223,  223,  223,
-      223,  223,  223,  243,  243,  243,  243,  243,  243,  243,
-      243,  243,  249,  249,  249,  249,  249,  249,  249,  249,
-      249,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      263,  263,  263,  263,  263,  263,  263,  263,  263,  270,
-
-      270,  270,  270,  270,  270,  270,  270,  270,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  304,  304,  304,
-      304,  304,  304,  304,  304,  304,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  383,  383,  383,  383,  383,  383,  383,
-      383,  383,  405,  405,  405,  405,  405,  405,  405,  405,
-      405,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      431,  431,  431,  476,  475,  474,  431,  440,  440,  440,
-      473,  472,  471,  440,  446,  446,  446,  470,  468,  466,
-
-      446,  452,  452,  452,  465,  464,  463,  452,  462,  462,
-      462,  461,  459,  458,  462,  469,  469,  469,  457,  454,
-      453,  469,  484,  484,  484,  451,  449,  448,  484,  499,
-      499,  499,  447,  445,  443,  499,  508,  508,  508,  442,
-      441,  439,  508,  520,  520,  520,  432,  430,  428,  520,
-      536,  536,  536,  422,  421,  422,  536,  552,  552,  552,
-      421,  420,  419,  552,  567,  567,  567, 2504, 2504, 2504,
-      567,  583,  583,  583, 2504, 2504, 2504,  583,  599,  599,
-      599, 2504, 2504, 2504,  599,  618,  618,  618,  618,  618,
-      618,  618, 2504,  618,  634, 2504, 2504, 2504,  634,  644,
-
-     2504, 2504, 2504,  644,  650, 2504, 2504, 2504,  650,  660,
-     2504, 2504, 2504,  660,  666, 2504, 2504, 2504,  666,  683,
-     2504, 2504, 2504,  683,  699, 2504, 2504, 2504,  699,  709,
-     2504, 2504, 2504,  709,  723, 2504, 2504, 2504,  723,  743,
-     2504, 2504, 2504,  743,  762, 2504, 2504, 2504,  762,  780,
-     2504, 2504, 2504,  780,  799, 2504, 2504, 2504,  799,  817,
-     2504, 2504, 2504,  817,  837, 2504, 2504, 2504,  837,  841,
-      841,  841,  841,  841,  841,  841,  841,  841,  847, 2504,
-     2504, 2504, 2504,  847,  431,  431,  431, 2504, 2504, 2504,
-      431,  857,  857,  857,  857, 2504, 2504,  857,  857,  440,
-
-      440,  440, 2504, 2504, 2504,  440,  870,  870,  870,  870,
-     2504, 2504,  870,  870,  446,  446,  446, 2504, 2504, 2504,
-      446,  880,  880,  880,  880, 2504, 2504,  880,  880,  452,
-      452,  452, 2504, 2504, 2504,  452,  893,  893,  893,  893,
-     2504, 2504,  893,  893,  462,  462,  462, 2504, 2504, 2504,
-      462,  901,  901,  901,  901, 2504, 2504,  901,  901,  469,
-      469,  469, 2504, 2504, 2504,  469,  915,  915,  915,  915,
-     2504, 2504,  915,  915,  927,  927,  927,  927, 2504, 2504,
-      927,  927,  499,  499,  499, 2504, 2504, 2504,  499,  933,
-      933,  933,  933, 2504, 2504,  933,  933,  508,  508,  508,
-
-     2504, 2504, 2504,  508,  944,  944,  944,  944, 2504, 2504,
-      944,  944,  520,  520,  520, 2504, 2504, 2504,  520,  955,
-      955,  955,  955, 2504, 2504,  955,  955,  536,  536,  536,
-     2504, 2504, 2504,  536,  972,  972,  972,  972, 2504, 2504,
-      972,  972,  552,  552,  552, 2504, 2504, 2504,  552,  988,
-      988,  988,  988, 2504, 2504,  988,  988,  567,  567,  567,
-      567, 2504,  567, 2504,  567, 1007, 1007, 1007, 1007, 2504,
-     2504, 1007, 1007,  583,  583,  583, 2504, 2504, 2504,  583,
-     1022, 1022, 1022, 1022, 2504, 2504, 1022, 1022,  599,  599,
-      599,  599, 2504,  599, 2504,  599, 1041, 1041, 1041, 1041,
-
-     2504, 2504, 1041, 1041,  841,  841,  841,  841,  841,  841,
-      841,  841,  841,  847, 2504,  847, 2504, 2504,  847,  431,
-      431,  431, 2504, 2504, 2504,  431,  857,  857,  857,  857,
-     2504, 2504,  857,  857,  440,  440,  440, 2504, 2504, 2504,
-      440,  870,  870,  870,  870, 2504, 2504,  870,  870,  446,
-      446,  446, 2504, 2504, 2504,  446,  880,  880,  880,  880,
-     2504, 2504,  880,  880,  452,  452,  452, 2504, 2504, 2504,
-      452,  893,  893,  893,  893, 2504, 2504,  893,  893,  462,
-      462,  462, 2504, 2504, 2504,  462,  901,  901,  901,  901,
-     2504, 2504,  901,  901,  469,  469,  469, 2504, 2504, 2504,
-
-      469,  915,  915,  915,  915, 2504, 2504,  915,  915,  927,
-      927,  927,  927, 2504, 2504,  927,  927,  499,  499,  499,
-     2504, 2504, 2504,  499,  933,  933,  933,  933, 2504, 2504,
-      933,  933,  508,  508,  508,  508, 2504,  508, 2504,  508,
-      944,  944,  944,  944, 2504, 2504,  944,  944,  520,  520,
-      520, 2504, 2504, 2504,  520,  955,  955,  955,  955, 2504,
-     2504,  955,  955,  536,  536,  536, 2504, 2504, 2504,  536,
-      972,  972,  972,  972, 2504, 2504,  972,  972,  552,  552,
-      552, 2504, 2504, 2504,  552,  988,  988,  988,  988, 2504,
-     2504,  988,  988,  567,  567,  567,  567, 2504,  567, 2504,
-
-      567, 1007, 1007, 1007, 1007, 2504, 2504, 1007, 1007,  583,
-      583,  583, 2504, 2504, 2504,  583, 1022, 1022, 1022, 1022,
-     2504, 2504, 1022, 1022,  599,  599,  599,  599, 2504,  599,
-     2504,  599, 1041, 1041, 1041, 1041, 2504, 2504, 1041, 1041,
-      841,  841,  841,  841,  841,  841,  841,  841,  841, 1184,
-     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,  431,  431,
-      431, 2504, 2504, 2504,  431,  857,  857,  857,  857, 2504,
-     2504,  857,  857,  440,  440,  440, 2504, 2504, 2504,  440,
-      870,  870,  870,  870, 2504, 2504,  870,  870,  446,  446,
-      446,  446, 2504,  446, 2504,  446,  880,  880,  880,  880,
-
-     2504, 2504,  880,  880,  452,  452,  452,  452, 2504,  452,
-     2504,  452,  893,  893,  893,  893, 2504, 2504,  893,  893,
-      462,  462,  462, 2504, 2504, 2504,  462,  901,  901,  901,
-      901, 2504, 2504,  901,  901,  469,  469,  469,  469, 2504,
-      469, 2504,  469,  915,  915,  915,  915, 2504, 2504,  915,
-      915,  927,  927,  927,  927, 2504, 2504,  927,  927,  499,
-      499,  499, 2504, 2504, 2504,  499,  933,  933,  933,  933,
-     2504, 2504,  933,  933,  508,  508,  508,  508, 2504,  508,
-     2504,  508,  944,  944,  944,  944, 2504, 2504,  944,  944,
-      520,  520,  520,  520, 2504,  520, 2504,  520,  955,  955,
-
-      955,  955, 2504, 2504,  955,  955,  536,  536,  536, 2504,
-     2504, 2504,  536,  972,  972,  972,  972, 2504, 2504,  972,
-      972,  552,  552,  552, 2504, 2504, 2504,  552,  988,  988,
-      988,  988, 2504, 2504,  988,  988,  567,  567,  567, 2504,
-     2504, 2504,  567, 1007, 1007, 1007, 1007, 2504, 2504, 1007,
-     1007,  583,  583,  583,  583, 2504,  583, 2504,  583, 1022,
-     1022, 1022, 1022, 2504, 2504, 1022, 1022,  599,  599,  599,
-     2504, 2504, 2504,  599, 1041, 1041, 1041, 1041, 2504, 2504,
-     1041, 1041,  841,  841,  841,  841,  841,  841,  841,  841,
-      841, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
-
-      431,  431,  431,  431, 2504,  431, 2504,  431,  857,  857,
-      857,  857, 2504, 2504,  857,  857,  440,  440,  440, 2504,
-     2504, 2504,  440,  870,  870,  870,  870, 2504, 2504,  870,
-      870, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984,
-     1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985,  129,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504
-    } ;
-
-static yyconst short int yy_chk[8316] =
-    {   0,
-        0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
-        6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
-        4,   10, 1445,    5,    0,    9,    6,  415,   10,    7,
-        8,    8,    8,  134,   11,   13,   13,   12,   14,   14,
-       13,   13,  415,   14,   14,  135,    8,   17,   17,  134,
-       13,   15,   15,   14,   15,  138,   15,   16,   16, 1445,
-       16,  135,   16,   18,   18,  314,   15,   19,   19,   19,
-      314,  138,   16,   20,   20,   20,   23,   23,   23,   24,
-       24,   24,  281,   19,   17,  132,  132,  132,  491,   20,
-      281,  336,   23, 1773,  491,   24,  133,  133,  133,  336,
-
-       18,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21, 1773,   21,   21,   21,
-       21,   21,   25,   25,   25,   26,   26,   26,   27,   27,
-       27,   28,   28,   28,   29,   29,   29,  396,   25,   21,
-       21,   26,  424, 1337,   27,  424,  396,   28,  769,  769,
-       29, 1800,   21,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,   22,   22, 1337,   22,
-       22,   22,   22,   22,   30,   30,   30,   31,   31,   31,
-       32,   32,   32,   33,   33,   33,   34,   34,   34,  541,
-       30,   22,   22,   31,  558, 1801,   32,  844,  541,   33,
-
-     1802,  844,   34,  558,   22,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-     1713,   35,   35,   35,   35,   35,   37,   37,   37, 1183,
-       38,   38,   38,   39,   39,   39,   40,   40,   40,  137,
-      137,  137,   37,   35,   35,   35,   38, 1183, 1848,   39,
-       35, 1713,   40,   35,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36,   36,   36, 1715,
-       36,   36,   36,   36,   36,   43,   43,   43, 1849,   44,
-       44,   44,   45,   45,   45,   46,   46,   46,  159,  159,
-      159,   43,   36,   36,   36,   44, 1414, 1414,   45,   36,
-
-     1715,   46,   36,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   41, 1712,   41,
-       41,   41,   41,   41,   49,   49,   49,   50,   50,   50,
-       51,   51,   51,   52,   52,   52,  167,  167,  167, 1444,
-       49,   41,   41,   50, 1851, 1444,   51,   41, 1710,   52,
-     1712,   41,   41,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,   42, 1833,   42,
-       42,   42,   42,   42,   55,   55,   55,   56,   56,   56,
-       57,   57,   57,   58,   58,   58,  173,  173,  173, 1710,
-       55,   42,   42,   56, 1503, 1503,   57,   42, 1852,   58,
-
-     1833,   42,   42,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-       53,   53,   53, 1336,   53,   53,   53,   53,   53,   61,
-       61,   61, 1782,   62,   62,   62, 1336,   63,   63,   63,
-
-       64,   64,   64,  162,  357,   61,   53,   53,   53,   62,
-      170,  176,   53,   63,  357, 1782,   64,  170, 1839,  162,
-       53,  182,  182,  182, 1508, 1508,  170,  176, 1853,   53,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   54, 1839,   54,   54,   54,   54,
-       54,   65,   65,   65,  620,   66,   66,   66, 1639,   69,
-       69,   69,   70,   70,   70,  171,  620,   65,   54,   54,
-       54,   66,  183,  189,   54,   69, 1509, 1509,   70,  183,
-     1899,  171,   54,  171,  186,  186,  186, 1639,  183,  189,
-     1899,   54,   59,   59,   59,   59,   59,   59,   59,   59,
-
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67, 1840,   67,   67,   67,   67,   67,   71,   71,
-       71,   72,   72,   72,   73,   73,   73,   74,   74,   74,
-       75,   75,   75,  184,   71,   67,   67,   72,  206,  202,
-
-       73,  196,  217,   74, 1512, 1512,   75, 1717,  196,  184,
-      195,  195,  195,  206,  184,  202, 1840,  196,  217,   67,
-       67,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68, 1717,   68,   68,   68,
-       68,   68,   76,   76,   76,   77,   77,   77,   78,   78,
-       78,   81,   81,   81,   82,   82,   82,  197,   76,   68,
-       68,   77,  212, 1909,   78, 1689, 1689,   81, 1911,  212,
-       82, 1761, 1761,  197,  199,  199,  199, 1912,  212,  197,
-      211,  211,  211,   68,   68,   79,   79,   79,   79,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-
-     1539,   79,   79,   79,   79,   79,   83,   83,   83,   84,
-       84,   84,   87,   87,   87,   88,   88,   88,   89,   89,
-       89, 1956,   83,   79,   79,   84, 1762, 1762,   87,  231,
-      250,   88, 1957, 1958,   89,  214,  214,  214, 1539,   79,
-     1988,   79,  224,  224,  224,  231,  250,   79,   79,   80,
-       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80, 1780,   80,   80,   80,   80,   80,
-       90,   90,   90,   93,   93,   93,   94,   94,   94,   95,
-       95,   95,   96,   96,   96, 1780,   90,   80,   80,   93,
-      225,  242,   94,  264, 2000,   95, 1799,  225,   96,  228,
-
-      228,  228, 2000,   80, 1902,   80,  225,  242, 1902,  264,
-      242,   80,   80,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-
-       97,   97,   97,   97,   97,   97,   97,   97,   99,   99,
-       99,  100,  100,  100,  101,  101,  101,  102,  102,  102,
-      244,  244,  244, 1941,   99, 1945, 1941,  100, 1971, 1945,
-      101, 1798, 1971,  102,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  105,
-
-      105,  105,  106,  106,  106,  107,  107,  107,  108,  108,
-      108,  247,  247,  247, 1797,  105, 1979, 1796,  106, 1771,
-     1979,  107, 2011, 2011,  108,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      111,  111,  111,  112,  112,  112,  113,  113,  113,  114,
-
-      114,  114,  256,  256,  256, 1738,  111, 2021, 1737,  112,
-     2026, 2021,  113, 1736, 2026,  114,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  117,  117,  117,  118,  118,  118,  119,  119,  119,
-      120,  120,  120,  261,  261,  261, 2045,  117, 2061, 1735,
-
-      118, 2048, 2045,  119, 2061, 2048,  120,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  123,  123,  123,  124,  124,  124,  125,  125,
-      125,  126,  126,  126,  127,  127,  148,  157,  123,  127,
-     2275,  124,  165,  169,  125,  128,  128,  126, 1707,  127,
-
-      128,  226, 1734,  157, 2275, 1783,  168, 1733,  165,  169,
-      128,  169, 1714,  168,  169,  169, 1774,  226,  157, 1775,
-      148,  127,  168,  165,  168,  169,  148,  168,  168,  245,
-      148, 1707,  128,  226, 1783,  148,  245, 1714,  168,  240,
-      240,  240,  241,  241,  241,  245,  252,  252,  252,  253,
-      253,  253,  278,  258,  259, 1774,  240, 1776, 1775,  241,
-      258, 1732, 1731,  252, 1699,  294,  253,  254,  278,  258,
-      259,  259,  268,  268,  268,  269,  269,  269,  271,  271,
-      271,  294, 1776,  254,  254,  254,  254,  272,  273,  268,
-     1711,  254,  269, 1777,  272,  254,  254,  254,  254,  275,
-
-      275,  275, 1781,  272,  273,  284,  284,  284,  285,  285,
-      285,  288,  273,  287,  287,  287,  289, 1718,  288,  291,
-      291,  291,  284, 1781, 1711,  285, 1777,  288, 1693,  297,
-      297,  297,  289,  301,  301,  301,  302,  302,  302,  303,
-      303,  303,  305,  305,  305,  289,  297,  306,  307,  312,
-      301, 1718, 1779,  302,  306, 1786,  303,  309,  309,  309,
-      321,  321,  321,  306,  307,  312,  307,  322,  322,  322,
-      326,  325,  297,  324,  324,  324,  331,  321,  325,  328,
-      328,  328, 1939, 1778,  322, 1779,  326,  325, 1786,  326,
-      345,  350,  331,  340,  340,  340,  341,  341,  341,  343,
-
-      343,  343,  344,  347,  347,  347,  345,  350, 1778,  344,
-      340,  365,  364,  341,  360,  360,  360, 1939,  344,  364,
-      345,  361,  361,  361,  363,  363,  363,  365,  364,  370,
-     1691,  360,  367,  367,  367,  381,  381,  381,  361,  382,
-      382,  382,  365,  385,  386,  370,  384,  384,  384,  391,
-      385,  411,  381,  388,  388,  388,  382,  407, 1784,  385,
-      386,  403,  403,  403,  407,  391,  404,  404,  404,  406,
-      406,  406,  386,  407,  414,  414,  414, 1690,  403,  423,
-      423,  423, 1785,  404, 1673,  411,  443,  443,  443, 1672,
-     1894,  411,  448,  448,  448,  411,  455,  455,  455, 1708,
-
-      411, 1784, 1045,  443,  473,  473,  473, 1785, 1716,  448,
-      477,  477,  477,  455, 1787,  478,  478,  478, 1045,  478,
-     1894,  473,  478,  479,  479,  479, 1835,  477, 1708,  423,
-      480,  480,  480, 1716,  480, 1661, 1716,  480, 1837, 1708,
-      479,  485,  485,  485,  486,  486,  486, 1787,  486, 1835,
-     1844,  486,  487,  487,  487,  488,  488,  488,  485,  488,
-     1895, 1891,  488,  502,  502,  502,  503,  503,  503,  487,
-      503, 1837, 1832,  503,  504,  504,  504,  505,  505,  505,
-      502,  505, 1844, 2002,  505,  510,  510,  510,  514,  514,
-      514,  504,  515,  515,  515, 1891,  515, 1895, 2002,  515,
-
-     1832, 1842,  510, 1977, 1834,  514,  516,  516,  516,  517,
-      517,  517, 1709,  517, 1845, 1946,  517,  522,  522,  522,
-      523,  523,  523,  516,  523, 1842, 1892,  523,  525,  525,
-      525,  528,  528,  528,  522,  529,  529,  529, 1845,  529,
-     1709, 1977,  529, 1834, 1946,  525, 1709, 1892,  528,  530,
-      530,  530,  531,  531,  531, 1660,  531, 1940, 1999,  531,
-      532,  532,  532,  533,  533,  533,  530,  533, 1836, 1838,
-      533,  540,  540,  540,  543,  543,  543,  532,  545,  545,
-      545, 1900,  546,  546,  546, 1893,  546, 1841,  540,  546,
-     1940,  543,  547,  547,  547,  545,  548,  548,  548, 1659,
-
-      548, 1999, 1900,  548,  556,  556,  556, 1836, 1838,  547,
-      561,  561,  561,  562,  562,  562, 1843,  562, 1904, 1893,
-      562,  556,  563,  563,  563, 1898, 1841,  561,  564,  564,
-      564, 1896,  564, 1901, 1903,  564,  571,  571,  571,  563,
-      575,  575,  575,  577,  577,  577, 1951,  578,  578,  578,
-     1898,  578, 1904,  571,  578, 1843, 1942,  575, 1901, 1903,
-      577,  579,  579,  579,  580,  580,  580, 1949,  580, 1947,
-     1896,  580,  588,  588,  588,  593,  593,  593,  579,  594,
-      594,  594, 1938,  594, 1980, 1948,  594, 1978, 1951,  588,
-     1942, 2144,  593,  595,  595,  595,  596,  596,  596, 1972,
-
-      596, 1949, 1947,  596,  603,  603,  603,  611,  611,  611,
-      595,  612,  612,  612, 1978,  612, 1975, 1980,  612, 1938,
-     2144,  603, 1948, 1976,  611,  613,  613,  613,  614,  614,
-      614, 1973,  614, 1972, 1975,  614,  623,  623,  623, 2009,
-      623, 2107,  613,  634,  634,  634,  635,  635,  635,  642,
-      642,  642,  643,  643,  643, 1998,  643, 1976, 1982,  643,
-     2004,  634, 1973, 2001,  635, 2009,  642,  644,  644,  644,
-      645,  645,  645,  647,  647,  647,  648,  648,  648, 2107,
-      648, 2001, 2003,  648, 1658,  644, 2020, 1657,  645, 1998,
-      647, 1982,  635,  649,  649,  649,  650,  650,  650, 2004,
-
-      651,  651,  651,  654,  654,  654,  660,  660,  660, 2008,
-      649,  661,  661,  661,  650, 2003, 2005,  645,  651, 2020,
-      654,  655,  655,  655,  660,  655, 2006, 2008,  655,  661,
-      666,  666,  666,  667,  667,  667,  671,  671,  671,  672,
-      672,  672, 2023,  672, 2007, 2028,  672, 2005,  666, 2018,
-     2025,  667, 2019,  671,  676,  676,  676, 2023,  676,  651,
-     2006,  676, 2022,  661,  679,  679,  679, 2018,  679, 2024,
-     2019,  679,  683,  683,  683,  684,  684,  684, 2028,  667,
-      685,  685,  685, 2007,  685, 2024, 2027,  685, 1656, 2025,
-      683, 2068, 2207,  684,  688,  688,  688, 2068,  688, 2022,
-
-     2029,  688,  699,  699,  699,  700,  700,  700,  703,  703,
-      703, 2027,  703, 2031, 1655,  703, 2207,  706,  706,  706,
-      699,  706,  684,  700,  706,  709,  709,  709,  710,  710,
-      710,  712,  712,  712,  713,  713,  713, 2029,  713, 2030,
-     2039,  713, 2124,  709, 2042, 2032,  710, 2031,  712,  717,
-      717,  717, 2041,  717, 2030, 2039,  717,  700,  720,  720,
-      720, 2040,  720, 2032, 2145,  720,  723,  723,  723,  724,
-      724,  724, 2124,  726,  726,  726, 2040,  726, 2042,  710,
-      726,  730,  730,  730,  723, 2046, 1654,  724,  731,  731,
-      731, 2041,  731, 2145, 2044,  731, 1628, 2051,  730,  734,
-
-      734,  734, 2043,  734, 2047, 2049,  734,  737,  737,  737,
-     2044,  737, 2050, 2051,  737, 2071,  740,  740,  740,  724,
-      740, 2071, 2046,  740,  743,  743,  743,  744,  744,  744,
-      748,  748,  748,  749,  749,  749, 2043,  749, 2047, 2053,
-      749, 2056,  743, 1614, 2049,  744, 2050,  748,  753,  753,
-      753,  754,  754,  754, 2053,  754, 2057, 2056,  754,  756,
-      756,  756, 2059,  756, 2060,  753,  756,  759,  759,  759,
-      744,  759, 2057, 2058,  759,  762,  762,  762,  763,  763,
-      763,  767,  767,  767,  768,  768,  768, 1609,  768, 2208,
-     1608,  768, 1607,  762, 2062, 2059,  763, 2063,  767,  774,
-
-      774,  774, 2064,  774, 2060, 2062,  774,  777,  777,  777,
-     2058,  777, 2067, 2208,  777,  780,  780,  780, 2065,  781,
-      781,  781,  782,  782,  782,  783,  783,  783,  784,  784,
-      784, 2063, 2073,  780, 2072, 2064,  763,  781, 2066,  782,
-     2072, 2299,  783, 2067, 2074,  784,  785,  785,  785,  786,
-      786,  786, 2065,  786, 1594, 2299,  786,  787,  787,  787,
-      788,  788,  788,  785, 2080,  781, 2073,  789,  789,  789,
-      790,  790,  790, 2075,  787, 2066,  783,  788,  791,  791,
-      791,  784,  791, 2074,  789,  791, 2070,  790,  792,  792,
-      792,  793,  793,  793, 2078,  793, 2076, 2080,  793,  796,
-
-      796,  796, 2070,  796, 1593,  792,  796, 2076, 2075,  788,
-      789,  799,  799,  799,  800,  800,  800,  805,  805,  805,
-      806,  806,  806, 2079,  806, 2078, 1592,  806, 2083,  799,
-     1567, 2086,  800, 2095,  805,  792,  811,  811,  811, 2083,
-      811, 2085, 2086,  811,  814,  814,  814, 2085,  814, 2081,
-     2108,  814,  817,  817,  817,  818,  818,  818,  819,  819,
-      819, 2084, 2079,  800,  820,  820,  820,  821,  821,  821,
-      817, 2087, 2095,  818, 1566,  819,  822,  822,  822, 2084,
-     2100,  820, 2087, 2081,  821,  823,  823,  823, 2108,  823,
-     2104, 2100,  823,  822,  824,  824,  824, 2113,  818,  825,
-
-      825,  825,  826,  826,  826,  827,  827,  827,  828,  828,
-      828,  824,  829,  829,  829, 2113,  825, 2088, 2163,  826,
-      821,  820,  827, 2121, 2104,  828,  830,  830,  830,  829,
-      831,  831,  831, 2089,  831, 2094, 2111,  831,  834,  834,
-      834, 2121,  834,  830,  825,  834,  824, 2163, 2088,  828,
-      837,  837,  837,  838,  838,  838,  856,  856,  856,  829,
-      857,  857,  857,  859,  859,  859, 1565,  827,  837, 2126,
-     2089,  838, 2094, 2111,  856,  865,  865,  865,  857, 2153,
-     2186,  859, 2096,  830,  866,  866,  866, 2126,  866, 2186,
-     2153,  866,  865,  869,  869,  869,  870,  870,  870,  872,
-
-      872,  872,  838,  874,  874,  874,  859,  874, 2120, 2099,
-      874,  869, 2310, 2096,  870, 2110, 1564,  872,  877,  877,
-      877,  878,  878,  878, 2099,  878, 2310, 2115,  878,  879,
-      879,  879,  880,  880,  880,  877,  882,  882,  882, 2120,
-      884,  884,  884, 2115,  885,  885,  885,  879,  885, 2110,
-      880,  885, 2125, 2127,  882, 2122,  872,  884,  889,  889,
-      889, 2227,  892,  892,  892,  893,  893,  893,  895,  895,
-      895,  898,  898,  898, 2123,  889,  900,  900,  900,  882,
-      892, 1563, 2125,  893, 2127, 2227,  895, 2131,  898,  901,
-      901,  901, 2132, 2122,  900,  903,  903,  903,  907,  907,
-
-      907, 2142,  907, 2128, 2150,  907, 2135,  901,  914,  914,
-      914, 2133, 2123,  903,  915,  915,  915, 2133, 2139,  895,
-     2150,  917,  917,  917, 2136, 2131,  914,  926,  926,  926,
-     2132, 2142,  915,  927,  927,  927, 2139, 2128,  903,  917,
-      929,  929,  929, 2171, 2135,  926,  932,  932,  932, 2171,
-     2130,  927,  933,  933,  933,  935,  935,  935,  929,  936,
-      936,  936, 2136, 2143,  932, 2130, 2228,  937,  937,  937,
-      933,  937,  917,  935,  937, 2137,  936,  940,  940,  940,
-      941,  941,  941,  942,  942,  942,  943,  943,  943, 1562,
-     2228,  929, 2183, 2143,  940, 2151,  935,  941, 2183, 2149,
-
-      942,  944,  944,  944,  943, 2138,  946,  946,  946,  948,
-      948,  948, 2154, 2137,  949,  949,  949, 2149,  949,  944,
-      940,  949, 2148,  942,  946, 2151,  948,  941,  954,  954,
-      954,  955,  955,  955,  957,  957,  957,  959,  959,  959,
-      960,  960,  960, 2138, 2152,  946,  954, 1561, 2141,  955,
-     2154, 1558,  957, 2148,  959, 2155, 2146,  960,  961,  961,
-      961, 2156,  961, 2141, 1541,  961,  967,  967,  967, 2157,
-      967, 2146, 1540,  967, 2152,  957,  971,  971,  971,  972,
-      972,  972,  974,  974,  974,  977,  977,  977,  978,  978,
-      978, 2156,  978, 2155,  971,  978, 2165,  972, 2158, 2157,
-
-      974, 2159,  977,  981,  981,  981,  982,  982,  982,  987,
-      987,  987,  988,  988,  988,  990,  990,  990, 1537, 2160,
-      981, 2192, 1531,  982,  991,  991,  991,  987, 2158, 2165,
-      988, 2159, 2192,  990, 2160, 1530,  992,  992,  992,  974,
-      992,  991, 2182,  992,  993,  993,  993,  994,  994,  994,
-      995,  995,  995, 2166,  995, 2162, 2189,  995,  990, 2164,
-     2182,  993, 2172, 2173,  994,  998,  998,  998,  999,  999,
-      999, 2162,  999, 2167, 2189,  999, 1000, 1000, 1000, 1001,
-     1001, 1001,  998, 1002, 1002, 1002, 2166, 1002, 2164, 2167,
-     1002, 2172, 2173, 1000, 2177, 2175, 1001, 1005, 1005, 1005,
-
-     1006, 1006, 1006, 1007, 1007, 1007, 1009, 1009, 1009, 1012,
-     1012, 1012, 1517, 2187, 1005, 1013, 1013, 1013, 1006, 2204,
-     2170, 1007, 2187, 2177, 1009, 2175, 1012, 1014, 1014, 1014,
-     2204, 1014, 1013, 1000, 1014, 2170, 2176, 1005, 1018, 1018,
-     1018, 1021, 1021, 1021, 1022, 1022, 1022, 1024, 1024, 1024,
-     1025, 1025, 1025, 1009, 1513, 1018, 1026, 1026, 1026, 1021,
-     1026, 2181, 1022, 1026, 2203, 1024, 2176, 1025, 1027, 1027,
-     1027, 1028, 1028, 1028, 1029, 1029, 1029, 2181, 1029, 2203,
-     2188, 1029, 1032, 1032, 1032, 1027, 2188, 2178, 1028, 1033,
-     1033, 1033, 1034, 1034, 1034, 2184, 1035, 1035, 1035, 1032,
-
-     1035, 1504, 2179, 1035, 1486, 1485, 1033, 2180, 1024, 1034,
-     1036, 1036, 1036, 1037, 1037, 1037, 2178, 1038, 1038, 1038,
-     1039, 1039, 1039, 1040, 1040, 1040, 2196, 1036, 2184, 2185,
-     1037, 2179, 1484, 1033, 1038, 2211, 2180, 1039, 1041, 1041,
-     1041, 1040, 1032, 1043, 1043, 1043, 1054, 1054, 1054, 1046,
-     1046, 1046, 2209, 2211, 1036, 2196, 1041, 1038, 1057, 1057,
-     1057, 1043, 2185, 2209, 1054, 1037, 1039, 1046, 1046, 1060,
-     1060, 1060, 1061, 1061, 1061, 1483, 1061, 2191, 1482, 1061,
-     1481, 2193, 1043, 1062, 1062, 1062, 1060, 1063, 1063, 1063,
-     1064, 1064, 1064, 2191, 1064, 2197, 1054, 1064, 1067, 1067,
-
-     1067, 1062, 2194, 2229, 1063, 1068, 1068, 1068, 1069, 1069,
-     1069, 1070, 1070, 1070, 2193, 1070, 1067, 2202, 1070, 1071,
-     1071, 1071, 1068, 2202, 2197, 1069, 1072, 1072, 1072, 1480,
-     1073, 1073, 1073, 1062, 1073, 2194, 1071, 1073, 1074, 1074,
-     1074, 2212, 2229, 1072, 1075, 1075, 1075, 2212, 2224, 1067,
-     1076, 1076, 1076, 2198, 2225, 1074, 1078, 1078, 1078, 2224,
-     1071, 1075, 1079, 1079, 1079, 1080, 1080, 1080, 1076, 1080,
-     2225, 2247, 1080, 1078, 1082, 1082, 1082, 2247, 2230, 1079,
-     1083, 1083, 1083, 1084, 1084, 1084, 2198, 1074, 1085, 1085,
-     1085, 2210, 1082, 1086, 1086, 1086, 2216, 1083, 1477, 2217,
-
-     1084, 1075, 1087, 1087, 1087, 1085, 2210, 1076, 2199, 2205,
-     1086, 1088, 1088, 1088, 1090, 1090, 1090, 2230, 2205, 1087,
-     1454, 1099, 1099, 1099, 1082, 1102, 1102, 1102, 1088, 1101,
-     1101, 1101, 1090, 2234, 2216, 1085, 2206, 2217, 1084, 1099,
-     2233, 2199, 1086, 1102, 2234, 2206, 1101, 1103, 1103, 1103,
-     1104, 1104, 1104, 1087, 1104, 2233, 1090, 1104, 2200, 2236,
-     1088, 1108, 1108, 1108, 1103, 1105, 1105, 1105, 1106, 1106,
-     1106, 1102, 1107, 1107, 1107, 1109, 1109, 1109, 1099, 1108,
-     1449, 2214, 1105, 2236, 1443, 1106, 1110, 1110, 1110, 1107,
-     2214, 2200, 1109, 1111, 1111, 1111, 2201, 1111, 2215, 2220,
-
-     1111, 2237, 1437, 1110, 2218, 1436, 1108, 2215, 2220, 1106,
-     1112, 1112, 1112, 1113, 1113, 1113, 1114, 1114, 1114, 2238,
-     2232, 1107, 1116, 1116, 1116, 2237, 2239, 1112, 2219, 2201,
-     1113, 1117, 1117, 1117, 1114, 1117, 2232, 2218, 1117, 1116,
-     1118, 1118, 1118, 1119, 1119, 1119, 2221, 1119, 1435, 2238,
-     1119, 1112, 1124, 1124, 1124, 2221, 2239, 1118, 1127, 1127,
-     1127, 2219, 1113, 2222, 1128, 1128, 1128, 2261, 1128, 2255,
-     1124, 1128, 2222, 1114, 2286, 1127, 1129, 1129, 1129, 1130,
-     1130, 1130, 2242, 1130, 1434, 2255, 1130, 1131, 1131, 1131,
-     1132, 1132, 1132, 1129, 1132, 2243, 2261, 1132, 1137, 1137,
-
-     1137, 1138, 1138, 1138, 1131, 1138, 2242, 2286, 1138, 1124,
-     1141, 1141, 1141, 1142, 1142, 1142, 1137, 1142, 2262, 2243,
-     1142, 1143, 1143, 1143, 1144, 1144, 1144, 1141, 1144, 1419,
-     2254, 1144, 1416, 1145, 1145, 1145, 2254, 1145, 1143, 1137,
-     1145, 1149, 1149, 1149, 1150, 1150, 1150, 2262, 1150, 2244,
-     2257, 1150, 1152, 1152, 1152, 1153, 1153, 1153, 1149, 1154,
-     1154, 1154, 1155, 1155, 1155, 2245, 2223, 1156, 1156, 1156,
-     1152, 1156, 1153, 2244, 1156, 2223, 1154, 2240, 2308, 1155,
-     1157, 1157, 1157, 1158, 1158, 1158, 2240, 1158, 2257, 2245,
-     1158, 1159, 1159, 1159, 1152, 2249, 2241, 1157, 1154, 1160,
-
-     1160, 1160, 1161, 1161, 1161, 2241, 1161, 2308, 1159, 1161,
-     1162, 1162, 1162, 1163, 1163, 1163, 1160, 1164, 1164, 1164,
-     2258, 1165, 1165, 1165, 2287, 1165, 1415, 1162, 1165, 2250,
-     1163, 1168, 1168, 1168, 2249, 1164, 2251, 1169, 1169, 1169,
-     1159, 1169, 2252, 2312, 1169, 1170, 1170, 1170, 1168, 1171,
-     1171, 1171, 2312, 1171, 2263, 2280, 1171, 2287, 2258, 1162,
-     2251, 2280, 1170, 1174, 1174, 1174, 2252, 1174, 2250, 1413,
-     1174, 1180, 1180, 1180, 1164, 1181, 1181, 1181, 2263, 1185,
-     1185, 1185, 1190, 1190, 1190, 1191, 1191, 1191, 1180, 1193,
-     1193, 1193, 2259, 1181, 1195, 1195, 1195, 1185, 1196, 1196,
-
-     1196, 2264, 1191, 1412, 1199, 1199, 1199, 1193, 1199, 2260,
-     1409, 1199, 1202, 1202, 1202, 2313, 1203, 1203, 1203, 1204,
-     1204, 1204, 1408, 1204, 2313, 2264, 1204, 1205, 1205, 1205,
-     1202, 2259, 1193, 1203, 1217, 1217, 1217, 1181, 1185, 1206,
-     1206, 1206, 1207, 1207, 1207, 1205, 1207, 2270, 2260, 1207,
-     2271, 1202, 1217, 1208, 1208, 1208, 1206, 1208, 2270, 2265,
-     1208, 1211, 1211, 1211, 1212, 1212, 1212, 2266, 1212, 2267,
-     2268, 1212, 1215, 1215, 1215, 1216, 1216, 1216, 1211, 1218,
-     1218, 1218, 2358, 1406, 1205, 1219, 1219, 1219, 2271, 1215,
-     2272, 2358, 1216, 1220, 1220, 1220, 1218, 1220, 2265, 2273,
-
-     1220, 2274, 1219, 1221, 1221, 1221, 2266, 1221, 2267, 2268,
-     1221, 1225, 1225, 1225, 1226, 1226, 1226, 2282, 2277, 1215,
-     1227, 1227, 1227, 2273, 1227, 2274, 2284, 1227, 2272, 1225,
-     2283, 1226, 1228, 1228, 1228, 1229, 1229, 1229, 1230, 1230,
-     1230, 1231, 1231, 1231, 1232, 1232, 1232, 2282, 2276, 1228,
-     2284, 2297, 1229, 2285, 1225, 1230, 2277, 2278, 1231, 2276,
-     2283, 1232, 1234, 1234, 1234, 1245, 1245, 1245, 1243, 1243,
-     1243, 1246, 1246, 1246, 1389, 1246, 2288, 2285, 1246, 2298,
-     1234, 2297, 1245, 1231, 1228, 1229, 1243, 1232, 1247, 1247,
-     1247, 1230, 1248, 1248, 1248, 2278, 1248, 2279, 2289, 1248,
-
-     1251, 1251, 1251, 1252, 1252, 1252, 1247, 1252, 2279, 2298,
-     1252, 1253, 1253, 1253, 1234, 2288, 2300, 1251, 1254, 1254,
-     1254, 1387, 1386, 1243, 1255, 1255, 1255, 2300, 1253, 1256,
-     1256, 1256, 1257, 1257, 1257, 1254, 1257, 2289, 1385, 1257,
-     1247, 2290, 1255, 1258, 1258, 1258, 1256, 1258, 2294, 2295,
-     1258, 1261, 1261, 1261, 1262, 1262, 1262, 2306, 2305, 1253,
-     2291, 1254, 1263, 1263, 1263, 2290, 2302, 1255, 1261, 2305,
-     1384, 1262, 1265, 1265, 1265, 2303, 1265, 2307, 1383, 1265,
-     1263, 1268, 1268, 1268, 2291, 1268, 2294, 2295, 1268, 1275,
-     1275, 1275, 1339, 1339, 1339, 2306, 2302, 1262, 1382, 1261,
-
-     2292, 1263, 1278, 1278, 1278, 2303, 1278, 1275, 2293, 1278,
-     1281, 1281, 1281, 2314, 1281, 2307, 2334, 1281, 1284, 1284,
-     1284, 2316, 1284, 2309, 2292, 1284, 1291, 1291, 1291, 1292,
-     1292, 1292, 2293, 1292, 2320, 2316, 1292, 2314, 1295, 1295,
-     1295, 1275, 1295, 2315, 1291, 1295, 1299, 1299, 1299, 2334,
-     1299, 1381, 2309, 1299, 1303, 1303, 1303, 1378, 1304, 1304,
-     1304, 1305, 1305, 1305, 2320, 1305, 2321, 2315, 1305, 1306,
-     1306, 1306, 1303, 2311, 1291, 1304, 1307, 1307, 1307, 2317,
-     1307, 2318, 2319, 1307, 2311, 2362, 1306, 1310, 1310, 1310,
-     2317, 1310, 2323, 2319, 1310, 2318, 2321, 1303, 1313, 1313,
-
-     1313, 1314, 1314, 1314, 2337, 1314, 2335, 2345, 1314, 1317,
-     1317, 1317, 1318, 1318, 1318, 1313, 1319, 1319, 1319, 2332,
-     1319, 2323, 1347, 1319, 2362, 2363, 1317, 2339, 2337, 1318,
-     1342, 1306, 2333, 1320, 1320, 1320, 1321, 1321, 1321, 2335,
-     1321, 2339, 1335, 1321, 2347, 2345, 1324, 1324, 1324, 2332,
-     1324, 1320, 1317, 1324, 1313, 1320, 1332, 1332, 1332, 1333,
-     1333, 1333, 2333, 1333, 2363, 2324, 1333, 1334, 1334, 1334,
-     1340, 1340, 1340, 1332, 1341, 1341, 1341, 2347, 1341, 1331,
-     2328, 1341, 1343, 1343, 1343, 1334, 2329, 1340, 1344, 1344,
-     1344, 1345, 1345, 1345, 2324, 1334, 1346, 1346, 1346, 2340,
-
-     1343, 1348, 1348, 1348, 1349, 1349, 1349, 1330, 1349, 2328,
-     2340, 1349, 1352, 1352, 1352, 2329, 1353, 1353, 1353, 1348,
-     1353, 2338, 2343, 1353, 1356, 1356, 1356, 1357, 1357, 1357,
-     1352, 1357, 2346, 1329, 1357, 1358, 1358, 1358, 1359, 1359,
-     1359, 1356, 1360, 1360, 1360, 2338, 1360, 2353, 2344, 1360,
-     1328, 2343, 1358, 2405, 1348, 1359, 1361, 1361, 1361, 1363,
-     1363, 1363, 1364, 1364, 1364, 2403, 1364, 2405, 2383, 1364,
-     2346, 1365, 1365, 1365, 1361, 1365, 1363, 2344, 1365, 1368,
-     1368, 1368, 1369, 1369, 1369, 2353, 1358, 1370, 1370, 1370,
-     1327, 1370, 2383, 2348, 1370, 2354, 1368, 1373, 1373, 1373,
-
-     1369, 1374, 1374, 1374, 2403, 1375, 1375, 1375, 1302, 1369,
-     1376, 1376, 1376, 2356, 1373, 1377, 1377, 1377, 1374, 1379,
-     1379, 1379, 1375, 1380, 1380, 1380, 2348, 1376, 1388, 1388,
-     1388, 2357, 1377, 2354, 1390, 1390, 1390, 1379, 1390, 2371,
-     1298, 1390, 2356, 1290, 1374, 1289, 1388, 1397, 1397, 1397,
-     1373, 1375, 1393, 1393, 1393, 1394, 1394, 1394, 2372, 1394,
-     2357, 1288, 1394, 2384, 1397, 1376, 1398, 1398, 1398, 2371,
-     1393, 1399, 1399, 1399, 1400, 1400, 1400, 2351, 1400, 1379,
-     1388, 1400, 2377, 1398, 1403, 1403, 1403, 2384, 2372, 1399,
-     1405, 1405, 1405, 1399, 1404, 1404, 1404, 1407, 1407, 1407,
-
-     2359, 1403, 1410, 1410, 1410, 1287, 1277, 1393, 1405, 2359,
-     2351, 1404, 2377, 2352, 1407, 1411, 1411, 1411, 1276, 1410,
-     1417, 1417, 1417, 2385, 1418, 1418, 1418, 1420, 1420, 1420,
-     1421, 1421, 1421, 1411, 1450, 1450, 1450, 1417, 1425, 1425,
-     1425, 1405, 1418, 2378, 1420, 1418, 2352, 2385, 1421, 1422,
-     1422, 1422, 1450, 1422, 2373, 1425, 1422, 1426, 1426, 1426,
-     1427, 1427, 1427, 2373, 1427, 2404, 1411, 1427, 2369, 1428,
-     1428, 1428, 2370, 2378, 1426, 1429, 1429, 1429, 2379, 2380,
-     1430, 1430, 1430, 1274, 1430, 1421, 1428, 1430, 1433, 1433,
-     1433, 2381, 1429, 1438, 1438, 1438, 1439, 1439, 1439, 1273,
-
-     1439, 2369, 2411, 1439, 2404, 2370, 1433, 1442, 1442, 1442,
-     1438, 1446, 1446, 1446, 2374, 1446, 2379, 2380, 1446, 1452,
-     1452, 1452, 1428, 2374, 2381, 1442, 1453, 1453, 1453, 1455,
-     1455, 1455, 1456, 1456, 1456, 1458, 1458, 1458, 2406, 1458,
-     1433, 2411, 1458, 1461, 1461, 1461, 2382, 1455, 2375, 2406,
-     1456, 1462, 1462, 1462, 1442, 1462, 1272, 2375, 1462, 2412,
-     1461, 1465, 1465, 1465, 2413, 1465, 1271, 2376, 1465, 2389,
-     1468, 1468, 1468, 1469, 1469, 1469, 2376, 1469, 2389, 2382,
-     1469, 1470, 1470, 1470, 1264, 2386, 1461, 1468, 1471, 1471,
-     1471, 1472, 1472, 1472, 1473, 1473, 1473, 2390, 2412, 1470,
-
-     1474, 1474, 1474, 2413, 1244, 1471, 2390, 2393, 1472, 2386,
-     2409, 1473, 1475, 1475, 1475, 2414, 1242, 1474, 1476, 1476,
-     1476, 2399, 1476, 2410, 2391, 1476, 1478, 1478, 1478, 1475,
-     2392, 2393, 1470, 1473, 1479, 1479, 1479, 1487, 1487, 1487,
-     1488, 1488, 1488, 2409, 1478, 1489, 1489, 1489, 1490, 1490,
-     1490, 2399, 1474, 2391, 2414, 1487, 2410, 1488, 1241, 2392,
-     1491, 1491, 1491, 1489, 1491, 1490, 2394, 1491, 1492, 1492,
-     1492, 1493, 1493, 1493, 2395, 1493, 1240, 2397, 1493, 1494,
-     1494, 1494, 1495, 1495, 1495, 1492, 1487, 1496, 1496, 1496,
-     2394, 1496, 1239, 1238, 1496, 2424, 2398, 1494, 2395, 1495,
-
-     1497, 1497, 1497, 1498, 1498, 1498, 2397, 1498, 1237, 2400,
-     1498, 1499, 1499, 1499, 1507, 1507, 1507, 1497, 1500, 1500,
-     1500, 1501, 1501, 1501, 2396, 2398, 1502, 1502, 1502, 1499,
-     1502, 1494, 1507, 1502, 2424, 1500, 1507, 2401, 1501, 2400,
-     1505, 1505, 1505, 1506, 1506, 1506, 2401, 1506, 2396, 2407,
-     1506, 1510, 1510, 1510, 1236, 2402, 1499, 1505, 1511, 1511,
-     1511, 1514, 1514, 1514, 2402, 1515, 1515, 1515, 1510, 1515,
-     1235, 1233, 1515, 2407, 2408, 1511, 2415, 2417, 1514, 1516,
-     1516, 1516, 1518, 1518, 1518, 1519, 1519, 1519, 1224, 1519,
-     1198, 1197, 1519, 1520, 1520, 1520, 2416, 1516, 2408, 1518,
-
-     1521, 1521, 1521, 1522, 1522, 1522, 2417, 1522, 2419, 2415,
-     1522, 1520, 1523, 1523, 1523, 1520, 1523, 1521, 1194, 1523,
-     1526, 1526, 1526, 1527, 1527, 1527, 1528, 1528, 1528, 2416,
-     1528, 1516, 2419, 1528, 1529, 1529, 1529, 1526, 2420, 2421,
-     1527, 1532, 1532, 1532, 1533, 1533, 1533, 1534, 1534, 1534,
-     1192, 2418, 1529, 1535, 1535, 1535, 1187, 1535, 1532, 1526,
-     1535, 1533, 2420, 2421, 1534, 1536, 1536, 1536, 1538, 1538,
-     1538, 1542, 1542, 1542, 1544, 1544, 1544, 1545, 1545, 1545,
-     2418, 1545, 1184, 1536, 1545, 1529, 1538, 2422, 1182, 1542,
-     2438, 1544, 1548, 1548, 1548, 1549, 1549, 1549, 1550, 1550,
-
-     1550, 1179, 1550, 2425, 2438, 1550, 1551, 1551, 1551, 2426,
-     1548, 2422, 1549, 1552, 1552, 1552, 1178, 1552, 2426, 2428,
-     1552, 1536, 1177, 1551, 1553, 1553, 1553, 1554, 1554, 1554,
-     1555, 1555, 1555, 2429, 1555, 1173, 1548, 1555, 1559, 1559,
-     1559, 1553, 2425, 2428, 1554, 1568, 1568, 1568, 1569, 1569,
-     1569, 1570, 1570, 1570, 1172, 1570, 1559, 2429, 1570, 1571,
-     1571, 1571, 1151, 1568, 2434, 1569, 1573, 1573, 1573, 2430,
-     1573, 1568, 2436, 1573, 1576, 1576, 1576, 1571, 1576, 2427,
-     1554, 1576, 1579, 1579, 1579, 1580, 1580, 1580, 2427, 1580,
-     2431, 2437, 1580, 2430, 1583, 1583, 1583, 2434, 1583, 2446,
-
-     1579, 1583, 1586, 1586, 1586, 1587, 1587, 1587, 1588, 1588,
-     1588, 2436, 1588, 2446, 2431, 1588, 1148, 1589, 1589, 1589,
-     1586, 1589, 1587, 2435, 1589, 1595, 1595, 1595, 1136, 1595,
-     2437, 2442, 1595, 1579, 1598, 1598, 1598, 1599, 1599, 1599,
-     1600, 1600, 1600, 1601, 1601, 1601, 1602, 1602, 1602, 2432,
-     2433, 1586, 1598, 1135, 1599, 2442, 2435, 1600, 2432, 2433,
-     1601, 2439, 2447, 1602, 1603, 1603, 1603, 1604, 1604, 1604,
-     2448, 1604, 2439, 2447, 1604, 1605, 1605, 1605, 1606, 1606,
-     1606, 1603, 1606, 1134, 2448, 1606, 1598, 1610, 1610, 1610,
-     2449, 1610, 1605, 2458, 1610, 1613, 1613, 1613, 1615, 1615,
-
-     1615, 2449, 1615, 2443, 2458, 1615, 1618, 1618, 1618, 1133,
-     1619, 1619, 1619, 1613, 1619, 2468, 1126, 1619, 1622, 1622,
-     1622, 1623, 1623, 1623, 1618, 1623, 2468, 2443, 1623, 1626,
-     1626, 1626, 1627, 1627, 1627, 1622, 1629, 1629, 1629, 1630,
-     1630, 1630, 2444, 1630, 1125, 2452, 1630, 1626, 2445, 1627,
-     1631, 1631, 1631, 1629, 2452, 2453, 1613, 2459, 1618, 1622,
-     1123, 1632, 1632, 1632, 2453, 1632, 2444, 1631, 1632, 1633,
-     1633, 1633, 2445, 1633, 2450, 2451, 1633, 1636, 1636, 1636,
-     1640, 1640, 1640, 1641, 1641, 1641, 1626, 1642, 1642, 1642,
-     1643, 1643, 1643, 2454, 1643, 1636, 2459, 1643, 2450, 2451,
-
-     1641, 1719, 1719, 1719, 1642, 2460, 1644, 1644, 1644, 1645,
-     1645, 1645, 2486, 1645, 1122, 2463, 1645, 2454, 1648, 1648,
-     1648, 2488, 1648, 2486, 1644, 1648, 1651, 1651, 1651, 1653,
-     1653, 1653, 2488, 1121, 1636, 1638, 1638, 1638, 1652, 1652,
-     1652, 1120, 1652, 1651, 2460, 1652, 1653, 1662, 1662, 1662,
-     1803, 1803, 1803, 1638, 2463, 1638, 1638, 1638, 1644, 1638,
-     1638, 1115, 1638, 2457, 2455, 1662, 1638, 1638, 1638, 1638,
-     1638, 1663, 1663, 1663, 2465, 1663, 1100, 2457, 1663, 1666,
-     1666, 1666, 1667, 1667, 1667, 1668, 1668, 1668, 2455, 1668,
-     2464, 1098, 1668, 1671, 1671, 1671, 2466, 1666, 2465, 1097,
-
-     1667, 1096, 1662, 1674, 1674, 1674, 1675, 1675, 1675, 1095,
-     1671, 1676, 1676, 1676, 2480, 1676, 1094, 2472, 1676, 2467,
-     2466, 1674, 1093, 1675, 1092, 1667, 1677, 1677, 1677, 2464,
-     1678, 1678, 1678, 2467, 1678, 2485, 1666, 1678, 1679, 1679,
-     1679, 2472, 2481, 1677, 1680, 1680, 1680, 1091, 1680, 2485,
-     2487, 1680, 1089, 2480, 1674, 1679, 1681, 1681, 1681, 1682,
-     1682, 1682, 1081, 1682, 2487, 1077, 1682, 1683, 1683, 1683,
-     1059, 1683, 1058, 1681, 1683, 1686, 1686, 1686, 2473, 1686,
-     1056, 2481, 1686, 1692, 1692, 1692, 1694, 1694, 1694, 1695,
-     1695, 1695, 1696, 1696, 1696, 1697, 1697, 1697, 1847, 1847,
-
-     1847, 1692, 2473, 1055, 1694, 1692, 1695, 1698, 1698, 1698,
-     1696, 1698, 1697, 1053, 1698, 1700, 1700, 1700, 2496, 1700,
-     1052, 2478, 1700, 1703, 1703, 1703, 2479, 1703, 1051, 2496,
-     1703, 1050, 1695, 1706, 1706, 1706, 2489, 1694, 2490, 1720,
-     1720, 1720, 1721, 1721, 1721, 2478, 1721, 1696, 1049, 1721,
-     2479, 1706, 1725, 1725, 1725, 1706, 1720, 1722, 1722, 1722,
-     2489, 1722, 2490, 1044, 1722, 1726, 1726, 1726, 2495, 1726,
-     1725, 1020, 1726, 1729, 1729, 1729, 1730, 1730, 1730, 1019,
-     1730, 1017, 2495, 1730, 1739, 1739, 1739, 1740, 1740, 1740,
-     1729, 1741, 1741, 1741, 1742, 1742, 1742, 1743, 1743, 1743,
-
-     1011, 1743, 1739, 1010, 1743, 1740, 1744, 1744, 1744, 1741,
-      986, 1742,  985, 1741, 1745, 1745, 1745, 1746, 1746, 1746,
-     1747, 1747, 1747, 1744, 1747,  984,  983, 1747, 1850, 1850,
-     1850, 1745, 1763, 1763, 1763, 1746, 1739, 1750, 1750, 1750,
-      976, 1750, 1740,  975, 1750, 1753, 1753, 1753,  970, 1753,
-     1763,  966, 1753, 1756, 1756, 1756,  965, 1756,  964,  958,
-     1756, 1759, 1759, 1759, 1760, 1760, 1760,  953, 1764, 1764,
-     1764, 1765, 1765, 1765, 1746, 1766, 1766, 1766, 1759,  952,
-      947, 1760,  931,  930, 1763, 1764, 1767, 1767, 1767, 1765,
-      925,  924, 1766, 1768, 1768, 1768,  923, 1768,  922,  921,
-
-     1768, 1772, 1772, 1772, 1767, 1788, 1788, 1788,  920, 1788,
-      919,  918, 1788, 1791, 1791, 1791, 1793, 1793, 1793, 1772,
-     1793,  913,  912, 1793, 1804, 1804, 1804,  911, 1765,  910,
-      906, 1791, 1805, 1805, 1805, 1810, 1810, 1810, 1767, 1806,
-     1806, 1806, 1804,  905, 1807, 1807, 1807,  904, 1807,  899,
-     1805, 1807, 1810, 1772, 1811, 1811, 1811, 1806, 1811,  897,
-      896, 1811, 1812, 1812, 1812, 1813, 1813, 1813,  891, 1813,
-      890,  888, 1813,  883, 1814, 1814, 1814,  873,  864, 1812,
-      863,  862, 1804,  861, 1805, 1815, 1815, 1815, 1817, 1817,
-     1817, 1806, 1814, 1816, 1816, 1816,  860, 1816,  855,  854,
-
-     1816,  853, 1815,  852,  849, 1817, 1818, 1818, 1818,  848,
-     1818,  847,  845, 1818, 1819, 1819, 1819, 1820, 1820, 1820,
-     1821, 1821, 1821, 1822, 1822, 1822, 1823, 1823, 1823, 1814,
-      841, 1819,  839,  810, 1820,  809,  808, 1821,  807,  804,
-     1822, 1824, 1824, 1824, 1823, 1825, 1825, 1825,  803, 1825,
-      802,  801, 1825, 1826, 1826, 1826,  773,  772, 1824, 1827,
-     1827, 1827, 1828, 1828, 1828,  771, 1828,  770,  766, 1828,
-      765, 1826, 1829, 1829, 1829,  764, 1827, 1823, 1830, 1830,
-     1830, 1831, 1831, 1831, 1846, 1846, 1846, 1854, 1854, 1854,
-     1829, 1855, 1855, 1855,  755, 1830, 1856, 1856, 1856, 1831,
-
-      752, 1846, 1846,  751, 1857, 1857, 1857,  750, 1826, 1855,
-      747, 1858, 1858, 1858, 1856, 1858,  746,  745, 1858,  733,
-      732, 1829, 1857, 1861, 1861, 1861,  729, 1861,  725,  716,
-     1861,  715, 1831, 1864, 1864, 1864, 1865, 1865, 1865,  714,
-     1865,  711,  702, 1865, 1855, 1856, 1868, 1868, 1868,  701,
-     1868, 1864,  698, 1868,  697, 1857, 1871, 1871, 1871, 1872,
-     1872, 1872,  696, 1872,  695,  694, 1872, 1873, 1873, 1873,
-     1874, 1874, 1874, 1871, 1874,  693,  692, 1874, 1875, 1875,
-     1875, 1877, 1877, 1877, 1873, 1864, 1876, 1876, 1876,  691,
-     1876,  682,  675, 1876,  674, 1875,  673,  670, 1877, 1878,
-
-     1878, 1878,  669, 1878,  668,  665, 1878, 1879, 1879, 1879,
-     1880, 1880, 1880,  664, 1880,  663,  662, 1880, 1883, 1883,
-     1883,  659, 1884, 1884, 1884, 1879, 1884,  658,  657, 1884,
-     1887, 1887, 1887, 1888, 1888, 1888, 1883, 1889, 1889, 1889,
-      656, 1889,  653,  652, 1889, 1890, 1890, 1890, 1887,  646,
-     1888, 1897, 1897, 1897, 1905, 1905, 1905,  641, 1906, 1906,
-     1906,  640, 1906, 1890, 1879, 1906, 1907, 1907, 1907, 1897,
-     1883, 1905, 1905, 1908, 1908, 1908, 1906, 1910, 1910, 1910,
-     1913, 1913, 1913, 1914, 1914, 1914, 1915, 1915, 1915, 1916,
-     1916, 1916, 1917, 1917, 1917,  639, 1918, 1918, 1918,  638,
-
-     1918, 1914, 1890, 1918, 1915,  637,  636, 1916,  633,  632,
-     1917, 1921, 1921, 1921,  631, 1921,  629,  628, 1921, 1924,
-     1924, 1924,  627, 1924,  626,  625, 1924, 1927, 1927, 1927,
-      621, 1927,  619,  618, 1927, 1930, 1930, 1930, 1931, 1931,
-     1931, 1917, 1932, 1932, 1932,  617, 1916, 1934, 1934, 1934,
-      616, 1934,  615, 1930, 1934,  610, 1931, 1937, 1937, 1937,
-     1932, 1943, 1943, 1943, 1944, 1944, 1944, 1950, 1950, 1950,
-     1952, 1952, 1952,  609, 1952, 1937,  608, 1952,  607, 1943,
-      606,  605, 1944,  604,  602, 1950,  601, 1931, 1952,  600,
-     1930, 1955, 1955, 1955, 1950,  597,  592, 1944, 1959, 1959,
-
-     1959, 1986, 1986, 1986, 1960, 1960, 1960, 1962, 1962, 1962,
-      591,  590, 1937, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
-     1953, 1953, 1960,  589, 1953, 1962, 1964, 1964, 1964, 1953,
-     1953, 1953, 1953, 1953, 1987, 1987, 1987, 2012, 2012, 2012,
-     2013, 2013, 2013,  587, 1964, 1965, 1965, 1965, 1966, 1966,
-     1966, 1953, 1953, 1954, 1954, 1954, 1954, 1954, 1954, 1954,
-     1954, 1954,  586, 1965, 1954,  585, 1966,  584,  581, 1954,
-     1954, 1954, 1954, 1954,  576, 1967, 1967, 1967, 1968, 1968,
-     1968, 1964,  574, 1969, 1969, 1969, 1970, 1970, 1970,  573,
-      572, 1954, 1954, 1967,  570,  569, 1968, 1983, 1983, 1983,
-
-     1966, 1969,  568,  565, 1970, 1974, 1974, 1974, 1981, 1981,
-     1981, 1989, 1989, 1989,  560, 1983, 1990, 1990, 1990, 1992,
-     1992, 1992,  559, 1974,  557,  555, 1981,  554,  553, 1989,
-     1968, 2014, 2014, 2014, 1990,  550,  549, 1992, 1974,  544,
-      542, 1981, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984,
-     1984,  539,  538, 1984, 1993, 1993, 1993,  537, 1984, 1984,
-     1984, 1984, 1984, 1989, 2033, 2033, 2033,  534, 1992,  527,
-      526,  524, 1993, 1995, 1995, 1995, 1996, 1996, 1996,  521,
-     1984, 1984, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985,
-     1985, 1995,  518, 1985, 1996, 1997, 1997, 1997, 1985, 1985,
-
-     1985, 1985, 1985,  513,  512, 2010, 2010, 2010,  511, 1996,
-      509,  506,  501, 1997, 2015, 2015, 2015, 2016, 2016, 2016,
-     1985, 1985, 1995, 2010, 2017, 2017, 2017,  500, 1997, 2034,
-     2034, 2034, 2015,  497,  496, 2016,  495,  494, 2010, 2035,
-     2035, 2035, 2017, 2037, 2037, 2037,  493, 2034, 2052, 2052,
-     2052, 2054, 2054, 2054, 2069, 2069, 2069, 2035, 2077, 2077,
-     2077, 2037,  492, 2015,  490,  489, 2052,  482,  481, 2054,
-      476,  475, 2069, 2082, 2082, 2082, 2077, 2090, 2090, 2090,
-     2091, 2091, 2091, 2093, 2093, 2093,  474, 2069, 2097, 2097,
-     2097, 2082, 2092, 2092, 2092, 2090, 2092,  472, 2091, 2092,
-
-      471, 2093, 2098, 2098, 2098,  470, 2097, 2101, 2101, 2101,
-     2092, 2102, 2102, 2102, 2103, 2103, 2103, 2105, 2105, 2105,
-     2098, 2097, 2109, 2109, 2109, 2101, 2106, 2106, 2106, 2102,
-     2106,  467, 2103, 2106,  466, 2105, 2112, 2112, 2112,  465,
-     2109, 2114, 2114, 2114, 2106, 2114,  464,  463, 2114,  460,
-     2105, 2116, 2116, 2116, 2112, 2109, 2117, 2117, 2117, 2114,
-     2117,  459,  458, 2117, 2118, 2118, 2118,  457, 2118, 2116,
-      456, 2118,  454,  453, 2117, 2119, 2119, 2119, 2129, 2129,
-     2129,  450, 2118, 2134, 2134, 2134,  449, 2134,  447,  444,
-     2134,  442,  441, 2119,  438,  437, 2129, 2140, 2140, 2140,
-
-      436, 2134, 2147, 2147, 2147, 2161, 2161, 2161, 2119,  435,
-      434, 2129, 2168, 2168, 2168, 2140, 2169, 2169, 2169,  433,
-     2147,  432,  429, 2161, 2174, 2174, 2174,  428,  427,  426,
-     2168, 2190, 2190, 2190, 2169, 2213, 2213, 2213, 2161, 2195,
-     2195, 2195, 2174, 2195,  425, 2168, 2195,  419,  418, 2190,
-     2226, 2226, 2226, 2213, 2231, 2231, 2231, 2195, 2235, 2235,
-     2235,  416, 2235,  413, 2190, 2235,  412,  410, 2226, 2246,
-     2246, 2246, 2231, 2248, 2248, 2248, 2235, 2248,  409,  402,
-     2248, 2253, 2253, 2253,  401, 2253,  400, 2246, 2253,  399,
-      398, 2248, 2256, 2256, 2256,  397, 2269, 2269, 2269, 2253,
-
-     2269,  395,  394, 2269, 2281, 2281, 2281,  393, 2281,  389,
-     2256, 2281,  380,  379, 2269, 2296, 2296, 2296, 2301, 2301,
-     2301,  378, 2281, 2304, 2304, 2304,  377, 2322, 2322, 2322,
-      376, 2322,  375, 2296, 2322,  374, 2301, 2325, 2325, 2325,
-      373, 2304, 2326, 2326, 2326, 2322, 2330, 2330, 2330,  372,
-     2330,  368,  359, 2330,  358, 2325, 2331, 2331, 2331,  356,
-     2326, 2336, 2336, 2336, 2330, 2341, 2341, 2341, 2342, 2342,
-     2342, 2349, 2349, 2349, 2331, 2360, 2360, 2360,  355, 2336,
-     2355, 2355, 2355, 2341, 2355,  354, 2342, 2355,  353, 2349,
-     2364, 2364, 2364, 2360, 2365, 2365, 2365,  352, 2355, 2367,
-
-     2367, 2367, 2387, 2387, 2387, 2423, 2423, 2423, 2364, 2440,
-     2440, 2440, 2365, 2456, 2456, 2456,  348, 2367,  339,  338,
-     2387,  337,  335, 2423, 2461, 2461, 2461, 2440, 2462, 2462,
-     2462, 2456, 2469, 2469, 2469, 2471, 2471, 2471, 2474, 2474,
-     2474,  334, 2461, 2476, 2476, 2476, 2462, 2482, 2482, 2482,
-     2469,  333,  329, 2471,  320,  319, 2474, 2483, 2483, 2483,
-      318, 2476, 2491, 2491, 2491, 2482, 2493, 2493, 2493, 2494,
-     2494, 2494, 2497, 2497, 2497, 2483, 2499, 2499, 2499,  317,
-     2491, 2501, 2501, 2501, 2493,  316,  315, 2494,  310,  300,
-     2497, 2502, 2502, 2502, 2499,  299,  298,  296,  292, 2501,
-
-      283,  282,  280,  276,  267,  266,  262,  257,  248, 2502,
-     2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2506,
-     2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2507, 2507,
-     2507, 2507, 2507, 2507, 2507, 2507, 2507, 2508, 2508, 2508,
-     2508, 2508, 2508, 2508, 2508, 2508, 2509, 2509, 2509, 2509,
-     2509, 2509, 2509, 2509, 2509, 2510, 2510, 2510, 2510, 2510,
-     2510, 2510, 2510, 2510, 2511, 2511, 2511, 2511, 2511, 2511,
-     2511, 2511, 2511, 2512, 2512, 2512, 2512, 2512, 2512, 2512,
-     2512, 2512, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
-     2513, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514,
-
-     2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2516,
-     2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2517, 2517,
-     2517, 2517, 2517, 2517, 2517, 2517, 2517, 2518, 2518, 2518,
-     2518, 2518, 2518, 2518, 2518, 2518, 2519, 2519, 2519, 2519,
-     2519, 2519, 2519, 2519, 2519, 2520, 2520, 2520, 2520, 2520,
-     2520, 2520, 2520, 2520, 2521, 2521, 2521, 2521, 2521, 2521,
-     2521, 2521, 2521, 2522, 2522, 2522, 2522, 2522, 2522, 2522,
-     2522, 2522, 2523, 2523, 2523, 2523, 2523, 2523, 2523, 2523,
-     2523, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524,
-     2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2526,
-
-     2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2527, 2527,
-     2527, 2527, 2527, 2527, 2527, 2527, 2527, 2528, 2528, 2528,
-     2528, 2528, 2528, 2528, 2528, 2528, 2529, 2529, 2529, 2529,
-     2529, 2529, 2529, 2529, 2529, 2530, 2530, 2530, 2530, 2530,
-     2530, 2530, 2530, 2530, 2531, 2531, 2531, 2531, 2531, 2531,
-     2531, 2531, 2531, 2532, 2532, 2532, 2532, 2532, 2532, 2532,
-     2532, 2532, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533,
-     2533, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
-     2535, 2535, 2535,  239,  238,  237, 2535, 2536, 2536, 2536,
-      236,  235,  234, 2536, 2537, 2537, 2537,  233,  229,  222,
-
-     2537, 2538, 2538, 2538,  221,  220,  219, 2538, 2539, 2539,
-     2539,  215,  209,  208, 2539, 2540, 2540, 2540,  207,  205,
-      204, 2540, 2541, 2541, 2541,  200,  193,  192, 2541, 2542,
-     2542, 2542,  191,  187,  180, 2542, 2543, 2543, 2543,  179,
-      178,  174, 2543, 2544, 2544, 2544,  164,  160,  155, 2544,
-     2545, 2545, 2545,  154,  153,  147, 2545, 2546, 2546, 2546,
-      146,  144,  141, 2546, 2547, 2547, 2547,  129,    0,    0,
-     2547, 2548, 2548, 2548,    0,    0,    0, 2548, 2549, 2549,
-     2549,    0,    0,    0, 2549, 2550, 2550, 2550, 2550, 2550,
-     2550, 2550,    0, 2550, 2551,    0,    0,    0, 2551, 2552,
-
-        0,    0,    0, 2552, 2553,    0,    0,    0, 2553, 2554,
-        0,    0,    0, 2554, 2555,    0,    0,    0, 2555, 2556,
-        0,    0,    0, 2556, 2557,    0,    0,    0, 2557, 2558,
-        0,    0,    0, 2558, 2559,    0,    0,    0, 2559, 2560,
-        0,    0,    0, 2560, 2561,    0,    0,    0, 2561, 2562,
-        0,    0,    0, 2562, 2563,    0,    0,    0, 2563, 2564,
-        0,    0,    0, 2564, 2565,    0,    0,    0, 2565, 2566,
-     2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2567,    0,
-        0,    0,    0, 2567, 2568, 2568, 2568,    0,    0,    0,
-     2568, 2569, 2569, 2569, 2569,    0,    0, 2569, 2569, 2570,
-
-     2570, 2570,    0,    0,    0, 2570, 2571, 2571, 2571, 2571,
-        0,    0, 2571, 2571, 2572, 2572, 2572,    0,    0,    0,
-     2572, 2573, 2573, 2573, 2573,    0,    0, 2573, 2573, 2574,
-     2574, 2574,    0,    0,    0, 2574, 2575, 2575, 2575, 2575,
-        0,    0, 2575, 2575, 2576, 2576, 2576,    0,    0,    0,
-     2576, 2577, 2577, 2577, 2577,    0,    0, 2577, 2577, 2578,
-     2578, 2578,    0,    0,    0, 2578, 2579, 2579, 2579, 2579,
-        0,    0, 2579, 2579, 2580, 2580, 2580, 2580,    0,    0,
-     2580, 2580, 2581, 2581, 2581,    0,    0,    0, 2581, 2582,
-     2582, 2582, 2582,    0,    0, 2582, 2582, 2583, 2583, 2583,
-
-        0,    0,    0, 2583, 2584, 2584, 2584, 2584,    0,    0,
-     2584, 2584, 2585, 2585, 2585,    0,    0,    0, 2585, 2586,
-     2586, 2586, 2586,    0,    0, 2586, 2586, 2587, 2587, 2587,
-        0,    0,    0, 2587, 2588, 2588, 2588, 2588,    0,    0,
-     2588, 2588, 2589, 2589, 2589,    0,    0,    0, 2589, 2590,
-     2590, 2590, 2590,    0,    0, 2590, 2590, 2591, 2591, 2591,
-     2591,    0, 2591,    0, 2591, 2592, 2592, 2592, 2592,    0,
-        0, 2592, 2592, 2593, 2593, 2593,    0,    0,    0, 2593,
-     2594, 2594, 2594, 2594,    0,    0, 2594, 2594, 2595, 2595,
-     2595, 2595,    0, 2595,    0, 2595, 2596, 2596, 2596, 2596,
-
-        0,    0, 2596, 2596, 2597, 2597, 2597, 2597, 2597, 2597,
-     2597, 2597, 2597, 2598,    0, 2598,    0,    0, 2598, 2599,
-     2599, 2599,    0,    0,    0, 2599, 2600, 2600, 2600, 2600,
-        0,    0, 2600, 2600, 2601, 2601, 2601,    0,    0,    0,
-     2601, 2602, 2602, 2602, 2602,    0,    0, 2602, 2602, 2603,
-     2603, 2603,    0,    0,    0, 2603, 2604, 2604, 2604, 2604,
-        0,    0, 2604, 2604, 2605, 2605, 2605,    0,    0,    0,
-     2605, 2606, 2606, 2606, 2606,    0,    0, 2606, 2606, 2607,
-     2607, 2607,    0,    0,    0, 2607, 2608, 2608, 2608, 2608,
-        0,    0, 2608, 2608, 2609, 2609, 2609,    0,    0,    0,
-
-     2609, 2610, 2610, 2610, 2610,    0,    0, 2610, 2610, 2611,
-     2611, 2611, 2611,    0,    0, 2611, 2611, 2612, 2612, 2612,
-        0,    0,    0, 2612, 2613, 2613, 2613, 2613,    0,    0,
-     2613, 2613, 2614, 2614, 2614, 2614,    0, 2614,    0, 2614,
-     2615, 2615, 2615, 2615,    0,    0, 2615, 2615, 2616, 2616,
-     2616,    0,    0,    0, 2616, 2617, 2617, 2617, 2617,    0,
-        0, 2617, 2617, 2618, 2618, 2618,    0,    0,    0, 2618,
-     2619, 2619, 2619, 2619,    0,    0, 2619, 2619, 2620, 2620,
-     2620,    0,    0,    0, 2620, 2621, 2621, 2621, 2621,    0,
-        0, 2621, 2621, 2622, 2622, 2622, 2622,    0, 2622,    0,
-
-     2622, 2623, 2623, 2623, 2623,    0,    0, 2623, 2623, 2624,
-     2624, 2624,    0,    0,    0, 2624, 2625, 2625, 2625, 2625,
-        0,    0, 2625, 2625, 2626, 2626, 2626, 2626,    0, 2626,
-        0, 2626, 2627, 2627, 2627, 2627,    0,    0, 2627, 2627,
-     2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2629,
-     2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2630, 2630,
-     2630,    0,    0,    0, 2630, 2631, 2631, 2631, 2631,    0,
-        0, 2631, 2631, 2632, 2632, 2632,    0,    0,    0, 2632,
-     2633, 2633, 2633, 2633,    0,    0, 2633, 2633, 2634, 2634,
-     2634, 2634,    0, 2634,    0, 2634, 2635, 2635, 2635, 2635,
-
-        0,    0, 2635, 2635, 2636, 2636, 2636, 2636,    0, 2636,
-        0, 2636, 2637, 2637, 2637, 2637,    0,    0, 2637, 2637,
-     2638, 2638, 2638,    0,    0,    0, 2638, 2639, 2639, 2639,
-     2639,    0,    0, 2639, 2639, 2640, 2640, 2640, 2640,    0,
-     2640,    0, 2640, 2641, 2641, 2641, 2641,    0,    0, 2641,
-     2641, 2642, 2642, 2642, 2642,    0,    0, 2642, 2642, 2643,
-     2643, 2643,    0,    0,    0, 2643, 2644, 2644, 2644, 2644,
-        0,    0, 2644, 2644, 2645, 2645, 2645, 2645,    0, 2645,
-        0, 2645, 2646, 2646, 2646, 2646,    0,    0, 2646, 2646,
-     2647, 2647, 2647, 2647,    0, 2647,    0, 2647, 2648, 2648,
-
-     2648, 2648,    0,    0, 2648, 2648, 2649, 2649, 2649,    0,
-        0,    0, 2649, 2650, 2650, 2650, 2650,    0,    0, 2650,
-     2650, 2651, 2651, 2651,    0,    0,    0, 2651, 2652, 2652,
-     2652, 2652,    0,    0, 2652, 2652, 2653, 2653, 2653,    0,
-        0,    0, 2653, 2654, 2654, 2654, 2654,    0,    0, 2654,
-     2654, 2655, 2655, 2655, 2655,    0, 2655,    0, 2655, 2656,
-     2656, 2656, 2656,    0,    0, 2656, 2656, 2657, 2657, 2657,
-        0,    0,    0, 2657, 2658, 2658, 2658, 2658,    0,    0,
-     2658, 2658, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659,
-     2659, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660,
-
-     2661, 2661, 2661, 2661,    0, 2661,    0, 2661, 2662, 2662,
-     2662, 2662,    0,    0, 2662, 2662, 2663, 2663, 2663,    0,
-        0,    0, 2663, 2664, 2664, 2664, 2664,    0,    0, 2664,
-     2664, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665,
-     2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-
-     2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504,
-     2504, 2504, 2504, 2504, 2504
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#define INITIAL 0
-/* Validating XML processor for skin.dtd (Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp).
- * Generated 2003/10/22 19:09:40.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-/* Version strings. */
-const char rcs_flexml_skeleton[] =
- "$" "Id: skel,v 1.16 1999/12/09 04:01:51 krisrose Exp $";
-const char rcs_flexml[] =
- "$" "Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp $";
-const char rcs_skin_dtd[] =
- "$" "Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp $";
-
-/* ANSI headers. */
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <ctype.h>
-
-/* Generated definitions. */
-#define FLEXML_BUFFERSTACKSIZE 100000
-
-/* XML processor api. */
-#include "skin.h"
-
-/* FleXML-provided data. */
-char* pcdata;
-AT_TextControl_display A_TextControl_display;
-AT_SliderControl_x A_SliderControl_x;
-AT_ButtonControl_onclick A_ButtonControl_onclick;
-AT_RectangleControl_color A_RectangleControl_color;
-AT_SliderControl_y A_SliderControl_y;
-AT_ButtonControl_id A_ButtonControl_id;
-AT_Window_movealpha A_Window_movealpha;
-AT_SliderControl_down A_SliderControl_down;
-AT_ButtonControl_down A_ButtonControl_down;
-AT_CheckBoxControl_disabled1 A_CheckBoxControl_disabled1;
-AT_CheckBoxControl_onmouseover1 A_CheckBoxControl_onmouseover1;
-AT_CheckBoxControl_disabled2 A_CheckBoxControl_disabled2;
-AT_CheckBoxControl_onmouseover2 A_CheckBoxControl_onmouseover2;
-AT_Font_underline A_Font_underline;
-AT_ButtonControl_onmouseover A_ButtonControl_onmouseover;
-AT_ButtonControl_visible A_ButtonControl_visible;
-AT_TextControl_scroll A_TextControl_scroll;
-AT_SliderControl_id A_SliderControl_id;
-AT_CheckBoxControl_x A_CheckBoxControl_x;
-AT_Window_alpha A_Window_alpha;
-AT_TextControl_x A_TextControl_x;
-AT_CheckBoxControl_y A_CheckBoxControl_y;
-AT_Window_id A_Window_id;
-AT_TextControl_y A_TextControl_y;
-AT_RectangleControl_onclick A_RectangleControl_onclick;
-AT_Theme_magnet A_Theme_magnet;
-AT_TextControl_font A_TextControl_font;
-AT_PlayListControl_selcolor A_PlayListControl_selcolor;
-AT_Anchor_x A_Anchor_x;
-AT_Anchor_y A_Anchor_y;
-AT_ButtonControl_up A_ButtonControl_up;
-AT_RectangleControl_visible A_RectangleControl_visible;
-AT_SliderControl_type A_SliderControl_type;
-AT_CheckBoxControl_id A_CheckBoxControl_id;
-AT_Anchor_priority A_Anchor_priority;
-AT_PlayListControl_visible A_PlayListControl_visible;
-AT_Bitmap_alphacolor A_Bitmap_alphacolor;
-AT_ImageControl_onclick A_ImageControl_onclick;
-AT_PlayListControl_x A_PlayListControl_x;
-AT_PlayListControl_y A_PlayListControl_y;
-AT_ImageControl_image A_ImageControl_image;
-AT_ThemeInfo_name A_ThemeInfo_name;
-AT_TextControl_width A_TextControl_width;
-AT_PlayListControl_id A_PlayListControl_id;
-AT_CheckBoxControl_onmouseout1 A_CheckBoxControl_onmouseout1;
-AT_CheckBoxControl_onmouseout2 A_CheckBoxControl_onmouseout2;
-AT_Bitmap_id A_Bitmap_id;
-AT_Font_italic A_Font_italic;
-AT_PlayListControl_ord A_PlayListControl_ord;
-AT_ButtonControl_disabled A_ButtonControl_disabled;
-AT_SliderControl_up A_SliderControl_up;
-AT_ImageControl_x A_ImageControl_x;
-AT_ControlGroup_x A_ControlGroup_x;
-AT_PlayListControl_infowidth A_PlayListControl_infowidth;
-AT_ImageControl_y A_ImageControl_y;
-AT_ControlGroup_y A_ControlGroup_y;
-AT_PlayListControl_longfilename A_PlayListControl_longfilename;
-AT_PlayListControl_abs A_PlayListControl_abs;
-AT_ImageControl_visible A_ImageControl_visible;
-AT_PlayListControl_width A_PlayListControl_width;
-AT_SliderControl_help A_SliderControl_help;
-AT_ButtonControl_help A_ButtonControl_help;
-AT_TextControl_scrollspace A_TextControl_scrollspace;
-AT_Font_font A_Font_font;
-AT_SliderControl_visible A_SliderControl_visible;
-AT_PlayListControl_playfont A_PlayListControl_playfont;
-AT_TextControl_text A_TextControl_text;
-AT_SliderControl_ord A_SliderControl_ord;
-AT_Window_visible A_Window_visible;
-AT_TextControl_align A_TextControl_align;
-AT_TextControl_id A_TextControl_id;
-AT_Window_x A_Window_x;
-AT_SliderControl_abs A_SliderControl_abs;
-AT_Window_y A_Window_y;
-AT_RectangleControl_help A_RectangleControl_help;
-AT_CheckBoxControl_img1 A_CheckBoxControl_img1;
-AT_CheckBoxControl_img2 A_CheckBoxControl_img2;
-AT_ButtonControl_x A_ButtonControl_x;
-AT_ButtonControl_y A_ButtonControl_y;
-AT_Window_dragdrop A_Window_dragdrop;
-AT_ImageControl_help A_ImageControl_help;
-AT_PlayListControl_help A_PlayListControl_help;
-AT_Font_weight A_Font_weight;
-AT_ThemeInfo_author A_ThemeInfo_author;
-AT_CheckBoxControl_help A_CheckBoxControl_help;
-AT_TextControl_visible A_TextControl_visible;
-AT_ButtonControl_tooltiptext A_ButtonControl_tooltiptext;
-AT_Event_event A_Event_event;
-AT_RectangleControl_h A_RectangleControl_h;
-AT_ThemeInfo_webpage A_ThemeInfo_webpage;
-AT_ButtonControl_onmouseout A_ButtonControl_onmouseout;
-AT_Window_playondrop A_Window_playondrop;
-AT_CheckBoxControl_tooltiptext1 A_CheckBoxControl_tooltiptext1;
-AT_CheckBoxControl_tooltiptext2 A_CheckBoxControl_tooltiptext2;
-AT_ImageControl_id A_ImageControl_id;
-AT_CheckBoxControl_onclick1 A_CheckBoxControl_onclick1;
-AT_Font_size A_Font_size;
-AT_Bitmap_file A_Bitmap_file;
-AT_CheckBoxControl_onclick2 A_CheckBoxControl_onclick2;
-AT_Window_fadetime A_Window_fadetime;
-AT_Event_id A_Event_id;
-AT_Font_id A_Font_id;
-AT_CheckBoxControl_visible A_CheckBoxControl_visible;
-AT_Event_key A_Event_key;
-AT_ThemeInfo_email A_ThemeInfo_email;
-AT_Font_color A_Font_color;
-AT_RectangleControl_w A_RectangleControl_w;
-AT_SliderControl_tooltiptext A_SliderControl_tooltiptext;
-AT_RectangleControl_x A_RectangleControl_x;
-AT_RectangleControl_y A_RectangleControl_y;
-AT_CheckBoxControl_clickimg1 A_CheckBoxControl_clickimg1;
-AT_CheckBoxControl_clickimg2 A_CheckBoxControl_clickimg2;
-AT_Anchor_range A_Anchor_range;
-AT_PlayListControl_font A_PlayListControl_font;
-AT_TextControl_help A_TextControl_help;
-AT_RectangleControl_id A_RectangleControl_id;
-
-/* XML state. */
-#ifdef FLEX_DEBUG
-# define ENTER(state)  debug_enter(state,#state)
-# define LEAVE         debug_leave()
-# define SET(state)    debug_set(state,#state)
-  static void debug_enter(int, char*);
-  static void debug_leave(void);
-  static void debug_set(int, char*);
-#else
-# define ENTER(state)  (yy_push_state(state))
-# define LEAVE         (yy_pop_state())
-# define SET(state)    BEGIN(state)
-#endif
-
-/* Generic actions. */
-#define SKIP   /*skip*/
-#define SUCCEED        return 0
-
-#define FAIL   return fail
-static int fail(const char*, ...);
-
-/* Text buffer stack handling. */
-char bufferstack[FLEXML_BUFFERSTACKSIZE];
-char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE;
-typedef struct BufferLast_s {
-  struct BufferLast_s *old; char* saved; char new[1];
-} BufferLast;
-BufferLast* last = (BufferLast*)0;
-char* next = bufferstack;
-
-#define BUFFERSET(P)  (P = next)
-#define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
-#define BUFFERDONE    (BUFFERPUTC('\0'))
-
-#define BUFFERLITERAL(C,P) bufferliteral(C,&(P),yytext)
-static void bufferliteral(char c, char** pp, char* text)
-{
-  char *s = strchr(text,c), *e = strrchr(text,c);
-  assert(s <= e); BUFFERSET(*pp);
-  while (++s<e) {
-    if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
-    else BUFFERPUTC(*s);
-  } 
-  BUFFERDONE;
-}
-
-#ifdef FLEXML_HasMixed
-static void pushbuffer(char* p)
-{
-  BufferLast* l = (BufferLast*)next;
-  assert(next < limit);
-  l->old = last;
-  l->saved = p;
-  next = l->new;
-  last = l;
-}
-
-static char* popbuffer(void)
-{
-  BufferLast* l = last;
-  assert(last != (BufferLast*)0);
-  last = l->old;
-  next = (char*)l;
-  return l->saved;
-}
-#endif
-
-/* General internal entities are `unput' back onto the input stream... */
-#define ENTITYTEXT(T) \
-  { char *s = (T), *e = s+strlen(s);\
-    while (--e >= s) { unput(*e); }}
-/* Flex standard options. */
-#define YY_STACK_USED 1
-#define YY_NO_TOP_STATE 1
-#define YY_NO_INPUT 1
-/* Flex user-requested options. */
-#define YY_NO_UNPUT 1
-/* XML character classes (currently restricted to ASCII). */
-/* "Common syntactic structures." */
-/* "Names and Tokens." */
-/* Miscellaneous. */
-/* Parser states (flex `exclusive start conditions'):
- *
- * PROLOG      the XML prolog of the document before <?xml...>
- * DOCTYPE     the XML prolog of the document after <?xml...>
- * EPILOG      after the root element
- * INCOMMENT   inside an XML comment <!--....-->
- * INPI                inside an XML PI <?...?>
- * VALUE1      inside a '...'-delimited literal
- * VALUE2      inside a "..."-delimited literal
- * CDATA       inside a <![CDATA[...]]> section.
- * ROOT_<tag>  expect root element <tag>
- * AL_<tag>    inside the attribute list for <tag>
- * IN_<tag>    inside a <tag> with element contents (ready for end tag)
- * IMPOSSIBLE  dummy to permit disabling rules; must be last
- */
-#define PROLOG 1
-#define DOCTYPE 2
-#define EPILOG 3
-#define INCOMMENT 4
-#define INPI 5
-#define VALUE1 6
-#define VALUE2 7
-#define CDATA 8
-
-#define ROOT_Theme 9
-#define AL_Theme 10
-#define S_Theme 11
-#define S_Theme_1 12
-#define S_Theme_2 13
-#define S_Theme_3 14
-#define E_Theme 15
-
-#define ROOT_Bitmap 16
-#define AL_Bitmap 17
-#define E_Bitmap 18
-
-#define ROOT_Event 19
-#define AL_Event 20
-#define E_Event 21
-
-#define ROOT_Font 22
-#define AL_Font 23
-#define E_Font 24
-
-#define ROOT_ThemeInfo 25
-#define AL_ThemeInfo 26
-#define E_ThemeInfo 27
-
-#define ROOT_Window 28
-#define AL_Window 29
-#define S_Window 30
-#define E_Window 31
-
-#define ROOT_ControlGroup 32
-#define AL_ControlGroup 33
-#define S_ControlGroup 34
-#define S_ControlGroup_1 35
-#define S_ControlGroup_2 36
-#define E_ControlGroup 37
-
-#define ROOT_Anchor 38
-#define AL_Anchor 39
-#define E_Anchor 40
-
-#define ROOT_ImageControl 41
-#define AL_ImageControl 42
-#define E_ImageControl 43
-
-#define ROOT_RectangleControl 44
-#define AL_RectangleControl 45
-#define E_RectangleControl 46
-
-#define ROOT_ButtonControl 47
-#define AL_ButtonControl 48
-#define E_ButtonControl 49
-
-#define ROOT_CheckBoxControl 50
-#define AL_CheckBoxControl 51
-#define E_CheckBoxControl 52
-
-#define ROOT_SliderControl 53
-#define AL_SliderControl 54
-#define E_SliderControl 55
-
-#define ROOT_TextControl 56
-#define AL_TextControl 57
-#define E_TextControl 58
-
-#define ROOT_PlayListControl 59
-#define AL_PlayListControl 60
-#define S_PlayListControl 61
-#define E_PlayListControl 62
-
-#define IMPOSSIBLE 63
-
-/* State names. */
-char* statenames[IMPOSSIBLE];
-
-void FleXML_init(void)
-{
-  statenames[PROLOG] = NULL;
-  statenames[DOCTYPE] = NULL;
-  statenames[EPILOG] = NULL;
-  statenames[INCOMMENT] = NULL;
-  statenames[INPI] = NULL;
-  statenames[VALUE1] = NULL;
-  statenames[VALUE2] = NULL;
-  statenames[CDATA] = NULL;
-  statenames[ROOT_Theme] = NULL;
-  statenames[AL_Theme] = NULL;
-  statenames[S_Theme] = "Theme";
-  statenames[S_Theme_1] = "Theme";
-  statenames[S_Theme_2] = "Theme";
-  statenames[S_Theme_3] = "Theme";
-  statenames[E_Theme] = "Theme";
-  statenames[ROOT_Bitmap] = NULL;
-  statenames[AL_Bitmap] = NULL;
-  statenames[E_Bitmap] = "Bitmap";
-  statenames[ROOT_Event] = NULL;
-  statenames[AL_Event] = NULL;
-  statenames[E_Event] = "Event";
-  statenames[ROOT_Font] = NULL;
-  statenames[AL_Font] = NULL;
-  statenames[E_Font] = "Font";
-  statenames[ROOT_ThemeInfo] = NULL;
-  statenames[AL_ThemeInfo] = NULL;
-  statenames[E_ThemeInfo] = "ThemeInfo";
-  statenames[ROOT_Window] = NULL;
-  statenames[AL_Window] = NULL;
-  statenames[S_Window] = "Window";
-  statenames[E_Window] = "Window";
-  statenames[ROOT_ControlGroup] = NULL;
-  statenames[AL_ControlGroup] = NULL;
-  statenames[S_ControlGroup] = "ControlGroup";
-  statenames[S_ControlGroup_1] = "ControlGroup";
-  statenames[S_ControlGroup_2] = "ControlGroup";
-  statenames[E_ControlGroup] = "ControlGroup";
-  statenames[ROOT_Anchor] = NULL;
-  statenames[AL_Anchor] = NULL;
-  statenames[E_Anchor] = "Anchor";
-  statenames[ROOT_ImageControl] = NULL;
-  statenames[AL_ImageControl] = NULL;
-  statenames[E_ImageControl] = "ImageControl";
-  statenames[ROOT_RectangleControl] = NULL;
-  statenames[AL_RectangleControl] = NULL;
-  statenames[E_RectangleControl] = "RectangleControl";
-  statenames[ROOT_ButtonControl] = NULL;
-  statenames[AL_ButtonControl] = NULL;
-  statenames[E_ButtonControl] = "ButtonControl";
-  statenames[ROOT_CheckBoxControl] = NULL;
-  statenames[AL_CheckBoxControl] = NULL;
-  statenames[E_CheckBoxControl] = "CheckBoxControl";
-  statenames[ROOT_SliderControl] = NULL;
-  statenames[AL_SliderControl] = NULL;
-  statenames[E_SliderControl] = "SliderControl";
-  statenames[ROOT_TextControl] = NULL;
-  statenames[AL_TextControl] = NULL;
-  statenames[E_TextControl] = "TextControl";
-  statenames[ROOT_PlayListControl] = NULL;
-  statenames[AL_PlayListControl] = NULL;
-  statenames[S_PlayListControl] = "PlayListControl";
-  statenames[E_PlayListControl] = "PlayListControl";
-}
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-       if ( yy_current_buffer->yy_is_interactive ) \
-               { \
-               int c = '*', n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
-                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
-               } \
-       else \
-               { \
-               errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-                       { \
-                       if( errno != EINTR) \
-                               { \
-                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                               break; \
-                               } \
-                       errno=0; \
-                       clearerr(yyin); \
-                       } \
-               }
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-       YY_USER_ACTION
-
-YY_DECL
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
-
-
-
- /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
- SET(PROLOG); FleXML_init();
-
- /* COMMENTS and PIs: handled uniformly for efficiency. */
-
-
-       if ( yy_init )
-               {
-               yy_init = 0;
-
-#ifdef YY_USER_INIT
-               YY_USER_INIT;
-#endif
-
-               if ( ! yy_start )
-                       yy_start = 1;   /* first start state */
-
-               if ( ! yyin )
-                       yyin = stdin;
-
-               if ( ! yyout )
-                       yyout = stdout;
-
-               if ( ! yy_current_buffer )
-                       yy_current_buffer =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
-
-               yy_load_buffer_state();
-               }
-
-       while ( 1 )             /* loops until end-of-file is reached */
-               {
-               yy_cp = yy_c_buf_p;
-
-               /* Support of yytext. */
-               *yy_cp = yy_hold_char;
-
-               /* yy_bp points to the position in yy_ch_buf of the start of
-                * the current run.
-                */
-               yy_bp = yy_cp;
-
-               yy_current_state = yy_start;
-yy_match:
-               do
-                       {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-                       if ( yy_accept[yy_current_state] )
-                               {
-                               yy_last_accepting_state = yy_current_state;
-                               yy_last_accepting_cpos = yy_cp;
-                               }
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 2505 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-                       ++yy_cp;
-                       }
-               while ( yy_current_state != 2504 );
-               yy_cp = yy_last_accepting_cpos;
-               yy_current_state = yy_last_accepting_state;
-
-yy_find_action:
-               yy_act = yy_accept[yy_current_state];
-
-               YY_DO_BEFORE_ACTION;
-
-
-do_action:     /* This label is used only to access EOF actions. */
-
-
-               switch ( yy_act )
-       { /* beginning of action switch */
-                       case 0: /* must back up */
-                       /* undo the effects of YY_DO_BEFORE_ACTION */
-                       *yy_cp = yy_hold_char;
-                       yy_cp = yy_last_accepting_cpos;
-                       yy_current_state = yy_last_accepting_state;
-                       goto yy_find_action;
-
-
-case 1:
-YY_RULE_SETUP
-ENTER(INCOMMENT);
-       YY_BREAK
-case 2:
-YY_RULE_SETUP
-ENTER(INPI);
-       YY_BREAK
-
-
-case 3:
-YY_RULE_SETUP
-LEAVE;
-       YY_BREAK
-case 4:
-case 5:
-case 6:
-YY_RULE_SETUP
-SKIP;
-       YY_BREAK
-case YY_STATE_EOF(INCOMMENT):
-FAIL("EOF in comment.");
-       YY_BREAK
-
-
-case 7:
-YY_RULE_SETUP
-LEAVE;
-       YY_BREAK
-case 8:
-case 9:
-YY_RULE_SETUP
-SKIP;
-       YY_BREAK
-case YY_STATE_EOF(INPI):
-FAIL("EOF in PI (processing instruction).");
-       YY_BREAK
-
-/* SPACES: skipped uniformly */
-case 10:
-YY_RULE_SETUP
-SKIP;
-       YY_BREAK
-/* PROLOG: determine root element and process it. */
-
-case 11:
-YY_RULE_SETUP
-SET(DOCTYPE);
-       YY_BREAK
-case 12:
-YY_RULE_SETUP
-FAIL("Bad declaration %s.",yytext);
-       YY_BREAK
-
-
-case 13:
-YY_RULE_SETUP
-SET(ROOT_ButtonControl);
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-SET(ROOT_Event);
-       YY_BREAK
-case 15:
-YY_RULE_SETUP
-SET(ROOT_RectangleControl);
-       YY_BREAK
-case 16:
-YY_RULE_SETUP
-SET(ROOT_Font);
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-SET(ROOT_Theme);
-       YY_BREAK
-case 18:
-YY_RULE_SETUP
-SET(ROOT_Anchor);
-       YY_BREAK
-case 19:
-YY_RULE_SETUP
-SET(ROOT_ThemeInfo);
-       YY_BREAK
-case 20:
-YY_RULE_SETUP
-SET(ROOT_ControlGroup);
-       YY_BREAK
-case 21:
-YY_RULE_SETUP
-SET(ROOT_Window);
-       YY_BREAK
-case 22:
-YY_RULE_SETUP
-SET(ROOT_Bitmap);
-       YY_BREAK
-case 23:
-YY_RULE_SETUP
-SET(ROOT_ImageControl);
-       YY_BREAK
-case 24:
-YY_RULE_SETUP
-SET(ROOT_CheckBoxControl);
-       YY_BREAK
-case 25:
-YY_RULE_SETUP
-SET(ROOT_SliderControl);
-       YY_BREAK
-case 26:
-YY_RULE_SETUP
-SET(ROOT_PlayListControl);
-       YY_BREAK
-case 27:
-YY_RULE_SETUP
-SET(ROOT_TextControl);
-       YY_BREAK
-case 28:
-YY_RULE_SETUP
-FAIL("Bad declaration %s.",yytext);
-       YY_BREAK
-case 29:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in prolog.", yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(PROLOG):
-case YY_STATE_EOF(DOCTYPE):
-FAIL("EOF in prolog.");
-       YY_BREAK
-
-/* RULES DERIVED FROM DTD. */
-/* <!--
-  *  *****************************************************************************
-  *  * skin.dtd: DTD for the VLC skins
-  *  *****************************************************************************
-  *  * Copyright (C) 2003 VideoLAN
-  *  * $Id: flex.c,v 1.9 2003/10/22 19:12:56 ipkiss Exp $
-  *  *
-  *  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
-  *  *          Emmanuel Puig    <karibu@via.ecp.fr>
-  *  *
-  *  * This program is free software; you can redistribute it and/or modify
-  *  * it under the terms of the GNU General Public License as published by
-  *  * the Free Software Foundation; either version 2 of the License, or
-  *  * (at your option) any later version.
-  *  *
-  *  * This program is distributed in the hope that it will be useful,
-  *  * but WITHOUT ANY WARRANTY; without even the implied warranty of
-  *  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  *  * GNU General Public License for more details.
-  *  *
-  *  * You should have received a copy of the GNU General Public License
-  *  * along with this program; if not, write to the Free Software
-  *  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
-  *  * USA.
-  *  *****************************************************************************
-  * -->  */
-/*         magnet      CDATA   "9"
-  *     >  */
-case 30:
-YY_RULE_SETUP
-{
-  A_Theme_magnet = "9";
-  ENTER(AL_Theme);
-}
-       YY_BREAK
-
-case 31:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Theme_magnet);
-       YY_BREAK
-case 32:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Theme_magnet);
-       YY_BREAK
-case 33:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Theme(); pcdata = NULL; ENTER(S_Theme);
- }
-       YY_BREAK
-case 34:
-YY_RULE_SETUP
-FAIL("`Theme' element cannot be empty.");
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Theme element.", yytext[0]);
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Theme' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Theme):
-FAIL("EOF in attribute list of `Theme' element.");
-       YY_BREAK
-
-
-case 37:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Theme();
-  switch (YY_START) {
-   case ROOT_Theme: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 38:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Theme>' expected.",yytext);
-       YY_BREAK
-case 39:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Theme>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(S_Theme_1):
-case YY_STATE_EOF(E_Theme):
-case YY_STATE_EOF(S_Theme_3):
-FAIL("Premature EOF: `</Theme>' expected.");
-       YY_BREAK
-
-/* <!-- main elements -->  */
-/*         id          CDATA   #REQUIRED
-  *         file        CDATA   #REQUIRED
-  *         alphacolor  CDATA   #REQUIRED
-  *     >  */
-case 40:
-YY_RULE_SETUP
-{
-  A_Bitmap_id = NULL;
-  A_Bitmap_file = NULL;
-  A_Bitmap_alphacolor = NULL;
-  ENTER(AL_Bitmap);
-}
-       YY_BREAK
-
-case 41:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Bitmap_id);
-       YY_BREAK
-case 42:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Bitmap_id);
-       YY_BREAK
-case 43:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Bitmap_file);
-       YY_BREAK
-case 44:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Bitmap_file);
-       YY_BREAK
-case 45:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Bitmap_alphacolor);
-       YY_BREAK
-case 46:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Bitmap_alphacolor);
-       YY_BREAK
-case 47:
-YY_RULE_SETUP
-{
-  if (!A_Bitmap_id) FAIL("Required attribute `id' not set for `Bitmap' element.");
-  if (!A_Bitmap_file) FAIL("Required attribute `file' not set for `Bitmap' element.");
-  if (!A_Bitmap_alphacolor) FAIL("Required attribute `alphacolor' not set for `Bitmap' element.");
-  LEAVE; STag_Bitmap(); pcdata = NULL; ENTER(E_Bitmap);
- }
-       YY_BREAK
-case 48:
-YY_RULE_SETUP
-{
-  if (!A_Bitmap_id) FAIL("Required attribute `id' not set for `Bitmap' element.");
-  if (!A_Bitmap_file) FAIL("Required attribute `file' not set for `Bitmap' element.");
-  if (!A_Bitmap_alphacolor) FAIL("Required attribute `alphacolor' not set for `Bitmap' element.");
-  LEAVE; STag_Bitmap(); pcdata = NULL; ETag_Bitmap();
-  switch (YY_START) {
-   case ROOT_Bitmap: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 49:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Bitmap element.", yytext[0]);
-       YY_BREAK
-case 50:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Bitmap' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Bitmap):
-FAIL("EOF in attribute list of `Bitmap' element.");
-       YY_BREAK
-
-
-case 51:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Bitmap();
-  switch (YY_START) {
-   case ROOT_Bitmap: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 52:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Bitmap>' expected.",yytext);
-       YY_BREAK
-case 53:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Bitmap>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Bitmap):
-FAIL("Premature EOF: `</Bitmap>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   #REQUIRED
-  *         event       CDATA   #REQUIRED
-  *         key         CDATA   "none"
-  *     >  */
-case 54:
-YY_RULE_SETUP
-{
-  A_Event_id = NULL;
-  A_Event_event = NULL;
-  A_Event_key = "none";
-  ENTER(AL_Event);
-}
-       YY_BREAK
-
-case 55:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Event_id);
-       YY_BREAK
-case 56:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Event_id);
-       YY_BREAK
-case 57:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Event_event);
-       YY_BREAK
-case 58:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Event_event);
-       YY_BREAK
-case 59:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Event_key);
-       YY_BREAK
-case 60:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Event_key);
-       YY_BREAK
-case 61:
-YY_RULE_SETUP
-{
-  if (!A_Event_id) FAIL("Required attribute `id' not set for `Event' element.");
-  if (!A_Event_event) FAIL("Required attribute `event' not set for `Event' element.");
-  LEAVE; STag_Event(); pcdata = NULL; ENTER(E_Event);
- }
-       YY_BREAK
-case 62:
-YY_RULE_SETUP
-{
-  if (!A_Event_id) FAIL("Required attribute `id' not set for `Event' element.");
-  if (!A_Event_event) FAIL("Required attribute `event' not set for `Event' element.");
-  LEAVE; STag_Event(); pcdata = NULL; ETag_Event();
-  switch (YY_START) {
-   case ROOT_Event: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 63:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Event element.", yytext[0]);
-       YY_BREAK
-case 64:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Event' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Event):
-FAIL("EOF in attribute list of `Event' element.");
-       YY_BREAK
-
-
-case 65:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Event();
-  switch (YY_START) {
-   case ROOT_Event: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 66:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Event>' expected.",yytext);
-       YY_BREAK
-case 67:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Event>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Event):
-FAIL("Premature EOF: `</Event>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "default"
-  *         font        CDATA   "arial"
-  *         size        CDATA   "12"
-  *         color       CDATA   "#000000"
-  *         weight      CDATA   "400"
-  *         italic      CDATA   "false"
-  *         underline   CDATA   "false"
-  *     >  */
-case 68:
-YY_RULE_SETUP
-{
-  A_Font_id = "default";
-  A_Font_font = "arial";
-  A_Font_size = "12";
-  A_Font_color = "#000000";
-  A_Font_weight = "400";
-  A_Font_italic = "false";
-  A_Font_underline = "false";
-  ENTER(AL_Font);
-}
-       YY_BREAK
-
-case 69:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_id);
-       YY_BREAK
-case 70:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_id);
-       YY_BREAK
-case 71:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_font);
-       YY_BREAK
-case 72:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_font);
-       YY_BREAK
-case 73:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_size);
-       YY_BREAK
-case 74:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_size);
-       YY_BREAK
-case 75:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_color);
-       YY_BREAK
-case 76:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_color);
-       YY_BREAK
-case 77:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_weight);
-       YY_BREAK
-case 78:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_weight);
-       YY_BREAK
-case 79:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_italic);
-       YY_BREAK
-case 80:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_italic);
-       YY_BREAK
-case 81:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_underline);
-       YY_BREAK
-case 82:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_underline);
-       YY_BREAK
-case 83:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Font(); pcdata = NULL; ENTER(E_Font);
- }
-       YY_BREAK
-case 84:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Font(); pcdata = NULL; ETag_Font();
-  switch (YY_START) {
-   case ROOT_Font: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 85:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Font element.", yytext[0]);
-       YY_BREAK
-case 86:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Font' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Font):
-FAIL("EOF in attribute list of `Font' element.");
-       YY_BREAK
-
-
-case 87:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Font();
-  switch (YY_START) {
-   case ROOT_Font: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 88:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Font>' expected.",yytext);
-       YY_BREAK
-case 89:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Font>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Font):
-FAIL("Premature EOF: `</Font>' expected.");
-       YY_BREAK
-
-/*         name        CDATA   #IMPLIED
-  *         author      CDATA   #IMPLIED
-  *         email       CDATA   #IMPLIED
-  *         webpage     CDATA   #IMPLIED
-  *     >  */
-case 90:
-YY_RULE_SETUP
-{
-  A_ThemeInfo_name = NULL;
-  A_ThemeInfo_author = NULL;
-  A_ThemeInfo_email = NULL;
-  A_ThemeInfo_webpage = NULL;
-  ENTER(AL_ThemeInfo);
-}
-       YY_BREAK
-
-case 91:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_name);
-       YY_BREAK
-case 92:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_name);
-       YY_BREAK
-case 93:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_author);
-       YY_BREAK
-case 94:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_author);
-       YY_BREAK
-case 95:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_email);
-       YY_BREAK
-case 96:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_email);
-       YY_BREAK
-case 97:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_webpage);
-       YY_BREAK
-case 98:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_webpage);
-       YY_BREAK
-case 99:
-YY_RULE_SETUP
-{
-  LEAVE; STag_ThemeInfo(); pcdata = NULL; ENTER(E_ThemeInfo);
- }
-       YY_BREAK
-case 100:
-YY_RULE_SETUP
-{
-  LEAVE; STag_ThemeInfo(); pcdata = NULL; ETag_ThemeInfo();
-  switch (YY_START) {
-   case ROOT_ThemeInfo: SET(EPILOG); break;
-   case S_Theme: SET(S_Theme_1); break;
-  }
- }
-       YY_BREAK
-case 101:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of ThemeInfo element.", yytext[0]);
-       YY_BREAK
-case 102:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `ThemeInfo' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_ThemeInfo):
-FAIL("EOF in attribute list of `ThemeInfo' element.");
-       YY_BREAK
-
-
-case 103:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_ThemeInfo();
-  switch (YY_START) {
-   case ROOT_ThemeInfo: SET(EPILOG); break;
-   case S_Theme: SET(S_Theme_1); break;
-  }
- }
-       YY_BREAK
-case 104:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</ThemeInfo>' expected.",yytext);
-       YY_BREAK
-case 105:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</ThemeInfo>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_ThemeInfo):
-FAIL("Premature EOF: `</ThemeInfo>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   #REQUIRED
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         fadetime    CDATA   "500"
-  *         alpha       CDATA   "255"
-  *         movealpha   CDATA   "255"
-  *         dragdrop    CDATA   "true"
-  *         playondrop  CDATA   "true"
-  *     >  */
-case 106:
-YY_RULE_SETUP
-{
-  A_Window_id = NULL;
-  A_Window_visible = "true";
-  A_Window_x = "\0";
-  A_Window_y = "\0";
-  A_Window_fadetime = "500";
-  A_Window_alpha = "255";
-  A_Window_movealpha = "255";
-  A_Window_dragdrop = "true";
-  A_Window_playondrop = "true";
-  ENTER(AL_Window);
-}
-       YY_BREAK
-
-case 107:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_id);
-       YY_BREAK
-case 108:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_id);
-       YY_BREAK
-case 109:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_visible);
-       YY_BREAK
-case 110:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_visible);
-       YY_BREAK
-case 111:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_x);
-       YY_BREAK
-case 112:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_x);
-       YY_BREAK
-case 113:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_y);
-       YY_BREAK
-case 114:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_y);
-       YY_BREAK
-case 115:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_fadetime);
-       YY_BREAK
-case 116:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_fadetime);
-       YY_BREAK
-case 117:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_alpha);
-       YY_BREAK
-case 118:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_alpha);
-       YY_BREAK
-case 119:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_movealpha);
-       YY_BREAK
-case 120:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_movealpha);
-       YY_BREAK
-case 121:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_dragdrop);
-       YY_BREAK
-case 122:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_dragdrop);
-       YY_BREAK
-case 123:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_playondrop);
-       YY_BREAK
-case 124:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_playondrop);
-       YY_BREAK
-case 125:
-YY_RULE_SETUP
-{
-  if (!A_Window_id) FAIL("Required attribute `id' not set for `Window' element.");
-  LEAVE; STag_Window(); pcdata = NULL; ENTER(S_Window);
- }
-       YY_BREAK
-case 126:
-YY_RULE_SETUP
-FAIL("`Window' element cannot be empty.");
-       YY_BREAK
-case 127:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Window element.", yytext[0]);
-       YY_BREAK
-case 128:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Window' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Window):
-FAIL("EOF in attribute list of `Window' element.");
-       YY_BREAK
-
-
-case 129:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Window();
-  switch (YY_START) {
-   case ROOT_Window: SET(EPILOG); break;
-   case S_Theme_1: case S_Theme_2: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 130:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Window>' expected.",yytext);
-       YY_BREAK
-case 131:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Window>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Window):
-FAIL("Premature EOF: `</Window>' expected.");
-       YY_BREAK
-
-/*                         SliderControl|TextControl|CheckBoxControl|
-  *                         RectangleControl|Anchor)+>  */
-/*         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *     >  */
-case 132:
-YY_RULE_SETUP
-{
-  A_ControlGroup_x = "\0";
-  A_ControlGroup_y = "\0";
-  ENTER(AL_ControlGroup);
-}
-       YY_BREAK
-
-case 133:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ControlGroup_x);
-       YY_BREAK
-case 134:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ControlGroup_x);
-       YY_BREAK
-case 135:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ControlGroup_y);
-       YY_BREAK
-case 136:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ControlGroup_y);
-       YY_BREAK
-case 137:
-YY_RULE_SETUP
-{
-  LEAVE; STag_ControlGroup(); pcdata = NULL; ENTER(S_ControlGroup);
- }
-       YY_BREAK
-case 138:
-YY_RULE_SETUP
-FAIL("`ControlGroup' element cannot be empty.");
-       YY_BREAK
-case 139:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of ControlGroup element.", yytext[0]);
-       YY_BREAK
-case 140:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `ControlGroup' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_ControlGroup):
-FAIL("EOF in attribute list of `ControlGroup' element.");
-       YY_BREAK
-
-
-case 141:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_ControlGroup();
-  switch (YY_START) {
-   case ROOT_ControlGroup: SET(EPILOG); break;
-   case S_Window: SET(E_Window); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 142:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</ControlGroup>' expected.",yytext);
-       YY_BREAK
-case 143:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</ControlGroup>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_ControlGroup):
-case YY_STATE_EOF(S_ControlGroup_2):
-FAIL("Premature EOF: `</ControlGroup>' expected.");
-       YY_BREAK
-
-/* <!-- Anchors -->  */
-/*         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         priority    CDATA   #REQUIRED
-  *         range       CDATA   "10"
-  *     >  */
-case 144:
-YY_RULE_SETUP
-{
-  A_Anchor_x = "\0";
-  A_Anchor_y = "\0";
-  A_Anchor_priority = NULL;
-  A_Anchor_range = "10";
-  ENTER(AL_Anchor);
-}
-       YY_BREAK
-
-case 145:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_x);
-       YY_BREAK
-case 146:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_x);
-       YY_BREAK
-case 147:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_y);
-       YY_BREAK
-case 148:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_y);
-       YY_BREAK
-case 149:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_priority);
-       YY_BREAK
-case 150:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_priority);
-       YY_BREAK
-case 151:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_range);
-       YY_BREAK
-case 152:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_range);
-       YY_BREAK
-case 153:
-YY_RULE_SETUP
-{
-  if (!A_Anchor_priority) FAIL("Required attribute `priority' not set for `Anchor' element.");
-  LEAVE; STag_Anchor(); pcdata = NULL; ENTER(E_Anchor);
- }
-       YY_BREAK
-case 154:
-YY_RULE_SETUP
-{
-  if (!A_Anchor_priority) FAIL("Required attribute `priority' not set for `Anchor' element.");
-  LEAVE; STag_Anchor(); pcdata = NULL; ETag_Anchor();
-  switch (YY_START) {
-   case ROOT_Anchor: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 155:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Anchor element.", yytext[0]);
-       YY_BREAK
-case 156:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Anchor' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Anchor):
-FAIL("EOF in attribute list of `Anchor' element.");
-       YY_BREAK
-
-
-case 157:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Anchor();
-  switch (YY_START) {
-   case ROOT_Anchor: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 158:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Anchor>' expected.",yytext);
-       YY_BREAK
-case 159:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Anchor>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Anchor):
-FAIL("Premature EOF: `</Anchor>' expected.");
-       YY_BREAK
-
-/* <!-- Controls -->  */
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         image       CDATA   #REQUIRED
-  *         onclick     CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-case 160:
-YY_RULE_SETUP
-{
-  A_ImageControl_id = "none";
-  A_ImageControl_visible = "true";
-  A_ImageControl_x = "\0";
-  A_ImageControl_y = "\0";
-  A_ImageControl_image = NULL;
-  A_ImageControl_onclick = "none";
-  A_ImageControl_help = "\0";
-  ENTER(AL_ImageControl);
-}
-       YY_BREAK
-
-case 161:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_id);
-       YY_BREAK
-case 162:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_id);
-       YY_BREAK
-case 163:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_visible);
-       YY_BREAK
-case 164:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_visible);
-       YY_BREAK
-case 165:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_x);
-       YY_BREAK
-case 166:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_x);
-       YY_BREAK
-case 167:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_y);
-       YY_BREAK
-case 168:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_y);
-       YY_BREAK
-case 169:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_image);
-       YY_BREAK
-case 170:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_image);
-       YY_BREAK
-case 171:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_onclick);
-       YY_BREAK
-case 172:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_onclick);
-       YY_BREAK
-case 173:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ImageControl_help);
-       YY_BREAK
-case 174:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ImageControl_help);
-       YY_BREAK
-case 175:
-YY_RULE_SETUP
-{
-  if (!A_ImageControl_image) FAIL("Required attribute `image' not set for `ImageControl' element.");
-  LEAVE; STag_ImageControl(); pcdata = NULL; ENTER(E_ImageControl);
- }
-       YY_BREAK
-case 176:
-YY_RULE_SETUP
-{
-  if (!A_ImageControl_image) FAIL("Required attribute `image' not set for `ImageControl' element.");
-  LEAVE; STag_ImageControl(); pcdata = NULL; ETag_ImageControl();
-  switch (YY_START) {
-   case ROOT_ImageControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 177:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of ImageControl element.", yytext[0]);
-       YY_BREAK
-case 178:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `ImageControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_ImageControl):
-FAIL("EOF in attribute list of `ImageControl' element.");
-       YY_BREAK
-
-
-case 179:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_ImageControl();
-  switch (YY_START) {
-   case ROOT_ImageControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 180:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</ImageControl>' expected.",yytext);
-       YY_BREAK
-case 181:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</ImageControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_ImageControl):
-FAIL("Premature EOF: `</ImageControl>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         w           CDATA   "50"
-  *         h           CDATA   "50"
-  *         color       CDATA   "#C0C0C0"
-  *         onclick     CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-case 182:
-YY_RULE_SETUP
-{
-  A_RectangleControl_id = "none";
-  A_RectangleControl_visible = "true";
-  A_RectangleControl_x = "\0";
-  A_RectangleControl_y = "\0";
-  A_RectangleControl_w = "50";
-  A_RectangleControl_h = "50";
-  A_RectangleControl_color = "#C0C0C0";
-  A_RectangleControl_onclick = "none";
-  A_RectangleControl_help = "\0";
-  ENTER(AL_RectangleControl);
-}
-       YY_BREAK
-
-case 183:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_id);
-       YY_BREAK
-case 184:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_id);
-       YY_BREAK
-case 185:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_visible);
-       YY_BREAK
-case 186:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_visible);
-       YY_BREAK
-case 187:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_x);
-       YY_BREAK
-case 188:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_x);
-       YY_BREAK
-case 189:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_y);
-       YY_BREAK
-case 190:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_y);
-       YY_BREAK
-case 191:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_w);
-       YY_BREAK
-case 192:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_w);
-       YY_BREAK
-case 193:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_h);
-       YY_BREAK
-case 194:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_h);
-       YY_BREAK
-case 195:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_color);
-       YY_BREAK
-case 196:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_color);
-       YY_BREAK
-case 197:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_onclick);
-       YY_BREAK
-case 198:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_onclick);
-       YY_BREAK
-case 199:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RectangleControl_help);
-       YY_BREAK
-case 200:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RectangleControl_help);
-       YY_BREAK
-case 201:
-YY_RULE_SETUP
-{
-  LEAVE; STag_RectangleControl(); pcdata = NULL; ENTER(E_RectangleControl);
- }
-       YY_BREAK
-case 202:
-YY_RULE_SETUP
-{
-  LEAVE; STag_RectangleControl(); pcdata = NULL; ETag_RectangleControl();
-  switch (YY_START) {
-   case ROOT_RectangleControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 203:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of RectangleControl element.", yytext[0]);
-       YY_BREAK
-case 204:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `RectangleControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_RectangleControl):
-FAIL("EOF in attribute list of `RectangleControl' element.");
-       YY_BREAK
-
-
-case 205:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_RectangleControl();
-  switch (YY_START) {
-   case ROOT_RectangleControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 206:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</RectangleControl>' expected.",yytext);
-       YY_BREAK
-case 207:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</RectangleControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_RectangleControl):
-FAIL("Premature EOF: `</RectangleControl>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         up          CDATA   #REQUIRED
-  *         down        CDATA   #REQUIRED
-  *         disabled    CDATA   "none"
-  *         onclick     CDATA   "none"
-  *         onmouseover CDATA   "none"
-  *         onmouseout  CDATA   "none"
-  *         tooltiptext CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-case 208:
-YY_RULE_SETUP
-{
-  A_ButtonControl_id = "none";
-  A_ButtonControl_visible = "true";
-  A_ButtonControl_x = "\0";
-  A_ButtonControl_y = "\0";
-  A_ButtonControl_up = NULL;
-  A_ButtonControl_down = NULL;
-  A_ButtonControl_disabled = "none";
-  A_ButtonControl_onclick = "none";
-  A_ButtonControl_onmouseover = "none";
-  A_ButtonControl_onmouseout = "none";
-  A_ButtonControl_tooltiptext = "none";
-  A_ButtonControl_help = "\0";
-  ENTER(AL_ButtonControl);
-}
-       YY_BREAK
-
-case 209:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_id);
-       YY_BREAK
-case 210:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_id);
-       YY_BREAK
-case 211:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_visible);
-       YY_BREAK
-case 212:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_visible);
-       YY_BREAK
-case 213:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_x);
-       YY_BREAK
-case 214:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_x);
-       YY_BREAK
-case 215:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_y);
-       YY_BREAK
-case 216:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_y);
-       YY_BREAK
-case 217:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_up);
-       YY_BREAK
-case 218:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_up);
-       YY_BREAK
-case 219:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_down);
-       YY_BREAK
-case 220:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_down);
-       YY_BREAK
-case 221:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_disabled);
-       YY_BREAK
-case 222:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_disabled);
-       YY_BREAK
-case 223:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_onclick);
-       YY_BREAK
-case 224:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_onclick);
-       YY_BREAK
-case 225:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_onmouseover);
-       YY_BREAK
-case 226:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_onmouseover);
-       YY_BREAK
-case 227:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_onmouseout);
-       YY_BREAK
-case 228:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_onmouseout);
-       YY_BREAK
-case 229:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_tooltiptext);
-       YY_BREAK
-case 230:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_tooltiptext);
-       YY_BREAK
-case 231:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ButtonControl_help);
-       YY_BREAK
-case 232:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ButtonControl_help);
-       YY_BREAK
-case 233:
-YY_RULE_SETUP
-{
-  if (!A_ButtonControl_up) FAIL("Required attribute `up' not set for `ButtonControl' element.");
-  if (!A_ButtonControl_down) FAIL("Required attribute `down' not set for `ButtonControl' element.");
-  LEAVE; STag_ButtonControl(); pcdata = NULL; ENTER(E_ButtonControl);
- }
-       YY_BREAK
-case 234:
-YY_RULE_SETUP
-{
-  if (!A_ButtonControl_up) FAIL("Required attribute `up' not set for `ButtonControl' element.");
-  if (!A_ButtonControl_down) FAIL("Required attribute `down' not set for `ButtonControl' element.");
-  LEAVE; STag_ButtonControl(); pcdata = NULL; ETag_ButtonControl();
-  switch (YY_START) {
-   case ROOT_ButtonControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 235:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of ButtonControl element.", yytext[0]);
-       YY_BREAK
-case 236:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `ButtonControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_ButtonControl):
-FAIL("EOF in attribute list of `ButtonControl' element.");
-       YY_BREAK
-
-
-case 237:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_ButtonControl();
-  switch (YY_START) {
-   case ROOT_ButtonControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 238:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</ButtonControl>' expected.",yytext);
-       YY_BREAK
-case 239:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</ButtonControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_ButtonControl):
-FAIL("Premature EOF: `</ButtonControl>' expected.");
-       YY_BREAK
-
-/*         id           CDATA   "none"
-  *         visible      CDATA   "true"
-  *         x            CDATA   "\0"
-  *         y            CDATA   "\0"
-  *         img1         CDATA   #REQUIRED
-  *         clickimg1    CDATA   "none"
-  *         img2         CDATA   #REQUIRED
-  *         clickimg2    CDATA   "none"
-  *         disabled1    CDATA   "none"
-  *         disabled2    CDATA   "none"
-  *         onclick1     CDATA   "none"
-  *         onclick2     CDATA   "none"
-  *         onmouseover1 CDATA   "none"
-  *         onmouseout1  CDATA   "none"
-  *         onmouseover2 CDATA   "none"
-  *         onmouseout2  CDATA   "none"
-  *         tooltiptext1 CDATA   "none"
-  *         tooltiptext2 CDATA   "none"
-  *         help         CDATA   "\0"
-  *     >  */
-case 240:
-YY_RULE_SETUP
-{
-  A_CheckBoxControl_id = "none";
-  A_CheckBoxControl_visible = "true";
-  A_CheckBoxControl_x = "\0";
-  A_CheckBoxControl_y = "\0";
-  A_CheckBoxControl_img1 = NULL;
-  A_CheckBoxControl_clickimg1 = "none";
-  A_CheckBoxControl_img2 = NULL;
-  A_CheckBoxControl_clickimg2 = "none";
-  A_CheckBoxControl_disabled1 = "none";
-  A_CheckBoxControl_disabled2 = "none";
-  A_CheckBoxControl_onclick1 = "none";
-  A_CheckBoxControl_onclick2 = "none";
-  A_CheckBoxControl_onmouseover1 = "none";
-  A_CheckBoxControl_onmouseout1 = "none";
-  A_CheckBoxControl_onmouseover2 = "none";
-  A_CheckBoxControl_onmouseout2 = "none";
-  A_CheckBoxControl_tooltiptext1 = "none";
-  A_CheckBoxControl_tooltiptext2 = "none";
-  A_CheckBoxControl_help = "\0";
-  ENTER(AL_CheckBoxControl);
-}
-       YY_BREAK
-
-case 241:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_id);
-       YY_BREAK
-case 242:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_id);
-       YY_BREAK
-case 243:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_visible);
-       YY_BREAK
-case 244:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_visible);
-       YY_BREAK
-case 245:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_x);
-       YY_BREAK
-case 246:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_x);
-       YY_BREAK
-case 247:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_y);
-       YY_BREAK
-case 248:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_y);
-       YY_BREAK
-case 249:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_img1);
-       YY_BREAK
-case 250:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_img1);
-       YY_BREAK
-case 251:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_clickimg1);
-       YY_BREAK
-case 252:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_clickimg1);
-       YY_BREAK
-case 253:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_img2);
-       YY_BREAK
-case 254:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_img2);
-       YY_BREAK
-case 255:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_clickimg2);
-       YY_BREAK
-case 256:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_clickimg2);
-       YY_BREAK
-case 257:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_disabled1);
-       YY_BREAK
-case 258:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_disabled1);
-       YY_BREAK
-case 259:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_disabled2);
-       YY_BREAK
-case 260:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_disabled2);
-       YY_BREAK
-case 261:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_onclick1);
-       YY_BREAK
-case 262:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_onclick1);
-       YY_BREAK
-case 263:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_onclick2);
-       YY_BREAK
-case 264:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_onclick2);
-       YY_BREAK
-case 265:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_onmouseover1);
-       YY_BREAK
-case 266:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_onmouseover1);
-       YY_BREAK
-case 267:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_onmouseout1);
-       YY_BREAK
-case 268:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_onmouseout1);
-       YY_BREAK
-case 269:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_onmouseover2);
-       YY_BREAK
-case 270:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_onmouseover2);
-       YY_BREAK
-case 271:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_onmouseout2);
-       YY_BREAK
-case 272:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_onmouseout2);
-       YY_BREAK
-case 273:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_tooltiptext1);
-       YY_BREAK
-case 274:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_tooltiptext1);
-       YY_BREAK
-case 275:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_tooltiptext2);
-       YY_BREAK
-case 276:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_tooltiptext2);
-       YY_BREAK
-case 277:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBoxControl_help);
-       YY_BREAK
-case 278:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBoxControl_help);
-       YY_BREAK
-case 279:
-YY_RULE_SETUP
-{
-  if (!A_CheckBoxControl_img1) FAIL("Required attribute `img1' not set for `CheckBoxControl' element.");
-  if (!A_CheckBoxControl_img2) FAIL("Required attribute `img2' not set for `CheckBoxControl' element.");
-  LEAVE; STag_CheckBoxControl(); pcdata = NULL; ENTER(E_CheckBoxControl);
- }
-       YY_BREAK
-case 280:
-YY_RULE_SETUP
-{
-  if (!A_CheckBoxControl_img1) FAIL("Required attribute `img1' not set for `CheckBoxControl' element.");
-  if (!A_CheckBoxControl_img2) FAIL("Required attribute `img2' not set for `CheckBoxControl' element.");
-  LEAVE; STag_CheckBoxControl(); pcdata = NULL; ETag_CheckBoxControl();
-  switch (YY_START) {
-   case ROOT_CheckBoxControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 281:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of CheckBoxControl element.", yytext[0]);
-       YY_BREAK
-case 282:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `CheckBoxControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_CheckBoxControl):
-FAIL("EOF in attribute list of `CheckBoxControl' element.");
-       YY_BREAK
-
-
-case 283:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_CheckBoxControl();
-  switch (YY_START) {
-   case ROOT_CheckBoxControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 284:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</CheckBoxControl>' expected.",yytext);
-       YY_BREAK
-case 285:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</CheckBoxControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_CheckBoxControl):
-FAIL("Premature EOF: `</CheckBoxControl>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         type        CDATA   "time"
-  *         up          CDATA   #REQUIRED
-  *         down        CDATA   #REQUIRED
-  *         abs         CDATA   #REQUIRED
-  *         ord         CDATA   #REQUIRED
-  *         tooltiptext CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-case 286:
-YY_RULE_SETUP
-{
-  A_SliderControl_id = "none";
-  A_SliderControl_visible = "true";
-  A_SliderControl_x = "\0";
-  A_SliderControl_y = "\0";
-  A_SliderControl_type = "time";
-  A_SliderControl_up = NULL;
-  A_SliderControl_down = NULL;
-  A_SliderControl_abs = NULL;
-  A_SliderControl_ord = NULL;
-  A_SliderControl_tooltiptext = "none";
-  A_SliderControl_help = "\0";
-  ENTER(AL_SliderControl);
-}
-       YY_BREAK
-
-case 287:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_id);
-       YY_BREAK
-case 288:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_id);
-       YY_BREAK
-case 289:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_visible);
-       YY_BREAK
-case 290:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_visible);
-       YY_BREAK
-case 291:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_x);
-       YY_BREAK
-case 292:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_x);
-       YY_BREAK
-case 293:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_y);
-       YY_BREAK
-case 294:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_y);
-       YY_BREAK
-case 295:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_type);
-       YY_BREAK
-case 296:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_type);
-       YY_BREAK
-case 297:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_up);
-       YY_BREAK
-case 298:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_up);
-       YY_BREAK
-case 299:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_down);
-       YY_BREAK
-case 300:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_down);
-       YY_BREAK
-case 301:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_abs);
-       YY_BREAK
-case 302:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_abs);
-       YY_BREAK
-case 303:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_ord);
-       YY_BREAK
-case 304:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_ord);
-       YY_BREAK
-case 305:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_tooltiptext);
-       YY_BREAK
-case 306:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_tooltiptext);
-       YY_BREAK
-case 307:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_SliderControl_help);
-       YY_BREAK
-case 308:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_SliderControl_help);
-       YY_BREAK
-case 309:
-YY_RULE_SETUP
-{
-  if (!A_SliderControl_up) FAIL("Required attribute `up' not set for `SliderControl' element.");
-  if (!A_SliderControl_down) FAIL("Required attribute `down' not set for `SliderControl' element.");
-  if (!A_SliderControl_abs) FAIL("Required attribute `abs' not set for `SliderControl' element.");
-  if (!A_SliderControl_ord) FAIL("Required attribute `ord' not set for `SliderControl' element.");
-  LEAVE; STag_SliderControl(); pcdata = NULL; ENTER(E_SliderControl);
- }
-       YY_BREAK
-case 310:
-YY_RULE_SETUP
-{
-  if (!A_SliderControl_up) FAIL("Required attribute `up' not set for `SliderControl' element.");
-  if (!A_SliderControl_down) FAIL("Required attribute `down' not set for `SliderControl' element.");
-  if (!A_SliderControl_abs) FAIL("Required attribute `abs' not set for `SliderControl' element.");
-  if (!A_SliderControl_ord) FAIL("Required attribute `ord' not set for `SliderControl' element.");
-  LEAVE; STag_SliderControl(); pcdata = NULL; ETag_SliderControl();
-  switch (YY_START) {
-   case ROOT_SliderControl: SET(EPILOG); break;
-   case S_PlayListControl: SET(E_PlayListControl); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 311:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of SliderControl element.", yytext[0]);
-       YY_BREAK
-case 312:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `SliderControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_SliderControl):
-FAIL("EOF in attribute list of `SliderControl' element.");
-       YY_BREAK
-
-
-case 313:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_SliderControl();
-  switch (YY_START) {
-   case ROOT_SliderControl: SET(EPILOG); break;
-   case S_PlayListControl: SET(E_PlayListControl); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 314:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</SliderControl>' expected.",yytext);
-       YY_BREAK
-case 315:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</SliderControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_SliderControl):
-FAIL("Premature EOF: `</SliderControl>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         text        CDATA   ""
-  *         font        CDATA   #REQUIRED
-  *         align       CDATA   "left"
-  *         width       CDATA   "\0"
-  *         display     CDATA   "none"
-  *         scroll      CDATA   "true"
-  *         scrollspace CDATA   "20"
-  *         help        CDATA   "\0"
-  *     >  */
-case 316:
-YY_RULE_SETUP
-{
-  A_TextControl_id = "none";
-  A_TextControl_visible = "true";
-  A_TextControl_x = "\0";
-  A_TextControl_y = "\0";
-  A_TextControl_text = NULL;
-  A_TextControl_font = NULL;
-  A_TextControl_align = "left";
-  A_TextControl_width = "\0";
-  A_TextControl_display = "none";
-  A_TextControl_scroll = "true";
-  A_TextControl_scrollspace = "20";
-  A_TextControl_help = "\0";
-  ENTER(AL_TextControl);
-}
-       YY_BREAK
-
-case 317:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_id);
-       YY_BREAK
-case 318:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_id);
-       YY_BREAK
-case 319:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_visible);
-       YY_BREAK
-case 320:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_visible);
-       YY_BREAK
-case 321:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_x);
-       YY_BREAK
-case 322:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_x);
-       YY_BREAK
-case 323:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_y);
-       YY_BREAK
-case 324:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_y);
-       YY_BREAK
-case 325:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_text);
-       YY_BREAK
-case 326:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_text);
-       YY_BREAK
-case 327:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_font);
-       YY_BREAK
-case 328:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_font);
-       YY_BREAK
-case 329:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_align);
-       YY_BREAK
-case 330:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_align);
-       YY_BREAK
-case 331:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_width);
-       YY_BREAK
-case 332:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_width);
-       YY_BREAK
-case 333:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_display);
-       YY_BREAK
-case 334:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_display);
-       YY_BREAK
-case 335:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_scroll);
-       YY_BREAK
-case 336:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_scroll);
-       YY_BREAK
-case 337:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_scrollspace);
-       YY_BREAK
-case 338:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_scrollspace);
-       YY_BREAK
-case 339:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_TextControl_help);
-       YY_BREAK
-case 340:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_TextControl_help);
-       YY_BREAK
-case 341:
-YY_RULE_SETUP
-{
-  if (!A_TextControl_font) FAIL("Required attribute `font' not set for `TextControl' element.");
-  LEAVE; STag_TextControl(); pcdata = NULL; ENTER(E_TextControl);
- }
-       YY_BREAK
-case 342:
-YY_RULE_SETUP
-{
-  if (!A_TextControl_font) FAIL("Required attribute `font' not set for `TextControl' element.");
-  LEAVE; STag_TextControl(); pcdata = NULL; ETag_TextControl();
-  switch (YY_START) {
-   case ROOT_TextControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 343:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of TextControl element.", yytext[0]);
-       YY_BREAK
-case 344:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `TextControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_TextControl):
-FAIL("EOF in attribute list of `TextControl' element.");
-       YY_BREAK
-
-
-case 345:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_TextControl();
-  switch (YY_START) {
-   case ROOT_TextControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 346:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</TextControl>' expected.",yytext);
-       YY_BREAK
-case 347:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</TextControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_TextControl):
-FAIL("Premature EOF: `</TextControl>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         width       CDATA   "200"
-  *         infowidth   CDATA   "50"
-  *         font        CDATA   #REQUIRED
-  *         playfont    CDATA   "none"
-  *         selcolor    CDATA   "#0000FF"
-  *         abs         CDATA   #REQUIRED
-  *         ord         CDATA   #REQUIRED
-  *         help        CDATA   "\0"
-  *         longfilename CDATA   "false"
-  *     >  */
-case 348:
-YY_RULE_SETUP
-{
-  A_PlayListControl_id = "none";
-  A_PlayListControl_visible = "true";
-  A_PlayListControl_x = "\0";
-  A_PlayListControl_y = "\0";
-  A_PlayListControl_width = "200";
-  A_PlayListControl_infowidth = "50";
-  A_PlayListControl_font = NULL;
-  A_PlayListControl_playfont = "none";
-  A_PlayListControl_selcolor = "#0000FF";
-  A_PlayListControl_abs = NULL;
-  A_PlayListControl_ord = NULL;
-  A_PlayListControl_help = "\0";
-  A_PlayListControl_longfilename = "false";
-  ENTER(AL_PlayListControl);
-}
-       YY_BREAK
-
-case 349:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_id);
-       YY_BREAK
-case 350:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_id);
-       YY_BREAK
-case 351:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_visible);
-       YY_BREAK
-case 352:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_visible);
-       YY_BREAK
-case 353:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_x);
-       YY_BREAK
-case 354:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_x);
-       YY_BREAK
-case 355:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_y);
-       YY_BREAK
-case 356:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_y);
-       YY_BREAK
-case 357:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_width);
-       YY_BREAK
-case 358:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_width);
-       YY_BREAK
-case 359:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_infowidth);
-       YY_BREAK
-case 360:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_infowidth);
-       YY_BREAK
-case 361:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_font);
-       YY_BREAK
-case 362:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_font);
-       YY_BREAK
-case 363:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_playfont);
-       YY_BREAK
-case 364:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_playfont);
-       YY_BREAK
-case 365:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_selcolor);
-       YY_BREAK
-case 366:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_selcolor);
-       YY_BREAK
-case 367:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_abs);
-       YY_BREAK
-case 368:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_abs);
-       YY_BREAK
-case 369:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_ord);
-       YY_BREAK
-case 370:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_ord);
-       YY_BREAK
-case 371:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_help);
-       YY_BREAK
-case 372:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_help);
-       YY_BREAK
-case 373:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_PlayListControl_longfilename);
-       YY_BREAK
-case 374:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_PlayListControl_longfilename);
-       YY_BREAK
-case 375:
-YY_RULE_SETUP
-{
-  if (!A_PlayListControl_font) FAIL("Required attribute `font' not set for `PlayListControl' element.");
-  if (!A_PlayListControl_abs) FAIL("Required attribute `abs' not set for `PlayListControl' element.");
-  if (!A_PlayListControl_ord) FAIL("Required attribute `ord' not set for `PlayListControl' element.");
-  LEAVE; STag_PlayListControl(); pcdata = NULL; ENTER(S_PlayListControl);
- }
-       YY_BREAK
-case 376:
-YY_RULE_SETUP
-FAIL("`PlayListControl' element cannot be empty.");
-       YY_BREAK
-case 377:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of PlayListControl element.", yytext[0]);
-       YY_BREAK
-case 378:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `PlayListControl' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_PlayListControl):
-FAIL("EOF in attribute list of `PlayListControl' element.");
-       YY_BREAK
-
-
-case 379:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_PlayListControl();
-  switch (YY_START) {
-   case ROOT_PlayListControl: SET(EPILOG); break;
-   case S_ControlGroup_1: case S_ControlGroup_2: case S_ControlGroup: SET(S_ControlGroup_2); break;
-  }
- }
-       YY_BREAK
-case 380:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</PlayListControl>' expected.",yytext);
-       YY_BREAK
-case 381:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</PlayListControl>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_PlayListControl):
-FAIL("Premature EOF: `</PlayListControl>' expected.");
-       YY_BREAK
-
-/* EPILOG: after the root element. */
-
-case 382:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' after document.", yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(EPILOG):
-SUCCEED;
-       YY_BREAK
-
-/* CHARACTER DATA. */
-
-/* Non-defined standard entities... */
-case 383:
-YY_RULE_SETUP
-BUFFERPUTC('&');
-       YY_BREAK
-case 384:
-YY_RULE_SETUP
-BUFFERPUTC('<');
-       YY_BREAK
-case 385:
-YY_RULE_SETUP
-BUFFERPUTC('>');
-       YY_BREAK
-case 386:
-YY_RULE_SETUP
-BUFFERPUTC('\'');
-       YY_BREAK
-case 387:
-YY_RULE_SETUP
-BUFFERPUTC('"');
-       YY_BREAK
-/* Character entities. */
-case 388:
-YY_RULE_SETUP
-BUFFERPUTC((unsigned char)atoi(yytext+2));
-       YY_BREAK
-case 389:
-YY_RULE_SETUP
-BUFFERPUTC((unsigned char)strtol(yytext+3,NULL,16));
-       YY_BREAK
-
-
-case 390:
-case 391:
-case 392:
-case 393:
-YY_RULE_SETUP
-BUFFERPUTC('\n');
-       YY_BREAK
-
-
-case 394:
-YY_RULE_SETUP
-ENTER(CDATA);
-       YY_BREAK
-case 395:
-YY_RULE_SETUP
-FAIL("Unexpected `]]>' in character data.");
-       YY_BREAK
-
-
-case 396:
-YY_RULE_SETUP
-BUFFERDONE; LEAVE;
-       YY_BREAK
-case YY_STATE_EOF(VALUE1):
-FAIL("EOF in literal (\"'\" expected).");
-       YY_BREAK
-
-
-case 397:
-YY_RULE_SETUP
-BUFFERDONE; LEAVE;
-       YY_BREAK
-case YY_STATE_EOF(VALUE2):
-FAIL("EOF in literal (`\"' expected).");
-       YY_BREAK
-
-
-case 398:
-YY_RULE_SETUP
-BUFFERPUTC(yytext[0]);
-       YY_BREAK
-case 399:
-YY_RULE_SETUP
-FAIL("Spurious `%c' in character data.",yytext[0]);
-       YY_BREAK
-
-
-case 400:
-YY_RULE_SETUP
-LEAVE;
-       YY_BREAK
-case 401:
-YY_RULE_SETUP
-BUFFERPUTC(yytext[0]); BUFFERPUTC(yytext[1]);
-       YY_BREAK
-case 402:
-YY_RULE_SETUP
-BUFFERPUTC(yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(CDATA):
-FAIL("EOF in CDATA section.");
-       YY_BREAK
-
-/* Impossible rules to avoid warnings from flex(1). */
-
-case 403:
-YY_RULE_SETUP
-FAIL("The Impossible Happened: INITIAL or IMPOSSIBLE state entered?");
-       YY_BREAK
-
-case 404:
-YY_RULE_SETUP
-YY_FATAL_ERROR( "flex scanner jammed" );
-       YY_BREAK
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(ROOT_Theme):
-case YY_STATE_EOF(S_Theme):
-case YY_STATE_EOF(S_Theme_2):
-case YY_STATE_EOF(ROOT_Bitmap):
-case YY_STATE_EOF(ROOT_Event):
-case YY_STATE_EOF(ROOT_Font):
-case YY_STATE_EOF(ROOT_ThemeInfo):
-case YY_STATE_EOF(ROOT_Window):
-case YY_STATE_EOF(S_Window):
-case YY_STATE_EOF(ROOT_ControlGroup):
-case YY_STATE_EOF(S_ControlGroup):
-case YY_STATE_EOF(S_ControlGroup_1):
-case YY_STATE_EOF(ROOT_Anchor):
-case YY_STATE_EOF(ROOT_ImageControl):
-case YY_STATE_EOF(ROOT_RectangleControl):
-case YY_STATE_EOF(ROOT_ButtonControl):
-case YY_STATE_EOF(ROOT_CheckBoxControl):
-case YY_STATE_EOF(ROOT_SliderControl):
-case YY_STATE_EOF(ROOT_TextControl):
-case YY_STATE_EOF(ROOT_PlayListControl):
-case YY_STATE_EOF(S_PlayListControl):
-case YY_STATE_EOF(IMPOSSIBLE):
-       yyterminate();
-
-       case YY_END_OF_BUFFER:
-               {
-               /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-               /* Undo the effects of YY_DO_BEFORE_ACTION. */
-               *yy_cp = yy_hold_char;
-               YY_RESTORE_YY_MORE_OFFSET
-
-               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-                       {
-                       /* We're scanning a new file or input source.  It's
-                        * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
-                        * consistency between yy_current_buffer and our
-                        * globals.  Here is the right place to do so, because
-                        * this is the first action (other than possibly a
-                        * back-up) that will match for the new input source.
-                        */
-                       yy_n_chars = yy_current_buffer->yy_n_chars;
-                       yy_current_buffer->yy_input_file = yyin;
-                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-                       }
-
-               /* Note that here we test for yy_c_buf_p "<=" to the position
-                * of the first EOB in the buffer, since yy_c_buf_p will
-                * already have been incremented past the NUL character
-                * (since all states make transitions on EOB to the
-                * end-of-buffer state).  Contrast this with the test
-                * in input().
-                */
-               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       { /* This was really a NUL. */
-                       yy_state_type yy_next_state;
-
-                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-                       yy_current_state = yy_get_previous_state();
-
-                       /* Okay, we're now positioned to make the NUL
-                        * transition.  We couldn't have
-                        * yy_get_previous_state() go ahead and do it
-                        * for us because it doesn't know how to deal
-                        * with the possibility of jamming (and we don't
-                        * want to build jamming into it because then it
-                        * will run more slowly).
-                        */
-
-                       yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-                       yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-                       if ( yy_next_state )
-                               {
-                               /* Consume the NUL. */
-                               yy_cp = ++yy_c_buf_p;
-                               yy_current_state = yy_next_state;
-                               goto yy_match;
-                               }
-
-                       else
-                               {
-                               yy_cp = yy_last_accepting_cpos;
-                               yy_current_state = yy_last_accepting_state;
-                               goto yy_find_action;
-                               }
-                       }
-
-               else switch ( yy_get_next_buffer() )
-                       {
-                       case EOB_ACT_END_OF_FILE:
-                               {
-                               yy_did_buffer_switch_on_eof = 0;
-
-                               if ( yywrap() )
-                                       {
-                                       /* Note: because we've taken care in
-                                        * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
-                                        * yy_c_buf_p so that if some total
-                                        * hoser (like flex itself) wants to
-                                        * call the scanner after we return the
-                                        * YY_NULL, it'll still work - another
-                                        * YY_NULL will get returned.
-                                        */
-                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-                                       yy_act = YY_STATE_EOF(YY_START);
-                                       goto do_action;
-                                       }
-
-                               else
-                                       {
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-                                       }
-                               break;
-                               }
-
-                       case EOB_ACT_CONTINUE_SCAN:
-                               yy_c_buf_p =
-                                       yytext_ptr + yy_amount_of_matched_text;
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_match;
-
-                       case EOB_ACT_LAST_MATCH:
-                               yy_c_buf_p =
-                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_find_action;
-                       }
-               break;
-               }
-
-       default:
-               YY_FATAL_ERROR(
-                       "fatal flex scanner internal error--no action found" );
-       } /* end of action switch */
-               } /* end of scanning one token */
-       } /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *     EOB_ACT_LAST_MATCH -
- *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *     EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-       {
-       register char *dest = yy_current_buffer->yy_ch_buf;
-       register char *source = yytext_ptr;
-       register int number_to_move, i;
-       int ret_val;
-
-       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-               YY_FATAL_ERROR(
-               "fatal flex scanner internal error--end of buffer missed" );
-
-       if ( yy_current_buffer->yy_fill_buffer == 0 )
-               { /* Don't try to fill the buffer, so this is an EOF. */
-               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-                       {
-                       /* We matched a single character, the EOB, so
-                        * treat this as a final EOF.
-                        */
-                       return EOB_ACT_END_OF_FILE;
-                       }
-
-               else
-                       {
-                       /* We matched some text prior to the EOB, first
-                        * process it.
-                        */
-                       return EOB_ACT_LAST_MATCH;
-                       }
-               }
-
-       /* Try to read more data. */
-
-       /* First move last chars to start of buffer. */
-       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-       for ( i = 0; i < number_to_move; ++i )
-               *(dest++) = *(source++);
-
-       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-               /* don't do the read, it's not guaranteed to return an EOF,
-                * just force an EOF
-                */
-               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
-       else
-               {
-               int num_to_read =
-                       yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-               while ( num_to_read <= 0 )
-                       { /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-                       YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-                       /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = yy_current_buffer;
-
-                       int yy_c_buf_p_offset =
-                               (int) (yy_c_buf_p - b->yy_ch_buf);
-
-                       if ( b->yy_is_our_buffer )
-                               {
-                               int new_size = b->yy_buf_size * 2;
-
-                               if ( new_size <= 0 )
-                                       b->yy_buf_size += b->yy_buf_size / 8;
-                               else
-                                       b->yy_buf_size *= 2;
-
-                               b->yy_ch_buf = (char *)
-                                       /* Include room in for 2 EOB chars. */
-                                       yy_flex_realloc( (void *) b->yy_ch_buf,
-                                                        b->yy_buf_size + 2 );
-                               }
-                       else
-                               /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
-
-                       if ( ! b->yy_ch_buf )
-                               YY_FATAL_ERROR(
-                               "fatal error - scanner input buffer overflow" );
-
-                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-                       num_to_read = yy_current_buffer->yy_buf_size -
-                                               number_to_move - 1;
-#endif
-                       }
-
-               if ( num_to_read > YY_READ_BUF_SIZE )
-                       num_to_read = YY_READ_BUF_SIZE;
-
-               /* Read in more data. */
-               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-                       yy_n_chars, num_to_read );
-
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       if ( yy_n_chars == 0 )
-               {
-               if ( number_to_move == YY_MORE_ADJ )
-                       {
-                       ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin );
-                       }
-
-               else
-                       {
-                       ret_val = EOB_ACT_LAST_MATCH;
-                       yy_current_buffer->yy_buffer_status =
-                               YY_BUFFER_EOF_PENDING;
-                       }
-               }
-
-       else
-               ret_val = EOB_ACT_CONTINUE_SCAN;
-
-       yy_n_chars += number_to_move;
-       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-       return ret_val;
-       }
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
-
-       yy_current_state = yy_start;
-
-       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-               {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-               if ( yy_accept[yy_current_state] )
-                       {
-                       yy_last_accepting_state = yy_current_state;
-                       yy_last_accepting_cpos = yy_cp;
-                       }
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 2505 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-               }
-
-       return yy_current_state;
-       }
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *     next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-       {
-       register int yy_is_jam;
-       register char *yy_cp = yy_c_buf_p;
-
-       register YY_CHAR yy_c = 1;
-       if ( yy_accept[yy_current_state] )
-               {
-               yy_last_accepting_state = yy_current_state;
-               yy_last_accepting_cpos = yy_cp;
-               }
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-               {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 2505 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
-               }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 2504);
-
-       return yy_is_jam ? 0 : yy_current_state;
-       }
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-       {
-       register char *yy_cp = yy_c_buf_p;
-
-       /* undo effects of setting up yytext */
-       *yy_cp = yy_hold_char;
-
-       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-               { /* need to shift things up to make room */
-               /* +2 for EOB chars. */
-               register int number_to_move = yy_n_chars + 2;
-               register char *dest = &yy_current_buffer->yy_ch_buf[
-                                       yy_current_buffer->yy_buf_size + 2];
-               register char *source =
-                               &yy_current_buffer->yy_ch_buf[number_to_move];
-
-               while ( source > yy_current_buffer->yy_ch_buf )
-                       *--dest = *--source;
-
-               yy_cp += (int) (dest - source);
-               yy_bp += (int) (dest - source);
-               yy_current_buffer->yy_n_chars =
-                       yy_n_chars = yy_current_buffer->yy_buf_size;
-
-               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
-               }
-
-       *--yy_cp = (char) c;
-
-
-       yytext_ptr = yy_bp;
-       yy_hold_char = *yy_cp;
-       yy_c_buf_p = yy_cp;
-       }
-#endif /* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-       {
-       int c;
-
-       *yy_c_buf_p = yy_hold_char;
-
-       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-               {
-               /* yy_c_buf_p now points to the character we want to return.
-                * If this occurs *before* the EOB characters, then it's a
-                * valid NUL; if not, then we've hit the end of the buffer.
-                */
-               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       /* This was really a NUL. */
-                       *yy_c_buf_p = '\0';
-
-               else
-                       { /* need more input */
-                       int offset = yy_c_buf_p - yytext_ptr;
-                       ++yy_c_buf_p;
-
-                       switch ( yy_get_next_buffer() )
-                               {
-                               case EOB_ACT_LAST_MATCH:
-                                       /* This happens because yy_g_n_b()
-                                        * sees that we've accumulated a
-                                        * token and flags that we need to
-                                        * try matching the token before
-                                        * proceeding.  But for input(),
-                                        * there's no matching to consider.
-                                        * So convert the EOB_ACT_LAST_MATCH
-                                        * to EOB_ACT_END_OF_FILE.
-                                        */
-
-                                       /* Reset buffer status. */
-                                       yyrestart( yyin );
-
-                                       /* fall through */
-
-                               case EOB_ACT_END_OF_FILE:
-                                       {
-                                       if ( yywrap() )
-                                               return EOF;
-
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-#ifdef __cplusplus
-                                       return yyinput();
-#else
-                                       return input();
-#endif
-                                       }
-
-                               case EOB_ACT_CONTINUE_SCAN:
-                                       yy_c_buf_p = yytext_ptr + offset;
-                                       break;
-                               }
-                       }
-               }
-
-       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
-       *yy_c_buf_p = '\0';     /* preserve yytext */
-       yy_hold_char = *++yy_c_buf_p;
-
-
-       return c;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-       {
-       if ( ! yy_current_buffer )
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-       yy_init_buffer( yy_current_buffer, input_file );
-       yy_load_buffer_state();
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-       {
-       if ( yy_current_buffer == new_buffer )
-               return;
-
-       if ( yy_current_buffer )
-               {
-               /* Flush out information for old buffer. */
-               *yy_c_buf_p = yy_hold_char;
-               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       yy_current_buffer = new_buffer;
-       yy_load_buffer_state();
-
-       /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
-        * to go ahead and always set it.
-        */
-       yy_did_buffer_switch_on_eof = 1;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-       {
-       yy_n_chars = yy_current_buffer->yy_n_chars;
-       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-       yyin = yy_current_buffer->yy_input_file;
-       yy_hold_char = *yy_c_buf_p;
-       }
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_buf_size = size;
-
-       /* yy_ch_buf has to be 2 characters longer than the size given because
-        * we need to put in 2 end-of-buffer characters.
-        */
-       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-       if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_is_our_buffer = 1;
-
-       yy_init_buffer( b, file );
-
-       return b;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-       {
-       if ( ! b )
-               return;
-
-       if ( b == yy_current_buffer )
-               yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-       if ( b->yy_is_our_buffer )
-               yy_flex_free( (void *) b->yy_ch_buf );
-
-       yy_flex_free( (void *) b );
-       }
-
-
-#ifndef _WIN32
-#include <unistd.h>
-#else
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-       {
-       yy_flush_buffer( b );
-
-       b->yy_input_file = file;
-       b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-       b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-       b->yy_is_interactive = 0;
-#else
-       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-       {
-       if ( ! b )
-               return;
-
-       b->yy_n_chars = 0;
-
-       /* We always need two end-of-buffer characters.  The first causes
-        * a transition to the end-of-buffer state.  The second causes
-        * a jam in that state.
-        */
-       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-       b->yy_buf_pos = &b->yy_ch_buf[0];
-
-       b->yy_at_bol = 1;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       if ( b == yy_current_buffer )
-               yy_load_buffer_state();
-       }
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       if ( size < 2 ||
-            base[size-2] != YY_END_OF_BUFFER_CHAR ||
-            base[size-1] != YY_END_OF_BUFFER_CHAR )
-               /* They forgot to leave room for the EOB's. */
-               return 0;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
-       b->yy_buf_pos = b->yy_ch_buf = base;
-       b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
-       b->yy_n_chars = b->yy_buf_size;
-       b->yy_is_interactive = 0;
-       b->yy_at_bol = 1;
-       b->yy_fill_buffer = 0;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       yy_switch_to_buffer( b );
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
-       {
-       int len;
-       for ( len = 0; yy_str[len]; ++len )
-               ;
-
-       return yy_scan_bytes( yy_str, len );
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-       {
-       YY_BUFFER_STATE b;
-       char *buf;
-       yy_size_t n;
-       int i;
-
-       /* Get memory for full buffer, including space for trailing EOB's. */
-       n = len + 2;
-       buf = (char *) yy_flex_alloc( n );
-       if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-       for ( i = 0; i < len; ++i )
-               buf[i] = bytes[i];
-
-       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-       b = yy_scan_buffer( buf, n );
-       if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-       /* It's okay to grow etc. this buffer, and we should throw it
-        * away when we're done.
-        */
-       b->yy_is_our_buffer = 1;
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-       {
-       if ( yy_start_stack_ptr >= yy_start_stack_depth )
-               {
-               yy_size_t new_size;
-
-               yy_start_stack_depth += YY_START_STACK_INCR;
-               new_size = yy_start_stack_depth * sizeof( int );
-
-               if ( ! yy_start_stack )
-                       yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-               else
-                       yy_start_stack = (int *) yy_flex_realloc(
-                                       (void *) yy_start_stack, new_size );
-
-               if ( ! yy_start_stack )
-                       YY_FATAL_ERROR(
-                       "out of memory expanding start-condition stack" );
-               }
-
-       yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-       BEGIN(new_state);
-       }
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-       {
-       if ( --yy_start_stack_ptr < 0 )
-               YY_FATAL_ERROR( "start-condition stack underflow" );
-
-       BEGIN(yy_start_stack[yy_start_stack_ptr]);
-       }
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-       {
-       return yy_start_stack[yy_start_stack_ptr - 1];
-       }
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-       {
-       (void) fprintf( stderr, "%s\n", msg );
-       exit( YY_EXIT_FAILURE );
-       }
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               yytext[yyleng] = yy_hold_char; \
-               yy_c_buf_p = yytext + n; \
-               yy_hold_char = *yy_c_buf_p; \
-               *yy_c_buf_p = '\0'; \
-               yyleng = n; \
-               } \
-       while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-       {
-       register int i;
-       for ( i = 0; i < n; ++i )
-               s1[i] = s2[i];
-       }
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-       {
-       register int n;
-       for ( n = 0; s[n]; ++n )
-               ;
-
-       return n;
-       }
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-       {
-       return (void *) malloc( size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-       {
-       /* The cast to (char *) in the following accommodates both
-        * implementations that use char* generic pointers, and those
-        * that use void* generic pointers.  It works with the latter
-        * because both ANSI C and C++ allow castless assignment from
-        * any pointer type to void*, and deal with argument conversions
-        * as though doing an assignment.
-        */
-       return (void *) realloc( (char *) ptr, size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-       {
-       free( ptr );
-       }
-
-#if YY_MAIN
-int main()
-       {
-       yylex();
-       return 0;
-       }
-#endif
-
-
-/* Element context stack lookup. */
-int element_context(int i)
-{
-  return (0<i && i<yy_start_stack_depth
-         ? yy_start_stack[yy_start_stack_ptr - i]
-         : 0);
-}
-
-#ifdef FLEX_DEBUG
-void print_yy_stack(char* fmt, ...)
-{
-  int i = 0; va_list ap; va_start(ap, fmt);
-  vfprintf(stderr, fmt, ap);
-  for (i=1; i<yy_start_stack_ptr; i++)
-    fprintf(stderr, "%s/", statenames[yy_start_stack[i]]);
-  fprintf(stderr,"%s\n", statenames[YY_START]);
-  va_end(ap);
-}
-
-static void debug_enter(int state, char* statename) {
-  yy_push_state(state);
-  if (yy_flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
-}
-
-static void debug_leave(void) {
-  if (yy_flex_debug) print_yy_stack("--LEAVE : ");
-  yy_pop_state();
-}
-
-static void debug_set(int state, char* statename) {
-  BEGIN(state);
-  if (yy_flex_debug) print_yy_stack("--SET(%s) : ",statename);
-}
-#endif
-
-
-static int fail(const char* fmt, ...)
-{
-  va_list ap; va_start(ap, fmt);
-#ifdef FLEXML_yylineno
-  fprintf(stderr, "Invalid XML (XML input line %d, state %d): ", yylineno, YY_START);
-#else
-  fprintf(stderr, "Invalid XML (state %d): ",YY_START);
-#endif
-  vfprintf(stderr, fmt, ap);
-  fprintf(stderr, "\n");
-  va_end(ap);
-  return 1;
-}
diff --git a/modules/gui/skins/parser/skin.act b/modules/gui/skins/parser/skin.act
deleted file mode 100644 (file)
index 33b3f42..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<!-- vim: set filetype=xml : -->
-<!--
- *****************************************************************************
- * skin.act: FleXML actions file
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: skin.act,v 1.9 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************
--->
-
-<!DOCTYPE actions SYSTEM "flexml-act.dtd">
-<actions>
-    <top>
-        <![CDATA[
-            #include "parser/wrappers.h"
-        ]]>
-    </top>
-    <start tag="Bitmap">
-        <![CDATA[
-            AddBitmap( {id}, {file}, {alphacolor} );
-        ]]>
-    </start>
-    <start tag="Event">
-        <![CDATA[
-            AddEvent( {id}, {event}, {key} );
-        ]]>
-    </start>
-    <start tag="Font">
-        <![CDATA[
-            AddFont( {id}, {font}, {size}, {color}, {weight}, {italic},
-                     {underline} );
-        ]]>
-    </start>
-    <start tag="ThemeInfo">
-        <![CDATA[
-            AddThemeInfo( {name}, {author}, {email}, {webpage} );
-        ]]>
-    </start>
-    <start tag="Window">
-        <![CDATA[
-            StartWindow( {id}, {x}, {y}, {visible}, {fadetime}, {alpha},
-                         {movealpha}, {dragdrop}, {playondrop} );
-        ]]>
-    </start>
-    <end tag="Window">
-        <![CDATA[
-            EndWindow();
-        ]]>
-    </end>
-    <start tag="ControlGroup">
-        <![CDATA[
-            StartControlGroup( {x}, {y} );
-        ]]>
-    </start>
-    <end tag="ControlGroup">
-        <![CDATA[
-            EndControlGroup();
-        ]]>
-    </end>
-    <start tag="Anchor">
-        <![CDATA[
-            AddAnchor( {x}, {y}, {range}, {priority} );
-        ]]>
-    </start>
-    <start tag="ImageControl">
-        <![CDATA[
-            AddImage( {id}, {visible}, {x}, {y}, {image}, {onclick}, {help} );
-        ]]>
-    </start>
-    <start tag="RectangleControl">
-        <![CDATA[
-            AddRectangle( {id}, {visible}, {x}, {y}, {w}, {h}, {color},
-                          {onclick}, {help} );
-        ]]>
-    </start>
-    <start tag="ButtonControl">
-        <![CDATA[
-            AddButton( {id},
-                       {visible},
-                       {x}, {y},
-                       {up}, {down}, {disabled},
-                       {onclick}, {onmouseover}, {onmouseout},
-                       {tooltiptext}, {help} );
-        ]]>
-    </start>
-    <start tag="CheckBoxControl">
-        <![CDATA[
-            AddCheckBox( {id},
-                         {visible},
-                         {x}, {y},
-                         {img1}, {img2}, {clickimg1}, {clickimg2}, {disabled1},
-                         {disabled2},
-                         {onclick1}, {onclick2}, {onmouseover1}, {onmouseout1},
-                         {onmouseover2}, {onmouseout2},
-                         {tooltiptext1}, {tooltiptext2}, {help} );
-        ]]>
-    </start>
-    <start tag="SliderControl">
-        <![CDATA[
-            AddSlider( {id}, {visible}, {x}, {y}, {type}, {up}, {down}, {abs},
-                       {ord}, {tooltiptext}, {help} );
-        ]]>
-    </start>
-    <start tag="TextControl">
-        <![CDATA[
-            AddText( {id}, {visible}, {x}, {y}, {text}, {font}, {align},
-                     {width}, {display}, {scroll}, {scrollspace},
-                     {help} );
-        ]]>
-    </start>
-    <start tag="PlayListControl">
-        <![CDATA[
-            AddPlayList( {id}, {visible}, {x}, {y}, {width}, {infowidth},
-                         {font}, {playfont}, {selcolor}, {abs}, {ord},
-                         {longfilename}, {help} );
-        ]]>
-    </start>
-    <end tag="PlayListControl">
-        <![CDATA[
-            AddPlayListEnd();
-        ]]>
-    </end>
-    <start tag="Theme">
-        <![CDATA[
-            StartTheme( {magnet} );
-        ]]>
-    </start>
-    <end tag="Theme">
-        <![CDATA[
-            EndTheme();
-        ]]>
-    </end>
-</actions>
diff --git a/modules/gui/skins/parser/skin.c b/modules/gui/skins/parser/skin.c
deleted file mode 100644 (file)
index 984174a..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/* XML application for skin.dtd (Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp).
- * Includes actions from skin.act.
- * Generated 2003/10/22 19:09:40.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-#include "skin.h"
-
-
-#line 31 "skin.act"
-
-        
-            #include "parser/wrappers.h"
-        
-    
-void STag_Bitmap(void)
-{
-#line 36 "skin.act"
-
-        
-            AddBitmap( A_Bitmap_id, A_Bitmap_file, A_Bitmap_alphacolor );
-        
-    
-} /* STag_Bitmap */
-
-void STag_Event(void)
-{
-#line 41 "skin.act"
-
-        
-            AddEvent( A_Event_id, A_Event_event, A_Event_key );
-        
-    
-} /* STag_Event */
-
-void STag_Font(void)
-{
-#line 46 "skin.act"
-
-        
-            AddFont( A_Font_id, A_Font_font, A_Font_size, A_Font_color, A_Font_weight, A_Font_italic,
-                     A_Font_underline );
-        
-    
-} /* STag_Font */
-
-void STag_ThemeInfo(void)
-{
-#line 52 "skin.act"
-
-        
-            AddThemeInfo( A_ThemeInfo_name, A_ThemeInfo_author, A_ThemeInfo_email, A_ThemeInfo_webpage );
-        
-    
-} /* STag_ThemeInfo */
-
-void STag_Window(void)
-{
-#line 57 "skin.act"
-
-        
-            StartWindow( A_Window_id, A_Window_x, A_Window_y, A_Window_visible, A_Window_fadetime, A_Window_alpha,
-                         A_Window_movealpha, A_Window_dragdrop, A_Window_playondrop );
-        
-    
-} /* STag_Window */
-
-void ETag_Window(void)
-{
-#line 63 "skin.act"
-
-        
-            EndWindow();
-        
-    
-} /* ETag_Window */
-
-void STag_ControlGroup(void)
-{
-#line 68 "skin.act"
-
-        
-            StartControlGroup( A_ControlGroup_x, A_ControlGroup_y );
-        
-    
-} /* STag_ControlGroup */
-
-void ETag_ControlGroup(void)
-{
-#line 73 "skin.act"
-
-        
-            EndControlGroup();
-        
-    
-} /* ETag_ControlGroup */
-
-void STag_Anchor(void)
-{
-#line 78 "skin.act"
-
-        
-            AddAnchor( A_Anchor_x, A_Anchor_y, A_Anchor_range, A_Anchor_priority );
-        
-    
-} /* STag_Anchor */
-
-void STag_ImageControl(void)
-{
-#line 83 "skin.act"
-
-        
-            AddImage( A_ImageControl_id, A_ImageControl_visible, A_ImageControl_x, A_ImageControl_y, A_ImageControl_image, A_ImageControl_onclick, A_ImageControl_help );
-        
-    
-} /* STag_ImageControl */
-
-void STag_RectangleControl(void)
-{
-#line 88 "skin.act"
-
-        
-            AddRectangle( A_RectangleControl_id, A_RectangleControl_visible, A_RectangleControl_x, A_RectangleControl_y, A_RectangleControl_w, A_RectangleControl_h, A_RectangleControl_color,
-                          A_RectangleControl_onclick, A_RectangleControl_help );
-        
-    
-} /* STag_RectangleControl */
-
-void STag_ButtonControl(void)
-{
-#line 94 "skin.act"
-
-        
-            AddButton( A_ButtonControl_id,
-                       A_ButtonControl_visible,
-                       A_ButtonControl_x, A_ButtonControl_y,
-                       A_ButtonControl_up, A_ButtonControl_down, A_ButtonControl_disabled,
-                       A_ButtonControl_onclick, A_ButtonControl_onmouseover, A_ButtonControl_onmouseout,
-                       A_ButtonControl_tooltiptext, A_ButtonControl_help );
-        
-    
-} /* STag_ButtonControl */
-
-void STag_CheckBoxControl(void)
-{
-#line 104 "skin.act"
-
-        
-            AddCheckBox( A_CheckBoxControl_id,
-                         A_CheckBoxControl_visible,
-                         A_CheckBoxControl_x, A_CheckBoxControl_y,
-                         A_CheckBoxControl_img1, A_CheckBoxControl_img2, A_CheckBoxControl_clickimg1, A_CheckBoxControl_clickimg2, A_CheckBoxControl_disabled1,
-                         A_CheckBoxControl_disabled2,
-                         A_CheckBoxControl_onclick1, A_CheckBoxControl_onclick2, A_CheckBoxControl_onmouseover1, A_CheckBoxControl_onmouseout1,
-                         A_CheckBoxControl_onmouseover2, A_CheckBoxControl_onmouseout2,
-                         A_CheckBoxControl_tooltiptext1, A_CheckBoxControl_tooltiptext2, A_CheckBoxControl_help );
-        
-    
-} /* STag_CheckBoxControl */
-
-void STag_SliderControl(void)
-{
-#line 116 "skin.act"
-
-        
-            AddSlider( A_SliderControl_id, A_SliderControl_visible, A_SliderControl_x, A_SliderControl_y, A_SliderControl_type, A_SliderControl_up, A_SliderControl_down, A_SliderControl_abs,
-                       A_SliderControl_ord, A_SliderControl_tooltiptext, A_SliderControl_help );
-        
-    
-} /* STag_SliderControl */
-
-void STag_TextControl(void)
-{
-#line 122 "skin.act"
-
-        
-            AddText( A_TextControl_id, A_TextControl_visible, A_TextControl_x, A_TextControl_y, A_TextControl_text, A_TextControl_font, A_TextControl_align,
-                     A_TextControl_width, A_TextControl_display, A_TextControl_scroll, A_TextControl_scrollspace,
-                     A_TextControl_help );
-        
-    
-} /* STag_TextControl */
-
-void STag_PlayListControl(void)
-{
-#line 129 "skin.act"
-
-        
-            AddPlayList( A_PlayListControl_id, A_PlayListControl_visible, A_PlayListControl_x, A_PlayListControl_y, A_PlayListControl_width, A_PlayListControl_infowidth,
-                         A_PlayListControl_font, A_PlayListControl_playfont, A_PlayListControl_selcolor, A_PlayListControl_abs, A_PlayListControl_ord,
-                         A_PlayListControl_longfilename, A_PlayListControl_help );
-        
-    
-} /* STag_PlayListControl */
-
-void ETag_PlayListControl(void)
-{
-#line 136 "skin.act"
-
-        
-            AddPlayListEnd();
-        
-    
-} /* ETag_PlayListControl */
-
-void STag_Theme(void)
-{
-#line 141 "skin.act"
-
-        
-            StartTheme( A_Theme_magnet );
-        
-    
-} /* STag_Theme */
-
-void ETag_Theme(void)
-{
-#line 146 "skin.act"
-
-        
-            EndTheme();
-        
-    
-} /* ETag_Theme */
-
-/* Dummy main: filter XML from stdin. */
-//int main() { exit(yylex()); }
-
-/* XML application entry points. */
-void ETag_Bitmap(void) {}
-void ETag_Event(void) {}
-void ETag_Font(void) {}
-void ETag_ThemeInfo(void) {}
-void ETag_Anchor(void) {}
-void ETag_ImageControl(void) {}
-void ETag_RectangleControl(void) {}
-void ETag_ButtonControl(void) {}
-void ETag_CheckBoxControl(void) {}
-void ETag_SliderControl(void) {}
-void ETag_TextControl(void) {}
diff --git a/modules/gui/skins/parser/skin.dtd b/modules/gui/skins/parser/skin.dtd
deleted file mode 100644 (file)
index 12c2380..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-<!--
- *****************************************************************************
- * skin.dtd: DTD for the VLC skins
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: skin.dtd,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************
--->
-
-
-<!ELEMENT Theme (ThemeInfo,(Bitmap|Font|Window|Event)*)>
-    <!ATTLIST Theme
-        magnet      CDATA   "9"
-    >
-
-<!-- main elements -->
-<!ELEMENT Bitmap EMPTY>
-    <!ATTLIST Bitmap
-        id          CDATA   #REQUIRED
-        file        CDATA   #REQUIRED
-        alphacolor  CDATA   #REQUIRED
-    >
-<!ELEMENT Event EMPTY>
-    <!ATTLIST Event
-        id          CDATA   #REQUIRED
-        event       CDATA   #REQUIRED
-        key         CDATA   "none"
-    >
-<!ELEMENT Font EMPTY>
-    <!ATTLIST Font
-        id          CDATA   "default"
-        font        CDATA   "arial"
-        size        CDATA   "12"
-        color       CDATA   "#000000"
-        weight      CDATA   "400"
-        italic      CDATA   "false"
-        underline   CDATA   "false"
-    >
-<!ELEMENT ThemeInfo EMPTY>
-    <!ATTLIST ThemeInfo
-        name        CDATA   #IMPLIED
-        author      CDATA   #IMPLIED
-        email       CDATA   #IMPLIED
-        webpage     CDATA   #IMPLIED
-    >
-<!ELEMENT Window (ControlGroup)>
-    <!ATTLIST Window
-        id          CDATA   #REQUIRED
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        fadetime    CDATA   "500"
-        alpha       CDATA   "255"
-        movealpha   CDATA   "255"
-        dragdrop    CDATA   "true"
-        playondrop  CDATA   "true"
-    >
-
-<!ELEMENT ControlGroup (ControlGroup|ImageControl|ButtonControl|PlayListControl|
-                        SliderControl|TextControl|CheckBoxControl|
-                        RectangleControl|Anchor)+>
-    <!ATTLIST ControlGroup
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-    >
-
-<!-- Anchors -->
-<!ELEMENT Anchor EMPTY>
-    <!ATTLIST Anchor
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        priority    CDATA   #REQUIRED
-        range       CDATA   "10"
-    >
-
-<!-- Controls -->
-<!ELEMENT ImageControl EMPTY>
-    <!ATTLIST ImageControl
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        image       CDATA   #REQUIRED
-        onclick     CDATA   "none"
-        help        CDATA   "\0"
-    >
-<!ELEMENT RectangleControl EMPTY>
-    <!ATTLIST RectangleControl
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        w           CDATA   "50"
-        h           CDATA   "50"
-        color       CDATA   "#C0C0C0"
-        onclick     CDATA   "none"
-        help        CDATA   "\0"
-    >
-<!ELEMENT ButtonControl EMPTY>
-    <!ATTLIST ButtonControl
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        up          CDATA   #REQUIRED
-        down        CDATA   #REQUIRED
-        disabled    CDATA   "none"
-        onclick     CDATA   "none"
-        onmouseover CDATA   "none"
-        onmouseout  CDATA   "none"
-        tooltiptext CDATA   "none"
-        help        CDATA   "\0"
-    >
-<!ELEMENT CheckBoxControl EMPTY>
-    <!ATTLIST CheckBoxControl
-        id           CDATA   "none"
-        visible      CDATA   "true"
-        x            CDATA   "\0"
-        y            CDATA   "\0"
-        img1         CDATA   #REQUIRED
-        clickimg1    CDATA   "none"
-        img2         CDATA   #REQUIRED
-        clickimg2    CDATA   "none"
-        disabled1    CDATA   "none"
-        disabled2    CDATA   "none"
-        onclick1     CDATA   "none"
-        onclick2     CDATA   "none"
-        onmouseover1 CDATA   "none"
-        onmouseout1  CDATA   "none"
-        onmouseover2 CDATA   "none"
-        onmouseout2  CDATA   "none"
-        tooltiptext1 CDATA   "none"
-        tooltiptext2 CDATA   "none"
-        help         CDATA   "\0"
-    >
-<!ELEMENT SliderControl EMPTY>
-    <!ATTLIST SliderControl
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        type        CDATA   "time"
-        up          CDATA   #REQUIRED
-        down        CDATA   #REQUIRED
-        abs         CDATA   #REQUIRED
-        ord         CDATA   #REQUIRED
-        tooltiptext CDATA   "none"
-        help        CDATA   "\0"
-    >
-<!ELEMENT TextControl EMPTY>
-    <!ATTLIST TextControl
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        text        CDATA   ""
-        font        CDATA   #REQUIRED
-        align       CDATA   "left"
-        width       CDATA   "\0"
-        display     CDATA   "none"
-        scroll      CDATA   "true"
-        scrollspace CDATA   "20"
-        help        CDATA   "\0"
-    >
-<!ELEMENT PlayListControl SliderControl>
-    <!ATTLIST PlayListControl
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        width       CDATA   "200"
-        infowidth   CDATA   "50"
-        font        CDATA   #REQUIRED
-        playfont    CDATA   "none"
-        selcolor    CDATA   "#0000FF"
-        abs         CDATA   #REQUIRED
-        ord         CDATA   #REQUIRED
-        help        CDATA   "\0"
-        longfilename CDATA   "false"
-    >
diff --git a/modules/gui/skins/parser/skin.h b/modules/gui/skins/parser/skin.h
deleted file mode 100644 (file)
index c404897..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-/* XML processor/application API for skin.dtd (Id: skin.dtd,v 1.4 2003/04/20 20:28:39 ipkiss Exp).
- * Generated 2003/10/22 19:09:40.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-#ifndef _FLEXML_skin_H
-
-/* XML application entry points. */
-extern void STag_Theme(void);
-extern void ETag_Theme(void);
-extern void STag_Bitmap(void);
-extern void ETag_Bitmap(void);
-extern void STag_Event(void);
-extern void ETag_Event(void);
-extern void STag_Font(void);
-extern void ETag_Font(void);
-extern void STag_ThemeInfo(void);
-extern void ETag_ThemeInfo(void);
-extern void STag_Window(void);
-extern void ETag_Window(void);
-extern void STag_ControlGroup(void);
-extern void ETag_ControlGroup(void);
-extern void STag_Anchor(void);
-extern void ETag_Anchor(void);
-extern void STag_ImageControl(void);
-extern void ETag_ImageControl(void);
-extern void STag_RectangleControl(void);
-extern void ETag_RectangleControl(void);
-extern void STag_ButtonControl(void);
-extern void ETag_ButtonControl(void);
-extern void STag_CheckBoxControl(void);
-extern void ETag_CheckBoxControl(void);
-extern void STag_SliderControl(void);
-extern void ETag_SliderControl(void);
-extern void STag_TextControl(void);
-extern void ETag_TextControl(void);
-extern void STag_PlayListControl(void);
-extern void ETag_PlayListControl(void);
-
-/* XML application data. */
-typedef char* AT_TextControl_display;
-#define AU_TextControl_display NULL
-typedef char* AT_SliderControl_x;
-#define AU_SliderControl_x NULL
-typedef char* AT_ButtonControl_onclick;
-#define AU_ButtonControl_onclick NULL
-typedef char* AT_RectangleControl_color;
-#define AU_RectangleControl_color NULL
-typedef char* AT_SliderControl_y;
-#define AU_SliderControl_y NULL
-typedef char* AT_ButtonControl_id;
-#define AU_ButtonControl_id NULL
-typedef char* AT_Window_movealpha;
-#define AU_Window_movealpha NULL
-typedef char* AT_SliderControl_down;
-#define AU_SliderControl_down NULL
-typedef char* AT_ButtonControl_down;
-#define AU_ButtonControl_down NULL
-typedef char* AT_CheckBoxControl_disabled1;
-#define AU_CheckBoxControl_disabled1 NULL
-typedef char* AT_CheckBoxControl_onmouseover1;
-#define AU_CheckBoxControl_onmouseover1 NULL
-typedef char* AT_CheckBoxControl_disabled2;
-#define AU_CheckBoxControl_disabled2 NULL
-typedef char* AT_CheckBoxControl_onmouseover2;
-#define AU_CheckBoxControl_onmouseover2 NULL
-typedef char* AT_Font_underline;
-#define AU_Font_underline NULL
-typedef char* AT_ButtonControl_onmouseover;
-#define AU_ButtonControl_onmouseover NULL
-typedef char* AT_ButtonControl_visible;
-#define AU_ButtonControl_visible NULL
-typedef char* AT_TextControl_scroll;
-#define AU_TextControl_scroll NULL
-typedef char* AT_SliderControl_id;
-#define AU_SliderControl_id NULL
-typedef char* AT_CheckBoxControl_x;
-#define AU_CheckBoxControl_x NULL
-typedef char* AT_Window_alpha;
-#define AU_Window_alpha NULL
-typedef char* AT_TextControl_x;
-#define AU_TextControl_x NULL
-typedef char* AT_CheckBoxControl_y;
-#define AU_CheckBoxControl_y NULL
-typedef char* AT_Window_id;
-#define AU_Window_id NULL
-typedef char* AT_TextControl_y;
-#define AU_TextControl_y NULL
-typedef char* AT_RectangleControl_onclick;
-#define AU_RectangleControl_onclick NULL
-typedef char* AT_Theme_magnet;
-#define AU_Theme_magnet NULL
-typedef char* AT_TextControl_font;
-#define AU_TextControl_font NULL
-typedef char* AT_PlayListControl_selcolor;
-#define AU_PlayListControl_selcolor NULL
-typedef char* AT_Anchor_x;
-#define AU_Anchor_x NULL
-typedef char* AT_Anchor_y;
-#define AU_Anchor_y NULL
-typedef char* AT_ButtonControl_up;
-#define AU_ButtonControl_up NULL
-typedef char* AT_RectangleControl_visible;
-#define AU_RectangleControl_visible NULL
-typedef char* AT_SliderControl_type;
-#define AU_SliderControl_type NULL
-typedef char* AT_CheckBoxControl_id;
-#define AU_CheckBoxControl_id NULL
-typedef char* AT_Anchor_priority;
-#define AU_Anchor_priority NULL
-typedef char* AT_PlayListControl_visible;
-#define AU_PlayListControl_visible NULL
-typedef char* AT_Bitmap_alphacolor;
-#define AU_Bitmap_alphacolor NULL
-typedef char* AT_ImageControl_onclick;
-#define AU_ImageControl_onclick NULL
-typedef char* AT_PlayListControl_x;
-#define AU_PlayListControl_x NULL
-typedef char* AT_PlayListControl_y;
-#define AU_PlayListControl_y NULL
-typedef char* AT_ImageControl_image;
-#define AU_ImageControl_image NULL
-typedef char* AT_ThemeInfo_name;
-#define AU_ThemeInfo_name NULL
-typedef char* AT_TextControl_width;
-#define AU_TextControl_width NULL
-typedef char* AT_PlayListControl_id;
-#define AU_PlayListControl_id NULL
-typedef char* AT_CheckBoxControl_onmouseout1;
-#define AU_CheckBoxControl_onmouseout1 NULL
-typedef char* AT_CheckBoxControl_onmouseout2;
-#define AU_CheckBoxControl_onmouseout2 NULL
-typedef char* AT_Bitmap_id;
-#define AU_Bitmap_id NULL
-typedef char* AT_Font_italic;
-#define AU_Font_italic NULL
-typedef char* AT_PlayListControl_ord;
-#define AU_PlayListControl_ord NULL
-typedef char* AT_ButtonControl_disabled;
-#define AU_ButtonControl_disabled NULL
-typedef char* AT_SliderControl_up;
-#define AU_SliderControl_up NULL
-typedef char* AT_ImageControl_x;
-#define AU_ImageControl_x NULL
-typedef char* AT_ControlGroup_x;
-#define AU_ControlGroup_x NULL
-typedef char* AT_PlayListControl_infowidth;
-#define AU_PlayListControl_infowidth NULL
-typedef char* AT_ImageControl_y;
-#define AU_ImageControl_y NULL
-typedef char* AT_ControlGroup_y;
-#define AU_ControlGroup_y NULL
-typedef char* AT_PlayListControl_longfilename;
-#define AU_PlayListControl_longfilename NULL
-typedef char* AT_PlayListControl_abs;
-#define AU_PlayListControl_abs NULL
-typedef char* AT_ImageControl_visible;
-#define AU_ImageControl_visible NULL
-typedef char* AT_PlayListControl_width;
-#define AU_PlayListControl_width NULL
-typedef char* AT_SliderControl_help;
-#define AU_SliderControl_help NULL
-typedef char* AT_ButtonControl_help;
-#define AU_ButtonControl_help NULL
-typedef char* AT_TextControl_scrollspace;
-#define AU_TextControl_scrollspace NULL
-typedef char* AT_Font_font;
-#define AU_Font_font NULL
-typedef char* AT_SliderControl_visible;
-#define AU_SliderControl_visible NULL
-typedef char* AT_PlayListControl_playfont;
-#define AU_PlayListControl_playfont NULL
-typedef char* AT_TextControl_text;
-#define AU_TextControl_text NULL
-typedef char* AT_SliderControl_ord;
-#define AU_SliderControl_ord NULL
-typedef char* AT_Window_visible;
-#define AU_Window_visible NULL
-typedef char* AT_TextControl_align;
-#define AU_TextControl_align NULL
-typedef char* AT_TextControl_id;
-#define AU_TextControl_id NULL
-typedef char* AT_Window_x;
-#define AU_Window_x NULL
-typedef char* AT_SliderControl_abs;
-#define AU_SliderControl_abs NULL
-typedef char* AT_Window_y;
-#define AU_Window_y NULL
-typedef char* AT_RectangleControl_help;
-#define AU_RectangleControl_help NULL
-typedef char* AT_CheckBoxControl_img1;
-#define AU_CheckBoxControl_img1 NULL
-typedef char* AT_CheckBoxControl_img2;
-#define AU_CheckBoxControl_img2 NULL
-typedef char* AT_ButtonControl_x;
-#define AU_ButtonControl_x NULL
-typedef char* AT_ButtonControl_y;
-#define AU_ButtonControl_y NULL
-typedef char* AT_Window_dragdrop;
-#define AU_Window_dragdrop NULL
-typedef char* AT_ImageControl_help;
-#define AU_ImageControl_help NULL
-typedef char* AT_PlayListControl_help;
-#define AU_PlayListControl_help NULL
-typedef char* AT_Font_weight;
-#define AU_Font_weight NULL
-typedef char* AT_ThemeInfo_author;
-#define AU_ThemeInfo_author NULL
-typedef char* AT_CheckBoxControl_help;
-#define AU_CheckBoxControl_help NULL
-typedef char* AT_TextControl_visible;
-#define AU_TextControl_visible NULL
-typedef char* AT_ButtonControl_tooltiptext;
-#define AU_ButtonControl_tooltiptext NULL
-typedef char* AT_Event_event;
-#define AU_Event_event NULL
-typedef char* AT_RectangleControl_h;
-#define AU_RectangleControl_h NULL
-typedef char* AT_ThemeInfo_webpage;
-#define AU_ThemeInfo_webpage NULL
-typedef char* AT_ButtonControl_onmouseout;
-#define AU_ButtonControl_onmouseout NULL
-typedef char* AT_Window_playondrop;
-#define AU_Window_playondrop NULL
-typedef char* AT_CheckBoxControl_tooltiptext1;
-#define AU_CheckBoxControl_tooltiptext1 NULL
-typedef char* AT_CheckBoxControl_tooltiptext2;
-#define AU_CheckBoxControl_tooltiptext2 NULL
-typedef char* AT_ImageControl_id;
-#define AU_ImageControl_id NULL
-typedef char* AT_CheckBoxControl_onclick1;
-#define AU_CheckBoxControl_onclick1 NULL
-typedef char* AT_Font_size;
-#define AU_Font_size NULL
-typedef char* AT_Bitmap_file;
-#define AU_Bitmap_file NULL
-typedef char* AT_CheckBoxControl_onclick2;
-#define AU_CheckBoxControl_onclick2 NULL
-typedef char* AT_Window_fadetime;
-#define AU_Window_fadetime NULL
-typedef char* AT_Event_id;
-#define AU_Event_id NULL
-typedef char* AT_Font_id;
-#define AU_Font_id NULL
-typedef char* AT_CheckBoxControl_visible;
-#define AU_CheckBoxControl_visible NULL
-typedef char* AT_Event_key;
-#define AU_Event_key NULL
-typedef char* AT_ThemeInfo_email;
-#define AU_ThemeInfo_email NULL
-typedef char* AT_Font_color;
-#define AU_Font_color NULL
-typedef char* AT_RectangleControl_w;
-#define AU_RectangleControl_w NULL
-typedef char* AT_SliderControl_tooltiptext;
-#define AU_SliderControl_tooltiptext NULL
-typedef char* AT_RectangleControl_x;
-#define AU_RectangleControl_x NULL
-typedef char* AT_RectangleControl_y;
-#define AU_RectangleControl_y NULL
-typedef char* AT_CheckBoxControl_clickimg1;
-#define AU_CheckBoxControl_clickimg1 NULL
-typedef char* AT_CheckBoxControl_clickimg2;
-#define AU_CheckBoxControl_clickimg2 NULL
-typedef char* AT_Anchor_range;
-#define AU_Anchor_range NULL
-typedef char* AT_PlayListControl_font;
-#define AU_PlayListControl_font NULL
-typedef char* AT_TextControl_help;
-#define AU_TextControl_help NULL
-typedef char* AT_RectangleControl_id;
-#define AU_RectangleControl_id NULL
-
-/* FleXML-provided data. */
-extern char* pcdata;
-extern AT_TextControl_display A_TextControl_display;
-extern AT_SliderControl_x A_SliderControl_x;
-extern AT_ButtonControl_onclick A_ButtonControl_onclick;
-extern AT_RectangleControl_color A_RectangleControl_color;
-extern AT_SliderControl_y A_SliderControl_y;
-extern AT_ButtonControl_id A_ButtonControl_id;
-extern AT_Window_movealpha A_Window_movealpha;
-extern AT_SliderControl_down A_SliderControl_down;
-extern AT_ButtonControl_down A_ButtonControl_down;
-extern AT_CheckBoxControl_disabled1 A_CheckBoxControl_disabled1;
-extern AT_CheckBoxControl_onmouseover1 A_CheckBoxControl_onmouseover1;
-extern AT_CheckBoxControl_disabled2 A_CheckBoxControl_disabled2;
-extern AT_CheckBoxControl_onmouseover2 A_CheckBoxControl_onmouseover2;
-extern AT_Font_underline A_Font_underline;
-extern AT_ButtonControl_onmouseover A_ButtonControl_onmouseover;
-extern AT_ButtonControl_visible A_ButtonControl_visible;
-extern AT_TextControl_scroll A_TextControl_scroll;
-extern AT_SliderControl_id A_SliderControl_id;
-extern AT_CheckBoxControl_x A_CheckBoxControl_x;
-extern AT_Window_alpha A_Window_alpha;
-extern AT_TextControl_x A_TextControl_x;
-extern AT_CheckBoxControl_y A_CheckBoxControl_y;
-extern AT_Window_id A_Window_id;
-extern AT_TextControl_y A_TextControl_y;
-extern AT_RectangleControl_onclick A_RectangleControl_onclick;
-extern AT_Theme_magnet A_Theme_magnet;
-extern AT_TextControl_font A_TextControl_font;
-extern AT_PlayListControl_selcolor A_PlayListControl_selcolor;
-extern AT_Anchor_x A_Anchor_x;
-extern AT_Anchor_y A_Anchor_y;
-extern AT_ButtonControl_up A_ButtonControl_up;
-extern AT_RectangleControl_visible A_RectangleControl_visible;
-extern AT_SliderControl_type A_SliderControl_type;
-extern AT_CheckBoxControl_id A_CheckBoxControl_id;
-extern AT_Anchor_priority A_Anchor_priority;
-extern AT_PlayListControl_visible A_PlayListControl_visible;
-extern AT_Bitmap_alphacolor A_Bitmap_alphacolor;
-extern AT_ImageControl_onclick A_ImageControl_onclick;
-extern AT_PlayListControl_x A_PlayListControl_x;
-extern AT_PlayListControl_y A_PlayListControl_y;
-extern AT_ImageControl_image A_ImageControl_image;
-extern AT_ThemeInfo_name A_ThemeInfo_name;
-extern AT_TextControl_width A_TextControl_width;
-extern AT_PlayListControl_id A_PlayListControl_id;
-extern AT_CheckBoxControl_onmouseout1 A_CheckBoxControl_onmouseout1;
-extern AT_CheckBoxControl_onmouseout2 A_CheckBoxControl_onmouseout2;
-extern AT_Bitmap_id A_Bitmap_id;
-extern AT_Font_italic A_Font_italic;
-extern AT_PlayListControl_ord A_PlayListControl_ord;
-extern AT_ButtonControl_disabled A_ButtonControl_disabled;
-extern AT_SliderControl_up A_SliderControl_up;
-extern AT_ImageControl_x A_ImageControl_x;
-extern AT_ControlGroup_x A_ControlGroup_x;
-extern AT_PlayListControl_infowidth A_PlayListControl_infowidth;
-extern AT_ImageControl_y A_ImageControl_y;
-extern AT_ControlGroup_y A_ControlGroup_y;
-extern AT_PlayListControl_longfilename A_PlayListControl_longfilename;
-extern AT_PlayListControl_abs A_PlayListControl_abs;
-extern AT_ImageControl_visible A_ImageControl_visible;
-extern AT_PlayListControl_width A_PlayListControl_width;
-extern AT_SliderControl_help A_SliderControl_help;
-extern AT_ButtonControl_help A_ButtonControl_help;
-extern AT_TextControl_scrollspace A_TextControl_scrollspace;
-extern AT_Font_font A_Font_font;
-extern AT_SliderControl_visible A_SliderControl_visible;
-extern AT_PlayListControl_playfont A_PlayListControl_playfont;
-extern AT_TextControl_text A_TextControl_text;
-extern AT_SliderControl_ord A_SliderControl_ord;
-extern AT_Window_visible A_Window_visible;
-extern AT_TextControl_align A_TextControl_align;
-extern AT_TextControl_id A_TextControl_id;
-extern AT_Window_x A_Window_x;
-extern AT_SliderControl_abs A_SliderControl_abs;
-extern AT_Window_y A_Window_y;
-extern AT_RectangleControl_help A_RectangleControl_help;
-extern AT_CheckBoxControl_img1 A_CheckBoxControl_img1;
-extern AT_CheckBoxControl_img2 A_CheckBoxControl_img2;
-extern AT_ButtonControl_x A_ButtonControl_x;
-extern AT_ButtonControl_y A_ButtonControl_y;
-extern AT_Window_dragdrop A_Window_dragdrop;
-extern AT_ImageControl_help A_ImageControl_help;
-extern AT_PlayListControl_help A_PlayListControl_help;
-extern AT_Font_weight A_Font_weight;
-extern AT_ThemeInfo_author A_ThemeInfo_author;
-extern AT_CheckBoxControl_help A_CheckBoxControl_help;
-extern AT_TextControl_visible A_TextControl_visible;
-extern AT_ButtonControl_tooltiptext A_ButtonControl_tooltiptext;
-extern AT_Event_event A_Event_event;
-extern AT_RectangleControl_h A_RectangleControl_h;
-extern AT_ThemeInfo_webpage A_ThemeInfo_webpage;
-extern AT_ButtonControl_onmouseout A_ButtonControl_onmouseout;
-extern AT_Window_playondrop A_Window_playondrop;
-extern AT_CheckBoxControl_tooltiptext1 A_CheckBoxControl_tooltiptext1;
-extern AT_CheckBoxControl_tooltiptext2 A_CheckBoxControl_tooltiptext2;
-extern AT_ImageControl_id A_ImageControl_id;
-extern AT_CheckBoxControl_onclick1 A_CheckBoxControl_onclick1;
-extern AT_Font_size A_Font_size;
-extern AT_Bitmap_file A_Bitmap_file;
-extern AT_CheckBoxControl_onclick2 A_CheckBoxControl_onclick2;
-extern AT_Window_fadetime A_Window_fadetime;
-extern AT_Event_id A_Event_id;
-extern AT_Font_id A_Font_id;
-extern AT_CheckBoxControl_visible A_CheckBoxControl_visible;
-extern AT_Event_key A_Event_key;
-extern AT_ThemeInfo_email A_ThemeInfo_email;
-extern AT_Font_color A_Font_color;
-extern AT_RectangleControl_w A_RectangleControl_w;
-extern AT_SliderControl_tooltiptext A_SliderControl_tooltiptext;
-extern AT_RectangleControl_x A_RectangleControl_x;
-extern AT_RectangleControl_y A_RectangleControl_y;
-extern AT_CheckBoxControl_clickimg1 A_CheckBoxControl_clickimg1;
-extern AT_CheckBoxControl_clickimg2 A_CheckBoxControl_clickimg2;
-extern AT_Anchor_range A_Anchor_range;
-extern AT_PlayListControl_font A_PlayListControl_font;
-extern AT_TextControl_help A_TextControl_help;
-extern AT_RectangleControl_id A_RectangleControl_id;
-
-/* XML application utilities. */
-extern int element_context(int);
-
-/* XML processor entry point. */
-extern int yylex(void);
-
-#endif
diff --git a/modules/gui/skins/parser/wrappers.cpp b/modules/gui/skins/parser/wrappers.cpp
deleted file mode 100644 (file)
index 87f46f2..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-/*****************************************************************************
- * wrappers.cpp: Wrappers around C++ objects
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: wrappers.cpp,v 1.13 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- GENERAL ---------------------------------------------------------------
-#include <stdlib.h>
-#include <string>
-using namespace std;
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-extern intf_thread_t *g_pIntf;
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/anchor.h"
-#include "../src/banks.h"
-#include "../controls/controls.h"
-#include "../src/font.h"
-#include "../os_font.h"
-#include "../src/window.h"
-#include "../src/theme.h"
-#include "../src/skin_common.h"
-#include "wrappers.h"
-
-
-//---------------------------------------------------------------------------
-// Local prototypes
-//---------------------------------------------------------------------------
-static bool ConvertBoolean( const char *value );
-static int  ConvertColor( const char *transcolor );
-static int  CheckCoords( const char *coord );
-static void ConvertCoords( char *coord, double *p_coord );
-static int  ConvertAlign( char *align );
-
-//---------------------------------------------------------------------------
-// Wrappers
-//---------------------------------------------------------------------------
-void AddBitmap( char *name, char *file, char *transcolor )
-{
-    g_pIntf->p_sys->p_theme->BmpBank->Add( name, file,
-                                           ConvertColor( transcolor ) );
-}
-//---------------------------------------------------------------------------
-void AddEvent( char *name, char *event, char *key )
-{
-    g_pIntf->p_sys->p_theme->EvtBank->Add( name, event, key );
-}
-//---------------------------------------------------------------------------
-void AddFont( char *name, char *font, char *size, char *color,
-              char *weight, char *italic, char *underline )
-{
-    g_pIntf->p_sys->p_theme->FntBank->Add(
-        name, font, atoi( size ), ConvertColor( color ), atoi( weight ),
-        ConvertBoolean( italic ), ConvertBoolean( underline ) );
-}
-//---------------------------------------------------------------------------
-void AddThemeInfo( char *name, char *author, char *email, char *webpage )
-{
-    g_pIntf->p_sys->p_theme->ChangeClientWindowName(
-        "VLC Media Player - " + (string)name );
-}
-//---------------------------------------------------------------------------
-void StartWindow( char *name, char *x, char *y, char *visible, char *fadetime,
-    char *alpha, char *movealpha, char *dragdrop, char *playondrop )
-{
-    g_pIntf->p_sys->p_theme->AddWindow( name, atoi( x ), atoi( y ),
-        ConvertBoolean( visible ), atoi( fadetime ), atoi( alpha ),
-        atoi( movealpha ), ConvertBoolean( dragdrop ),
-        ConvertBoolean( playondrop ) );
-}
-//---------------------------------------------------------------------------
-void EndWindow()
-{
-}
-//---------------------------------------------------------------------------
-void StartTheme( char *magnet )
-{
-    g_pIntf->p_sys->p_theme->StartTheme( atoi( magnet ) );
-}
-//---------------------------------------------------------------------------
-void EndTheme()
-{
-}
-//---------------------------------------------------------------------------
-void StartControlGroup( char *x, char *y )
-{
-    g_pIntf->p_sys->p_theme->OffBank->PushOffSet( atoi( x ), atoi( y ) );
-}
-//---------------------------------------------------------------------------
-void EndControlGroup()
-{
-    g_pIntf->p_sys->p_theme->OffBank->PopOffSet();
-}
-
-//---------------------------------------------------------------------------
-void AddAnchor( char *x, char *y, char *len, char *priority )
-{
-    int XOff, YOff;
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-    
-    vlcWin->AnchorList.push_back( new Anchor( g_pIntf, atoi( x ) + XOff,
-                                  atoi( y ) + YOff, atoi( len ),
-                                  atoi( priority ), vlcWin ) );
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// CONTROLS
-//---------------------------------------------------------------------------
-void AddImage( char *id, char *visible, char *x, char *y, char *image,
-    char *event, char *help )
-{
-    int XOff, YOff;
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-
-    vlcWin->ControlList.push_back( new ControlImage( id,
-        ConvertBoolean( visible ), atoi( x ) + XOff,
-        atoi( y ) + YOff, image, event, help, vlcWin ) );
-}
-//---------------------------------------------------------------------------
-void AddRectangle( char *id, char *visible, char *x, char *y, char *w, char *h,
-    char *color, char *event, char *help )
-{
-    int XOff, YOff;
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-
-    vlcWin->ControlList.push_back( new ControlRectangle( id,
-        ConvertBoolean( visible ), atoi( x ) + XOff, atoi( y ) + YOff,
-        atoi( w ), atoi( h ), ConvertColor( color ), event, help, vlcWin ) );
-}
-//---------------------------------------------------------------------------
-void AddButton(
-    char *id,
-    char *visible,
-    char *x, char *y,
-    char *up, char *down, char *disabled,
-    char *onclick, char *onmouseover, char *onmouseout,
-    char *tooltiptext, char *help )
-{
-    int XOff, YOff;
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-
-    vlcWin->ControlList.push_back( new ControlButton(
-        id,
-        ConvertBoolean( visible ),
-        atoi( x ) + XOff, atoi( y ) + YOff,
-        up, down, disabled,
-        onclick, onmouseover, onmouseout,
-        tooltiptext, help,
-        vlcWin ) );
-}
-//---------------------------------------------------------------------------
-void AddCheckBox(
-    char *id,
-    char *visible,
-    char *x, char *y,
-    char *img1, char *img2,
-    char *clickimg1, char *clickimg2, char *disabled1, char *disabled2,
-    char *onclick1, char *onclick2, char *onmouseover1, char *onmouseout1,
-    char *onmouseover2, char *onmouseout2,
-    char *tooltiptext1, char *tooltiptext2, char *help )
-{
-    int XOff, YOff;
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-
-    vlcWin->ControlList.push_back( new ControlCheckBox(
-        id,
-        ConvertBoolean( visible ),
-        atoi( x ) + XOff, atoi( y ) + YOff,
-        img1, img2, clickimg1, clickimg2, disabled1, disabled2,
-        onclick1, onclick2, onmouseover1, onmouseout1, onmouseover2,
-        onmouseout2,
-        tooltiptext1, tooltiptext2, help, vlcWin ) );
-}
-//---------------------------------------------------------------------------
-void AddSlider( char *id, char *visible, char *x, char *y, char *type, char *up,
-    char *down, char *abs, char *ord, char *tooltiptext, char *help )
-{
-    int XOff, YOff, i;
-    int res1 = CheckCoords( abs );
-    int res2 = CheckCoords( ord );
-    if( res1 < 2 || res2 < 2 )
-    {
-        msg_Warn( g_pIntf, "Cannot add slider: not enough points" );
-        return;
-    }
-    if( res1 != res2 )
-    {
-        msg_Warn( g_pIntf, "Cannot add slider: invalid list of points" );
-        return;
-    }
-
-    // now, res1 == res2
-    double *p_abs, *p_ord;
-    p_abs = new double[res1];
-    p_ord = new double[res1];
-    ConvertCoords( abs, p_abs );
-    ConvertCoords( ord, p_ord );
-
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    // Move control
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-    for( i = 0; i < res1; i++ )
-    {
-        p_abs[i] += XOff + atoi(x);
-        p_ord[i] += YOff + atoi(y);
-    }
-
-    // Create Control
-    if( g_pIntf->p_sys->p_theme->ConstructPlaylist )
-    {
-        GenericControl *playlist = vlcWin->ControlList.back();
-        ( (ControlPlayList *)playlist )->InitSliderCurve( p_abs, p_ord, res1,
-                                                          up, down );
-    }
-    else
-    {
-        vlcWin->ControlList.push_back( new ControlSlider( id,
-            ConvertBoolean( visible ), type, up, down, p_abs, p_ord, res1,
-            tooltiptext, help, vlcWin ) );
-    }
-
-    delete[] p_abs;
-    delete[] p_ord;
-}
-//---------------------------------------------------------------------------
-void AddPlayList( char *id, char *visible, char *x, char *y, char *width,
-    char *infowidth, char *font, char *playfont, char *selcolor, char *abs,
-    char *ord, char *longfilename, char *help )
-{
-    g_pIntf->p_sys->p_theme->ConstructPlaylist = true;
-
-    int XOff, YOff, i;
-    int res1 = CheckCoords( abs );
-    int res2 = CheckCoords( ord );
-    if( res1 < 2 || res2 < 2 )
-    {
-        msg_Warn( g_pIntf, "Cannot add slider: not enough points" );
-        return;
-    }
-    if( res1 != res2 )
-    {
-        msg_Warn( g_pIntf, "Cannot add slider: invalid list of points" );
-        return;
-    }
-
-    // now, res1 == res2
-    double *p_abs, *p_ord;
-    p_abs = new double[res1];
-    p_ord = new double[res1];
-    ConvertCoords( abs, p_abs );
-    ConvertCoords( ord, p_ord );
-
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    // Move control
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-    for( i = 0; i < res1; i++ )
-    {
-        p_abs[i] += XOff + atoi(x);
-        p_ord[i] += YOff + atoi(y);
-    }
-
-    // Move control
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-
-    vlcWin->ControlList.push_back( new ControlPlayList( id,
-        ConvertBoolean( visible ), atoi( width ), atoi( infowidth ), font,
-        playfont, ConvertColor( selcolor ), p_abs, p_ord, res1,
-        ConvertBoolean( longfilename ), help, vlcWin ) );
-
-    delete[] p_abs;
-    delete[] p_ord;
-
-}
-//---------------------------------------------------------------------------
-void AddPlayListEnd()
-{
-    g_pIntf->p_sys->p_theme->ConstructPlaylist = false;
-}
-//---------------------------------------------------------------------------
-void AddText( char *id, char *visible, char *x, char *y, char *text, char *font,
-    char *align, char *width, char *display, char *scroll, char *scrollspace,
-    char *help )
-{
-    int XOff, YOff;
-    SkinWindow *vlcWin = g_pIntf->p_sys->p_theme->WindowList.back();
-
-    g_pIntf->p_sys->p_theme->OffBank->GetOffSet( XOff, YOff );
-
-    vlcWin->ControlList.push_back( new ControlText( id,
-        ConvertBoolean( visible ), atoi( x ) + XOff,
-        atoi( y ) + YOff, text, font, ConvertAlign( align ), atoi( width ),
-        display, ConvertBoolean( scroll ), atoi( scrollspace ), help,
-        vlcWin ) );
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// Useful functions
-//---------------------------------------------------------------------------
-static bool ConvertBoolean( const char *value )
-{
-    return strcmp( value, "true" ) == 0;
-}
-//---------------------------------------------------------------------------
-static int ConvertColor( const char *transcolor )
-{
-    int iRed, iGreen, iBlue;
-    iRed = iGreen = iBlue = 0;
-    sscanf( transcolor, "#%2X%2X%2X", &iRed, &iGreen, &iBlue );
-    return ( 65536 * iBlue + 256 * iGreen + iRed );
-}
-//---------------------------------------------------------------------------
-// Check that abs and ord contain the same number of comas
-static int CheckCoords( const char *coord )
-{
-    int i_coord = 1;
-    while( coord && *coord )
-    {
-        if( *coord == ',' )
-            i_coord++;
-        coord++;
-    }
-    return i_coord;
-}
-//---------------------------------------------------------------------------
-static void ConvertCoords( char *coord, double *p_coord )
-{
-    int i = 0;
-    char *ptr = coord;
-
-    while( coord && *coord )
-    {
-        if( *coord == ',' )
-        {
-            *coord = '\0';
-            p_coord[i] = atof( ptr );
-            i++;
-            ptr = coord + 1;
-        }
-        coord++;
-    }
-    p_coord[i] = atof( ptr );
-}
-//---------------------------------------------------------------------------
-static int ConvertAlign( char *align )
-{
-    if( strcmp( align, "left" ) == 0 )
-        return VLC_FONT_ALIGN_LEFT;
-    else if( strcmp( align, "right" ) == 0 )
-        return VLC_FONT_ALIGN_RIGHT;
-    else if( strcmp( align, "center" ) == 0 )
-        return VLC_FONT_ALIGN_CENTER;
-    else
-        return VLC_FONT_ALIGN_LEFT;
-}
-//---------------------------------------------------------------------------
diff --git a/modules/gui/skins/parser/wrappers.h b/modules/gui/skins/parser/wrappers.h
deleted file mode 100644 (file)
index 36b4cdf..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*****************************************************************************
- * wrappers.h: Wrappers around C++ objects
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: wrappers.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//---------------------------------------------------------------------------
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-//---------------------------------------------------------------------------
-// Divers
-//---------------------------------------------------------------------------
-    void AddAnchor( char *x, char *y, char *len, char *priority );
-    void AddBitmap( char *name, char *file, char *transcolor );
-    void AddEvent( char *name, char *event, char *key );
-    void AddFont( char *name, char *font, char *size,
-                  char *color, char *weight, char *italic, char *underline );
-    void StartControlGroup( char *x, char *y );
-    void EndControlGroup();
-
-//---------------------------------------------------------------------------
-// Theme
-//---------------------------------------------------------------------------
-    void AddThemeInfo( char *name, char *author, char *email,
-                       char *webpage );
-    void StartTheme( char *magnet );
-    void EndTheme();
-
-//---------------------------------------------------------------------------
-// Window
-//---------------------------------------------------------------------------
-    void StartWindow( char *name, char *x, char *y, char *visible,
-                      char *fadetime, char *alpha, char *movealpha,
-                      char *dragdrop, char *playondrop );
-    void EndWindow();
-
-//---------------------------------------------------------------------------
-// Control
-//---------------------------------------------------------------------------
-    void AddImage( char *id, char *visible, char *x, char *y, char *image,
-                   char *event, char *help );
-
-    void AddRectangle( char *id, char *visible, char *x, char *y, char *w,
-                       char *h, char *color, char *event, char *help );
-
-    void AddButton( char *id,
-                    char *visible,
-                    char *x, char *y,
-                    char *up, char *down, char *disabled,
-                    char *onclick, char *onmouseover, char *onmouseout,
-                    char *tooltiptext, char *help );
-
-    void AddCheckBox( char *id,
-                      char *visible,
-                      char *x, char *y,
-                      char *img1, char *img2, char *clickimg1, char *clickimg2,
-                      char *disabled1, char *disabled2,
-                      char *onclick1, char *onclick2, char *onmouseover1,
-                      char *onmouseout1, char *onmouseover2, char *onmouseout2,
-                      char *tooltiptext1, char *tooltiptext2, char *help );
-
-    void AddSlider( char *id, char *visible, char *x, char *y, char *type,
-                    char *up, char *down, char *abs, char *ord,
-                    char *tooltiptext, char *help );
-
-    void AddText( char *id, char *visible, char *x, char *y, char *text,
-                  char *font, char *align, char *width, char *display,
-                  char *scroll, char *scrollspace, char *help );
-
-    void AddPlayList( char *id, char *visible, char *x, char *y, char *width,
-                      char *infowidth, char *font, char *playfont,
-                      char *selcolor, char *abs, char *ord,
-                      char *longfilename, char *help );
-
-    void AddPlayListEnd();
-//---------------------------------------------------------------------------
-
-#if defined(__cplusplus)
-}
-#endif
diff --git a/modules/gui/skins/src/anchor.cpp b/modules/gui/skins/src/anchor.cpp
deleted file mode 100644 (file)
index 4e512c6..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*****************************************************************************
- * anchor.cpp: Anchor class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: anchor.cpp,v 1.3 2003/04/22 22:57:40 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- GENERAL ---------------------------------------------------------------
-#include <math.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "anchor.h"
-#include "window.h"
-
-
-//---------------------------------------------------------------------------
-// Anchors
-//---------------------------------------------------------------------------
-Anchor::Anchor( intf_thread_t *_p_intf, int x, int y, int len, int priority,
-                SkinWindow *parent )
-{
-    p_intf   = _p_intf;
-    Parent   = parent;
-    Left     = x;
-    Top      = y;
-    Priority = priority;
-    Len      = len;
-}
-//---------------------------------------------------------------------------
-bool Anchor::IsInList( Anchor *anc )
-{
-    // Declare iterator
-    list<Anchor *>::const_iterator elt;
-
-    // Iterate through list
-    for( elt = HangList.begin(); elt != HangList.end(); elt++ )
-    {
-        if( (*elt) == anc )
-            return true;
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-void Anchor::Add( Anchor *anc )
-{
-    HangList.push_back( anc );
-}
-//---------------------------------------------------------------------------
-void Anchor::Remove( Anchor *anc )
-{
-    HangList.remove( anc );
-}
-//---------------------------------------------------------------------------
-bool Anchor::Hang( Anchor *anc, int mx, int my )
-{
-    // Get position of anchor
-    int x, y, px, py;
-    Parent->GetPos( px, py );
-    anc->GetPos( x, y );
-    x += mx - px - Left;
-    y += my - py - Top;
-
-    // Len of 0 is equal to unactivate anchor
-    return( Len > 0 && sqrt( x*x + y*y ) <= Len );
-}
-//---------------------------------------------------------------------------
-void Anchor::GetPos( int &x, int &y )
-{
-    x = Left;
-    y = Top;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/anchor.h b/modules/gui/skins/src/anchor.h
deleted file mode 100644 (file)
index 6c8276c..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*****************************************************************************
- * anchor.h: Anchor class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: anchor.h,v 1.2 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_ANCHOR
-#define VLC_SKIN_ANCHOR
-
-//--- GENERAL ---------------------------------------------------------------
-#include <list>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-//---------------------------------------------------------------------------
-class Anchor
-{
-    private:
-        // Position parameters
-        int Left;
-        int Top;
-
-        // Ray of action
-        int Len;
-
-        // Priority
-        int Priority;
-
-        // Parent window
-        SkinWindow *Parent;
-
-        // Interface thread
-        intf_thread_t *p_intf;
-
-    public:
-        // Constructor
-        Anchor( intf_thread_t *_p_intf, int x, int y, int len, int priority,
-                SkinWindow *parent );
-
-        // Hang to anchor if in neighbourhood
-        bool Hang( Anchor *anc, int mx, int my );
-        void Add( Anchor *anc );
-        void Remove( Anchor *anc );
-        bool IsInList( Anchor *anc );
-
-        // List of windows actually magnetized
-        list<Anchor *> HangList;
-
-        // Get position of anchor
-        void GetPos( int &x, int &y );
-
-        // Getters
-        int GetPriority()       { return Priority; }
-        SkinWindow *GetParent()     { return Parent; }
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/banks.cpp b/modules/gui/skins/src/banks.cpp
deleted file mode 100644 (file)
index a8fbee7..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/*****************************************************************************
- * banks.cpp: Bitmap bank, Event bank, Font bank and OffSet bank
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: banks.cpp,v 1.12 2004/02/15 18:58:38 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "bitmap.h"
-#include "../os_bitmap.h"
-#include "event.h"
-#include "../os_event.h"
-#include "font.h"
-#include "../os_font.h"
-#include "banks.h"
-#include "skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-//  Bitmap Bank
-//---------------------------------------------------------------------------
-BitmapBank::BitmapBank( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-
-    // Create default bitmap
-    Add( DEFAULT_BITMAP_NAME, "", 0 );
-}
-//---------------------------------------------------------------------------
-BitmapBank::~BitmapBank()
-{
-    for( map<string,Bitmap *>::iterator iter = Bank.begin();
-         iter != Bank.end(); iter++ )
-    {
-        delete (OSBitmap *)iter->second;
-    }
-}
-//---------------------------------------------------------------------------
-bool BitmapBank::Add( string Id, string FileName, int AColor )
-{
-    if( Bank[Id] != NULL )
-    {
-        msg_Warn( p_intf, "Bitmap name already exists: %s", Id.c_str() );
-        return false;
-    }
-
-    Bank[Id] = (Bitmap *)new OSBitmap( p_intf, FileName, AColor );
-    return true;
-}
-//---------------------------------------------------------------------------
-Bitmap * BitmapBank::Get( string Id )
-{
-    // If the specified bitmap doesn't exist, use the default one
-    if( Bank[Id] == NULL )
-    {
-        msg_Warn( p_intf, "Unknown bitmap name '%s', using default one",
-                  Id.c_str() );
-        Bank.erase( Id );
-        return Bank[DEFAULT_BITMAP_NAME];
-    }
-
-    return Bank[Id];
-}
-//---------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------
-//  Font Bank
-//---------------------------------------------------------------------------
-FontBank::FontBank( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-
-    // Create default font
-    Add( DEFAULT_FONT_NAME, "arial", 12, 0, 400, false, false );
-}
-//---------------------------------------------------------------------------
-FontBank::~FontBank()
-{
-    for( map<string,SkinFont *>::iterator iter = Bank.begin();
-         iter != Bank.end(); iter++ )
-    {
-        delete (OSFont *)iter->second;
-    }
-}
-//---------------------------------------------------------------------------
-bool FontBank::Add( string name, string fontname, int size,
-                    int color, int weight, bool italic, bool underline )
-{
-    if( Bank[name] != NULL )
-    {
-        msg_Warn( p_intf, "Font name already exists: %s", name.c_str() );
-        return false;
-    }
-
-    Bank[name] = (SkinFont *)new OSFont( p_intf, fontname, size, color,
-                                     weight, italic, underline );
-    return true;
-}
-//---------------------------------------------------------------------------
-SkinFont * FontBank::Get( string Id )
-{
-    // If the specified font doesn't exist, use the default one
-    if( Bank[Id] == NULL )
-    {
-        msg_Warn( p_intf, "Unknown font name '%s', using default one",
-                  Id.c_str() );
-        Bank.erase( Id );
-        return Bank[DEFAULT_FONT_NAME];
-    }
-
-    return Bank[Id];
-}
-//---------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------
-//  Event Bank
-//---------------------------------------------------------------------------
-EventBank::EventBank( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-
-    // Create default event
-    Add( DEFAULT_EVENT_NAME, "VLC_NOTHING",             "none" );
-
-    Add( "none",             "VLC_NOTHING",             "none" );
-    Add( "time",             "VLC_STREAMPOS",           "none" );
-    Add( "left_time",        "VLC_ENDSTREAMPOS",        "none" );
-    Add( "total_time",       "VLC_TOTALSTREAMPOS",      "none" );
-    Add( "file_name",        "VLC_STREAM_NAME",         "none" );
-    Add( "title",            "VLC_STREAM_TITLE",        "none" );
-    Add( "help",             "VLC_HELP_TEXT",           "none" );
-
-    Add( "tray",             "VLC_CHANGE_TRAY",         "none" );
-    Add( "taskbar",          "VLC_CHANGE_TASKBAR",      "CTRL+B" );
-
-    Add( "playlist_refresh", "CTRL_PLAYLIST",           "none" );
-    Add( "play",             "VLC_PLAY",                "X" );
-    Add( "pause",            "VLC_PAUSE",               "C" );
-    Add( "stop",             "VLC_STOP",                "V" );
-    Add( "next",             "VLC_NEXT",                "B" );
-    Add( "prev",             "VLC_PREV",                "Z" );
-    Add( "slow",             "VLC_SLOWER",              "none" );
-    Add( "fast",             "VLC_FASTER",              "none" );
-    Add( "fullscreen",       "VLC_FULLSCREEN",          "F" );
-
-    // Volume control
-    Add( "mute",             "VLC_VOLUME_CHANGE(MUTE)", "none" );
-    Add( "volume_up",        "VLC_VOLUME_CHANGE(UP)",   "none" );
-    Add( "volume_down",      "VLC_VOLUME_CHANGE(DOWN)", "none" );
-    Add( "volume_refresh",   "VLC_VOLUME_CHANGE(SET)",  "none" );
-
-    // Dialogs events
-    Add( "show_log",         "VLC_LOG_SHOW(TRUE)",      "none" );
-    Add( "hide_log",         "VLC_LOG_SHOW(FALSE)",     "none" );
-    Add( "show_prefs",       "VLC_PREFS_SHOW",          "none" );
-    Add( "show_info",        "VLC_INFO_SHOW",           "none" );
-
-    Add( "quit",             "VLC_HIDE(VLC_QUIT)",      "CTRL+C" );
-    Add( "open",             "VLC_OPEN",                "CTRL+O" );
-    Add( "net",              "VLC_NET",                 "CTRL+N" );
-    Add( "add_file",         "VLC_PLAYLIST_ADD_FILE",   "CTRL+A" );
-    Add( "load_skin",        "VLC_LOAD_SKIN",           "CTRL+S" );
-    Add( "on_top",           "VLC_ON_TOP",              "CTRL+T" );
-}
-//---------------------------------------------------------------------------
-EventBank::~EventBank()
-{
-    for( map<string,Event *>::iterator iter = Bank.begin();
-         iter != Bank.end(); iter++ )
-    {
-        iter->second->DestructParameters( true );
-        delete (OSEvent *)iter->second;
-    }
-}
-//---------------------------------------------------------------------------
-bool EventBank::Add( string Name, string EventDesc, string shortcut )
-{
-    if( Bank[Name] != NULL )
-    {
-        msg_Warn( p_intf, "Event name already exists: %s", Name.c_str() );
-        return false;
-    }
-
-    Bank[Name] = (Event *)new OSEvent( p_intf, EventDesc, shortcut );
-    return true;
-}
-//---------------------------------------------------------------------------
-void EventBank::TestShortcut( int key, int mod )
-{
-    for( map<string,Event *>::iterator iter = Bank.begin();
-         iter != Bank.end(); iter++ )
-    {
-        // If key and modifier match to event shortcut, send event
-        if( iter->second->MatchShortcut( key, mod ) )
-            iter->second->SendEvent();
-    }
-}
-//---------------------------------------------------------------------------
-Event * EventBank::Get( string Id )
-{
-    // If the specified event doesn't exist, use the default one
-    if( Bank[Id] == NULL )
-    {
-        msg_Warn( p_intf, "Unknown event name '%s', using default one",
-                  Id.c_str() );
-        Bank.erase( Id );
-        return Bank[DEFAULT_EVENT_NAME];
-    }
-
-    return Bank[Id];
-}
-//---------------------------------------------------------------------------
-void EventBank::Init()
-{
-    for( map<string,Event *>::iterator iter = Bank.begin();
-         iter != Bank.end(); iter++ )
-    {
-        iter->second->CreateEvent();
-    }
-}
-//---------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------
-//  Offset Bank
-//---------------------------------------------------------------------------
-OffSetBank::OffSetBank( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-    XOff = 0;
-    YOff = 0;
-}
-//---------------------------------------------------------------------------
-OffSetBank::~OffSetBank()
-{
-    if( !XList.empty() )
-        msg_Warn( p_intf, "At least one offset remains" );
-}
-//---------------------------------------------------------------------------
-void OffSetBank::PushOffSet( int X, int Y )
-{
-    XList.push_front( X );
-    YList.push_front( Y );
-    XOff += X;
-    YOff += Y;
-}
-//---------------------------------------------------------------------------
-void OffSetBank::PopOffSet()
-{
-    if( XList.empty() )
-    {
-        msg_Warn( p_intf, "No offset to pop" );
-        return;
-    }
-
-    XOff -= XList.front();
-    YOff -= YList.front();
-    XList.pop_front();
-    YList.pop_front();
-}
-//---------------------------------------------------------------------------
-void OffSetBank::GetOffSet( int &X, int &Y )
-{
-    X = XOff;
-    Y = YOff;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/banks.h b/modules/gui/skins/src/banks.h
deleted file mode 100644 (file)
index 1fb88e0..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*****************************************************************************
- * banks.h: Bitmap bank, Event bank, Font bank and OffSet bank
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: banks.h,v 1.2 2003/04/21 22:12:37 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_BANKS
-#define VLC_SKIN_BANKS
-
-//---------------------------------------------------------------------------
-//--- GENERAL ---------------------------------------------------------------
-#include <map>
-#include <list>
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-#define DEFAULT_BITMAP_NAME   "DEFAULT_BITMAP"
-#define DEFAULT_FONT_NAME     "DEFAULT_FONT"
-#define DEFAULT_EVENT_NAME    "DEFAULT_EVENT"
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Bitmap;
-class SkinFont;
-class Event;
-
-//---------------------------------------------------------------------------
-class BitmapBank
-{
-    private:
-        map<string,Bitmap *> Bank;
-        intf_thread_t *p_intf;
-    public:
-        BitmapBank( intf_thread_t *_p_intf );
-        ~BitmapBank();
-        bool Add( string Id, string FileName, int AColor );   // Add a bitmap
-        Bitmap * Get( string Id );  // Return the bitmap with matching ID
-};
-//---------------------------------------------------------------------------
-class FontBank
-{
-    private:
-        map<string,SkinFont *> Bank;
-        intf_thread_t *p_intf;
-    public:
-        FontBank( intf_thread_t *_p_intf );
-        ~FontBank();
-        bool Add( string name, string fontname, int size,
-                  int color, int weight, bool italic, bool underline );
-        SkinFont * Get( string Id ); // Return the font with matching ID
-};
-//---------------------------------------------------------------------------
-class EventBank
-{
-    private:
-        map<string,Event *> Bank;
-        intf_thread_t *p_intf;
-    public:
-        EventBank( intf_thread_t *_p_intf );
-        ~EventBank();
-        bool Add( string Name, string EventDesc, string shortcut );
-        void TestShortcut( int key, int mod );
-        Event * Get( string Id );   // Return the event with matching ID
-        void Init();
-};
-//---------------------------------------------------------------------------
-class OffSetBank
-{
-    private:
-        int XOff;
-        int YOff;
-        list<int> XList;
-        list<int> YList;
-        intf_thread_t *p_intf;
-    public:
-        OffSetBank( intf_thread_t *_p_intf );
-        ~OffSetBank();
-        void PushOffSet( int X, int Y );
-        void PopOffSet();
-        void GetOffSet( int &X, int &Y );
-};
-//---------------------------------------------------------------------------
-
-#endif
-
diff --git a/modules/gui/skins/src/bezier.cpp b/modules/gui/skins/src/bezier.cpp
deleted file mode 100644 (file)
index a74d2ac..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*****************************************************************************
- * bezier.cpp: Functions to handle Bezier curves
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: bezier.cpp,v 1.1 2003/03/18 02:21:47 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-//--- SKIN ------------------------------------------------------------------
-#include "bezier.h"
-
-
-
-//---------------------------------------------------------------------------
-// Inline methods : supposed to accelerate the code
-//---------------------------------------------------------------------------
-inline double Bezier::melange( int i, int n, double t )
-{
-    return Power( t, i ) * Power( 1 - t, (n - i) ) * ft[n] / ft[i] / ft[n - i];
-}
-//---------------------------------------------------------------------------
-inline double Bezier::bezier_pty( double t )
-{
-    double res = 0;
-    for( int i = 0; i <= maxpt; i++ )
-    {
-        res += pty[i] * melange( i, maxpt, t );
-    }
-    return res;
-}
-//---------------------------------------------------------------------------
-inline double Bezier::bezier_ptx( double t )
-{
-    double res = 0;
-    for( int i = 0; i <= maxpt; i++ )
-    {
-        res += ptx[i] * melange( i, maxpt, t );
-    }
-    return res;
-}
-//---------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------
-// BEZIER
-// The bezier class generate bezier curves
-//---------------------------------------------------------------------------
-Bezier::Bezier( double *x, double *y, int n, int flag )
-{
-    int i;
-
-    // x and y pointer are arrays of the coordinates of the points
-    // n is the number of points
-
-    // Allocation of ressources for arrays of points
-    ptx = new double[n];
-    pty = new double[n];
-
-    // ft is factoriels
-    // Here we create an array an precalculate them
-    ft  = new double[n];
-    ft[0] = 1;
-    for( i = 0; i < n; i++ )
-    {
-        ptx[i] = x[i];    // assign values of coordinates
-        pty[i] = y[i];
-        if( i > 0 )
-            ft[i] = i * ft[i - 1];
-    }
-    maxpt = n - 1;
-
-    // FLAG values :
-    //   - BEZIER_PTS_ALL : when x and y are differents
-    //   - BEZIER_PTS_Y   : when only y is different
-    //   - BEZIER_PTS_X   : when only x is different
-
-    // Initialization
-    Flag         = flag;
-    Max          = 0;                 // Init number of pixels
-    double Range = MAX_BEZIER_POINT;  // max number of pixel
-    int last_i   = 0;
-    int cx, cy, oldx, oldy;
-    Left = new int[MAX_BEZIER_POINT + 1];
-    Top  = new int[MAX_BEZIER_POINT + 1];
-
-    // Calculate first point
-    double per = 0;
-    double j;
-    GetPoint( per, oldx, oldy );
-    Left[0] = oldx;
-    Top[0]  = oldy;
-
-    // Search for number of different points
-    for( j = 1; j <= Range; j++ )
-    {
-        per = j / Range;
-        GetPoint( per, cx, cy );
-        if( ( Flag == BEZIER_PTS_ALL && ( cy != oldy || cx != oldx ) ) ||
-            ( Flag == BEZIER_PTS_Y   && cy != oldy ) ||
-            ( Flag == BEZIER_PTS_X   && cx != oldx ) )
-        {
-            Max++;
-            Left[Max] = cx;
-            Top[Max]  = cy;
-            oldx = cx;
-            oldy = cy;
-
-            // Accelerator
-            if( i - last_i > 2 )
-            {
-                i += i - last_i - 1;
-            }
-            last_i = i;
-        }
-    }
-}
-//---------------------------------------------------------------------------
-Bezier::~Bezier()
-{
-    delete[] Left;
-    delete[] Top;
-    delete[] ptx;
-    delete[] pty;
-    delete[] ft;
-}
-//---------------------------------------------------------------------------
-void Bezier::GetPoint( double i, int &x, int &y )
-{
-    // Get the coordinates of the point at i precent of
-    // the curve (i must be between 0 and 1)
-    x = (int)(float)bezier_ptx( i );
-    y = (int)(float)bezier_pty( i );
-}
-//---------------------------------------------------------------------------
-int Bezier::GetNumOfDifferentPoints()
-{
-    return Max;
-}
-//---------------------------------------------------------------------------
-void Bezier::GetDifferentPoints( int *x, int *y, int OffX, int OffY )
-{
-    for( int i = 0; i <= Max; i++ )
-    {
-        x[i] = Left[i] + OffX;
-        y[i] = Top[i]  + OffY;
-    }
-}
-//---------------------------------------------------------------------------
-double Bezier::Power( double x, int n )
-{
-    if( n > 0 )
-        return x * Power( x, n - 1);
-    else
-        return 1;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/bezier.h b/modules/gui/skins/src/bezier.h
deleted file mode 100644 (file)
index b04f0b9..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*****************************************************************************
- * bezier.h: Functios to handle Bezier curves
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: bezier.h,v 1.1 2003/03/18 02:21:47 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_BEZIER
-#define VLC_SKIN_BEZIER
-
-//---------------------------------------------------------------------------
-#define MAX_BEZIER_POINT    1023
-#define BEZIER_PTS_ALL      0
-#define BEZIER_PTS_Y        1
-#define BEZIER_PTS_X        2
-
-
-
-//---------------------------------------------------------------------------
-class Bezier
-{
-    private:
-        int maxpt;
-        double *ptx;
-        double *pty;
-        double *ft;
-        double melange( int i, int n, double t );
-        double bezier_pty( double t );
-        double bezier_ptx( double t );
-
-        // Different points
-        int Flag;
-        int Max;
-        int *Left;
-        int *Top;
-
-        // x^n
-        double Power( double x, int n );
-
-    public:
-        // Constructor
-        Bezier( double *x, double *y, int n, int flag = BEZIER_PTS_ALL );
-
-        // Destructor
-        ~Bezier();
-
-        void GetPoint( double i, int &x, int &y );
-        void GetDifferentPoints( int *x, int *y, int OffX = 0, int OffY = 0 );
-        int  GetNumOfDifferentPoints();
-
-};
-
-//---------------------------------------------------------------------------
-#endif
diff --git a/modules/gui/skins/src/bitmap.cpp b/modules/gui/skins/src/bitmap.cpp
deleted file mode 100644 (file)
index 03d48ea..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*****************************************************************************
- * bitmap.cpp: Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: bitmap.cpp,v 1.2 2003/04/16 19:22:53 karibu Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "bitmap.h"
-
-
-
-//---------------------------------------------------------------------------
-//   Bitmap
-//---------------------------------------------------------------------------
-Bitmap::Bitmap( intf_thread_t *_p_intf, string FileName, int AColor )
-{
-    p_intf     = _p_intf;
-    AlphaColor = AColor;
-}
-//---------------------------------------------------------------------------
-Bitmap::Bitmap( intf_thread_t *_p_intf, Graphics *from, int x, int y,
-                int w, int h, int AColor )
-{
-    p_intf     = _p_intf;
-    AlphaColor = AColor;
-}
-//---------------------------------------------------------------------------
-Bitmap::Bitmap( intf_thread_t *_p_intf, Bitmap *c )
-{
-    p_intf = _p_intf;
-}
-//---------------------------------------------------------------------------
-Bitmap::~Bitmap()
-{
-}
-//---------------------------------------------------------------------------
-void Bitmap::GetSize( int &w, int &h )
-{
-    w = Width;
-    h = Height;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/bitmap.h b/modules/gui/skins/src/bitmap.h
deleted file mode 100644 (file)
index e6b58d7..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*****************************************************************************
- * bitmap.h: Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: bitmap.h,v 1.1 2003/03/18 02:21:47 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_BITMAP
-#define VLC_SKIN_BITMAP
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Graphics;
-
-//---------------------------------------------------------------------------
-class Bitmap
-{
-    protected:
-        int Width;
-        int Height;
-        unsigned int AlphaColor;
-        intf_thread_t *p_intf;
-
-    public:
-        void GetSize( int &w, int &h );
-        int GetAlphaColor()     { return AlphaColor; }
-
-        // Constructors
-        Bitmap( intf_thread_t *_p_intf, string FileName, int AColor );
-        Bitmap( intf_thread_t *_p_intf, Graphics *from, int x, int y,
-                int w, int h, int AColor );
-        Bitmap( intf_thread_t *_p_intf, Bitmap *c );
-
-        // Destructor
-        virtual ~Bitmap();
-
-        virtual void DrawBitmap( int x, int y, int w, int h, int xRef, int yRef,
-                                 Graphics *dest ) = 0;
-        virtual bool Hit( int x, int y ) = 0;
-
-        virtual int  GetBmpPixel( int x, int y ) = 0;
-        virtual void SetBmpPixel( int x, int y, int color ) = 0;
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/dialogs.cpp b/modules/gui/skins/src/dialogs.cpp
deleted file mode 100644 (file)
index 931482d..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-/*****************************************************************************
- * dialogs.cpp: Handles all the different dialog boxes we provide.
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: dialogs.cpp,v 1.18 2004/03/03 20:39:52 gbazin Exp $
- *
- * Authors: Gildas Bazin <gbazin@netcourrier.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "event.h"
-#include "banks.h"
-#include "theme.h"
-#include "../os_theme.h"
-#include "themeloader.h"
-#include "window.h"
-#include "vlcproc.h"
-#include "skin_common.h"
-#include "dialogs.h"
-
-/* Callback prototype */
-static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable,
-                       vlc_value_t old_val, vlc_value_t new_val, void *param );
-
-//---------------------------------------------------------------------------
-// Implementation of Dialogs class
-//---------------------------------------------------------------------------
-Dialogs::Dialogs( intf_thread_t *_p_intf )
-{
-    /* Errors while loading the dialogs provider are not fatal.
-     * Dialogs just won't be available. */
-
-    p_intf = _p_intf;
-    p_intf->p_sys->p_dialogs = this;
-    b_popup_change = VLC_FALSE;
-
-    /* Allocate descriptor */
-    p_provider = (intf_thread_t *)vlc_object_create( p_intf,
-                                                     VLC_OBJECT_DIALOGS );
-    if( p_provider == NULL )
-    {
-        msg_Err( p_intf, "out of memory" );
-        return;
-    }
-
-    p_module = module_Need( p_provider, "dialogs provider", NULL, 0 );
-    if( p_module == NULL )
-    {
-        msg_Err( p_intf, "no suitable dialogs provider found" );
-        vlc_object_destroy( p_provider );
-        p_provider = NULL;
-        return;
-    }
-
-    /* Attach the dialogs provider to its parent interface */
-    vlc_object_attach( p_provider, p_intf );
-
-    /* Initialize dialogs provider
-     * (returns as soon as initialization is done) */
-    if( p_provider->pf_run ) p_provider->pf_run( p_provider );
-
-    /* Register callback for the intf-popupmenu variable */
-    playlist_t *p_playlist =
-        (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
-                                       FIND_ANYWHERE );
-    if( p_playlist != NULL )
-    {
-        var_AddCallback( p_playlist, "intf-popupmenu", PopupMenuCB,
-                         p_intf->p_sys->p_dialogs );
-        vlc_object_release( p_playlist );
-    }
-}
-
-Dialogs::~Dialogs()
-{
-    if( p_provider && p_module )
-    {
-        /* Detach the dialogs provider from its parent interface */
-        vlc_object_detach( p_provider );
-
-        module_Unneed( p_provider, p_module );
-        vlc_object_destroy( p_provider );
-    }
-
-    /* Unregister callbacks */
-    playlist_t *p_playlist =
-        (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
-                                       FIND_ANYWHERE );
-    if( p_playlist != NULL )
-    {
-        var_DelCallback( p_playlist, "intf-popupmenu", PopupMenuCB,
-                         p_intf->p_sys->p_dialogs );
-        vlc_object_release( p_playlist );
-    }
-}
-
-void Dialogs::ShowOpen( bool b_play )
-{
-    if( p_provider && p_provider->pf_show_dialog )
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_FILE,
-                                    (int)b_play, 0 );
-}
-
-void Dialogs::ShowNet()
-{
-    if( p_provider && p_provider->pf_show_dialog )
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_NET, 0, 0 );
-}
-
-
-static void ShowOpenSkinCallback( intf_dialog_args_t *p_arg )
-{
-    if( p_arg->i_results )
-    {
-        intf_thread_t *p_intf = (intf_thread_t *)p_arg->p_arg;
-        p_intf->p_sys->p_new_theme_file = strdup( p_arg->psz_results[0] );
-
-        if( !p_arg->b_blocking )
-        {
-            // Tell vlc to change skin after hiding interface
-            OSAPI_PostMessage( NULL, VLC_HIDE, VLC_LOAD_SKIN, 0 );
-        }
-    }
-}
-
-void Dialogs::ShowOpenSkin( bool b_block )
-{
-    if( p_provider && p_provider->pf_show_dialog )
-    {
-        intf_dialog_args_t *p_arg =
-            (intf_dialog_args_t *)malloc( sizeof(intf_dialog_args_t) );
-        memset( p_arg, 0, sizeof(intf_dialog_args_t) );
-
-        p_arg->b_blocking = b_block;
-        if( b_block )
-        {
-            vlc_mutex_init( p_intf, &p_arg->lock );
-            vlc_cond_init( p_intf, &p_arg->wait );
-        }
-
-        p_arg->psz_title = strdup( _("Open a skin file") );
-        p_arg->psz_extensions =
-            strdup( "Skin files (*.vlt)|*.vlt|Skin files (*.xml)|*.xml|" );
-
-        p_arg->p_arg = p_intf;
-        p_arg->pf_callback = ShowOpenSkinCallback;
-
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_FILE_GENERIC,
-                                    0, p_arg );
-
-        if( b_block )
-        {
-            vlc_mutex_lock( &p_arg->lock );
-            if( !p_arg->b_ready )
-            {
-                vlc_cond_wait( &p_arg->wait, &p_arg->lock );
-            }
-            vlc_mutex_unlock( &p_arg->lock );
-            vlc_mutex_destroy( &p_arg->lock );
-            vlc_cond_destroy( &p_arg->wait );
-            free( p_arg );
-        }
-    }
-}
-
-void Dialogs::ShowMessages()
-{
-    if( p_provider && p_provider->pf_show_dialog )
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_MESSAGES, 0, 0 );
-}
-
-void Dialogs::ShowPrefs()
-{
-    if( p_provider && p_provider->pf_show_dialog )
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_PREFS, 0, 0 );
-}
-
-void Dialogs::ShowFileInfo()
-{
-    if( p_provider && p_provider->pf_show_dialog )
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_FILEINFO, 0, 0 );
-}
-
-void Dialogs::ShowPopup( bool b_show )
-{
-    if( p_provider && p_provider->pf_show_dialog )
-        p_provider->pf_show_dialog( p_provider, INTF_DIALOG_POPUPMENU,
-                                    b_show, 0 );
-}
-
-/*****************************************************************************
- * PopupMenuCB: callback triggered by the intf-popupmenu playlist variable.
- *  We don't show the menu directly here because we don't want the
- *  caller to block for a too long time.
- *****************************************************************************/
-static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable,
-                        vlc_value_t old_val, vlc_value_t new_val, void *param )
-{
-    Dialogs *p_dialogs = (Dialogs *)param;
-    p_dialogs->ShowPopup( new_val.b_bool );
-
-    return VLC_SUCCESS;
-}
diff --git a/modules/gui/skins/src/dialogs.h b/modules/gui/skins/src/dialogs.h
deleted file mode 100644 (file)
index a53e7a5..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*****************************************************************************
- * dialogs.h: Dialogs class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: dialogs.h,v 1.10 2003/09/05 15:55:30 asmax Exp $
- *
- * Authors: Gildas Bazin <gbazin@netcourrier.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifndef VLC_SKIN_DIALOGS
-#define VLC_SKIN_DIALOGS
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-
-//---------------------------------------------------------------------------
-class Dialogs
-{
-    protected:
-        intf_thread_t *p_intf;
-
-    public:
-        // Constructor
-        Dialogs( intf_thread_t *_p_intf );
-
-        // Destructor
-        virtual ~Dialogs();
-
-        void ShowOpen( bool b_play );
-        void ShowNet();
-        void ShowOpenSkin( bool b_block );
-        void ShowMessages();
-        void ShowPrefs();
-        void ShowFileInfo();
-        void ShowPopup( bool b_show );
-
-        vlc_bool_t b_popup_change;
-
-    private:
-        /* Dialogs provider module */
-        intf_thread_t *p_provider;
-        module_t *p_module;
-};
-
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/event.cpp b/modules/gui/skins/src/event.cpp
deleted file mode 100644 (file)
index f770bf1..0000000
+++ /dev/null
@@ -1,493 +0,0 @@
-/*****************************************************************************
- * event.cpp: Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: event.cpp,v 1.24 2004/02/15 18:58:38 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "skin_common.h"
-#include "banks.h"
-#include "../controls/generic.h"
-#include "window.h"
-#include "theme.h"
-#include "event.h"
-#include "../os_event.h"
-
-
-
-//---------------------------------------------------------------------------
-//   VLC Event
-//---------------------------------------------------------------------------
-Event::Event( intf_thread_t *_p_intf, string Desc, string shortcut )
-{
-    p_intf = _p_intf;
-    EventDesc = Desc;
-    Message   = VLC_NOTHING;
-    Param1    = 0;
-    Param2    = 0;
-    Shortcut  = shortcut;
-}
-//---------------------------------------------------------------------------
-Event::Event( intf_thread_t *_p_intf, unsigned int msg, unsigned int par1,
-              long par2 )
-{
-    p_intf = _p_intf;
-    Message  = msg;
-    Param1   = par1;
-    Param2   = par2;
-    Shortcut = "none";
-}
-//---------------------------------------------------------------------------
-Event::~Event()
-{
-}
-//---------------------------------------------------------------------------
-void Event::DestructParameters( bool force )
-{
-    switch( Message )
-    {
-        case CTRL_SYNCHRO:
-            if( Param2 == (int)true || force )
-                delete (Event *)Param1;
-            break;
-
-        case CTRL_SET_TEXT:
-            delete[] (char *)Param2;
-            break;
-    }
-}
-//---------------------------------------------------------------------------
-bool Event::IsEqual( Event *evt )
-{
-    return( evt->GetMessage() == Message && evt->GetParam1() == Param1 &&
-            evt->GetParam2()  == Param2 );
-}
-//---------------------------------------------------------------------------
-void Event::PostSynchroMessage( bool autodelete )
-{
-    OSAPI_PostMessage( NULL, CTRL_SYNCHRO, (unsigned int)this,
-                      (long)autodelete );
-}
-//---------------------------------------------------------------------------
-void Event::PostTextMessage( string text )
-{
-    char *txt = new char[text.size()+1];
-    strcpy( txt, text.c_str() );
-    OSAPI_PostMessage( NULL, CTRL_SET_TEXT, (unsigned int)this, (long)txt );
-}
-//---------------------------------------------------------------------------
-unsigned int Event::GetMessageType( string Desc )
-{
-    if( Desc == "VLC_NOTHING" )
-        return VLC_NOTHING;
-
-    // VLC messages
-    else if( Desc == "VLC_QUIT" )
-        return VLC_QUIT;
-    else if( Desc == "VLC_HIDE" )
-        return VLC_HIDE;
-    else if( Desc == "VLC_OPEN" )
-        return VLC_OPEN;
-    else if( Desc == "VLC_NET" )
-        return VLC_NET;
-    else if( Desc == "VLC_LOAD_SKIN" )
-        return VLC_LOAD_SKIN;
-    else if( Desc == "VLC_ON_TOP" )
-        return VLC_ON_TOP;
-    else if( Desc == "VLC_CHANGE_TRAY" )
-        return VLC_CHANGE_TRAY;
-    else if( Desc == "VLC_CHANGE_TASKBAR" )
-        return VLC_CHANGE_TASKBAR;
-
-    // Stream control
-    else if( Desc == "VLC_PLAY" )
-        return VLC_PLAY;
-    else if( Desc == "VLC_STOP" )
-        return VLC_STOP;
-    else if( Desc == "VLC_PAUSE" )
-        return VLC_PAUSE;
-    else if( Desc == "VLC_NEXT" )
-        return VLC_NEXT;
-    else if( Desc == "VLC_PREV" )
-        return VLC_PREV;
-    else if( Desc == "VLC_STREAMPOS" )
-        return VLC_STREAMPOS;
-    else if( Desc == "VLC_ENDSTREAMPOS" )
-        return VLC_ENDSTREAMPOS;
-    else if( Desc == "VLC_TOTALSTREAMPOS" )
-        return VLC_TOTALSTREAMPOS;
-    else if( Desc == "VLC_STREAM_NAME" )
-        return VLC_STREAM_NAME;
-    else if( Desc == "VLC_STREAM_TITLE" )
-        return VLC_STREAM_TITLE;
-    else if( Desc == "VLC_HELP_TEXT" )
-        return VLC_HELP_TEXT;
-    else if( Desc == "VLC_SLOWER" )
-        return VLC_SLOWER;
-    else if( Desc == "VLC_FASTER" )
-        return VLC_FASTER;
-
-    // Volume control
-    else if( Desc == "VLC_VOLUME_CHANGE" )
-        return VLC_VOLUME_CHANGE;
-    else if( Desc == "VLC_VOLUME_MUTE" )
-        return VLC_VOLUME_MUTE;
-    else if( Desc == "VLC_VOLUME_UP" )
-        return VLC_VOLUME_UP;
-    else if( Desc == "VLC_VOLUME_DOWN" )
-        return VLC_VOLUME_DOWN;
-    else if( Desc == "VLC_VOLUME_SET" )
-        return VLC_VOLUME_SET;
-
-    // Dialogs
-    else if( Desc == "VLC_LOG_SHOW" )
-        return VLC_LOG_SHOW;
-    else if( Desc == "VLC_PREFS_SHOW" )
-        return VLC_PREFS_SHOW;
-    else if( Desc == "VLC_INFO_SHOW" )
-        return VLC_INFO_SHOW;
-
-    // Playlist events
-    else if( Desc == "VLC_PLAYLIST_ADD_FILE" )
-        return VLC_PLAYLIST_ADD_FILE;
-
-    // Video output events
-    else if( Desc == "VLC_FULLSCREEN" )
-        return VLC_FULLSCREEN;
-
-    // Window events
-    else if( Desc == "WINDOW_MOVE" )
-        return WINDOW_MOVE;
-    else if( Desc == "WINDOW_OPEN" )
-        return WINDOW_OPEN;
-    else if( Desc == "WINDOW_CLOSE" )
-        return WINDOW_CLOSE;
-    else if( Desc == "WINDOW_SHOW" )
-        return WINDOW_SHOW;
-    else if( Desc == "WINDOW_HIDE" )
-        return WINDOW_HIDE;
-    else if( Desc == "WINDOW_FADE" )
-        return WINDOW_FADE;
-
-    // Control events
-    else if( Desc == "CTRL_ENABLED" )
-        return CTRL_ENABLED;
-    else if( Desc == "CTRL_VISIBLE" )
-        return CTRL_VISIBLE;
-    else if( Desc == "CTRL_SYNCHRO" )
-        return CTRL_SYNCHRO;
-    else if( Desc == "CTRL_SET_TEXT" )
-        return CTRL_SET_TEXT;
-    else if( Desc == "CTRL_SET_SLIDER" )
-        return CTRL_SET_SLIDER;
-
-
-    // Control events by ID
-    else if( Desc == "CTRL_ID_VISIBLE" )
-        return CTRL_ID_VISIBLE;
-    else if( Desc == "CTRL_ID_ENABLED" )
-        return CTRL_ID_ENABLED;
-    else if( Desc == "CTRL_ID_MOVE" )
-        return CTRL_ID_MOVE;
-
-    // Control definition
-    else if( Desc == "CTRL_SLIDER" )
-        return CTRL_SLIDER;
-    else if( Desc == "CTRL_TIME" )
-        return CTRL_TIME;
-    else if( Desc == "CTRL_PLAYLIST" )
-        return CTRL_PLAYLIST;
-
-    // Playlist
-    else if( Desc == "PLAYLIST_ID_DEL" )
-        return PLAYLIST_ID_DEL;
-
-    // Not found
-    else
-    {
-        msg_Warn( p_intf, "Theme: Unknown event (%s)", EventDesc.c_str() );
-        return VLC_NOTHING;
-    }
-}
-//---------------------------------------------------------------------------
-void Event::CreateEvent()
-{
-    // Initialization
-    int x, y;
-    char *msg   = new char[MAX_EVENT_SIZE];
-    char *para1 = new char[MAX_PARAM_SIZE];
-    char *para2 = new char[MAX_PARAM_SIZE];
-    char *para3 = new char[MAX_PARAM_SIZE];
-
-    // Scan the event
-    int scan = sscanf( EventDesc.c_str(),
-        "%[^(](%[^,)],%[^,)],%[^,)])", msg, para1, para2, para3 );
-
-    // Check parameters
-    if( scan < 1 )
-        strcpy( msg, "VLC_NOTHING" );
-    if( scan < 2 )
-        strcpy( para1, "" );
-    if( scan < 3 )
-        strcpy( para2, "" );
-    if( scan < 4 )
-        strcpy( para3, "" );
-
-    // Find Message type
-    Message = GetMessageType( msg );
-
-    // Find Parameters
-    switch( Message )
-    {
-        case VLC_HIDE:
-            Param1 = GetMessageType( para1 );
-            break;
-
-        case VLC_VOLUME_CHANGE:
-            if( strcmp( para1, "MUTE" ) == 0 )
-                Param1 = VLC_VOLUME_MUTE;
-            else if( strcmp( para1, "UP" ) == 0 )
-                Param1 = VLC_VOLUME_UP;
-            else if( strcmp( para1, "DOWN" ) == 0 )
-                Param1 = VLC_VOLUME_DOWN;
-            else if( strcmp( para1, "SET" ) == 0 )
-            {
-                Param1 = VLC_VOLUME_SET;
-                Param2 = atoi( para2 ) * (AOUT_VOLUME_MAX * 2) / 100;
-            }
-            break;
-
-        case VLC_LOG_SHOW:
-            Param2 = GetBool( para1 );
-            break;
-
-        case CTRL_ID_VISIBLE:
-            Param1 = (unsigned int)FindControl( para1 );
-            Param2 = GetBool( para2 );
-            break;
-
-        case CTRL_ID_ENABLED:
-            Param1 = (unsigned int)FindControl( para1 );
-            Param2 = GetBool( para2 );
-            break;
-
-        case CTRL_ID_MOVE:
-            Param1 = (unsigned int)FindControl( para1 );
-            x = atoi( para2 );
-            y = atoi( para3 );
-            if( x < 0 )
-                x = -x + 0x8000;
-            if( y < 0 )
-                y = -y + 0x8000;
-            Param2 = ( y << 16 ) | x;
-            break;
-
-        case WINDOW_OPEN:
-            Param1 = GetBool( para2 );
-            break;
-
-        case WINDOW_CLOSE:
-            Param1 = GetBool( para2 );
-            break;
-
-        case PLAYLIST_ID_DEL:
-            Param1 = (unsigned int)FindControl( para1 );
-            break;
-
-        default:
-            break;
-    }
-
-    // Get OS specific parameters
-    CreateOSEvent( para1, para2, para3 );
-
-    // Free memory
-    delete[] msg;
-    delete[] para1;
-    delete[] para2;
-    delete[] para3;
-
-    // Create shortcut
-    CreateShortcut();
-}
-//---------------------------------------------------------------------------
-GenericControl * Event::FindControl( string id )
-{
-    list<SkinWindow *>::const_iterator win;
-    unsigned int i;
-
-    for( win = p_intf->p_sys->p_theme->WindowList.begin();
-         win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-    {
-        for( i = 0; i < (*win)->ControlList.size(); i++ )
-        {
-            if( (*win)->ControlList[i]->GetId() == id )
-                return (*win)->ControlList[i];
-        }
-    }
-    return NULL;
-}
-//---------------------------------------------------------------------------
-int Event::GetBool( string expr )
-{
-    if( expr == "FALSE" )
-    {
-        return 0;
-    }
-    else if( expr == "TRUE" )
-    {
-        return 1;
-    }
-    else if( expr == "CHANGE" )
-    {
-        return 2;
-    }
-    return 1;
-}
-//---------------------------------------------------------------------------
-void Event::CreateShortcut()
-{
-    if( Shortcut == "none" )
-        return;
-
-    // Initiatization
-    char *mod = new char[5];
-    char *key = new char[4];
-
-    // Scan the event
-    int scan = sscanf( Shortcut.c_str(), "%[^+]+%s", mod, key );
-
-    // Check parameters
-    if( scan == 2 )
-    {
-        Key = (int)key[0];
-        if( (string)mod == "ALT" )
-            KeyModifier = 1;
-        else if( (string)mod == "CTRL" )
-            KeyModifier = 2;
-        else
-            KeyModifier = 0;
-    }
-    else if( scan == 1 )
-    {
-        Key = (int)mod[0];
-        KeyModifier = 0;
-    }
-
-    delete[] mod;
-    delete[] key;
-}
-//---------------------------------------------------------------------------
-bool Event::MatchShortcut( int key, int mod )
-{
-    // Modifier
-    // None    = 0
-    // ALT     = 1
-    // CONTROL = 2
-    if( Shortcut != "none" && key == Key && mod == KeyModifier )
-        return true;
-    else
-        return false;
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// Action
-//---------------------------------------------------------------------------
-Action::Action( intf_thread_t *_p_intf, string code )
-{
-    p_intf = _p_intf;
-
-    // Initiatization
-    int scan;
-    char *evt  = new char[MAX_EVENT_SIZE];
-    char *next = new char[MAX_PARAM_SIZE];
-
-    // Create events separated with a semicolon
-    while( code != "none" )
-    {
-        scan  = sscanf( code.c_str(), "%[^;];%s", evt, next );
-        EventList.push_back( p_intf->p_sys->p_theme->EvtBank->Get( evt ) );
-
-        // Check if script is finished
-        if( scan < 2 )
-            code = "none";
-        else
-            code = next;
-    }
-
-    // Free memory
-    delete[] evt;
-    delete[] next;
-}
-//---------------------------------------------------------------------------
-Action::~Action()
-{
-}
-//---------------------------------------------------------------------------
-bool Action::SendEvent()
-{
-    bool res = false;
-    for( list<Event *>::const_iterator evt = EventList.begin();
-         evt != EventList.end(); evt++ )
-    {
-        res |= (*evt)->SendEvent();
-    }
-    return res;
-}
-//---------------------------------------------------------------------------
-bool Action::MatchEvent( Event *evt, int flag )
-{
-    list<Event *>::const_iterator event;
-
-    switch( flag )
-    {
-        case ACTION_MATCH_ALL:
-            for( event = EventList.begin(); event != EventList.end(); event++ )
-                if( !(*event)->IsEqual( evt ) )
-                    return false;
-            break;
-
-        case ACTION_MATCH_ONE:
-            for( event = EventList.begin(); event != EventList.end(); event++ )
-                if( (*event)->IsEqual( evt ) )
-                    return true;
-            return false;
-            break;
-
-        case ACTION_MATCH_FIRST:
-            if( !(*EventList.begin())->IsEqual( evt ) )
-                return false;
-            break;
-    }
-    return true;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/event.h b/modules/gui/skins/src/event.h
deleted file mode 100644 (file)
index d948df2..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/*****************************************************************************
- * event.h: Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: event.h,v 1.16 2004/02/15 18:58:38 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_EVENT
-#define VLC_SKIN_EVENT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-#include <list>
-using namespace std;
-
-
-
-//---------------------------------------------------------------------------
-// VLC specific messages
-//---------------------------------------------------------------------------
-
-#define MAX_EVENT_SIZE 30
-#define MAX_PARAM_SIZE 20
-#define EVENT_MAX_BUFFER_SIZE 20
-
-#if !defined _WIN32
-#define WM_APP 0x8000
-#endif
-
-#define VLC_MESSAGE         (WM_APP)
-#define VLC_WINDOW          (WM_APP + 1000)
-#define VLC_CONTROL         (WM_APP + 2000)
-
-// VLC messages
-#define VLC_NOTHING         (VLC_MESSAGE + 1)
-#define VLC_SHOW            (VLC_MESSAGE + 2)
-#define VLC_HIDE            (VLC_MESSAGE + 3)
-
-#define VLC_QUIT            (VLC_MESSAGE + 4)
-#define VLC_OPEN            (VLC_MESSAGE + 5)
-#define VLC_LOAD_SKIN       (VLC_MESSAGE + 6)
-#define VLC_DROP            (VLC_MESSAGE + 7)
-#define VLC_ON_TOP          (VLC_MESSAGE + 8)
-#define VLC_NET             (VLC_MESSAGE + 9)
-
-#define VLC_LOG_SHOW        (VLC_MESSAGE + 20)
-#define VLC_PREFS_SHOW      (VLC_MESSAGE + 23)
-#define VLC_INFO_SHOW       (VLC_MESSAGE + 24)
-
-#define VLC_INTF_REFRESH    (VLC_MESSAGE + 30)
-#define VLC_CHANGE_TRAY     (VLC_MESSAGE + 31)
-#define VLC_CHANGE_TASKBAR  (VLC_MESSAGE + 32)
-
-#define VLC_FULLSCREEN      (VLC_MESSAGE + 40)
-
-// Stream control
-#define VLC_PLAY            (VLC_MESSAGE + 101)
-#define VLC_STOP            (VLC_MESSAGE + 102)
-#define VLC_PAUSE           (VLC_MESSAGE + 103)
-#define VLC_NEXT            (VLC_MESSAGE + 104)
-#define VLC_PREV            (VLC_MESSAGE + 105)
-#define VLC_STREAMPOS       (VLC_MESSAGE + 106)
-#define VLC_ENDSTREAMPOS    (VLC_MESSAGE + 107)
-#define VLC_TOTALSTREAMPOS  (VLC_MESSAGE + 108)
-#define VLC_STREAM_NAME     (VLC_MESSAGE + 109)
-#define VLC_STREAM_TITLE    (VLC_MESSAGE + 110)
-#define VLC_HELP_TEXT       (VLC_MESSAGE + 111)
-#define VLC_SLOWER          (VLC_MESSAGE + 112)
-#define VLC_FASTER          (VLC_MESSAGE + 113)
-
-// Volume control
-#define VLC_VOLUME_CHANGE   (VLC_MESSAGE + 201)
-#define VLC_VOLUME_MUTE     (VLC_MESSAGE + 202)
-#define VLC_VOLUME_UP       (VLC_MESSAGE + 203)
-#define VLC_VOLUME_DOWN     (VLC_MESSAGE + 204)
-#define VLC_VOLUME_SET      (VLC_MESSAGE + 205)
-
-// Playlist events
-#define VLC_PLAYLIST_ADD_FILE (VLC_MESSAGE + 301)
-#define VLC_TEST_ALL_CLOSED (VLC_MESSAGE + 600)
-
-// Window event
-#define WINDOW_MOVE         (VLC_WINDOW + 1)
-#define WINDOW_OPEN         (VLC_WINDOW + 2)
-#define WINDOW_CLOSE        (VLC_WINDOW + 3)
-#define WINDOW_SHOW         (VLC_WINDOW + 4)
-#define WINDOW_HIDE         (VLC_WINDOW + 5)
-#define WINDOW_FADE         (VLC_WINDOW + 6)
-#define WINDOW_LEAVE        (VLC_WINDOW + 7)
-#define WINDOW_REFRESH      (VLC_WINDOW + 8)
-
-// Control event
-#define CTRL_ENABLED        (VLC_CONTROL + 1)
-#define CTRL_VISIBLE        (VLC_CONTROL + 2)
-#define CTRL_SYNCHRO        (VLC_CONTROL + 3)
-
-#define CTRL_SET_SLIDER     (VLC_CONTROL + 10)
-#define CTRL_SET_TEXT       (VLC_CONTROL + 11)
-
-// Control event by ID
-#define CTRL_ID_VISIBLE     (VLC_CONTROL + 100)
-#define CTRL_ID_ENABLED     (VLC_CONTROL + 101)
-#define CTRL_ID_MOVE        (VLC_CONTROL + 102)
-
-// Control definition
-#define CTRL_SLIDER         (VLC_CONTROL + 301)
-#define CTRL_TIME           (VLC_CONTROL + 302)
-#define CTRL_PLAYLIST       (VLC_CONTROL + 303)
-
-// Playlist
-#define PLAYLIST_ID_DEL     (VLC_CONTROL + 400)
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class GenericControl;
-class SkinWindow;
-class Event;
-
-
-
-//---------------------------------------------------------------------------
-// EVENT CLASS
-//---------------------------------------------------------------------------
-class Event
-{
-    protected:
-        string          EventDesc;
-        unsigned int    Message;
-        unsigned int    Param1;
-        long            Param2;
-        unsigned int    GetMessageType( string desc );
-        string          Shortcut;
-        int             KeyModifier;
-        int             Key;
-        intf_thread_t * p_intf;
-
-        // Transform expr to special boolean :
-        //   0 = false
-        //   1 = true
-        //   2 = change boolean
-        int GetBool( string expr );
-
-    public:
-        // Constructor
-        Event( intf_thread_t *_p_intf, string Desc, string shortcut );
-        Event( intf_thread_t *_p_intf, unsigned int msg, unsigned int par1,
-               long par2 );
-
-        // Destructor
-        virtual ~Event();
-        void DestructParameters( bool force = false );
-
-        // General operations on events
-        GenericControl * FindControl( string id );
-        void CreateEvent();
-        virtual void CreateOSEvent( string para1, string para2,
-                                    string para3 ) = 0;
-        virtual bool IsEqual( Event *evt );
-
-        // Event sending
-        virtual bool SendEvent() = 0;
-        void PostTextMessage( string text );
-        void PostSynchroMessage( bool autodelete = false );
-
-        // Shortcuts methods
-        bool MatchShortcut( int key, int mod );
-        void CreateShortcut();
-
-        // Getters
-        unsigned int GetMessage()   { return Message; }
-        unsigned int GetParam1()    { return Param1; }
-        long         GetParam2()    { return Param2; }
-
-        // Setters
-        void SetParam1( unsigned int p1 )    { Param1 = p1; }
-        void SetParam2( unsigned int p2 )    { Param2 = p2; }
-};
-//---------------------------------------------------------------------------
-
-#define ACTION_MATCH_ALL    0
-#define ACTION_MATCH_FIRST  1
-#define ACTION_MATCH_ONE    2
-
-//---------------------------------------------------------------------------
-class Action
-{
-    private:
-        list<Event *> EventList;
-        int GetBool( string expr );
-        intf_thread_t * p_intf;
-
-    public:
-        // Constructor
-        Action::Action( intf_thread_t *_p_intf, string code );
-
-        // Destructor
-        Action::~Action();
-
-        // Send event
-        bool SendEvent();
-        bool MatchEvent( Event *evt, int flag = ACTION_MATCH_ALL );
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/font.cpp b/modules/gui/skins/src/font.cpp
deleted file mode 100644 (file)
index 8139adf..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*****************************************************************************
- * font.cpp: Font class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: font.cpp,v 1.3 2003/04/21 22:12:37 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "font.h"
-
-
-
-//---------------------------------------------------------------------------
-// Font object
-//---------------------------------------------------------------------------
-SkinFont::SkinFont( intf_thread_t *_p_intf, string fontname, int size, int color,
-    int weight, bool italic, bool underline )
-{
-    p_intf = _p_intf;
-
-    FontName  = fontname;
-    Size      = size;
-    Color     = OSAPI_GetNonTransparentColor( color );
-    Italic    = italic;
-    Underline = underline;
-    Weight    = weight;
-    if( Weight > 1000 )
-        Weight = 1000;
-    if( Weight < 1 )
-        Weight = 1;
-}
-//---------------------------------------------------------------------------
-SkinFont::~SkinFont()
-{
-}
-//---------------------------------------------------------------------------
diff --git a/modules/gui/skins/src/font.h b/modules/gui/skins/src/font.h
deleted file mode 100644 (file)
index 0b23fc2..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*****************************************************************************
- * font.h: Font class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: font.h,v 1.4 2003/04/21 22:12:37 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_FONT
-#define VLC_SKIN_FONT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Graphics;
-
-//---------------------------------------------------------------------------
-class SkinFont
-{
-    private:
-        // Assign font to Device Context
-        virtual void AssignFont( Graphics *dest ) = 0;
-
-        // Helper function
-        virtual void GenericPrint( Graphics *dest, string text, int x, int y,
-                                   int w, int h, int align, int color ) = 0;
-    protected:
-        int Weight;
-        string FontName;
-        bool Italic;
-        bool Underline;
-        int Size;
-        int Color;
-        intf_thread_t *p_intf;
-
-    public:
-        // Constructor
-        SkinFont( intf_thread_t *_p_intf, string fontname, int size, int color,
-              int weight, bool italic, bool underline );
-
-        // Destructor
-        virtual ~SkinFont();
-
-        // Get size of text
-        virtual void GetSize( string text, int &w, int &h ) = 0;
-
-        // Draw text with boundaries
-        virtual void Print( Graphics *dest, string text, int x, int y, int w,
-                            int h, int align ) = 0;
-
-        virtual void PrintColor( Graphics *dest, string text, int x, int y,
-                                 int w, int h, int align, int color ) = 0;
-
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/graphics.cpp b/modules/gui/skins/src/graphics.cpp
deleted file mode 100644 (file)
index 6896168..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*****************************************************************************
- * graphics.cpp: Graphics class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: graphics.cpp,v 1.2 2003/04/28 12:25:34 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- SKIN ------------------------------------------------------------------
-#include "graphics.h"
-
-
-
-//---------------------------------------------------------------------------
-Graphics::Graphics( int w, int h )
-{
-    Width  = w;
-    Height = h;
-}
-//---------------------------------------------------------------------------
-Graphics::~Graphics()
-{
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// REGION
-//---------------------------------------------------------------------------
-SkinRegion::SkinRegion()
-{
-}
-//---------------------------------------------------------------------------
-SkinRegion::SkinRegion( int x, int y, int w, int h )
-{
-}
-//---------------------------------------------------------------------------
-SkinRegion::~SkinRegion()
-{
-}
-//---------------------------------------------------------------------------
diff --git a/modules/gui/skins/src/graphics.h b/modules/gui/skins/src/graphics.h
deleted file mode 100644 (file)
index deb9d83..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*****************************************************************************
- * graphics.h: Graphics and Region classes
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: graphics.h,v 1.3 2003/04/28 12:25:34 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_GRAPHICS
-#define VLC_SKIN_GRAPHICS
-
-//---------------------------------------------------------------------------
-class SkinRegion;
-
-//---------------------------------------------------------------------------
-class Graphics
-{
-    protected:
-        int Width;
-        int Height;
-
-    public:
-        // Constructor
-        Graphics( int w, int h );
-        // Destructor
-        virtual ~Graphics();
-        // Drawing methods
-        virtual void CopyFrom( int dx, int dy, int dw, int dh, Graphics *Src,
-                               int sx, int sy, int Flag ) = 0;
-        //virtual void CopyTo( Graphics *Dest, int dx, int dy, int dw, int dh,
-        //                     int sx, int sy, int Flag ) = 0;
-        virtual void DrawRect( int x, int y, int w, int h, int color ) = 0;
-
-        // Clipping methods
-        virtual void SetClipRegion( SkinRegion *rgn ) = 0;
-        virtual void ResetClipRegion() = 0;
-
-};
-//---------------------------------------------------------------------------
-class SkinRegion
-{
-    private:
-    public:
-        // Constructor
-        SkinRegion();
-        SkinRegion( int x, int y, int w, int h );
-        // Destructor
-        virtual ~SkinRegion();
-        // Modify region
-        virtual void Move( int x, int y ) = 0;
-        virtual void AddPoint( int x, int y ) = 0;
-        virtual void AddRectangle( int x, int y, int w, int h ) = 0;
-        virtual void AddElipse( int x, int y, int w, int h ) = 0;
-
-        virtual bool Hit( int x, int y ) = 0;
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/skin_common.h b/modules/gui/skins/src/skin_common.h
deleted file mode 100644 (file)
index f606c6e..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*****************************************************************************
- * skin_common.h: Private Skin interface description
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: skin_common.h,v 1.24 2003/10/17 18:17:28 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef SKIN_COMMON_H
-#define SKIN_COMMON_H
-
-#define SLIDER_RANGE        1048576  // 1024*1024
-#define DEFAULT_SKIN_FILE   "skins/default.vlt"
-
-class Theme;
-class Dialogs;
-class wxMenu;
-class wxIcon;
-
-#ifdef X11_SKINS
-#include <X11/Xlib.h>
-#endif
-
-// For mouse events FIXME: should be elsewhere?
-#define MOUSE_LEFT (1<<0)
-#define MOUSE_RIGHT (1<<1)
-#define KEY_CTRL (1<<2)
-#define KEY_SHIFT (1<<3)
-
-
-//---------------------------------------------------------------------------
-// intf_sys_t: description and status of skin interface
-//---------------------------------------------------------------------------
-struct intf_sys_t
-{
-    // Pointer to the theme main class
-    Theme *p_theme;
-    char *p_new_theme_file;
-
-    // The input thread
-    input_thread_t *p_input;
-
-    // The playlist thread
-    playlist_t *p_playlist;
-
-    // Check if thread is closing
-    int  i_close_status;
-    bool b_all_win_closed;
-
-    // Message bank subscription
-    msg_subscription_t *p_sub;
-
-    // Interface status
-    int i_index;        // Set which file is being played
-    int i_size;         // Size of playlist;
-    bool b_on_top;      // Indicates if the windows are on top
-
-    // Interface dialogs
-    Dialogs *p_dialogs;
-
-    // Popup menu
-    vlc_bool_t b_popup_change;
-#if !defined(MODULE_NAME_IS_basic_skins)
-    wxMenu     *p_popup_menu;
-
-    wxIcon      *p_icon;
-#endif
-
-#ifdef X11_SKINS
-    Display *display;
-    Window mainWin;    // Window which receives "broadcast" events
-    vlc_mutex_t xlock;
-    Pixmap iconPixmap; // vlc icon
-    Pixmap iconMask;
-#endif
-
-#ifdef WIN32
-    // Interface thread id used to post broadcast messages
-    DWORD dwThreadId;
-
-    // We dynamically load msimg32.dll to get a pointer to TransparentBlt()
-    HINSTANCE h_msimg32_dll;
-    BOOL (WINAPI *TransparentBlt)( HDC,int,int,int,int,HDC,int,
-                                   int,int,int,UINT );
-    // Idem for user32.dll and SetLayeredWindowAttributes()
-    HINSTANCE h_user32_dll;
-    BOOL (WINAPI *SetLayeredWindowAttributes)( HWND,COLORREF,BYTE,DWORD );
-#endif
-
-};
-
-#endif
diff --git a/modules/gui/skins/src/skin_main.cpp b/modules/gui/skins/src/skin_main.cpp
deleted file mode 100644 (file)
index 492cd09..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-/*****************************************************************************
- * skin-main.cpp: skins plugin for VLC
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id$
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-#include <vlc/aout.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "event.h"
-#include "banks.h"
-#include "window.h"
-#include "theme.h"
-#include "../os_theme.h"
-#include "themeloader.h"
-#include "vlcproc.h"
-#include "skin_common.h"
-#include "dialogs.h"
-
-#ifdef X11_SKINS
-#include <X11/Xlib.h>
-#include <Imlib2.h>
-#endif
-
-//---------------------------------------------------------------------------
-// Interface thread
-// It is a global variable because we have C code for the parser, and we
-// need to access C++ objects from there
-//---------------------------------------------------------------------------
-intf_thread_t *g_pIntf;
-
-//---------------------------------------------------------------------------
-// Local prototypes.
-//---------------------------------------------------------------------------
-static int  Open   ( vlc_object_t * );
-static void Close  ( vlc_object_t * );
-static void Run    ( intf_thread_t * );
-
-int  SkinManage( intf_thread_t *p_intf );
-void OSRun( intf_thread_t *p_intf );
-
-//---------------------------------------------------------------------------
-// Open: initialize interface
-//---------------------------------------------------------------------------
-static int Open ( vlc_object_t *p_this )
-{
-    intf_thread_t *p_intf = (intf_thread_t *)p_this;
-    g_pIntf = p_intf;
-
-#if defined X11_SKINS
-    // Open/Test for an X11 display
-    Display *display = XOpenDisplay( NULL );
-    if( !display ) return VLC_EGENERIC;
-#endif
-
-    // Allocate instance and initialize some members
-    p_intf->p_sys = (intf_sys_t *) malloc( sizeof( intf_sys_t ) );
-    if( p_intf->p_sys == NULL )
-    {
-        msg_Err( p_intf, "out of memory" );
-        return( 1 );
-    };
-
-    p_intf->pf_run = Run;
-
-    // Suscribe to messages bank
-    p_intf->p_sys->p_sub = msg_Subscribe( p_intf );
-
-    // Set no new theme when opening file
-    p_intf->p_sys->p_new_theme_file = NULL;
-
-    // Initialize info on playlist
-    p_intf->p_sys->i_index        = -1;
-    p_intf->p_sys->i_size         = 0;
-
-    p_intf->p_sys->b_on_top = false;
-
-    p_intf->p_sys->i_close_status = VLC_NOTHING;
-
-    p_intf->p_sys->p_input = NULL;
-    p_intf->p_sys->p_playlist = (playlist_t *)vlc_object_find( p_intf,
-        VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-
-#if defined X11_SKINS
-    // Initialize X11
-    p_intf->p_sys->display = display;
-    vlc_mutex_init( p_intf, &p_intf->p_sys->xlock );
-    // Fake window to receive broadcast events
-    Window root = DefaultRootWindow( display );
-    p_intf->p_sys->mainWin = XCreateSimpleWindow( display, root, 0, 0,
-                                                  1, 1, 0, 0, 0 );
-    XStoreName( display, p_intf->p_sys->mainWin, "VLC Media Player" );
-
-    // Load the vlc icon
-    int screen = DefaultScreen( display );
-    Screen *screenptr = DefaultScreenOfDisplay( display );
-    Visual *visual = DefaultVisualOfScreen( screenptr );
-    imlib_context_set_display( display );
-    imlib_context_set_visual( visual );
-    imlib_context_set_drawable( root );
-    imlib_context_set_colormap( DefaultColormap( display, screen ) );
-    imlib_context_set_dither( 1 );
-    imlib_context_set_blend( 1 );
-    Imlib_Image img = imlib_load_image_immediately( DATA_PATH"/vlc32x32.png" );
-    if( img == NULL )
-    {
-        // for developers ;)
-        img = imlib_load_image_immediately( "./share/vlc32x32.png" );
-    }
-    if( img == NULL )
-    {
-        msg_Err( p_intf, "loading vlc icon failed" );
-        p_intf->p_sys->iconPixmap = None;
-        p_intf->p_sys->iconMask = None;
-    }
-    else
-    {
-        imlib_context_set_image( img );
-        imlib_render_pixmaps_for_whole_image( &p_intf->p_sys->iconPixmap,
-                                              &p_intf->p_sys->iconMask );
-        imlib_free_image();
-    }
-
-
-#elif defined WIN32
-    // Interface thread id used to post broadcast messages
-    p_intf->p_sys->dwThreadId = GetCurrentThreadId();
-
-    // We dynamically load msimg32.dll to get a pointer to TransparentBlt()
-    p_intf->p_sys->h_msimg32_dll = LoadLibrary("msimg32.dll");
-    if( !p_intf->p_sys->h_msimg32_dll ||
-        !( p_intf->p_sys->TransparentBlt =
-           (BOOL (WINAPI*)(HDC,int,int,int,int,HDC,
-                           int,int,int,int,unsigned int))
-           GetProcAddress( p_intf->p_sys->h_msimg32_dll, "TransparentBlt" ) ) )
-    {
-        p_intf->p_sys->TransparentBlt = NULL;
-        msg_Dbg( p_intf, "Couldn't find TransparentBlt(), "
-                 "falling back to BitBlt()" );
-    }
-
-    // idem for user32.dll and SetLayeredWindowAttributes()
-    p_intf->p_sys->h_user32_dll = LoadLibrary("user32.dll");
-    if( !p_intf->p_sys->h_user32_dll ||
-        !( p_intf->p_sys->SetLayeredWindowAttributes =
-           (BOOL (WINAPI *)(HWND,COLORREF,BYTE,DWORD))
-           GetProcAddress( p_intf->p_sys->h_user32_dll,
-                           "SetLayeredWindowAttributes" ) ) )
-    {
-        p_intf->p_sys->SetLayeredWindowAttributes = NULL;
-        msg_Dbg( p_intf, "Couldn't find SetLayeredWindowAttributes()" );
-    }
-
-#endif
-
-    p_intf->p_sys->p_theme = (Theme *)new OSTheme( p_intf );
-
-    return( 0 );
-}
-
-//---------------------------------------------------------------------------
-// Close: destroy interface
-//---------------------------------------------------------------------------
-static void Close ( vlc_object_t *p_this )
-{
-    intf_thread_t *p_intf = (intf_thread_t *)p_this;
-
-    if( p_intf->p_sys->p_input )
-    {
-        vlc_object_release( p_intf->p_sys->p_input );
-    }
-
-    if( p_intf->p_sys->p_playlist )
-    {
-        vlc_object_release( p_intf->p_sys->p_playlist );
-    }
-
-    // Delete theme, it's important to do it correctly
-    delete (OSTheme *)p_intf->p_sys->p_theme;
-
-#if defined X11_SKINS
-    XDestroyWindow( p_intf->p_sys->display, p_intf->p_sys->mainWin );
-
-    // There is a bug in imlib2 which prevents us from closing the display
-    // (__imlib_RenderImage() can free old GC with already closed display)
-    //XCloseDisplay( p_intf->p_sys->display );
-#endif
-
-    // Unsuscribe to messages bank
-    msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );
-
-#ifdef WIN32
-    // Unload msimg32.dll and user32.dll
-    if( p_intf->p_sys->h_msimg32_dll )
-        FreeLibrary( p_intf->p_sys->h_msimg32_dll );
-    if( p_intf->p_sys->h_user32_dll )
-        FreeLibrary( p_intf->p_sys->h_user32_dll );
-#elif defined X11_SKINS
-    vlc_mutex_destroy( &p_intf->p_sys->xlock );
-#endif
-
-    // Destroy structure
-    free( p_intf->p_sys );
-}
-
-
-//---------------------------------------------------------------------------
-// Run: main loop
-//---------------------------------------------------------------------------
-static void Run( intf_thread_t *p_intf )
-{
-
-    int a = OSAPI_GetTime();
-
-    // Initialize the dialog boxes
-    p_intf->p_sys->p_dialogs = new Dialogs( p_intf );
-    if( !p_intf->p_sys->p_dialogs ) return;
-
-    // Load a theme
-    char *skin_last = config_GetPsz( p_intf, "skin_last" );
-    ThemeLoader *Loader = new ThemeLoader( p_intf );
-
-    if( skin_last == NULL || ! Loader->Load( skin_last ) )
-    {
-        // Too bad, it failed. Let's try with the default theme
-//        if( ! Loader->Load( DEFAULT_SKIN_FILE ) )
-#ifdef WIN32
-        string default_dir = (string)p_intf->p_libvlc->psz_vlcpath +
-                             DIRECTORY_SEPARATOR + "skins" +
-                             DIRECTORY_SEPARATOR + "default" +
-                             DIRECTORY_SEPARATOR + "theme.xml";
-        if( ! Loader->Load( default_dir ) )
-        {
-            // Last chance: the user can  select a new theme file
-#else
-        string user_skin = (string)p_intf->p_vlc->psz_homedir +
-                              DIRECTORY_SEPARATOR + CONFIG_DIR +
-                              DIRECTORY_SEPARATOR + "skins" +
-                              DIRECTORY_SEPARATOR + "default" +
-                              DIRECTORY_SEPARATOR + "theme.xml";
-
-        string default_skin = (string)DATA_PATH +
-                              DIRECTORY_SEPARATOR + "skins" +
-                              DIRECTORY_SEPARATOR + "default" +
-                              DIRECTORY_SEPARATOR + "theme.xml";
-        if( !Loader->Load( user_skin ) && !Loader->Load( default_skin ) )
-        {
-#endif
-            p_intf->p_sys->p_dialogs->ShowOpenSkin( 1 /* block */ );
-
-            // try to load selected file
-            if( !p_intf->p_sys->p_new_theme_file ||
-                !Loader->Load( (string)p_intf->p_sys->p_new_theme_file ) )
-            {
-                // He, he, what the hell is he doing ?
-                delete Loader;
-                delete p_intf->p_sys->p_dialogs;
-                if( skin_last ) free( skin_last );
-                return;
-            }
-        }
-    }
-
-    // Show the theme
-    p_intf->p_sys->p_theme->InitTheme();
-    p_intf->p_sys->p_theme->ShowTheme();
-
-    if( skin_last ) free( skin_last );
-    delete Loader;
-
-    msg_Dbg( p_intf, "Load theme time : %i ms", OSAPI_GetTime() - a );
-
-    OSAPI_PostMessage( NULL, VLC_INTF_REFRESH, 0, (int)true );
-
-    OSRun( p_intf );
-
-    // clean up the dialog boxes
-    delete p_intf->p_sys->p_dialogs;
-}
-
-//---------------------------------------------------------------------------
-// Module descriptor
-//---------------------------------------------------------------------------
-#define DEFAULT_SKIN        N_("Last skin actually used")
-#define DEFAULT_SKIN_LONG   N_("Last skin actually used")
-#define SKIN_CONFIG         N_("Config of last used skin")
-#define SKIN_CONFIG_LONG    N_("Config of last used skin")
-#define SKIN_TRAY           N_("Show application in system tray")
-#define SKIN_TRAY_LONG      N_("Show application in system tray")
-#define SKIN_TASKBAR        N_("Show application in taskbar")
-#define SKIN_TASKBAR_LONG   N_("Show application in taskbar")
-
-vlc_module_begin();
-    add_string( "skin_last", "", NULL, DEFAULT_SKIN, DEFAULT_SKIN_LONG,
-                VLC_TRUE );
-    add_string( "skin_config", "", NULL, SKIN_CONFIG, SKIN_CONFIG_LONG,
-                VLC_TRUE );
-    add_bool( "show_in_tray", VLC_FALSE, NULL, SKIN_TRAY, SKIN_TRAY_LONG,
-              VLC_FALSE );
-    add_bool( "show_in_taskbar", VLC_TRUE, NULL, SKIN_TASKBAR,
-              SKIN_TASKBAR_LONG, VLC_FALSE );
-    set_description( _("Skinnable interface") );
-    set_capability( "interface", 30 );
-    set_callbacks( Open, Close );
-    set_program( "svlc" );
-vlc_module_end();
-
-
-//---------------------------------------------------------------------------
-// Refresh procedure
-//---------------------------------------------------------------------------
-int SkinManage( intf_thread_t *p_intf )
-{
-    vlc_mutex_lock( &p_intf->change_lock );
-
-    // Update the input
-    if( p_intf->p_sys->p_input == NULL )
-    {
-        p_intf->p_sys->p_input = (input_thread_t *)
-                    vlc_object_find( p_intf, VLC_OBJECT_INPUT, FIND_ANYWHERE );
-    }
-    else if( p_intf->p_sys->p_input->b_dead )
-    {
-        vlc_object_release( p_intf->p_sys->p_input );
-        p_intf->p_sys->p_input = NULL;
-    }
-
-    //-------------------------------------------------------------------------
-    if( p_intf->p_sys->p_input != NULL && !p_intf->p_sys->p_input->b_die )
-    {
-        input_thread_t  * p_input = p_intf->p_sys->p_input;
-
-        // Refresh sound volume
-        audio_volume_t volume;
-
-        // Get sound volume from VLC
-        aout_VolumeGet( p_intf, &volume);
-
-        // Update sliders
-        OSAPI_PostMessage( NULL, CTRL_SET_SLIDER,
-            (unsigned int)
-            p_intf->p_sys->p_theme->EvtBank->Get( "volume_refresh" ),
-            (long)( volume * SLIDER_RANGE / (AOUT_VOLUME_DEFAULT * 2) ) );
-
-#if 1
-#warning "FIXME!"
-#else
-        vlc_mutex_lock( &p_input->stream.stream_lock );
-
-        // Refresh slider
-        // if( p_input->stream.b_seekable && p_intf->p_sys->b_playing )
-#define p_area p_input->stream.p_selected_area
-        if( p_input->stream.b_seekable && p_area->i_size )
-#endif
-        {
-
-            // Text char * for updating text controls
-            char *text = new char[MSTRTIME_MAX_SIZE];
-
-            int64_t i_seconds, i_length;
-
-            i_seconds = var_GetTime( p_intf->p_sys->p_input, "time" ) / I64C(1000000 );
-            i_length = var_GetTime( p_intf->p_sys->p_input, "length" ) / I64C(1000000 );
-
-            // Set value of sliders
-            long Value = SLIDER_RANGE * i_seconds / i_length;
-
-            // Update sliders
-            OSAPI_PostMessage( NULL, CTRL_SET_SLIDER, (unsigned int)
-                p_intf->p_sys->p_theme->EvtBank->Get( "time" ), (long)Value );
-
-            // Create end time text
-            secstotimestr( &text[1], i_length - i_seconds );
-            text[0] = '-';
-            p_intf->p_sys->p_theme->EvtBank->Get( "left_time" )
-                ->PostTextMessage( text );
-
-            // Create time text and update
-            secstotimestr( text, i_seconds );
-            p_intf->p_sys->p_theme->EvtBank->Get( "time" )
-                ->PostTextMessage( text );
-
-            // Create total time text
-            secstotimestr( text, i_length );
-            p_intf->p_sys->p_theme->EvtBank->Get( "total_time" )
-                ->PostTextMessage( text );
-
-            // Free memory
-            delete[] text;
-
-#undef p_area
-        }
-
-#warning "FIXME!"
-#if 0
-        vlc_mutex_unlock( &p_input->stream.stream_lock );
-#endif
-    }
-    //-------------------------------------------------------------------------
-    vlc_mutex_unlock( &p_intf->change_lock );
-
-    return( VLC_TRUE );
-}
diff --git a/modules/gui/skins/src/theme.cpp b/modules/gui/skins/src/theme.cpp
deleted file mode 100644 (file)
index 0dd4dc6..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-/*****************************************************************************
- * theme.cpp: Theme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: theme.cpp,v 1.18 2003/10/17 18:17:28 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "window.h"
-#include "../os_window.h"
-#include "banks.h"
-#include "anchor.h"
-#include "event.h"
-#include "../os_event.h"
-#include "../controls/generic.h"
-#include "theme.h"
-#include "vlcproc.h"
-#include "skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-// THEME
-//---------------------------------------------------------------------------
-Theme::Theme( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-    BmpBank = new BitmapBank( p_intf );
-    FntBank = new FontBank( p_intf );
-    EvtBank = new EventBank( p_intf );
-    OffBank = new OffSetBank( p_intf );
-    ConstructPlaylist = false;
-
-    ShowInTray    = false;
-    ShowInTaskbar = false;
-
-}
-//---------------------------------------------------------------------------
-Theme::~Theme()
-{
-    // Delete the windows
-    list<SkinWindow *>::const_iterator win;
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-    {
-        delete (OSWindow *)(*win);
-    }
-    delete OffBank;
-    delete EvtBank;
-    delete BmpBank;
-    delete FntBank;
-}
-//---------------------------------------------------------------------------
-void Theme::ShowTheme()
-{
-    // Get parameters form vlcrc config file
-    if( ShowInTray != (bool)config_GetInt( p_intf, "show_in_tray" ) )
-        ChangeTray();
-
-    if( ShowInTaskbar != (bool)config_GetInt( p_intf, "show_in_taskbar" ) )
-        ChangeTaskbar();
-
-    list<SkinWindow *>::const_iterator win;
-    Event *evt1;
-    Event *evt2;
-
-    // Synchronize control to visible aspect
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-    {
-        // Synchronize windows visibility
-        if( (*win)->OnStartThemeVisible )
-        {
-            evt1 = (Event *)new OSEvent( p_intf, (*win), WINDOW_OPEN,  1, 0 );
-            evt2 = (Event *)new OSEvent( p_intf, (*win), WINDOW_CLOSE, 0, 0 );
-        }
-        else
-        {
-            evt1 = (Event *)new OSEvent( p_intf, (*win), WINDOW_OPEN,  0, 0 );
-            evt2 = (Event *)new OSEvent( p_intf, (*win), WINDOW_CLOSE, 1, 0 );
-        }
-        evt1->PostSynchroMessage( true );
-        evt2->PostSynchroMessage( true );
-    }
-
-    // Initialize magnetism
-    CheckAnchors();
-
-    // Show windows
-    OSAPI_PostMessage( NULL, VLC_SHOW, 0, 0 );
-}
-//---------------------------------------------------------------------------
-void Theme::CreateSystemMenu()
-{
-    AddSystemMenu( "Open file...", EvtBank->Get( "open" ) );
-    AddSystemMenu( "Change skin...", EvtBank->Get( "load_skin" ) );
-    AddSystemMenu( "Preferences...", EvtBank->Get( "show_prefs" ) );
-    AddSystemMenu( "Always on top", EvtBank->Get( "on_top" ) );
-    AddSystemMenu( "SEPARATOR", 0 );
-    AddSystemMenu( "Exit", EvtBank->Get( "quit" ) );
-}
-//---------------------------------------------------------------------------
-void Theme::LoadConfig()
-{
-    // Get config from vlcrc file
-    char *save = config_GetPsz( p_intf, "skin_config" );
-    if( save == NULL )
-        return;
-
-    // Initialization
-    list<SkinWindow *>::const_iterator win;
-    int i = 0;
-    int x, y, v, scan;
-
-    // Get config for each window
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-    {
-        // Get config
-        scan = sscanf( &save[i * 13], "(%4d,%4d,%1d)", &x, &y, &v );
-
-        // If config has the correct number of arguments
-        if( scan > 2 )
-        {
-            (*win)->Move( x, y );
-            (*win)->OnStartThemeVisible = (bool)v;
-        }
-
-        // Next window
-        i++;
-    }
-}
-//---------------------------------------------------------------------------
-void Theme::SaveConfig()
-{
-    // Initialize char where config is stored
-    char *save  = new char[400];
-    list<SkinWindow *>::const_iterator win;
-    int i = 0;
-    int x, y;
-
-    // Save config of every window
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-    {
-        // Print config
-        (*win)->GetPos( x, y );
-        sprintf( &save[i * 13], "(%4d,%4d,%1d)", x, y,
-            (*win)->OnStartThemeVisible );
-        i++;
-    }
-
-    // Save config to file
-    config_PutPsz( p_intf, "skin_config",     save );
-    config_PutInt( p_intf, "show_in_tray",    (int)ShowInTray );
-    config_PutInt( p_intf, "show_in_taskbar", (int)ShowInTaskbar );
-    config_SaveConfigFile( p_intf, "skins" );
-
-    // Free memory
-    delete[] save;
-
-}
-//---------------------------------------------------------------------------
-void Theme::StartTheme( int magnet )
-{
-    Magnet = magnet;
-}
-//---------------------------------------------------------------------------
-void Theme::InitTheme()
-{
-    // Initialize the events
-    EvtBank->Init();
-
-    // Initialize the controls
-    InitControls();
-
-    // Initialize the windows
-    InitWindows();
-}
-//---------------------------------------------------------------------------
-void Theme::InitWindows()
-{
-    for( list<SkinWindow *>::const_iterator win = WindowList.begin();
-         win != WindowList.end(); win++ )
-    {
-        (*win)->Init();
-    }
-}
-//---------------------------------------------------------------------------
-void Theme::InitControls()
-{
-    for( list<SkinWindow *>::const_iterator win = WindowList.begin();
-         win != WindowList.end(); win++ )
-    {
-        for( unsigned int i = 0; i < (*win)->ControlList.size(); i++ )
-        {
-            (*win)->ControlList[i]->Init();
-        }
-    }
-}
-//---------------------------------------------------------------------------
-SkinWindow * Theme::GetWindow( string name )
-{
-    for( list<SkinWindow *>::const_iterator win = WindowList.begin();
-         win != WindowList.end(); win++ )
-    {
-        if( name == OSAPI_GetWindowTitle( *win ) )
-        {
-            return (*win);
-        }
-    }
-    return NULL;
-}
-//---------------------------------------------------------------------------
-void Theme::MoveSkin( SkinWindow *wnd, int left, int top )
-{
-    int oldx, oldy;
-    SkinWindow *win;
-    list<Anchor *>::const_iterator anc;
-    list<Anchor *>::const_iterator hang;
-    wnd->GetPos( oldx, oldy );
-
-    // Move child windows recursively
-    for( anc = wnd->AnchorList.begin(); anc != wnd->AnchorList.end(); anc++ )
-    {
-        for( hang = (*anc)->HangList.begin(); hang != (*anc)->HangList.end();
-             hang++ )
-        {
-            win = (*hang)->GetParent();
-            // Check that the window hasn't already moved (this avoids
-            // infinite recursion with circular anchoring)
-            if( !win->Moved )
-            {
-                win->Moved = true;
-                MoveSkin( win, left, top );
-            }
-        }
-    }
-
-    // Move window
-    wnd->Move( oldx + left, oldy + top );
-}
-//---------------------------------------------------------------------------
-bool Theme::MoveSkinMagnet( SkinWindow *wnd, int left, int top )
-{
-
-    // If magnetism not activate
-    if( !Magnet )
-    {
-        wnd->Move( left, top );
-        return false;
-    }
-
-    // Screen bounds initialization
-    int NewLeft = left;
-    int NewTop  = top;
-    int Sx, Sy, Wx, Wy;
-    OSAPI_GetScreenSize( Sx, Sy );
-    int width, height;
-    wnd->GetSize( width, height );
-    wnd->GetPos( Wx, Wy );
-
-    // Magnetism with screen bounds
-    if( left < Magnet && left > -Magnet)
-        NewLeft = 0;
-    else if( left + width > Sx - Magnet && left + width < Sx + Magnet )
-        NewLeft = Sx - width;
-    if( top < Magnet && top > -Magnet )
-        NewTop = 0;
-    else if( top + height > Sy - Magnet && top + height < Sy + Magnet )
-        NewTop = Sy - height;
-
-    // Deal with anchors
-    HangToAnchors( wnd, NewLeft, NewTop );
-
-    // All windows can be moved
-    list<SkinWindow *>::const_iterator win;
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-        (*win)->Moved = false;
-
-    // Move Window
-    MoveSkin( wnd, NewLeft - Wx, NewTop - Wy );
-
-    return true;
-}
-//---------------------------------------------------------------------------
-void Theme::HangToAnchors( SkinWindow *wnd, int &x, int &y, bool init )
-{
-    // Magnetism initialization
-    int win_x, win_y, win_anchor_x, win_anchor_y, wnd_anchor_x, wnd_anchor_y;
-    list<SkinWindow *>::const_iterator win;
-    list<Anchor *>::const_iterator win_anchor, wnd_anchor;
-
-    // Parse list of windows
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-    {
-        // If window is moved window
-        if( (*win) == wnd )
-            continue;               // Check next window
-
-        // If window is hidden
-        if( !init )
-        {
-            if( (*win)->IsHidden() )
-                continue;           // Check next window
-        }
-        else
-        {
-            if( !(*win)->OnStartThemeVisible )
-                continue;           // Check next window
-        }
-
-        // Parse anchor lists
-        for( wnd_anchor  = wnd->AnchorList.begin();
-             wnd_anchor != wnd->AnchorList.end(); wnd_anchor++ )
-        {
-            for( win_anchor  = (*win)->AnchorList.begin();
-                 win_anchor != (*win)->AnchorList.end(); win_anchor++ )
-            {
-                if( (*wnd_anchor)->GetPriority() <
-                    (*win_anchor)->GetPriority() )
-                {
-                    // Parent anchor is win and child is wnd !!!
-
-                    if( !(*win_anchor)->Hang( (*wnd_anchor), x, y ) )
-                    {
-                        // If child is in parent list and parent doesn't hang
-                        // child
-                        if( (*win_anchor)->IsInList( (*wnd_anchor) ) )
-                            (*win_anchor)->Remove( (*wnd_anchor) );
-                    }
-                    else
-                    {
-                        // If parent hangs child and child is not yet in list
-                        if( !(*win_anchor)->IsInList( (*wnd_anchor) ) )
-                        {
-                            (*win_anchor)->Add( (*wnd_anchor) );
-                        }
-
-                        // Move window to stick anchor
-                        (*wnd_anchor)->GetPos( wnd_anchor_x, wnd_anchor_y );
-                        (*win_anchor)->GetPos( win_anchor_x, win_anchor_y );
-                        (*win)->GetPos( win_x, win_y );
-
-                        x = win_x + win_anchor_x - wnd_anchor_x;
-                        y = win_y + win_anchor_y - wnd_anchor_y;
-
-                        break;
-                    }
-
-                }
-                else if( (*win_anchor)->Hang( (*wnd_anchor), x, y ) )
-                {
-                    if( !(*wnd_anchor)->IsInList( *win_anchor ) )
-                    {
-                        // Move window to stick anchor
-                        (*wnd_anchor)->GetPos( wnd_anchor_x, wnd_anchor_y );
-                        (*win_anchor)->GetPos( win_anchor_x, win_anchor_y );
-                        (*win)->GetPos( win_x, win_y );
-
-                        x = win_x + win_anchor_x - wnd_anchor_x;
-                        y = win_y + win_anchor_y - wnd_anchor_y;
-                    }
-
-                    break;
-                }
-            }
-        }
-    }
-}
-//---------------------------------------------------------------------------
-void Theme::CheckAnchors()
-{
-    list<SkinWindow *>::const_iterator win;
-    int x, y;
-
-    for( win = WindowList.begin(); win != WindowList.end(); win++ )
-    {
-        (*win)->GetPos( x, y );
-        HangToAnchors( (*win), x, y, true );
-        (*win)->Move( x, y );
-    }
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/theme.h b/modules/gui/skins/src/theme.h
deleted file mode 100644 (file)
index 5a06b46..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*****************************************************************************
- * theme.h: Theme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: theme.h,v 1.6 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_THEME
-#define VLC_SKIN_THEME
-
-//--- GENERAL ---------------------------------------------------------------
-#include <list>
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-class EventBank;
-class BitmapBank;
-class FontBank;
-class Event;
-class OffSetBank;
-
-//---------------------------------------------------------------------------
-class Theme
-{
-    private:
-
-    protected:
-        int  Magnet;
-        intf_thread_t *p_intf;
-
-        bool ShowInTray;
-        bool ShowInTaskbar;
-
-    public:
-        // Constructors
-        Theme( intf_thread_t *_p_intf );
-        void StartTheme( int magnet );
-
-        // Destructor
-        virtual ~Theme();
-        virtual void OnLoadTheme() = 0;
-
-        // Initialization
-        void InitTheme();
-        void InitWindows();
-        void InitControls();
-        void ShowTheme();
-
-        virtual void AddWindow( string name, int x, int y, bool visible,
-            int fadetime, int alpha, int movealpha, bool dragdrop,
-            bool playondrop ) = 0;
-        virtual void ChangeClientWindowName( string name ) = 0;
-
-        SkinWindow * GetWindow( string name );
-
-        // Banks
-        BitmapBank *BmpBank;
-        EventBank  *EvtBank;
-        FontBank   *FntBank;
-        OffSetBank *OffBank;
-
-        // List of the windows of the skin
-        list<SkinWindow *> WindowList;
-
-        // Magetism
-        void HangToAnchors( SkinWindow *wnd, int &x, int &y, bool init = false );
-        bool MoveSkinMagnet( SkinWindow *wnd, int left, int top );
-        void MoveSkin( SkinWindow *wnd, int left, int top );
-        void CheckAnchors();
-
-        bool ConstructPlaylist;
-
-        // Config file treatment
-        void LoadConfig();
-        void SaveConfig();
-
-        // Taskbar && system tray
-        void CreateSystemMenu();
-        virtual void AddSystemMenu( string name, Event *event ) = 0;
-        virtual void ChangeTray() = 0;
-        virtual void ChangeTaskbar() = 0;
-
-};
-//---------------------------------------------------------------------------
-
-#endif
-
diff --git a/modules/gui/skins/src/themeloader.cpp b/modules/gui/skins/src/themeloader.cpp
deleted file mode 100644 (file)
index 6d32b66..0000000
+++ /dev/null
@@ -1,493 +0,0 @@
-/*****************************************************************************
- * themeloader.cpp: ThemeLoader class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: themeloader.cpp,v 1.16 2003/12/16 18:18:14 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-#include <fcntl.h>
-#if !defined( WIN32 )
-#   include <unistd.h>
-#else
-#   include <direct.h>
-#   ifndef PATH_MAX
-#       define PATH_MAX MAX_PATH
-#   endif
-#endif
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-#if defined( HAVE_ZLIB_H )
-#   include <zlib.h>
-#   include <errno.h>
-#endif
-
-#if defined( HAVE_ZLIB_H ) && defined( HAVE_LIBTAR_H )
-#   include <libtar.h>
-#elif defined( HAVE_ZLIB_H )
-    typedef gzFile TAR;
-    int tar_open         ( TAR **t, char *pathname, int oflags );
-    int tar_extract_all  ( TAR *t, char *prefix );
-    int tar_close        ( TAR *t );
-#endif
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "theme.h"
-#include "../os_theme.h"
-#include "themeloader.h"
-#include "skin_common.h"
-
-#include "anchor.h"
-#include "window.h"
-
-#define DEFAULT_XML_FILE "theme.xml"
-
-//---------------------------------------------------------------------------
-extern "C"
-{
-    extern FILE *yyin;
-    int yylex();
-}
-
-//---------------------------------------------------------------------------
-ThemeLoader::ThemeLoader( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-}
-//---------------------------------------------------------------------------
-ThemeLoader::~ThemeLoader()
-{
-}
-//---------------------------------------------------------------------------
-#if defined( HAVE_ZLIB_H )
-int gzopen_frontend( char *pathname, int oflags, int mode )
-{
-    char *gzflags;
-    gzFile gzf;
-
-    switch( oflags & O_ACCMODE )
-    {
-        case O_WRONLY:
-            gzflags = "wb";
-            break;
-        case O_RDONLY:
-            gzflags = "rb";
-            break;
-        case O_RDWR:
-        default:
-            errno = EINVAL;
-            return -1;
-    }
-
-    gzf = gzopen( pathname, gzflags );
-    if( !gzf )
-    {
-        errno = ENOMEM;
-        return -1;
-    }
-
-    return (int)gzf;
-}
-#endif
-
-//---------------------------------------------------------------------------
-#if defined( HAVE_ZLIB_H )
-bool ThemeLoader::ExtractTarGz( const string tarfile, const string rootdir )
-{
-    TAR *t;
-#if defined( HAVE_LIBTAR_H )
-    tartype_t gztype = { (openfunc_t) gzopen_frontend, (closefunc_t) gzclose,
-        (readfunc_t) gzread, (writefunc_t) gzwrite };
-
-    if( tar_open( &t, (char *)tarfile.c_str(), &gztype, O_RDONLY, 0,
-                  TAR_GNU ) == -1 )
-#else
-    if( tar_open( &t, (char *)tarfile.c_str(), O_RDONLY ) == -1 )
-#endif
-    {
-        return false;
-    }
-
-    if( tar_extract_all( t, (char *)rootdir.c_str() ) != 0 )
-    {   tar_close( t );
-        return false;
-    }
-
-    if( tar_close( t ) != 0 )
-    {
-        return false;
-    }
-
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ThemeLoader::Extract( const string FileName )
-{
-    char *tmpdir = tempnam( NULL, "vlt" );
-    string TempPath = tmpdir;
-    free( tmpdir );
-
-    if( ! ExtractTarGz( FileName, TempPath ) )
-        return false;
-
-    if( ! Parse( TempPath + DIRECTORY_SEPARATOR + string( DEFAULT_XML_FILE ) ) )
-    {
-        msg_Err( p_intf, "%s doesn't contain a " DEFAULT_XML_FILE " file",
-                 FileName.c_str() );
-        DeleteTempFiles( TempPath );
-        return false;
-    }
-
-    DeleteTempFiles( TempPath );
-    return true;
-}
-//---------------------------------------------------------------------------
-void ThemeLoader::DeleteTempFiles( const string Path )
-{
-    OSAPI_RmDir( Path );
-}
-#endif
-//---------------------------------------------------------------------------
-void ThemeLoader::CleanTheme()
-{
-    delete (OSTheme *)p_intf->p_sys->p_theme;
-    p_intf->p_sys->p_theme = (Theme *)new OSTheme( p_intf );
-}
-//---------------------------------------------------------------------------
-bool ThemeLoader::Parse( const string XmlFile )
-{
-    // Things to do before loading theme
-    p_intf->p_sys->p_theme->OnLoadTheme();
-
-    // Set the file to parse
-    yyin = fopen( XmlFile.c_str(), "r" );
-    if( yyin == NULL )
-    {
-        // Skin cannot be opened
-        msg_Warn( p_intf, "Cannot open the specified skin file: %s",
-                  XmlFile.c_str() );
-        return false;
-    }
-
-    // File loaded
-    msg_Dbg( p_intf, "Using skin file: %s", XmlFile.c_str() );
-
-    // Save current working directory
-    char *cwd = new char[PATH_MAX];
-    getcwd( cwd, PATH_MAX );
-
-    // Directory separator is different in each OS !
-    int p = XmlFile.rfind( DIRECTORY_SEPARATOR, XmlFile.size() );
-
-    // Change current working directory to xml file
-    string path = "";
-    if( p > 0 )
-        path = XmlFile.substr( 0, p );
-    chdir( path.c_str() );
-
-    p_intf->p_sys->b_all_win_closed = false;
-
-    // Start the parser
-    int lex = yylex();
-    
-    fclose( yyin );
-    if( lex )
-    {
-        // Set old working directory to current
-        chdir( cwd );
-        delete[] cwd;
-
-        msg_Warn( p_intf, "yylex failed: %i", lex );
-        CleanTheme();
-        return false;
-    }
-
-    // Set old working directory to current
-    chdir( cwd );
-    delete[] cwd;
-
-    return true;
-}
-//---------------------------------------------------------------------------
-bool ThemeLoader::Load( const string FileName )
-{
-    // First, we try to un-targz the file, and if it fails we hope it's a XML
-    // file...
-#if defined( HAVE_ZLIB_H )
-    if( ! Extract( FileName ) && ! Parse( FileName ) )
-        return false;
-#else
-    if( ! Parse( FileName ) )
-        return false;
-#endif
-
-    // Check if the skin to load is in the config file, to load its config
-    char *skin_last = config_GetPsz( p_intf, "skin_last" );
-    if( skin_last != NULL && FileName == (string)skin_last )
-    {
-        p_intf->p_sys->p_theme->LoadConfig();
-    }
-    else
-    {
-        config_PutPsz( p_intf, "skin_last", FileName.c_str() );
-        config_SaveConfigFile( p_intf, "skins" );
-    }
-
-    return true;
-}
-//---------------------------------------------------------------------------
-#if !defined( HAVE_LIBTAR_H ) && defined( HAVE_ZLIB_H )
-
-#ifdef WIN32
-#  define mkdir(dirname,mode) _mkdir(dirname)
-#endif
-
-/* Values used in typeflag field.  */
-#define REGTYPE  '0'            /* regular file */
-#define AREGTYPE '\0'           /* regular file */
-#define DIRTYPE  '5'            /* directory */
-
-#define BLOCKSIZE 512
-
-struct tar_header
-{                               /* byte offset */
-  char name[100];               /*   0 */
-  char mode[8];                 /* 100 */
-  char uid[8];                  /* 108 */
-  char gid[8];                  /* 116 */
-  char size[12];                /* 124 */
-  char mtime[12];               /* 136 */
-  char chksum[8];               /* 148 */
-  char typeflag;                /* 156 */
-  char linkname[100];           /* 157 */
-  char magic[6];                /* 257 */
-  char version[2];              /* 263 */
-  char uname[32];               /* 265 */
-  char gname[32];               /* 297 */
-  char devmajor[8];             /* 329 */
-  char devminor[8];             /* 337 */
-  char prefix[155];             /* 345 */
-                                /* 500 */
-};
-
-union tar_buffer {
-  char               buffer[BLOCKSIZE];
-  struct tar_header  header;
-};
-
-/* helper functions */
-int getoct( char *p, int width );
-int makedir( char *newdir );
-
-int tar_open( TAR **t, char *pathname, int oflags )
-{
-    gzFile f = gzopen( pathname, "rb" );
-    if( f == NULL )
-    {
-        //fprintf( stderr, "Couldn't gzopen %s\n", pathname );
-        return -1;
-    }
-
-    *t = (gzFile *)malloc( sizeof(gzFile) );
-    **t = f;
-    return 0;
-}
-
-int tar_extract_all( TAR *t, char *prefix )
-{
-    union  tar_buffer buffer;
-    int    len, err, getheader = 1, remaining = 0;
-    FILE   *outfile = NULL;
-    char   fname[BLOCKSIZE + PATH_MAX];
-
-    while( 1 )
-    {
-        len = gzread( *t, &buffer, BLOCKSIZE );
-        if(len < 0) fprintf(stderr, "%s\n", gzerror(*t, &err) );
-
-        /*
-         * Always expect complete blocks to process
-         * the tar information.
-         */
-        if( len != 0 && len != BLOCKSIZE )
-        {
-            fprintf(stderr, "gzread: incomplete block read\n");
-            return -1;
-        }
-
-        /*
-         * If we have to get a tar header
-         */
-        if( getheader == 1 )
-        {
-            /*
-             * if we met the end of the tar
-             * or the end-of-tar block,
-             * we are done
-             */
-            if( (len == 0)  || (buffer.header.name[0]== 0) ) break;
-
-            sprintf( fname, "%s/%s", prefix, buffer.header.name );
-
-            /* Check magic value in header */
-            if( strncmp( buffer.header.magic, "GNUtar", 6 ) &&
-                strncmp( buffer.header.magic, "ustar", 5 ) )
-            {
-                //fprintf(stderr, "not a tar file\n");
-                return -1;
-            }
-
-            switch (buffer.header.typeflag)
-            {
-            case DIRTYPE:
-                makedir( fname );
-                break;
-            case REGTYPE:
-            case AREGTYPE:
-                remaining = getoct( buffer.header.size, 12 );
-                if( remaining )
-                {
-                    outfile = fopen( fname, "wb" );
-                    if( outfile == NULL )
-                    {
-                        /* try creating directory */
-                        char *p = strrchr( fname, '/' );
-                        if( p != NULL )
-                        {
-                            *p = '\0';
-                            makedir( fname );
-                            *p = '/';
-                            outfile = fopen( fname, "wb" );
-                            if( !outfile )
-                                fprintf( stderr, "tar couldn't create %s\n",
-                                         fname );
-                        }
-                    }
-                }
-                else outfile = NULL;
-
-                /*
-                 * could have no contents
-                 */
-                getheader = (remaining) ? 0 : 1;
-                break;
-            default:
-                break;
-            }
-        }
-        else
-        {
-            unsigned int bytes = (remaining > BLOCKSIZE)?BLOCKSIZE:remaining;
-
-            if( outfile != NULL )
-            {
-                if( fwrite( &buffer, sizeof(char), bytes, outfile ) != bytes )
-                {
-                    fprintf( stderr, "error writing %s skipping...\n", fname );
-                    fclose( outfile );
-                    unlink( fname );
-                }
-            }
-            remaining -= bytes;
-            if( remaining == 0 )
-            {
-                getheader = 1;
-                if( outfile != NULL )
-                {
-                    fclose(outfile);
-                    outfile = NULL;
-                }
-            }
-        }
-    }
-
-    return 0;
-}
-
-int tar_close( TAR *t )
-{
-    if( gzclose( *t ) != Z_OK ) fprintf( stderr, "failed gzclose\n" );
-    free( t );
-    return 0;
-}
-
-/* helper functions */
-int getoct( char *p, int width )
-{
-    int result = 0;
-    char c;
-  
-    while( width-- )
-    {
-        c = *p++;
-        if (c == ' ') continue;
-        if (c == 0) break;
-        result = result * 8 + (c - '0');
-    }
-    return result;
-}
-
-/* Recursive make directory
- * Abort if you get an ENOENT errno somewhere in the middle
- * e.g. ignore error "mkdir on existing directory"
- *
- * return 1 if OK, 0 on error
- */
-int makedir( char *newdir )
-{
-    char *p, *buffer = strdup(newdir);
-    int  len = strlen(buffer);
-  
-    if( len <= 0 ) { free(buffer); return 0; }
-
-    if( buffer[len-1] == '/' ) buffer[len-1] = '\0';
-
-    if( mkdir( buffer, 0775 ) == 0 ) { free(buffer); return 1; }
-
-    p = buffer+1;
-    while( 1 )
-    {
-        char hold;
-
-        while( *p && *p != '\\' && *p != '/' ) p++;
-        hold = *p;
-        *p = 0;
-        if( ( mkdir( buffer, 0775 ) == -1 ) && ( errno == ENOENT ) )
-        {
-            fprintf(stderr,"couldn't create directory %s\n", buffer);
-            free(buffer);
-            return 0;
-        }
-        if( hold == 0 ) break;
-        *p++ = hold;
-    }
-    free(buffer);
-    return 1;
-}
-
-#endif
-//---------------------------------------------------------------------------
diff --git a/modules/gui/skins/src/themeloader.h b/modules/gui/skins/src/themeloader.h
deleted file mode 100644 (file)
index 51bf5ed..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*****************************************************************************
- * themeloader.h: ThemeLoader class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: themeloader.h,v 1.3 2003/04/24 15:57:50 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_THEMELOADER
-#define VLC_SKIN_THEMELOADER
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-
-//---------------------------------------------------------------------------
-class ThemeLoader
-{
-    private:
-        intf_thread_t *p_intf;
-
-#if defined( HAVE_ZLIB_H )
-        bool ExtractTarGz( const string tarfile, const string rootdir );
-        bool Extract( const string FileName );
-        void DeleteTempFiles( const string Path );
-#endif
-        void CleanTheme();
-        bool Parse( const string XmlFile );
-    public:
-        ThemeLoader( intf_thread_t *_p_intf );
-        ~ThemeLoader();
-
-        bool Load( const string FileName );
-};
-
-#endif
diff --git a/modules/gui/skins/src/vlcproc.cpp b/modules/gui/skins/src/vlcproc.cpp
deleted file mode 100644 (file)
index 6891a6a..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-/*****************************************************************************
- * vlcproc.cpp: VlcProc class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id$
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-#include <vlc/aout.h>
-#include <vlc/vout.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "event.h"
-#include "banks.h"
-#include "theme.h"
-#include "../os_theme.h"
-#include "themeloader.h"
-#include "window.h"
-#include "vlcproc.h"
-#include "skin_common.h"
-#include "dialogs.h"
-
-//---------------------------------------------------------------------------
-// VlcProc
-//---------------------------------------------------------------------------
-VlcProc::VlcProc( intf_thread_t *_p_intf )
-{
-    p_intf = _p_intf;
-
-    playlist_t *p_playlist = (playlist_t *)vlc_object_find( p_intf,
-        VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-    if( p_playlist != NULL )
-    {
-        // We want to be notified of playlist changes
-        var_AddCallback( p_playlist, "intf-change", RefreshCallback, this );
-
-        // Raise/lower interface with middle click on vout
-        var_AddCallback( p_playlist, "intf-show", IntfShowCallback, this );
-
-        vlc_object_release( p_playlist );
-    }
-}
-//---------------------------------------------------------------------------
-VlcProc::~VlcProc()
-{
-    // Remove the refresh callback
-    playlist_t *p_playlist = (playlist_t *)vlc_object_find( p_intf,
-        VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
-    if( p_playlist != NULL )
-    {
-        var_DelCallback( p_playlist, "intf-change", RefreshCallback, this );
-        var_DelCallback( p_playlist, "intf-show", IntfShowCallback, this );
-        vlc_object_release( p_playlist );
-    }
-}
-//---------------------------------------------------------------------------
-bool VlcProc::EventProc( Event *evt )
-{
-    switch( evt->GetMessage() )
-    {
-        case VLC_STREAMPOS:
-            MoveStream( evt->GetParam2() );
-            return true;
-
-        case VLC_VOLUME_CHANGE:
-            ChangeVolume( evt->GetParam1(), evt->GetParam2() );
-            return true;
-
-        case VLC_FULLSCREEN:
-            FullScreen();
-            return true;
-
-        case VLC_HIDE:
-            for( list<SkinWindow *>::const_iterator win =
-                    p_intf->p_sys->p_theme->WindowList.begin();
-                 win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-            {
-                (*win)->OnStartThemeVisible = !(*win)->IsHidden();
-            }
-            p_intf->p_sys->i_close_status = (int)evt->GetParam1();
-            OSAPI_PostMessage( NULL, WINDOW_CLOSE, 1, 0 );
-            return true;
-
-        case VLC_SHOW:
-            for( list<SkinWindow *>::const_iterator win =
-                    p_intf->p_sys->p_theme->WindowList.begin();
-                 win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-            {
-                if( (*win)->OnStartThemeVisible )
-                    OSAPI_PostMessage( (*win), WINDOW_OPEN, 1, 0 );
-            }
-            p_intf->p_sys->b_all_win_closed = false;
-            return true;
-
-        case VLC_OPEN:
-            p_intf->p_sys->p_dialogs->ShowOpen( true );
-            InterfaceRefresh();
-            return true;
-
-        case VLC_NET:
-            p_intf->p_sys->p_dialogs->ShowNet();
-            InterfaceRefresh();
-            return true;
-
-        case VLC_LOAD_SKIN:
-            LoadSkin();
-            return true;
-
-        case VLC_ON_TOP:
-            for( list<SkinWindow *>::const_iterator win =
-                    p_intf->p_sys->p_theme->WindowList.begin();
-                win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-            {
-                (*win)->ToggleOnTop();
-            }
-            // Set the indicator to the new state
-            p_intf->p_sys->b_on_top = !p_intf->p_sys->b_on_top;
-            return true;
-
-        case VLC_DROP:
-            DropFile( evt->GetParam1(), evt->GetParam2() );
-            return true;
-
-        case VLC_PLAY:
-            PlayStream();
-            return true;
-
-        case VLC_PAUSE:
-            PauseStream();
-            return true;
-
-        case VLC_STOP:
-            StopStream();
-            return true;
-
-        case VLC_NEXT:
-            NextStream();
-            return true;
-
-        case VLC_PREV:
-            PrevStream();
-            return true;
-
-        case VLC_SLOWER:
-            SlowStream();
-            return true;
-
-        case VLC_FASTER:
-            FastStream();
-            return true;
-
-        case VLC_PLAYLIST_ADD_FILE:
-            p_intf->p_sys->p_dialogs->ShowOpen( false );
-            InterfaceRefresh();
-            return true;
-
-        case VLC_LOG_SHOW:
-            p_intf->p_sys->p_dialogs->ShowMessages();
-            return true;
-
-        case VLC_PREFS_SHOW:
-            p_intf->p_sys->p_dialogs->ShowPrefs();
-            return true;
-
-        case VLC_INFO_SHOW:
-            p_intf->p_sys->p_dialogs->ShowFileInfo();
-            return true;
-
-        case VLC_INTF_REFRESH:
-            InterfaceRefresh();
-            return true;
-
-        case VLC_TEST_ALL_CLOSED:
-            return EventProcEnd();
-
-        case VLC_QUIT:
-            return false;
-
-        case VLC_CHANGE_TRAY:
-            p_intf->p_sys->p_theme->ChangeTray();
-            return true;
-
-        case VLC_CHANGE_TASKBAR:
-            p_intf->p_sys->p_theme->ChangeTaskbar();
-            return true;
-
-        default:
-            return true;
-    }
-}
-//---------------------------------------------------------------------------
-bool VlcProc::EventProcEnd()
-{
-    if( p_intf->p_sys->b_all_win_closed )
-        return true;
-
-    list<SkinWindow *>::const_iterator win;
-
-    // If a window has been closed, test if all are closed !
-    for( win = p_intf->p_sys->p_theme->WindowList.begin();
-         win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-    {
-        if( !(*win)->IsHidden() )   // Not all windows closed
-        {
-            return true;
-        }
-    }
-
-    // All window are closed
-    switch( p_intf->p_sys->i_close_status )
-    {
-        case VLC_QUIT:
-            // Save config before exiting
-            p_intf->p_sys->p_theme->SaveConfig();
-            break;
-    }
-
-    // Send specified event
-    OSAPI_PostMessage( NULL, p_intf->p_sys->i_close_status, 0, 0 );
-
-    // Reset values
-    p_intf->p_sys->i_close_status = VLC_NOTHING;
-    p_intf->p_sys->b_all_win_closed = true;
-
-    // Return true
-    return true;
-}
-//---------------------------------------------------------------------------
-bool VlcProc::IsClosing()
-{
-    if( p_intf->b_die && p_intf->p_sys->i_close_status != VLC_QUIT )
-    {
-        p_intf->p_sys->i_close_status = VLC_QUIT;
-        OSAPI_PostMessage( NULL, VLC_HIDE, VLC_QUIT, 0 );
-    }
-    return true;
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// Private methods
-//---------------------------------------------------------------------------
-
-// Refresh callback
-int VlcProc::RefreshCallback( vlc_object_t *p_this, const char *psz_variable,
-        vlc_value_t old_val, vlc_value_t new_val, void *param )
-{
-    ( (VlcProc*)param )->InterfaceRefresh();
-    return VLC_SUCCESS;
-}
-
-// Interface show/hide callback
-int VlcProc::IntfShowCallback( vlc_object_t *p_this, const char *psz_variable,
-        vlc_value_t old_val, vlc_value_t new_val, void *param )
-{
-    if( new_val.b_bool == VLC_TRUE )
-    {
-        OSAPI_PostMessage( NULL, VLC_SHOW, 1, 0 );
-    }
-    else
-    {
-        OSAPI_PostMessage( NULL, VLC_HIDE, 1, 0 );
-    }
-    return VLC_SUCCESS;
-}
-
-void VlcProc::InterfaceRefresh()
-{
-    // Shortcut pointers
-    intf_sys_t  *Sys      = p_intf->p_sys;
-    Theme       *Thema    = Sys->p_theme;
-    playlist_t  *PlayList = Sys->p_playlist;
-
-    // Refresh
-    if( PlayList != NULL )
-    {
-        vlc_mutex_lock( &PlayList->object_lock );
-
-        // Refresh stream control controls ! :)
-        switch( PlayList->i_status )
-        {
-            case PLAYLIST_STOPPED:
-                EnabledEvent( "time", false );
-                EnabledEvent( "stop", false );
-                EnabledEvent( "play", true );
-                EnabledEvent( "pause", false );
-                break;
-            case PLAYLIST_RUNNING:
-                EnabledEvent( "time", true );
-                EnabledEvent( "stop", true );
-                EnabledEvent( "play", false );
-                EnabledEvent( "pause", true );
-                break;
-            case PLAYLIST_PAUSED:
-                EnabledEvent( "time", true );
-                EnabledEvent( "stop", true );
-                EnabledEvent( "play", true );
-                EnabledEvent( "pause", false );
-                break;
-        }
-
-        // Refresh next and prev buttons
-        if( PlayList->i_index == 0 || PlayList->i_size == 1 )
-            EnabledEvent( "prev", false );
-        else
-            EnabledEvent( "prev", true );
-
-        if( PlayList->i_index == PlayList->i_size - 1 || PlayList->i_size == 1 )
-            EnabledEvent( "next", false );
-        else
-            EnabledEvent( "next", true );
-
-        // Update file name
-        if( PlayList->i_index >= 0 && PlayList->i_index != Sys->i_index )
-        {
-            string long_name = PlayList->pp_items[PlayList->i_index]->input.psz_name;
-            int pos = long_name.rfind( DIRECTORY_SEPARATOR, long_name.size() );
-
-            // Complete file name
-            Thema->EvtBank->Get( "file_name" )->PostTextMessage(
-                PlayList->pp_items[PlayList->i_index]->input.psz_name );
-            // File name without path
-            Thema->EvtBank->Get( "title" )->PostTextMessage(
-                PlayList->pp_items[PlayList->i_index]->input.psz_name + pos + 1 );
-        }
-
-        // Update playlists
-        if( PlayList->i_index != Sys->i_index ||
-            PlayList->i_size != Sys->i_size )
-        {
-            Thema->EvtBank->Get( "playlist_refresh" )->PostSynchroMessage();
-            Sys->i_size  = PlayList->i_size;
-            Sys->i_index = PlayList->i_index;
-        }
-
-        vlc_mutex_unlock( &PlayList->object_lock );
-    }
-    else
-    {
-        EnabledEvent( "time", false );
-        EnabledEvent( "stop",  false );
-        EnabledEvent( "play",  false );
-        EnabledEvent( "pause", false );
-        EnabledEvent( "prev",  false );
-        EnabledEvent( "next",  false );
-
-        // Update playlists
-        if( Sys->i_size > 0 )
-        {
-            Thema->EvtBank->Get( "playlist_refresh" )->PostSynchroMessage();
-            Sys->i_size  = 0;
-        }
-    }
-}
-//---------------------------------------------------------------------------
-void VlcProc::EnabledEvent( string type, bool state )
-{
-    OSAPI_PostMessage( NULL, CTRL_ENABLED, (unsigned int)
-        p_intf->p_sys->p_theme->EvtBank->Get( type ), (int)state );
-
-    if( !state )
-    {
-        OSAPI_PostMessage( NULL, CTRL_SYNCHRO, (unsigned int)
-            p_intf->p_sys->p_theme->EvtBank->Get( type ), (int)false );
-    }
-}
-//---------------------------------------------------------------------------
-
-
-//---------------------------------------------------------------------------
-// Common VLC procedures
-//---------------------------------------------------------------------------
-void VlcProc::LoadSkin()
-{
-    if( p_intf->p_sys->p_new_theme_file == NULL )
-    {
-        p_intf->p_sys->p_dialogs->ShowOpenSkin( 0 /*none blocking*/ );
-    }
-    else
-    {
-        // Place a new theme in the global structure, because it will
-        // be filled by the parser
-        // We save the old one to restore it in case of problem
-        Theme *oldTheme = p_intf->p_sys->p_theme;
-        p_intf->p_sys->p_theme = (Theme *)new OSTheme( p_intf );
-
-        // Run the XML parser
-        ThemeLoader *Loader = new ThemeLoader( p_intf );
-        if( Loader->Load( p_intf->p_sys->p_new_theme_file ) )
-        {
-            // Everything went well
-            msg_Dbg( p_intf, "New theme successfully loaded" );
-            delete (OSTheme *)oldTheme;
-
-            // Show the theme
-            p_intf->p_sys->p_theme->InitTheme();
-            p_intf->p_sys->p_theme->ShowTheme();
-        }
-        else
-        {
-            msg_Warn( p_intf, "A problem occurred when loading the new theme,"
-                      " restoring the previous one" );
-            delete (OSTheme *)p_intf->p_sys->p_theme;
-            p_intf->p_sys->p_theme = oldTheme;
-
-            // Show the theme
-            p_intf->p_sys->p_theme->ShowTheme();
-        }
-        delete Loader;
-
-        // Uninitialize new theme
-        free( p_intf->p_sys->p_new_theme_file );
-        p_intf->p_sys->p_new_theme_file = NULL;
-
-        OSAPI_PostMessage( NULL, VLC_INTF_REFRESH, 0, (int)true );
-    }
-}
-//---------------------------------------------------------------------------
-
-void VlcProc::DropFile( unsigned int param1, long param2 )
-{
-    // Get pointer to file
-    char *FileName = (char *)param1;
-
-    // Add the new file to the playlist
-    if( p_intf->p_sys->p_playlist != NULL )
-    {
-        if( param2 == 0 )
-        {
-            // Enqueue the item
-            playlist_Add( p_intf->p_sys->p_playlist, FileName, FileName,
-                          PLAYLIST_APPEND, PLAYLIST_END );
-        }
-        else
-        {
-            // Enqueue and play the item
-            playlist_Add( p_intf->p_sys->p_playlist, FileName, FileName,
-                          PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
-        }
-    }
-
-    // VLC_DROP must be called with a pointer to a char else it will
-    // ******** SEGFAULT ********
-    // The delete is here because the processus in asynchronous
-    delete[] FileName;
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// Stream Control
-//---------------------------------------------------------------------------
-void VlcProc::PauseStream()
-{
-    if( p_intf->p_sys->p_playlist == NULL )
-        return;
-
-    playlist_Command( p_intf->p_sys->p_playlist, PLAYLIST_PAUSE, 0 );
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-void VlcProc::PlayStream()
-{
-    if( p_intf->p_sys->p_playlist == NULL )
-        return;
-
-    if( !p_intf->p_sys->p_playlist->i_size )
-    {
-        p_intf->p_sys->p_dialogs->ShowOpen( true );
-        InterfaceRefresh();
-        return;
-    }
-
-    playlist_Play( p_intf->p_sys->p_playlist );
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-void VlcProc::StopStream()
-{
-    if( p_intf->p_sys->p_playlist == NULL )
-        return;
-    playlist_Stop( p_intf->p_sys->p_playlist );
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-void VlcProc::NextStream()
-{
-    if( p_intf->p_sys->p_playlist == NULL )
-        return;
-
-    playlist_Next( p_intf->p_sys->p_playlist );
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-void VlcProc::PrevStream()
-{
-    if( p_intf->p_sys->p_playlist == NULL )
-        return;
-
-    playlist_Prev( p_intf->p_sys->p_playlist );
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-void VlcProc::SlowStream()
-{
-    input_thread_t *p_input =
-        (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
-                                           FIND_ANYWHERE );
-    if( p_input )
-    {
-        vlc_value_t val; val.b_bool = VLC_TRUE;
-
-        var_Set( p_input, "rate-slower", val );
-        vlc_object_release( p_input );
-    }
-}
-//---------------------------------------------------------------------------
-void VlcProc::FastStream()
-{
-    input_thread_t *p_input =
-        (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
-                                           FIND_ANYWHERE );
-    if( p_input )
-    {
-        vlc_value_t val; val.b_bool = VLC_TRUE;
-
-        var_Set( p_input, "rate-faster", val );
-        vlc_object_release( p_input );
-    }
-}
-//---------------------------------------------------------------------------
-void VlcProc::MoveStream( long Pos )
-{
-    if( p_intf->p_sys->p_input == NULL )
-        return;
-
-    var_SetFloat( p_intf->p_sys->p_input, "position", (double)Pos / SLIDER_RANGE );
-
-    // Refresh interface
-    InterfaceRefresh();
-}
-//---------------------------------------------------------------------------
-
-
-
-//---------------------------------------------------------------------------
-// Fullscreen
-//---------------------------------------------------------------------------
-void VlcProc::FullScreen()
-{
-    vout_thread_t *p_vout;
-
-    if( p_intf->p_sys->p_input == NULL )
-        return;
-
-    p_vout = (vout_thread_t *)vlc_object_find( p_intf->p_sys->p_input,
-                                               VLC_OBJECT_VOUT, FIND_CHILD );
-    if( p_vout == NULL )
-        return;
-
-    p_vout->i_changes |= VOUT_FULLSCREEN_CHANGE;
-    vlc_object_release( p_vout );
-}
-//---------------------------------------------------------------------------
-
-
-
-//---------------------------------------------------------------------------
-// Volume Control
-//---------------------------------------------------------------------------
-void VlcProc::ChangeVolume( unsigned int msg, long param )
-{
-    audio_volume_t volume;
-    switch( msg )
-    {
-        case VLC_VOLUME_MUTE:
-            aout_VolumeMute( p_intf, NULL );
-            break;
-        case VLC_VOLUME_UP:
-            aout_VolumeUp( p_intf, 1, NULL );
-            break;
-        case VLC_VOLUME_DOWN:
-            aout_VolumeDown( p_intf, 1, NULL );
-            break;
-        case VLC_VOLUME_SET:
-            aout_VolumeSet( p_intf, param * (AOUT_VOLUME_DEFAULT * 2) /
-                            SLIDER_RANGE );
-            break;
-    }
-    aout_VolumeGet( p_intf, &volume );
-}
-//---------------------------------------------------------------------------
diff --git a/modules/gui/skins/src/vlcproc.h b/modules/gui/skins/src/vlcproc.h
deleted file mode 100644 (file)
index 898baa6..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*****************************************************************************
- * vlcproc.h: VlcProc class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: vlcproc.h,v 1.12 2004/02/15 18:58:38 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_PROC
-#define VLC_SKIN_PROC
-
-#include "skin_common.h"
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-class VlcProc
-{
-    private:
-        intf_thread_t *p_intf;
-
-        // Vlc methods
-        void LoadSkin();
-        void DropFile( unsigned int param1, long param2 );
-        void PauseStream();
-        void PlayStream();
-        void StopStream();
-        void NextStream();
-        void PrevStream();
-        void SlowStream();
-        void FastStream();
-        void MoveStream( long Pos );
-        void FullScreen();
-        void ChangeVolume( unsigned int msg, long param );
-
-        static int RefreshCallback( vlc_object_t *p_this,
-            const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val,
-            void *param );
-        static int IntfShowCallback( vlc_object_t *p_this,
-            const char *psz_variable, vlc_value_t old_val, vlc_value_t new_val,
-            void *param );
-
-        void InterfaceRefresh();
-        void EnabledEvent( string type, bool state );
-
-    public:
-        // Constuctor
-        VlcProc( intf_thread_t *_p_intf );
-
-        // Destructor
-        ~VlcProc();
-
-        // Event procedures
-        bool EventProc( Event *evt );
-        bool EventProcEnd();
-        bool IsClosing();
-
-        // Getters
-        intf_thread_t *GetpIntf() { return p_intf; };
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/src/window.cpp b/modules/gui/skins/src/window.cpp
deleted file mode 100644 (file)
index b33a422..0000000
+++ /dev/null
@@ -1,548 +0,0 @@
-/*****************************************************************************
- * window.cpp: Window class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: window.cpp,v 1.33 2003/08/28 15:59:04 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "anchor.h"
-#include "../controls/generic.h"
-#include "window.h"
-#include "event.h"
-#include "../os_api.h"
-#include "graphics.h"
-#include "../os_graphics.h"
-#include "banks.h"
-#include "theme.h"
-#include "skin_common.h"
-#include "dialogs.h"
-
-#include <stdio.h>
-
-
-//---------------------------------------------------------------------------
-// Skinable Window
-//---------------------------------------------------------------------------
-SkinWindow::SkinWindow( intf_thread_t *_p_intf, int x, int y, bool visible,
-    int transition, int normalalpha, int movealpha, bool dragdrop )
-{
-    p_intf = _p_intf;
-
-    // Set position parameters
-    Left         = x;
-    Top          = y;
-    Width        = 0;
-    Height       = 0;
-    WindowMoving = false;
-    Moved        = false;
-
-    // Set transparency
-    Transition   = transition;
-    if( Transition < 1 )
-        Transition = 1;
-    NormalAlpha  = normalalpha;
-    MoveAlpha    = movealpha;
-    Alpha        = normalalpha;
-    StartAlpha   = 0;
-    EndAlpha     = 0;
-    StartTime    = 0;
-    EndTime      = 0;
-    Lock         = 0;
-
-    // Visible parameters
-    Image               = NULL;
-    Hidden              = true;
-    Changing            = false;
-    OnStartThemeVisible = visible;
-
-    // Drag & drop
-    DragDrop = dragdrop;
-
-    // ToolTip
-    ToolTipText = "none";
-}
-//---------------------------------------------------------------------------
-SkinWindow::~SkinWindow()
-{
-    if( Image )
-    {
-        delete Image;
-    }
-    // Destroy the controls
-    for( unsigned int i = 0; i < ControlList.size(); i++ )
-        delete ControlList[i];
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Open()
-{
-    if( !Hidden )
-        return;
-
-    Changing = true;
-
-#ifdef WIN32
-    if( Transition && IS_WINNT )
-    {
-        SetTransparency( 0 );
-        OSAPI_PostMessage( this, WINDOW_SHOW, 0, 0 );
-        Fade( NormalAlpha, Transition );
-    }
-    else
-    {
-#endif
-        OSAPI_PostMessage( this, WINDOW_SHOW, 0, 0 );
-#ifdef WIN32
-    }
-#endif
-
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Close()
-{
-    Changing = true;
-
-#ifdef WIN32
-    if( Transition && IS_WINNT )
-        Fade( 0, Transition, WINDOW_HIDE );
-    else
-#endif
-        OSAPI_PostMessage( this, WINDOW_FADE, WINDOW_HIDE, 1242 );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Show()
-{
-    Changing = false;
-    Hidden   = false;
-    OSShow( true );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Hide()
-{
-    if( Hidden )
-        return;
-
-    Changing = false;
-    Hidden   = true;
-    OSShow( false );
-    OSAPI_PostMessage( NULL, VLC_TEST_ALL_CLOSED, 0, 0 );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Fade( int To, int Time, unsigned int evt )
-{
-    // No fading effect on win9x
-#ifdef WIN32
-    if( IS_WINNT )
-    {
-        StartAlpha = Alpha;
-        EndAlpha   = To;
-        StartTime  = OSAPI_GetTime();
-        EndTime    = StartTime + Time;
-        Lock++;
-
-        OSAPI_PostMessage( this, WINDOW_FADE, evt, Lock );
-    }
-#endif
-}
-//---------------------------------------------------------------------------
-bool SkinWindow::ProcessEvent( Event *evt )
-{
-    unsigned int i;
-    unsigned int msg = evt->GetMessage();
-    unsigned int p1  = evt->GetParam1();
-    int          p2  = evt->GetParam2();
-
-    // Send event to control if necessary
-    if( msg > VLC_CONTROL )
-    {
-        for( i = 0; i < ControlList.size(); i++ )
-            ControlList[i]->GenericProcessEvent( evt );
-        return true;
-    }
-
-    // Message processing
-    switch( msg )
-    {
-        case WINDOW_FADE:
-            if( Lock == p2 && ChangeAlpha( OSAPI_GetTime() ) )
-            {
-                OSAPI_PostMessage( this, WINDOW_FADE, p1, p2 );
-            }
-            else
-            {
-                OSAPI_PostMessage( this, p1, 0, 0 );
-            }
-            return true;
-
-        case WINDOW_MOVE:
-            WindowManualMoveInit();
-            WindowMoving = true;
-            if( MoveAlpha )
-                Fade( MoveAlpha, 100 );
-            return true;
-
-        case WINDOW_OPEN:
-            switch( p1 )
-            {
-                case 0:
-                    Close();
-                    break;
-                case 1:
-                    Open();
-                    break;
-                case 2:
-                    if( Hidden )
-                        Open();
-                    else
-                        Close();
-                    break;
-            }
-            return true;
-
-        case WINDOW_CLOSE:
-            switch( p1 )
-            {
-                case 0:
-                    Open();
-                    break;
-                case 1:
-                    Close();
-                    break;
-                case 2:
-                    if( Hidden )
-                        Open();
-                    else
-                        Close();
-                    break;
-            }
-            return true;
-
-        case WINDOW_SHOW:
-            Show();
-            return true;
-
-        case WINDOW_HIDE:
-            Hide();
-            return true;
-
-        case WINDOW_LEAVE:
-            MouseMove( -1, -1, 0 );
-            return true;
-
-        case WINDOW_REFRESH:
-            RefreshAll();
-            return true;
-
-        default:
-            // OS specific messages processing
-            return ProcessOSEvent( evt );
-    }
-}
-//---------------------------------------------------------------------------
-bool SkinWindow::ChangeAlpha( int time )
-{
-#ifdef WIN32
-    if( IS_WINNT )
-    {
-        if( time >= EndTime )
-        {
-            if( Lock )
-            {
-                SetTransparency( EndAlpha );
-                Lock = 0;
-            }
-            return false;
-        }
-
-        int NewAlpha = StartAlpha + (EndAlpha - StartAlpha) * (time - StartTime)
-            / (EndTime - StartTime);
-        if( NewAlpha != Alpha )
-            SetTransparency( NewAlpha );
-        if( NewAlpha == EndAlpha )
-        {
-            Lock = 0;
-            return false;
-        }
-    }
-#endif
-    return true;
-}
-//---------------------------------------------------------------------------
-void SkinWindow::RefreshImage( int x, int y, int w, int h )
-{
-    unsigned int i;
-
-    // Create Bitmap Buffer
-    Graphics *Buffer = (Graphics *)new OSGraphics( p_intf, w, h, this );
-//    Graphics *Buffer = (Graphics *)new OSGraphics( w, h, this );
-
-    // Draw every control
-    for( i = 0; i < ControlList.size(); i++ )
-        ControlList[i]->Draw( x, y, w, h, Buffer );
-
-    // Copy buffer in Image
-    Image->CopyFrom( x, y, w, h, Buffer, 0, 0, SRC_COPY );
-
-    // Free memory
-    delete Buffer;
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Refresh( int x, int y, int w, int h )
-{
-    if( Image == NULL )
-        return;
-
-    // Refresh buffer image
-    RefreshImage( x, y, w, h );
-
-    if( Hidden )
-        return;
-
-    // And copy buffer to window
-    RefreshFromImage( x, y, w, h );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::RefreshAll()
-{
-    Refresh( 0, 0, Width, Height );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::MouseDown( int x, int y, int button )
-{
-    // Checking event in controls
-    for( int i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->MouseDown( x, y, button ) )
-        {
-            msg_Dbg( p_intf, "Mouse down (ID=%s)",
-                     ControlList[i]->GetId().c_str() );
-            break;
-        }
-    }
-}
-//---------------------------------------------------------------------------
-void SkinWindow::MouseMove( int x, int y, int button  )
-{
-    int i;
-
-    // Move window if selected !
-    if( WindowMoving )
-    {
-        WindowManualMove();
-    }
-
-    // Checking event in controls
-    for( i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->MouseMove( x, y, button ) )
-        {
-            break;
-        }
-    }
-
-    // Checking help text
-    for( i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() && ControlList[i]->MouseOver( x, y ) )
-        {
-            ControlList[i]->SendNewHelpText();
-            break;
-        }
-    }
-
-    // If help text not found, change it to ""
-    if( i == -1 )
-    {
-        p_intf->p_sys->p_theme->EvtBank->Get( "help" )
-            ->PostTextMessage( " " );
-    }
-
-    // Checking for change in Tool Tip
-    for( i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->ToolTipTest( x, y ) )
-        {
-            break;
-        }
-    }
-
-    // If no change, delete tooltip text
-    if( i == -1 )
-        ChangeToolTipText( "none" );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::MouseUp( int x, int y, int button )
-{
-    int i;
-
-    // Move window if selected !
-    if( WindowMoving )
-    {
-        if( MoveAlpha )
-            Fade( NormalAlpha, 100 );
-
-        // Check for magnetism
-        p_intf->p_sys->p_theme->CheckAnchors();
-
-        WindowMoving = false;
-    }
-
-    // Checking event in controls
-    for( i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->MouseUp( x, y, button ) )
-        {
-            msg_Dbg( p_intf, "Mouse up (ID=%s)",
-                     ControlList[i]->GetId().c_str() );
-            break;
-        }
-    }
-
-    if( i < 0 )
-    {
-        p_intf->p_sys->p_dialogs->ShowPopup( button == MOUSE_RIGHT );
-    }
-}
-//---------------------------------------------------------------------------
-void SkinWindow::MouseDblClick( int x, int y, int button )
-{
-    int i;
-
-    // Checking event in controls
-    for( i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->MouseDblClick( x, y, button ) )
-        {
-            msg_Dbg( p_intf, "Double click (ID=%s)",
-                     ControlList[i]->GetId().c_str() );
-        }
-    }
-}
-//---------------------------------------------------------------------------
-void SkinWindow::MouseScroll( int x, int y, int direction )
-{
-    // Checking event in controls
-    for( int i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->MouseScroll( x, y, direction ) )
-        {
-            break;
-        }
-    } 
-    
-    // Checking for change in Tool Tip
-    for( int i = ControlList.size() - 1; i >= 0; i-- )
-    {
-        if( ControlList[i]->IsVisible() &&
-            ControlList[i]->ToolTipTest( x, y ) )
-        {
-            break;
-        }
-    }
-
-}
-//---------------------------------------------------------------------------
-void SkinWindow::Init()
-{
-    // Get size of window
-    ReSize();
-
-    // Refresh Image buffer
-    RefreshImage( 0, 0, Width, Height );
-
-    // Move window as it hasn't been moved yet
-    Move( Left, Top );
-}
-//---------------------------------------------------------------------------
-void SkinWindow::ReSize()
-{
-    // Initialization
-    unsigned int i;
-    int w    = 0;
-    int h    = 0;
-    int MinX = 10000000;
-    int MinY = 10000000;
-
-    // Search size of window and negative values to move all
-    for( i = 0; i < ControlList.size(); i++ )
-    {
-#define min(a,b) ((a)<(b))?(a):(b)
-#define max(a,b) ((a)>(b))?(a):(b)
-        w = max( w, ControlList[i]->GetLeft() + ControlList[i]->GetWidth() );
-        h = max( h, ControlList[i]->GetTop() + ControlList[i]->GetHeight() );
-        MinX = min( MinX, ControlList[i]->GetLeft() );
-        MinY = min( MinY, ControlList[i]->GetTop() );
-#undef max
-#undef min
-    }
-
-    // Correct values
-    w = w - MinX;
-    h = h - MinY;
-    if( w <= 0 )
-        w = 1;
-    if( h <= 0 )
-        h = 1;
-
-    // Move window and controls !
-    if( MinX != 0 || MinY != 0 )
-    {
-        Move( Left + MinX, Top + MinY );
-        for( i = 0; i < ControlList.size(); i++ )
-            ControlList[i]->MoveRelative( -MinX, -MinY );
-    }
-
-    // Create buffer image for repainting if size has changed
-    if( w != Width || h != Height )
-    {
-        // Change image buffer
-        if( Image != NULL )
-            delete (OSGraphics *)Image;
-        Image = (Graphics *)new OSGraphics( p_intf, w, h, this );
-
-        Size( w, h );
-    }
-
-}
-//---------------------------------------------------------------------------
-void SkinWindow::GetSize( int &w, int &h )
-{
-    w = Width;
-    h = Height;
-}
-//---------------------------------------------------------------------------
-void SkinWindow::GetPos( int &x, int &y )
-{
-    x = Left;
-    y = Top;
-}
-//---------------------------------------------------------------------------
-
diff --git a/modules/gui/skins/src/window.h b/modules/gui/skins/src/window.h
deleted file mode 100644 (file)
index b6293e8..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*****************************************************************************
- * window.h: Window class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: window.h,v 1.7 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_WIN
-#define VLC_SKIN_WIN
-
-//--- GENERAL ---------------------------------------------------------------
-#include <list>
-#include <string>
-#include <vector>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Graphics;
-class GenericControl;
-class Anchor;
-class Event;
-
-//---------------------------------------------------------------------------
-// Constants for scrolling
-#define MOUSE_SCROLL_UP 0
-#define MOUSE_SCROLL_DOWN 1
-
-//---------------------------------------------------------------------------
-class SkinWindow
-{
-    protected:
-        // Interface thread
-        intf_thread_t *p_intf;
-
-        // Position parmaters
-        int  Left;
-        int  Top;
-        int  Width;
-        int  Height;
-
-        // General parameters
-        Graphics *Image;
-        int  Transition;
-        int  MoveAlpha;
-        int  NormalAlpha;
-        int  Alpha;
-        bool WindowMoving;
-        bool Hidden;
-        bool Changing;
-
-        // Fading transition;
-        int StartAlpha;
-        int EndAlpha;
-        int StartTime;
-        int EndTime;
-        int Lock;
-
-        // Tooltip
-        string ToolTipText;
-
-        // Drag & drop
-        bool DragDrop;
-
-    public:
-        // Controls
-        vector<GenericControl *> ControlList;
-
-        // Constructors
-        SkinWindow( intf_thread_t *_p_intf, int x, int y, bool visible,
-            int transition, int normalalpha, int movealpha, bool dragdrop );
-
-        // Destructors
-        virtual ~SkinWindow();
-
-        // Event processing
-        bool ProcessEvent( Event *evt );
-        virtual bool ProcessOSEvent( Event *evt ) = 0;
-
-        // Mouse events
-        void MouseUp(       int x, int y, int nutton );
-        void MouseDown(     int x, int y, int button );
-        void MouseMove(     int x, int y, int button );
-        void MouseDblClick( int x, int y, int button );
-        void SkinWindow::MouseScroll( int x, int y, int direction );
-
-        // Window graphic aspect
-        bool OnStartThemeVisible;
-        void Show();
-        void Hide();
-        void Open();
-        void Close();
-        virtual void ToggleOnTop() {}
-
-        void RefreshAll();
-        void Refresh( int x, int y, int w, int h );
-        void RefreshImage( int x, int y, int w, int h );
-        virtual void RefreshFromImage( int x, int y, int w, int h ) = 0;
-
-        void Fade( int To, int Time = 1000, unsigned int evt = 0 );
-        bool IsHidden() { return Hidden; };
-
-        virtual void OSShow( bool show ) = 0;
-        virtual void SetTransparency( int Value = -1 ) = 0;
-        virtual void WindowManualMove() = 0;
-        virtual void WindowManualMoveInit() = 0;
-
-        // Window methods
-        void Init();
-        void ReSize();
-        void GetSize( int &w, int &h );
-        void GetPos(  int &x, int &y );
-        virtual void Move( int left, int top ) = 0;
-        virtual void Size( int width, int height ) = 0;
-
-        // Fading transition
-        bool ChangeAlpha( int time );
-        void Init( int start, int end, int time );
-
-        // Texts
-        virtual void ChangeToolTipText( string text ) = 0;
-
-        // Magnetic Anchors
-        list<Anchor *> AnchorList;
-        bool Moved;
-
-        // Get the interface thread
-        intf_thread_t *GetIntf()    { return p_intf; }
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_api.cpp b/modules/gui/skins/win32/win32_api.cpp
deleted file mode 100644 (file)
index 6598ddf..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-/*****************************************************************************
- * win32_api.cpp: Various win32-specific functions
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_api.cpp,v 1.5 2003/06/04 16:03:33 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include <vlc/intf.h>
-#include "../src/skin_common.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../os_api.h"
-#include "../src/event.h"         // for MAX_PARAM_SIZE
-
-extern intf_thread_t *g_pIntf;  // ugly, but it's not my fault ;)
-
-//---------------------------------------------------------------------------
-// Event API
-//---------------------------------------------------------------------------
-void OSAPI_SendMessage( SkinWindow *win, unsigned int message, unsigned int param1,
-                        long param2 )
-{
-    if( win == NULL )
-        SendMessage( NULL, message, param1, param2 );
-    else
-        SendMessage( ( (Win32Window *)win )->GetHandle(), message, param1,
-                     param2 );
-}
-//---------------------------------------------------------------------------
-void OSAPI_PostMessage( SkinWindow *win, unsigned int message, unsigned int param1,
-                        long param2 )
-{
-    if( win == NULL )
-        PostThreadMessage( g_pIntf->p_sys->dwThreadId, message, param1,
-                           param2 );
-    else
-        PostMessage( ( (Win32Window *)win )->GetHandle(), message, param1,
-                     param2 );
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// Graphic API
-//---------------------------------------------------------------------------
-int OSAPI_GetNonTransparentColor( int c )
-{
-    // Get desktop device context
-    HDC DeskDC = GetWindowDC( GetDesktopWindow() );
-
-    // If color is black or color is same as black wether pixel color depth
-    if( c == 0 || SetPixel( DeskDC, 0, 0, c ) == 0 )
-    {
-        if( GetDeviceCaps( DeskDC, BITSPIXEL ) < 24 )
-            c = RGB(8, 0, 0);
-        else
-            c = RGB(1, 0, 0);
-    }
-    ReleaseDC( GetDesktopWindow(), DeskDC );
-    return c;
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// General
-//---------------------------------------------------------------------------
-int OSAPI_GetTime()
-{
-    return GetTickCount();
-}
-//---------------------------------------------------------------------------
-void OSAPI_GetScreenSize( int &w, int &h )
-{
-    w = GetSystemMetrics(SM_CXSCREEN);
-    h = GetSystemMetrics(SM_CYSCREEN);
-}
-//---------------------------------------------------------------------------
-void OSAPI_GetMousePos( int &x, int &y )
-{
-    LPPOINT MousePos = new POINT;
-    GetCursorPos( MousePos );
-    x = MousePos->x;
-    y = MousePos->y;
-    delete MousePos;
-}
-//---------------------------------------------------------------------------
-string OSAPI_GetWindowTitle( SkinWindow *win )
-{
-    char *buffer = new char[MAX_PARAM_SIZE];
-    GetWindowText( ((Win32Window *)win)->GetHandle(), buffer, MAX_PARAM_SIZE );
-    string Title = buffer;
-    delete buffer;
-
-    return Title;
-}
-//---------------------------------------------------------------------------
-bool OSAPI_RmDir( string path )
-{
-    WIN32_FIND_DATA find;
-    string File;
-    string FindFiles = path + "\\*.*";
-    HANDLE handle    = FindFirstFile( (char *)FindFiles.c_str(), &find );
-
-    while( handle != INVALID_HANDLE_VALUE )
-    {
-        // If file is neither "." nor ".."
-        if( strcmp( find.cFileName, "." ) && strcmp( find.cFileName, ".." ) )
-        {
-            // Set file name
-            File = path + "\\" + (string)find.cFileName;
-
-            // If file is a directory, delete it recursively
-            if( find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
-            {
-                OSAPI_RmDir( File );
-            }
-            // Else, it is a file so simply delete it
-            else
-            {
-                DeleteFile( (char *)File.c_str() );
-            }
-        }
-
-        // If no more file in directory, exit while
-        if( !FindNextFile( handle, &find ) )
-            break;
-    }
-
-    // Now directory is empty so can be removed
-    FindClose( handle );
-    RemoveDirectory( (char *)path.c_str() );
-
-    return true;
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_bitmap.cpp b/modules/gui/skins/win32/win32_bitmap.cpp
deleted file mode 100644 (file)
index 8d0e8b1..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/*****************************************************************************
- * win32_bitmap.cpp: Win32 implementation of the Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_bitmap.cpp,v 1.6 2003/04/29 12:54:57 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- WIN32 -----------------------------------------------------------------
-#define WINVER  0x0500
-#include <windows.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/graphics.h"
-#include "win32_graphics.h"
-#include "../src/bitmap.h"
-#include "win32_bitmap.h"
-#include "../src/skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-//   Win32Bitmap
-//---------------------------------------------------------------------------
-Win32Bitmap::Win32Bitmap( intf_thread_t *p_intf, string FileName, int AColor )
-    : Bitmap( p_intf, FileName, AColor )
-{
-    HBITMAP HBitmap;
-    HBITMAP HBuf;
-    BITMAP  Bmp;
-    HDC     bufDC;
-
-    // Create image from file if it exists
-    HBitmap = (HBITMAP) LoadImage( NULL, FileName.c_str(), IMAGE_BITMAP,
-                                   0, 0, LR_LOADFROMFILE );
-    if( HBitmap == NULL )
-    {
-        if( FileName != "" )
-            msg_Warn( p_intf, "Couldn't load bitmap: %s", FileName.c_str() );
-
-        HBitmap = CreateBitmap( 0, 0, 1, 32, NULL );
-    }
-
-    // Create device context
-    bmpDC   = CreateCompatibleDC( NULL );
-    SelectObject( bmpDC, HBitmap );
-
-    // Get size of image
-    GetObject( HBitmap, sizeof( Bmp ), &Bmp );
-    Width  = Bmp.bmWidth;
-    Height = Bmp.bmHeight;
-
-    // If alpha color is not 0, then change 0 color to non black color to avoid
-    // window transparency
-    if( (int)AlphaColor != OSAPI_GetNonTransparentColor( 0 ) )
-    {
-        bufDC = CreateCompatibleDC( bmpDC );
-        HBuf = CreateCompatibleBitmap( bmpDC, Width, Height );
-        SelectObject( bufDC, HBuf );
-
-        LPRECT r = new RECT;
-        HBRUSH Brush = CreateSolidBrush( OSAPI_GetNonTransparentColor( 0 ) );
-        r->left   = 0;
-        r->top    = 0;
-        r->right  = Width;
-        r->bottom = Height;
-        FillRect( bufDC, r, Brush );
-        DeleteObject( Brush );
-        delete r;
-
-        if( p_intf->p_sys->TransparentBlt && IS_WINNT )
-        {
-            // This function contains a memory leak on win95/win98
-            p_intf->p_sys->TransparentBlt( bufDC, 0, 0, Width, Height,
-                                           bmpDC, 0, 0, Width, Height, 0 );
-        }
-        else
-        {
-            BitBlt( bufDC, 0, 0, Width, Height, bmpDC, 0, 0, SRCCOPY );
-        }
-
-        BitBlt( bmpDC, 0, 0, Width, Height, bufDC, 0, 0, SRCCOPY );
-        DeleteDC( bufDC );
-        DeleteObject( HBuf );
-    }
-
-    // Delete objects
-    DeleteObject( HBitmap );
-}
-//---------------------------------------------------------------------------
-Win32Bitmap::Win32Bitmap( intf_thread_t *p_intf, Graphics *from, int x, int y,
-    int w, int h, int AColor ) : Bitmap( p_intf, from, x, y, w, h, AColor )
-{
-    Width  = w;
-    Height = h;
-    AlphaColor = AColor;
-    HBITMAP HBmp;
-    HDC fromDC = ( (Win32Graphics *)from )->GetImageHandle();
-
-    // Create image
-    bmpDC = CreateCompatibleDC( fromDC );
-    HBmp  = CreateCompatibleBitmap( fromDC, Width, Height );
-    SelectObject( bmpDC, HBmp );
-    DeleteObject( HBmp );
-    BitBlt( bmpDC, 0, 0, Width, Height, fromDC, x, y, SRCCOPY );
-}
-//---------------------------------------------------------------------------
-Win32Bitmap::Win32Bitmap( intf_thread_t *p_intf, Bitmap *c )
-    : Bitmap( p_intf, c )
-{
-    HBITMAP HBuf;
-
-    // Copy attibutes
-    c->GetSize( Width, Height );
-    AlphaColor = c->GetAlphaColor();
-
-    // Copy bmpDC
-    bmpDC = CreateCompatibleDC( NULL );
-    HBuf  = CreateCompatibleBitmap( bmpDC, Width, Height );
-    SelectObject( bmpDC, HBuf );
-
-    BitBlt( bmpDC, 0, 0, Width, Height, ( (Win32Bitmap *)c )->GetBmpDC(),
-            0, 0, SRCCOPY );
-    DeleteObject( HBuf );
-}
-//---------------------------------------------------------------------------
-Win32Bitmap::~Win32Bitmap()
-{
-    DeleteDC( bmpDC );
-}
-//---------------------------------------------------------------------------
-void Win32Bitmap::DrawBitmap( int x, int y, int w, int h, int xRef, int yRef,
-                              Graphics *dest )
-{
-    HDC destDC = ( (Win32Graphics *)dest )->GetImageHandle();
-
-    if( p_intf->p_sys->TransparentBlt && IS_WINNT )
-    {
-        // This function contains a memory leak on win95/win98
-        p_intf->p_sys->TransparentBlt( destDC, xRef, yRef, w, h,
-                                       bmpDC, x, y, w, h, AlphaColor );
-    }
-    else
-    {
-        BitBlt( destDC, xRef, yRef, w, h, bmpDC, x, y, SRCCOPY );
-    }
-}
-//---------------------------------------------------------------------------
-bool Win32Bitmap::Hit( int x, int y)
-{
-    unsigned int c = GetPixel( bmpDC, x, y );
-    if( c == AlphaColor || c == CLR_INVALID )
-        return false;
-    else
-        return true;
-
-}
-//---------------------------------------------------------------------------
-int Win32Bitmap::GetBmpPixel( int x, int y )
-{
-    return GetPixel( bmpDC, x, y );
-}
-//---------------------------------------------------------------------------
-void Win32Bitmap::SetBmpPixel( int x, int y, int color )
-{
-    SetPixelV( bmpDC, x, y, color );
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_bitmap.h b/modules/gui/skins/win32/win32_bitmap.h
deleted file mode 100644 (file)
index 7d1dc3e..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*****************************************************************************
- * win32_bitmap.h: Win32 implementation of the Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_bitmap.h,v 1.2 2003/04/12 21:43:27 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_WIN32_BITMAP
-#define VLC_WIN32_BITMAP
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Bitmap;
-class Graphics;
-
-//---------------------------------------------------------------------------
-class Win32Bitmap : public Bitmap
-{
-    private:
-        HDC bmpDC;
-
-    public:
-        // Constructors
-        Win32Bitmap( intf_thread_t *p_intf, string FileName, int AColor );
-        Win32Bitmap( intf_thread_t *p_intf, Graphics *from, int x, int y,
-                     int w, int h, int AColor );
-        Win32Bitmap( intf_thread_t *p_intf, Bitmap *c );
-
-        // Destructor
-        virtual ~Win32Bitmap();
-
-        virtual void DrawBitmap( int x, int y, int w, int h, int xRef, int yRef,
-                                 Graphics *dest );
-        virtual bool Hit( int x, int y );
-
-        virtual int  GetBmpPixel( int x, int y );
-        virtual void SetBmpPixel( int x, int y, int color );
-
-        HDC GetBmpDC() { return bmpDC; }
-};
-//---------------------------------------------------------------------------
-
-#endif
-
-#endif
diff --git a/modules/gui/skins/win32/win32_dragdrop.cpp b/modules/gui/skins/win32/win32_dragdrop.cpp
deleted file mode 100644 (file)
index aacf071..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*****************************************************************************
- * win32_dragdrop.cpp: Win32 implementation of the drag & drop
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_dragdrop.cpp,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/event.h"
-#include "win32_dragdrop.h"
-
-
-
-//---------------------------------------------------------------------------
-Win32DropObject::Win32DropObject( bool playondrop ) : IDropTarget()
-{
-    References = 1;
-    PlayOnDrop = playondrop;
-}
-//---------------------------------------------------------------------------
-Win32DropObject::~Win32DropObject()
-{
-}
-//---------------------------------------------------------------------------
-void Win32DropObject::HandleDrop( HDROP HDrop )
-{
-    // Get number of files that are dropped into vlc
-    int NbFiles = DragQueryFile( (HDROP)HDrop, 0xFFFFFFFF, NULL, 0 );
-
-    // For each dropped files
-    for( int i = 0; i < NbFiles; i++ )
-    {
-        // Get the name of the file
-        int NameLength = DragQueryFile( (HDROP)HDrop, i, NULL, 0 ) + 1;
-        char *FileName = new char[NameLength];
-        DragQueryFile( (HDROP)HDrop, i, FileName, NameLength );
-
-        if( PlayOnDrop )
-        {
-            // The pointer must not be deleted here because it will be deleted
-            // in the VLC specific messages processing function
-            PostMessage( NULL, VLC_DROP, (WPARAM)FileName, 1 );
-        }
-        else
-        {
-            // The pointer must not be deleted here because it will be deleted
-            // in the VLC specific messages processing function
-            PostMessage( NULL, VLC_DROP, (WPARAM)FileName, 0 );
-        }
-    }
-
-    DragFinish( (HDROP)HDrop );
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP Win32DropObject::QueryInterface( REFIID iid, void FAR* FAR* ppv )
-{
-    // Tell other objects about our capabilities
-    if( iid == IID_IUnknown || iid == IID_IDropTarget )
-    {
-        *ppv = this;
-        AddRef();
-        return S_OK;
-    }
-    *ppv = NULL;
-    return ResultFromScode( E_NOINTERFACE );
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) Win32DropObject::AddRef()
-{
-    return ++References;
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) Win32DropObject::Release()
-{
-    if( --References == 0 )
-    {
-        delete this;
-        return 0;
-    }
-    return References;
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP Win32DropObject::DragEnter( LPDATAOBJECT pDataObj,
-    DWORD grfKeyState, POINTL pt, DWORD *pdwEffect )
-{
-    FORMATETC fmtetc;
-
-    fmtetc.cfFormat = CF_HDROP;
-    fmtetc.ptd      = NULL;
-    fmtetc.dwAspect = DVASPECT_CONTENT;
-    fmtetc.lindex   = -1;
-    fmtetc.tymed    = TYMED_HGLOBAL;
-
-    // Check that the drag source provides CF_HDROP,
-    // which is the only format we accept
-    if( pDataObj->QueryGetData( &fmtetc ) == S_OK )
-        *pdwEffect = DROPEFFECT_COPY;
-    else
-        *pdwEffect = DROPEFFECT_NONE;
-
-    return S_OK;
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP Win32DropObject::DragOver( DWORD grfKeyState, POINTL pt,
-   DWORD *pdwEffect )
-{
-    // For visual feedback
-    // TODO
-    return S_OK;
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP Win32DropObject::DragLeave()
-{
-    // Remove visual feedback
-    // TODO
-    return S_OK;
-}
-//---------------------------------------------------------------------------
-STDMETHODIMP Win32DropObject::Drop( LPDATAOBJECT pDataObj, DWORD grfKeyState,
-   POINTL pt, DWORD *pdwEffect )
-{
-    // User has dropped on us -- get the CF_HDROP data from drag source
-    FORMATETC fmtetc;
-    fmtetc.cfFormat = CF_HDROP;
-    fmtetc.ptd      = NULL;
-    fmtetc.dwAspect = DVASPECT_CONTENT;
-    fmtetc.lindex   = -1;
-    fmtetc.tymed    = TYMED_HGLOBAL;
-
-    STGMEDIUM medium;
-    HRESULT hr = pDataObj->GetData( &fmtetc, &medium );
-
-    if( !FAILED(hr) )
-    {
-        // Grab a pointer to the data
-        HGLOBAL HFiles = medium.hGlobal;
-        HDROP HDrop = (HDROP)GlobalLock( HFiles );
-
-        // Notify the Form of the drop
-        HandleDrop( HDrop );
-
-        // Release the pointer to the memory
-        GlobalUnlock( HFiles );
-//        ReleaseStgMedium( &medium );
-    }
-    else
-    {
-        *pdwEffect = DROPEFFECT_NONE;
-        return hr;
-    }
-    return S_OK;
-}
-
-#endif
diff --git a/modules/gui/skins/win32/win32_dragdrop.h b/modules/gui/skins/win32/win32_dragdrop.h
deleted file mode 100644 (file)
index eae339b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*****************************************************************************
- * win32_dragdrop.h: Win32 implementation of the drag & drop
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_dragdrop.h,v 1.3 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_SKIN_WIN32_DRAGDROP
-#define VLC_SKIN_WIN32_DRAGDROP
-
-//--- WIN32 -----------------------------------------------------------------
-#include <shellapi.h>
-#include <ole2.h>
-
-//---------------------------------------------------------------------------
-class Win32DropObject : public IDropTarget
-{
-    public:
-       Win32DropObject( bool playondrop );
-       virtual ~Win32DropObject();
-
-    protected:
-        // IUnknown methods
-        STDMETHOD(QueryInterface)( REFIID riid, void FAR* FAR* ppvObj );
-        STDMETHOD_(ULONG, AddRef)();
-        STDMETHOD_(ULONG, Release)();
-
-        // IDropTarget methods
-        STDMETHOD(DragEnter)( LPDATAOBJECT pDataObj, DWORD grfKeyState,
-                              POINTL pt, DWORD *pdwEffect );
-        STDMETHOD(DragOver)( DWORD grfKeyState, POINTL pt, DWORD *pdwEffect );
-        STDMETHOD(DragLeave)();
-        STDMETHOD(Drop)( LPDATAOBJECT pDataObj, DWORD grfKeyState,
-                         POINTL pt, DWORD *pdwEffect );
-
-    private:
-        unsigned long References;
-        bool PlayOnDrop;
-
-        // Helper function
-        void HandleDrop( HDROP HDrop );
-};
-//---------------------------------------------------------------------------
-#endif
-
-#endif
diff --git a/modules/gui/skins/win32/win32_event.cpp b/modules/gui/skins/win32/win32_event.cpp
deleted file mode 100644 (file)
index 4b29277..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*****************************************************************************
- * win32_event.cpp: Win32 implementation of the Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_event.cpp,v 1.6 2003/10/28 07:17:45 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/skin_common.h"
-
-
-
-//---------------------------------------------------------------------------
-//   VLC Event
-//---------------------------------------------------------------------------
-Win32Event::Win32Event( intf_thread_t *p_intf, string Desc, string shortcut )
-    : Event( p_intf, Desc, shortcut )
-{
-    hWnd = NULL;
-}
-//---------------------------------------------------------------------------
-Win32Event::Win32Event( intf_thread_t *p_intf, HWND hwnd, unsigned int msg,
-    unsigned int par1, long par2 ) : Event( p_intf, msg, par1, par2 )
-{
-    hWnd = hwnd;
-}
-//---------------------------------------------------------------------------
-Win32Event::Win32Event( intf_thread_t *p_intf, SkinWindow *win, unsigned int msg,
-    unsigned int par1, long par2 ) : Event( p_intf, msg, par1, par2 )
-{
-    hWnd = ( (Win32Window *)win )->GetHandle();
-}
-//---------------------------------------------------------------------------
-Win32Event::~Win32Event()
-{
-}
-//---------------------------------------------------------------------------
-bool Win32Event::SendEvent()
-{
-    if( Message != VLC_NOTHING )
-    {
-        PostMessage( hWnd, Message, Param1, Param2 );
-        if( hWnd )
-        {
-            PostSynchroMessage();
-        }
-        return true;
-    }
-
-    return true;
-
-}
-//---------------------------------------------------------------------------
-bool Win32Event::IsEqual( Event *evt )
-{
-    Win32Event *WinEvt = (Win32Event *)evt;
-    return( WinEvt->GetWindow() == hWnd   && WinEvt->GetMessage() == Message &&
-            WinEvt->GetParam1() == Param1 && WinEvt->GetParam2()  == Param2 );
-}
-//---------------------------------------------------------------------------
-void Win32Event::CreateOSEvent( string para1, string para2, string para3 )
-{
-
-    // Find Parameters
-    switch( Message )
-    {
-        case WINDOW_MOVE:
-            hWnd = GetWindowFromName( para1 );
-            break;
-
-        case WINDOW_CLOSE:
-            hWnd = GetWindowFromName( para1 );
-            break;
-
-        case WINDOW_OPEN:
-            hWnd = GetWindowFromName( para1 );
-            break;
-
-    }
-
-}
-//---------------------------------------------------------------------------
-HWND Win32Event::GetWindowFromName( string name )
-{
-    Win32Window *win = (Win32Window *)
-        p_intf->p_sys->p_theme->GetWindow( name );
-    if( win == NULL )
-        return NULL;
-    else
-        return win->GetHandle();
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_event.h b/modules/gui/skins/win32/win32_event.h
deleted file mode 100644 (file)
index dc4556d..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*****************************************************************************
- * win32_event.h: Win32 implementation of the Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_event.h,v 1.3 2003/04/21 21:51:16 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_SKIN_WIN32_EVENT
-#define VLC_SKIN_WIN32_EVENT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class Win32Event : Event
-{
-    private:
-        HWND GetWindowFromName( string name );
-        HWND hWnd;
-    public:
-        // Constructor
-        Win32Event( intf_thread_t *p_intf, string Desc, string shortcut );
-        Win32Event( intf_thread_t *p_intf, HWND hwnd, unsigned int msg,
-                    unsigned int par1, long par2 );
-        Win32Event( intf_thread_t *p_intf, SkinWindow *win, unsigned int msg,
-                    unsigned int par1, long par2 );
-
-        // Destructor
-        virtual ~Win32Event();
-
-        // Event sending
-        virtual bool SendEvent();
-
-        // General operations on events
-        virtual void CreateOSEvent( string para1, string para2, string para3 );
-        virtual bool IsEqual( Event *evt );
-
-        // Getters
-        HWND GetWindow()    { return hWnd; }
-};
-//---------------------------------------------------------------------------
-
-#endif
-
-#endif
diff --git a/modules/gui/skins/win32/win32_font.cpp b/modules/gui/skins/win32/win32_font.cpp
deleted file mode 100644 (file)
index 5fd6089..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*****************************************************************************
- * win32_font.cpp: Win32 implementation of the Font class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_font.cpp,v 1.4 2003/04/21 22:12:37 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/graphics.h"
-#include "win32_graphics.h"
-#include "../src/font.h"
-#include "win32_font.h"
-
-
-
-//---------------------------------------------------------------------------
-// Font object
-//---------------------------------------------------------------------------
-Win32Font::Win32Font( intf_thread_t *_p_intf, string fontname, int size,
-    int color, int weight, bool italic, bool underline )
-    : SkinFont( _p_intf, fontname, size, color, weight, italic, underline )
-{
-}
-//---------------------------------------------------------------------------
-Win32Font::~Win32Font()
-{
-}
-//---------------------------------------------------------------------------
-void Win32Font::AssignWin32Font( HDC DC )
-{
-    // Create font
-    HGDIOBJ fontObj = CreateFont(
-        -MulDiv( Size, GetDeviceCaps( DC, LOGPIXELSX ), 72 ),
-        0,
-        0,                  // angle of escapement
-        0,                  // base-line orientation angle
-        Weight,             // font weight
-        Italic,             // italic attribute flag
-        Underline,          // underline attribute flag
-        0,                  // strikeout attribute flag
-        ANSI_CHARSET,       // character set identifier
-        OUT_TT_PRECIS,      // output precision
-        0,                  // clipping precision
-        ANTIALIASED_QUALITY,      // output quality
-        0,                  // pitch and family
-        FontName.c_str()    // pointer to typeface name string
-    );
-
-    // Assign font to DC
-    SelectObject( DC, fontObj );
-
-    // Free memory
-    DeleteObject( fontObj );
-}
-//---------------------------------------------------------------------------
-void Win32Font::AssignFont( Graphics *dest )
-{
-    HDC DC = ( (Win32Graphics *)dest )->GetImageHandle();
-    AssignWin32Font( DC );
-}
-//---------------------------------------------------------------------------
-void Win32Font::GetSize( string text, int &w, int &h )
-{
-    // Get device context of screen
-    HDC DeskDC = GetWindowDC( GetDesktopWindow() );
-
-    // Get size
-    LPRECT rect = new RECT;;
-    rect->left   = 0;
-    rect->top    = 0;
-    AssignWin32Font( DeskDC );
-    DrawText( DeskDC, text.c_str(), text.length(), rect, DT_CALCRECT);
-    w = rect->right - rect->left;
-    h = rect->bottom - rect->top;
-
-    // Release screen device context
-    ReleaseDC( GetDesktopWindow(), DeskDC );
-}
-//---------------------------------------------------------------------------
-void Win32Font::GenericPrint( Graphics *dest, string text, int x, int y,
-                                 int w, int h, int align, int color )
-{
-    HDC DC = ( (Win32Graphics *)dest )->GetImageHandle();
-    // Set boundaries
-    LPRECT r = new RECT;
-    r->left   = x;
-    r->top    = y;
-    r->right  = x + w;
-    r->bottom = y + h;
-
-    // Get desktop Device Context
-    SetBkMode( DC, TRANSPARENT );
-
-    // Modify desktop attributes
-    AssignFont( dest );
-
-    // Change text color
-    SetTextColor( DC, color );
-
-    // Draw text on screen
-    DrawText( DC, text.c_str(), text.length(), r, align );
-
-    // Set text color to black to avoid graphic bugs
-    SetTextColor( DC, 0 );
-
-    // Free memory
-    delete r;
-}
-
-//---------------------------------------------------------------------------
-void Win32Font::Print( Graphics *dest, string text, int x, int y, int w,
-                       int h, int align )
-{
-    GenericPrint( dest, text, x, y, w, h, align, Color );
-}
-//---------------------------------------------------------------------------
-void Win32Font::PrintColor( Graphics *dest, string text, int x, int y, int w,
-                            int h, int align, int color )
-{
-    GenericPrint( dest, text, x, y, w, h, align, color );
-}
-//---------------------------------------------------------------------------
-
-
-#endif
diff --git a/modules/gui/skins/win32/win32_font.h b/modules/gui/skins/win32/win32_font.h
deleted file mode 100644 (file)
index 5c2c18c..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*****************************************************************************
- * win32_font.h: Win32 implementation of the Font class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_font.h,v 1.3 2003/04/21 22:12:37 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_SKIN_WIN32_FONT
-#define VLC_SKIN_WIN32_FONT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Graphics;
-
-//---------------------------------------------------------------------------
-class Win32Font : SkinFont
-{
-    private:
-        // Assign font to Device Context
-        virtual void AssignFont( Graphics *dest );
-        void AssignWin32Font( HDC DC );
-
-        // Helper function
-        virtual void GenericPrint( Graphics *dest, string text, int x, int y,
-                                   int w, int h, int align, int color );
-
-    public:
-        // Constructor
-        Win32Font( intf_thread_t *_p_intf, string fontname, int size, int color,
-                   int weight, bool italic, bool underline );
-
-        // Destructor
-        virtual ~Win32Font();
-
-        // Get size of text
-        virtual void GetSize( string text, int &w, int &h );
-
-        // Draw text with boundaries
-        virtual void Print( Graphics *dest, string text, int x, int y, int w,
-                            int h, int align );
-
-        virtual void PrintColor( Graphics *dest, string text, int x, int y,
-                                 int w, int h, int align, int color );
-
-};
-//---------------------------------------------------------------------------
-
-#endif
-
-#endif
diff --git a/modules/gui/skins/win32/win32_graphics.cpp b/modules/gui/skins/win32/win32_graphics.cpp
deleted file mode 100644 (file)
index 26ea951..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/*****************************************************************************
- * win32_graphics.cpp: Win32 implementation of the Graphics and Region classes
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_graphics.cpp,v 1.7 2003/05/13 19:25:59 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/graphics.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "win32_graphics.h"
-
-
-
-//---------------------------------------------------------------------------
-// WIN32 GRAPHICS
-//---------------------------------------------------------------------------
-Win32Graphics::Win32Graphics( intf_thread_t *p_intf, int w, int h, SkinWindow *from ) : Graphics( w, h )
-{
-    HBITMAP HImage ;
-    Image          = CreateCompatibleDC( NULL );
-    if( from != NULL )
-    {
-        HDC DC = GetWindowDC( ( (Win32Window *)from )->GetHandle() );
-        HImage = CreateCompatibleBitmap( DC, w, h );
-        ReleaseDC( ( (Win32Window *)from )->GetHandle(), DC );
-    }
-    else
-    {
-        HImage = CreateCompatibleBitmap( Image, w, h );
-    }
-    SelectObject( Image, HImage );
-    DeleteObject( HImage );
-}
-//---------------------------------------------------------------------------
-Win32Graphics::~Win32Graphics()
-{
-    DeleteDC( Image );
-}
-//---------------------------------------------------------------------------
-void Win32Graphics::CopyFrom( int dx, int dy, int dw, int dh, Graphics *Src,
-                              int sx, int sy, int Flag )
-{
-    BitBlt( Image, dx, dy, dw, dh, ( (Win32Graphics *)Src )->GetImageHandle(),
-        sx, sy, Flag );
-}
-//---------------------------------------------------------------------------
-void Win32Graphics::DrawRect( int x, int y, int w, int h, int color )
-{
-    LPRECT r = new RECT;
-    HBRUSH  Brush = CreateSolidBrush( color );
-    r->left   = x;
-    r->top    = y;
-    r->right  = x + w;
-    r->bottom = y + h;
-    FillRect( Image, r, Brush );
-    DeleteObject( Brush );
-    delete r;
-}
-//---------------------------------------------------------------------------
-void Win32Graphics::SetClipRegion( SkinRegion *rgn )
-{
-    SelectClipRgn( Image, ( (Win32Region *)rgn )->GetHandle() );
-}
-//---------------------------------------------------------------------------
-void Win32Graphics::ResetClipRegion()
-{
-    HRGN rgn = CreateRectRgn( 0, 0, Width, Height );
-    SelectClipRgn( Image, rgn );
-    DeleteObject( rgn );
-}
-//---------------------------------------------------------------------------
-
-
-
-//---------------------------------------------------------------------------
-// WIN32 REGION
-//---------------------------------------------------------------------------
-Win32Region::Win32Region()
-{
-    Rgn = CreateRectRgn( 0, 0, 0, 0 );
-}
-//---------------------------------------------------------------------------
-Win32Region::Win32Region( int x, int y, int w, int h )
-{
-    Rgn = CreateRectRgn( x, y, x + w, y + h );
-}
-//---------------------------------------------------------------------------
-Win32Region::~Win32Region()
-{
-    DeleteObject( Rgn );
-}
-//---------------------------------------------------------------------------
-void Win32Region::AddPoint( int x, int y )
-{
-    AddRectangle( x, y, x + 1, y + 1 );
-}
-//---------------------------------------------------------------------------
-void Win32Region::AddRectangle( int x, int y, int w, int h )
-{
-    HRGN Buffer;
-    Buffer = CreateRectRgn( x, y, x + w, y + h );
-    CombineRgn( Rgn, Buffer, Rgn, 0x2 );
-    DeleteObject( Buffer );
-}
-//---------------------------------------------------------------------------
-void Win32Region::AddElipse( int x, int y, int w, int h )
-{
-    HRGN Buffer;
-    Buffer = CreateEllipticRgn( x, y, x + w, y + h );
-    CombineRgn( Rgn, Buffer, Rgn, 0x2 );
-    DeleteObject( Buffer );
-}
-//---------------------------------------------------------------------------
-void Win32Region::Move( int x, int y )
-{
-    OffsetRgn( Rgn, x, y );
-}
-//---------------------------------------------------------------------------
-bool Win32Region::Hit( int x, int y )
-{
-    return PtInRegion( Rgn, x, y );
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_graphics.h b/modules/gui/skins/win32/win32_graphics.h
deleted file mode 100644 (file)
index 97cef63..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*****************************************************************************
- * win32_graphics.h: Win32 implementation of the Graphics and Region classes
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_graphics.h,v 1.6 2003/05/13 19:25:59 asmax Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_SKIN_WIN32_GRAPHICS
-#define VLC_SKIN_WIN32_GRAPHICS
-
-//---------------------------------------------------------------------------
-class SkinRegion;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class Win32Graphics : public Graphics
-{
-    protected:
-        HDC Image;
-
-    public:
-        // Constructor
-        Win32Graphics( intf_thread_t *p_intf, int w, int h, SkinWindow *from = NULL );
-        // Destructor
-        virtual ~Win32Graphics();
-        // Drawing methods
-        virtual void CopyFrom( int dx, int dy, int dw, int dh, Graphics *Src,
-                              int sx, int sy, int Flag );
-        //virtual void CopyTo(  Graphics *Dest, int dx, int dy, int dw, int dh,
-        //                      int sx, int sy, int Flag );
-        virtual void DrawRect( int x, int y, int w, int h, int color );
-
-        // Clipping methods
-        virtual void SetClipRegion( SkinRegion *rgn );
-        virtual void ResetClipRegion();
-
-        // Specific win32 methods
-        HDC GetImageHandle()    { return Image; };
-};
-//---------------------------------------------------------------------------
-class Win32Region : public SkinRegion
-{
-    private:
-        HRGN Rgn;
-    public:
-        // Constructor
-        Win32Region();
-        Win32Region( int x, int y, int w, int h );
-        // Destructor
-        ~Win32Region();
-        // Modify region
-        virtual void AddPoint( int x, int y );
-        virtual void AddRectangle( int x, int y, int w, int h );
-        virtual void AddElipse( int x, int y, int w, int h );
-        virtual void Move( int x, int y );
-
-        virtual bool Hit( int x, int y );
-
-        // Specific win32 methods
-        HRGN GetHandle() { return Rgn; };
-};
-//---------------------------------------------------------------------------
-
-#endif
-
-#endif
diff --git a/modules/gui/skins/win32/win32_run.cpp b/modules/gui/skins/win32/win32_run.cpp
deleted file mode 100644 (file)
index 397a876..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*****************************************************************************
- * win32_run.cpp:
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_run.cpp,v 1.22 2003/10/23 16:00:48 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-//--- GENERAL ---------------------------------------------------------------
-#include <windows.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/banks.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/skin_common.h"
-#include "../src/vlcproc.h"
-
-//---------------------------------------------------------------------------
-// Specific method
-//---------------------------------------------------------------------------
-bool IsVLCEvent( unsigned int msg );
-
-//---------------------------------------------------------------------------
-// Win32 interface
-//---------------------------------------------------------------------------
-void OSRun( intf_thread_t *p_intf )
-{
-    VlcProc *Proc = new VlcProc( p_intf );
-    MSG msg;
-    list<SkinWindow *>::const_iterator win;
-    Event *ProcessEvent;
-    int KeyModifier = 0;
-
-    // Compute windows message list
-    while( GetMessage( &msg, NULL, 0, 0 ) )
-    {
-
-        for( win = p_intf->p_sys->p_theme->WindowList.begin();
-             win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-        {
-            if( msg.hwnd == NULL ||
-                msg.hwnd == ((Win32Window*)(*win))->GetHandle() )
-            {
-                break;
-            }
-        }
-        if( win == p_intf->p_sys->p_theme->WindowList.end() )
-        {
-//            DispatchMessage( &msg );
-//            DefWindowProc( msg.hwnd, msg.message, msg.wParam, msg.lParam );
-        }
-
-        // Translate keys
-        TranslateMessage( &msg );
-
-        // Create event
-        ProcessEvent = (Event *)new OSEvent( p_intf, msg.hwnd, msg.message,
-                                             msg.wParam, msg.lParam );
-
-        /*****************************
-        * Process keyboard shortcuts *
-        *****************************/
-        if( msg.message == WM_KEYUP )
-        {
-            msg_Err( p_intf, "Key : %i (%i)", msg.wParam, KeyModifier );
-            // If key is CTRL
-            if( msg.wParam == 17 )
-                KeyModifier = 0;
-            else if( KeyModifier == 0 )
-            {
-                p_intf->p_sys->p_theme->EvtBank->TestShortcut(
-                    msg.wParam, 0 );
-            }
-        }
-        else if( msg.message == WM_KEYDOWN )
-        {
-            // If key is control
-            if( msg.wParam == 17 )
-                KeyModifier = 2;
-            else if( KeyModifier > 0 )
-            {
-                p_intf->p_sys->p_theme->EvtBank->TestShortcut(
-                    msg.wParam, KeyModifier );
-            }
-        }
-        else if( msg.message == WM_SYSKEYDOWN )
-        {
-            // If key is ALT
-            if( msg.wParam == 18 )
-                KeyModifier = 1;
-        }
-        else if( msg.message == WM_SYSKEYUP )
-        {
-            // If key is a system key
-            KeyModifier = 0;
-        }
-
-        /************************
-        * Process timer message *
-        ************************/
-        else if( msg.message == WM_TIMER )
-        {
-            DispatchMessage( &msg );
-        }
-
-        /***********************
-        * VLC specific message *
-        ***********************/
-        else if( IsVLCEvent( msg.message ) )
-        {
-            if( !Proc->EventProc( ProcessEvent ) )
-                break;      // Exit VLC !
-        }
-
-        /**********************
-        * Broadcasted message *
-        **********************/
-        else if( msg.hwnd == NULL )
-        {
-            for( win = p_intf->p_sys->p_theme->WindowList.begin();
-                 win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-            {
-                (*win)->ProcessEvent( ProcessEvent );
-            }
-        }
-
-        /***********************
-        * Process window event *
-        ***********************/
-        else
-        {
-            DispatchMessage( &msg );
-        }
-
-        // Delete event
-        ProcessEvent->DestructParameters();
-        delete (OSEvent *)ProcessEvent;
-
-        // Check if vlc is closing
-        Proc->IsClosing();
-    }
-
-    /* Cleanup */
-    delete Proc;
-}
-//---------------------------------------------------------------------------
-bool IsVLCEvent( unsigned int msg )
-{
-    return( msg > VLC_MESSAGE && msg < VLC_WINDOW );
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_theme.cpp b/modules/gui/skins/win32/win32_theme.cpp
deleted file mode 100644 (file)
index de0a3a9..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-/*****************************************************************************
- * win32_theme.cpp: Win32 implementation of the Theme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_theme.cpp,v 1.12 2003/10/30 17:59:12 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifdef _MSC_VER
-#   define _WIN32_WINNT 0x0500
-#endif
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/banks.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/vlcproc.h"
-#include "../src/skin_common.h"
-
-
-//---------------------------------------------------------------------------
-int SkinManage( intf_thread_t *p_intf );
-
-//---------------------------------------------------------------------------
-// Refresh Timer Callback
-//---------------------------------------------------------------------------
-void CALLBACK RefreshTimer( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime )
-{
-    intf_thread_t *p_intf = (intf_thread_t *)GetWindowLongPtr( hwnd,
-        GWLP_USERDATA );
-    SkinManage( p_intf );
-}
-
-//---------------------------------------------------------------------------
-// Win32 interface
-//---------------------------------------------------------------------------
-LRESULT CALLBACK Win32Proc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
-    // Get pointer to thread info
-    intf_thread_t *p_intf = (intf_thread_t *)GetWindowLongPtr( hwnd,
-        GWLP_USERDATA );
-
-    // If doesn't exist, treat windows message normally
-    if( p_intf == NULL )
-        return DefWindowProc( hwnd, uMsg, wParam, lParam );
-
-    // Create event to dispatch in windows
-    Event *evt = (Event *)new OSEvent( p_intf, hwnd, uMsg, wParam, lParam );
-
-
-    // Find window matching with hwnd
-    list<SkinWindow *>::const_iterator win;
-    for( win = p_intf->p_sys->p_theme->WindowList.begin();
-         win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-    {
-        // If it is the correct window
-        if( hwnd == ( (Win32Window *)(*win) )->GetHandle() )
-        {
-            // Send event and check if processed
-            if( (*win)->ProcessEvent( evt ) )
-            {
-                delete (OSEvent *)evt;
-                return 0;
-            }
-            else
-            {
-                break;
-            }
-        }
-    }
-    delete (OSEvent *)evt;
-
-
-    // If Window is parent window
-    if( hwnd == ( (Win32Theme *)p_intf->p_sys->p_theme )->GetParentWindow() )
-    {
-        if( uMsg == WM_SYSCOMMAND )
-        {
-            if( (Event *)wParam != NULL )
-                ( (Event *)wParam )->SendEvent();
-            return 0;
-        }
-        else if( uMsg == WM_RBUTTONDOWN && wParam == 42 &&
-                 lParam == WM_RBUTTONDOWN )
-        {
-            int x, y;
-            OSAPI_GetMousePos( x, y );
-            TrackPopupMenu(
-                ( (Win32Theme *)p_intf->p_sys->p_theme )->GetSysMenu(),
-                0, x, y, 0, hwnd, NULL );
-        }
-    }
-
-
-    // If closing parent window
-    if( uMsg == WM_CLOSE )
-    {
-        OSAPI_PostMessage( NULL, VLC_HIDE, VLC_QUIT, 0 );
-        return 0;
-    }
-
-    // If hwnd does not match any window or message not processed
-    return DefWindowProc( hwnd, uMsg, wParam, lParam );
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// THEME
-//---------------------------------------------------------------------------
-Win32Theme::Win32Theme( intf_thread_t *_p_intf ) : Theme( _p_intf )
-{
-    // Get instance handle
-    hinst = GetModuleHandle( NULL );
-
-    // Create window class
-    WNDCLASS SkinWindow;
-
-    SkinWindow.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS;
-    SkinWindow.lpfnWndProc = (WNDPROC) Win32Proc;
-    SkinWindow.lpszClassName = "SkinWindow";
-    SkinWindow.lpszMenuName = NULL;
-    SkinWindow.cbClsExtra = 0;
-    SkinWindow.cbWndExtra = 0;
-    SkinWindow.hbrBackground = HBRUSH (COLOR_WINDOW);
-    SkinWindow.hCursor = LoadCursor( NULL , IDC_ARROW );
-    SkinWindow.hIcon = LoadIcon( hinst, "VLC_ICON" );
-    SkinWindow.hInstance = hinst;
-
-    if( !RegisterClass( &SkinWindow ) )
-    {
-        WNDCLASS wndclass;
-
-        // Check why it failed. If it's because the class already exists
-        // then fine, otherwise return with an error.
-        if( !GetClassInfo( hinst, "SkinWindow", &wndclass ) )
-        {
-            msg_Err( p_intf, "Cannot register window class" );
-            return;
-        }
-    }
-
-    // Initialize the OLE library
-    OleInitialize( NULL );
-
-    //Initialize value
-    ParentWindow = NULL;
-
-}
-//---------------------------------------------------------------------------
-Win32Theme::~Win32Theme()
-{
-    // Unregister the window class if needed
-    WNDCLASS wndclass;
-    if( GetClassInfo( hinst, "SkinWindow", &wndclass ) )
-    {
-        UnregisterClass( "SkinWindow", hinst );
-    }
-    if( GetClassInfo( hinst, "ParentWindow", &wndclass ) )
-    {
-        UnregisterClass( "ParentWindow", hinst );
-    }
-
-    // Delete tray icon if exists
-    if( ShowInTray )
-    {
-        Shell_NotifyIcon( NIM_DELETE, &TrayIcon );
-    }
-
-    // Destroy parent window
-    if( ParentWindow )
-    {
-        DestroyWindow( ParentWindow );
-    }
-
-    // Uninitialize the OLE library
-    OleUninitialize();
-}
-//---------------------------------------------------------------------------
-void Win32Theme::OnLoadTheme()
-{
-    // Create window class
-    WNDCLASS ParentClass;
-    ParentClass.style = CS_VREDRAW|CS_HREDRAW|CS_DBLCLKS;
-    ParentClass.lpfnWndProc = (WNDPROC) Win32Proc;
-    ParentClass.lpszClassName = "ParentWindow";
-    ParentClass.lpszMenuName = NULL;
-    ParentClass.cbClsExtra = 0;
-    ParentClass.cbWndExtra = 0;
-    ParentClass.hbrBackground = HBRUSH (COLOR_WINDOW);
-    ParentClass.hCursor = LoadCursor( NULL , IDC_ARROW );
-    ParentClass.hIcon = LoadIcon( hinst, "VLC_ICON" );
-    ParentClass.hInstance = hinst;
-
-    // register class and check it
-    if( !RegisterClass( &ParentClass ) )
-    {
-        WNDCLASS wndclass;
-
-        // Check why it failed. If it's because the class already exists
-        // then fine, otherwise return with an error.
-        if( !GetClassInfo( hinst, "ParentWindow", &wndclass ) )
-        {
-            msg_Err( p_intf, "Cannot register window class" );
-            return;
-        }
-    }
-
-    // Create Window
-    ParentWindow = CreateWindowEx( WS_EX_TOOLWINDOW, "ParentWindow",
-        "VLC Media Player", WS_SYSMENU, 0, 0, 0, 0, 0, 0, hinst, NULL );
-
-    // We do it this way otherwise CreateWindowEx will fail
-    // if WS_EX_LAYERED is not supported
-    SetWindowLongPtr( ParentWindow, GWL_EXSTYLE, GetWindowLong( ParentWindow,
-                      GWL_EXSTYLE ) | WS_EX_LAYERED );
-
-    // Store with it a pointer to the interface thread
-    SetWindowLongPtr( ParentWindow, GWLP_USERDATA, (LONG_PTR)p_intf );
-    ShowWindow( ParentWindow, SW_SHOW );
-
-    // System tray icon
-    TrayIcon.cbSize = sizeof( PNOTIFYICONDATA );
-    TrayIcon.hWnd = ParentWindow;
-    TrayIcon.uID = 42;
-    TrayIcon.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE;
-    TrayIcon.uCallbackMessage = WM_RBUTTONDOWN;
-    TrayIcon.hIcon = LoadIcon( hinst, "VLC_ICON" );
-    strcpy( TrayIcon.szTip, "VLC Media Player" );
-
-    // Remove default entries from system menu popup
-    SysMenu = GetSystemMenu( ParentWindow, false );
-    RemoveMenu( SysMenu, SC_RESTORE,  MF_BYCOMMAND );
-    RemoveMenu( SysMenu, SC_MOVE,     MF_BYCOMMAND );
-    RemoveMenu( SysMenu, SC_SIZE,     MF_BYCOMMAND );
-    RemoveMenu( SysMenu, SC_MINIMIZE, MF_BYCOMMAND );
-    RemoveMenu( SysMenu, SC_MAXIMIZE, MF_BYCOMMAND );
-    RemoveMenu( SysMenu, SC_CLOSE,    MF_BYCOMMAND );
-    RemoveMenu( SysMenu, 0,           MF_BYPOSITION );
-
-    // The create menu
-    CreateSystemMenu();
-
-    // Create refresh timer
-    SetTimer( ParentWindow, 42, 200, (TIMERPROC)RefreshTimer );
-}
-//---------------------------------------------------------------------------
-void Win32Theme::AddSystemMenu( string name, Event *event )
-{
-    if( name == "SEPARATOR" )
-    {
-        AppendMenu( SysMenu, MF_SEPARATOR, 0, NULL );
-    }
-    else
-    {
-        AppendMenu( SysMenu, MF_STRING, (unsigned int)event,
-                    (char *)name.c_str() );
-    }
-}
-//---------------------------------------------------------------------------
-void Win32Theme::ChangeClientWindowName( string name )
-{
-    SetWindowText( ParentWindow, name.c_str() );
-}
-//---------------------------------------------------------------------------
-void Win32Theme::AddWindow( string name, int x, int y, bool visible,
-    int fadetime, int alpha, int movealpha, bool dragdrop, bool playondrop )
-{
-    HWND hwnd;
-
-    hwnd = CreateWindowEx( WS_EX_TOOLWINDOW,
-        "SkinWindow", name.c_str(), WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT,
-        0, 0, ParentWindow, 0, hinst, NULL );
-
-    if( !hwnd )
-    {
-        msg_Err( p_intf, "CreateWindow failed" );
-        return;
-    }
-
-    // We do it this way otherwise CreateWindowEx will fail
-    // if WS_EX_LAYERED is not supported
-    SetWindowLongPtr( hwnd, GWL_EXSTYLE,
-                      GetWindowLong( hwnd, GWL_EXSTYLE ) | WS_EX_LAYERED );
-
-    SetWindowLongPtr( hwnd, GWLP_USERDATA, (LONG_PTR)p_intf );
-
-    WindowList.push_back( (SkinWindow *)new OSWindow( p_intf, hwnd, x, y,
-        visible, fadetime, alpha, movealpha, dragdrop, playondrop ) ) ;
-}
-//---------------------------------------------------------------------------
-void Win32Theme::ChangeTray()
-{
-    if( ShowInTray )
-    {
-        Shell_NotifyIcon( NIM_DELETE, &TrayIcon );
-        ShowInTray = false;
-    }
-    else
-    {
-        Shell_NotifyIcon( NIM_ADD, &TrayIcon );
-        ShowInTray = true;
-    }
-}
-//---------------------------------------------------------------------------
-void Win32Theme::ChangeTaskbar()
-{
-    if( ShowInTaskbar )
-    {
-        ShowWindow( ParentWindow, SW_HIDE );
-        SetWindowLongPtr( ParentWindow, GWL_EXSTYLE,
-                          WS_EX_LAYERED|WS_EX_TOOLWINDOW );
-        ShowWindow( ParentWindow, SW_SHOW );
-        ShowInTaskbar = false;
-    }
-    else
-    {
-        ShowWindow( ParentWindow, SW_HIDE );
-        SetWindowLongPtr( ParentWindow, GWL_EXSTYLE,
-                          WS_EX_LAYERED|WS_EX_APPWINDOW );
-        ShowWindow( ParentWindow, SW_SHOW );
-        ShowInTaskbar = true;
-    }
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_theme.h b/modules/gui/skins/win32/win32_theme.h
deleted file mode 100644 (file)
index c647227..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*****************************************************************************
- * win32_theme.h: Win32 implementation of the Theme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_theme.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_SKIN_WIN32_THEME
-#define VLC_SKIN_WIN32_THEME
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//--- WIN32 -----------------------------------------------------------------
-#include <shellapi.h>
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-class EventBank;
-class BitmapBank;
-class FontBank;
-
-//---------------------------------------------------------------------------
-class Win32Theme : public Theme
-{
-    protected:
-        // Handles
-        HINSTANCE hinst;
-        HWND ParentWindow;
-
-        // System tray icon
-        NOTIFYICONDATA TrayIcon;
-        HMENU SysMenu;
-
-    public:
-        // Constructor
-        Win32Theme( intf_thread_t *_p_intf );
-        virtual void OnLoadTheme();
-
-        // Destructor
-        virtual ~Win32Theme();
-
-        // Specific windows methods
-        HINSTANCE getInstance()       { return hinst; }
-        HWND      GetParentWindow()   { return ParentWindow; }
-
-        // !!!
-        virtual void AddWindow( string name, int x, int y, bool visible,
-            int fadetime, int alpha, int movealpha, bool dragdrop,
-            bool playondrop );
-        virtual void ChangeClientWindowName( string name );
-
-        // Taskbar && system tray
-        virtual void AddSystemMenu( string name, Event *event );
-        virtual void ChangeTray();
-        virtual void ChangeTaskbar();
-        HMENU GetSysMenu() { return SysMenu; }
-};
-//---------------------------------------------------------------------------
-
-
-#endif
-
-#endif
diff --git a/modules/gui/skins/win32/win32_window.cpp b/modules/gui/skins/win32/win32_window.cpp
deleted file mode 100644 (file)
index 8ad7590..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*****************************************************************************
- * win32_window.cpp: Win32 implementation of the Window class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_window.cpp,v 1.15 2003/10/30 17:59:12 gbazin Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-/* For TrackMouseEvent, WM_MOUSEWHEEL and GET_WHEEL_DELTA_WPARAM */
-#undef WINVER
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0500
-#define WINVER 0x0500
-
-//--- GENERAL ---------------------------------------------------------------
-//#include <math.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- WIN32 -----------------------------------------------------------------
-#include <windows.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/anchor.h"
-#include "../controls/generic.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "../src/skin_common.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/banks.h"
-
-//---------------------------------------------------------------------------
-// Fading API
-//---------------------------------------------------------------------------
-#define LWA_COLORKEY  0x00000001
-#define LWA_ALPHA     0x00000002
-
-//---------------------------------------------------------------------------
-// Skinable Window
-//---------------------------------------------------------------------------
-Win32Window::Win32Window( intf_thread_t *p_intf, HWND hwnd, int x, int y,
-    bool visible, int transition, int normalalpha, int movealpha,
-    bool dragdrop, bool playondrop )
-    : SkinWindow( p_intf, x, y, visible, transition, normalalpha, movealpha,
-              dragdrop )
-{
-    // Set handles
-    hWnd      = hwnd;
-
-    // Set position parameters
-    CursorPos = new POINT;
-    WindowPos = new POINT;
-
-    // Create Tool Tip Window
-    ToolTipWindow = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
-        WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
-        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
-        hWnd, 0, GetModuleHandle( NULL ), 0);
-
-    // Create Tool Tip infos
-    ToolTipInfo.cbSize = sizeof(TOOLINFO);
-    ToolTipInfo.uFlags = TTF_SUBCLASS|TTF_IDISHWND;
-    ToolTipInfo.hwnd = hWnd;
-    ToolTipInfo.hinst = GetModuleHandle( NULL );
-    ToolTipInfo.uId = (unsigned int)hWnd;
-    ToolTipInfo.lpszText = NULL;
-    ToolTipInfo.rect.left = ToolTipInfo.rect.top = 0;
-    ToolTipInfo.rect.right = ToolTipInfo.rect.bottom = 0;
-
-    SendMessage( ToolTipWindow, TTM_ADDTOOL, 0,
-                    (LPARAM)(LPTOOLINFO) &ToolTipInfo );
-
-    // Drag & drop
-    if( DragDrop )
-    {
-        DropTarget = (LPDROPTARGET) new Win32DropObject( playondrop );
-        // register the listview as a drop target
-        RegisterDragDrop( hWnd, DropTarget );
-    }
-}
-//---------------------------------------------------------------------------
-Win32Window::~Win32Window()
-{
-    delete CursorPos;
-    delete WindowPos;
-
-    if( ToolTipWindow != NULL )
-    {
-        DestroyWindow( ToolTipWindow );
-    }
-
-    if( hWnd != NULL )
-    {
-        if( DragDrop )
-        {
-            // Remove the listview from the list of drop targets
-            RevokeDragDrop( hWnd );
-            DropTarget->Release();
-        }
-
-        DestroyWindow( hWnd );
-    }
-}
-//---------------------------------------------------------------------------
-bool Win32Window::ProcessOSEvent( Event *evt )
-{
-    unsigned int msg = evt->GetMessage();
-    unsigned int p1  = evt->GetParam1();
-    int          p2  = evt->GetParam2();
-
-    switch( msg )
-    {
-        case WM_PAINT:
-            HDC DC;
-            PAINTSTRUCT Infos;
-            DC = BeginPaint( hWnd , &Infos );
-            EndPaint( hWnd , &Infos );
-            RefreshFromImage( 0, 0, Width, Height );
-            return true;
-
-        case WM_MOUSEMOVE:
-            TRACKMOUSEEVENT TrackEvent;
-            TrackEvent.cbSize      = sizeof( TRACKMOUSEEVENT );
-            TrackEvent.dwFlags     = TME_LEAVE;
-            TrackEvent.hwndTrack   = hWnd;
-            TrackEvent.dwHoverTime = 1;
-            TrackMouseEvent( &TrackEvent );
-            if( p1 == MK_LBUTTON )
-                MouseMove( LOWORD( p2 ), HIWORD( p2 ), 1 );
-            else if( p1 == MK_RBUTTON )
-                MouseMove( LOWORD( p2 ), HIWORD( p2 ), 2 );
-            else
-                MouseMove( LOWORD( p2 ), HIWORD( p2 ), 0 );
-
-            return true;
-
-        case WM_LBUTTONDOWN:
-            SetCapture( hWnd );
-            MouseDown( LOWORD( p2 ), HIWORD( p2 ), 1 );
-            return true;
-
-        case WM_LBUTTONUP:
-            ReleaseCapture();
-            MouseUp( LOWORD( p2 ), HIWORD( p2 ), 1 );
-            return true;
-
-        case WM_RBUTTONDOWN:
-            MouseDown( LOWORD( p2 ), HIWORD( p2 ), 2 );
-            return true;
-
-        case WM_RBUTTONUP:
-            MouseUp( LOWORD( p2 ), HIWORD( p2 ), 2 );
-            return true;
-
-        case WM_LBUTTONDBLCLK:
-            MouseDblClick( LOWORD( p2 ), HIWORD( p2 ), 1 );
-            return true;
-
-        case WM_MOUSELEAVE:
-            OSAPI_PostMessage( this, WINDOW_LEAVE, 0, 0 );
-            return true;
-
-        case WM_MOUSEWHEEL:
-            if( GET_WHEEL_DELTA_WPARAM( p1 ) > 0 )
-                MouseScroll( LOWORD( p2 ) - Left, HIWORD( p2 ) - Top,
-                    MOUSE_SCROLL_UP );
-            else if( GET_WHEEL_DELTA_WPARAM( p1 ) < 0 )
-                MouseScroll( LOWORD( p2 ) - Left, HIWORD( p2 ) - Top,
-                    MOUSE_SCROLL_DOWN );
-            return true;
-
-        default:
-            return false;
-    }
-}
-//---------------------------------------------------------------------------
-void Win32Window::ToggleOnTop()
-{
-    Win32Theme *winTheme = (Win32Theme *)p_intf->p_sys->p_theme;
-    HMENU hMenu = GetSystemMenu( winTheme->GetParentWindow(), false );
-    Event *event = p_intf->p_sys->p_theme->EvtBank->Get( "on_top" );
-
-    if( !p_intf->p_sys->b_on_top )
-    {
-        // Set the window on top
-        SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, 0, 0,
-                      SWP_NOSIZE | SWP_NOMOVE );
-        // Check the menu entry (FIXME: we shouldn't do that here...)
-        CheckMenuItem( hMenu, (unsigned int)event,
-                       MF_BYCOMMAND | MFS_CHECKED );
-    }
-    else
-    {
-        // Set the window not on top
-        SetWindowPos( hWnd, HWND_NOTOPMOST, 0, 0, 0, 0,
-                      SWP_NOSIZE | SWP_NOMOVE );
-        // Uncheck the menu entry (FIXME: we shouldn't do that here...)
-        CheckMenuItem( hMenu, (unsigned int)event,
-                       MF_BYCOMMAND | MFS_UNCHECKED );
-    }
-}
-//---------------------------------------------------------------------------
-void Win32Window::OSShow( bool show )
-{
-    if( show )
-    {
-        ShowWindow( hWnd, SW_SHOW );
-    }
-    else
-    {
-        ShowWindow( hWnd, SW_HIDE );
-    }
-}
-//---------------------------------------------------------------------------
-void Win32Window::SetTransparency( int Value )
-{
-    if( Value > -1 )
-        Alpha = Value;
-
-    if( p_intf->p_sys->SetLayeredWindowAttributes )
-        p_intf->p_sys->SetLayeredWindowAttributes( hWnd, 0, Alpha,
-                                                   LWA_ALPHA | LWA_COLORKEY );
-
-    UpdateWindow( hWnd );
-}
-//---------------------------------------------------------------------------
-void Win32Window::RefreshFromImage( int x, int y, int w, int h )
-{
-    // Initialize painting
-    HDC DC = GetWindowDC( hWnd );
-
-    // Draw image on window
-    BitBlt( DC, x, y, w, h, ( (Win32Graphics *)Image )->GetImageHandle(),
-            x, y, SRCCOPY );
-
-    // Release window device context
-    ReleaseDC( hWnd, DC );
-}
-//---------------------------------------------------------------------------
-void Win32Window::WindowManualMove()
-{
-    // Get mouse cursor position
-    LPPOINT NewPos = new POINT;
-    GetCursorPos( NewPos );
-
-    // Move window and chek for magnetism
-    p_intf->p_sys->p_theme->MoveSkinMagnet( this,
-        WindowPos->x + NewPos->x - CursorPos->x,
-        WindowPos->y + NewPos->y - CursorPos->y );
-
-    // Free memory
-    delete[] NewPos;
-}
-//---------------------------------------------------------------------------
-void Win32Window::WindowManualMoveInit()
-{
-    GetCursorPos( CursorPos );
-    WindowPos->x = Left;
-    WindowPos->y = Top;
-}
-//---------------------------------------------------------------------------
-void Win32Window::Move( int left, int top )
-{
-    Left = left;
-    Top  = top;
-    //SetWindowPos( hWnd, HWND_TOP, Left, Top, Width, Height,
-    //              SWP_NOSIZE|SWP_NOREDRAW|SWP_NOZORDER );
-    MoveWindow( hWnd, Left, Top, Width, Height, false );
-}
-//---------------------------------------------------------------------------
-void Win32Window::Size( int width, int height )
-{
-    Width  = width;
-    Height = height;
-    SetWindowPos( hWnd, HWND_TOP, Left, Top, Width, Height,
-                  SWP_NOMOVE|SWP_NOREDRAW|SWP_NOZORDER );
-}
-//---------------------------------------------------------------------------
-void Win32Window::ChangeToolTipText( string text )
-{
-    if( text == "none" )
-    {
-        if( ToolTipText != "none" )
-        {
-            ToolTipText = "none";
-            ToolTipInfo.lpszText = NULL;
-            SendMessage( ToolTipWindow, TTM_ACTIVATE, 0 , 0 );
-        }
-    }
-    else
-    {
-        if( text != ToolTipText )
-        {
-            ToolTipText = text;
-            ToolTipInfo.lpszText = (char *)ToolTipText.c_str();
-            SendMessage( ToolTipWindow, TTM_ACTIVATE, 1 , 0 );
-            SendMessage( ToolTipWindow, TTM_UPDATETIPTEXT, 0,
-                             (LPARAM)(LPTOOLINFO)&ToolTipInfo );
-        }
-    }
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/win32/win32_window.h b/modules/gui/skins/win32/win32_window.h
deleted file mode 100644 (file)
index 3754d0e..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*****************************************************************************
- * win32_window.h: Win32 implementation of the Window class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: win32_window.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef WIN32
-
-#ifndef VLC_SKIN_WIN32_WIN
-#define VLC_SKIN_WIN32_WIN
-
-//--- WIN32 -----------------------------------------------------------------
-#include <commctrl.h>
-
-//---------------------------------------------------------------------------
-class Graphics;
-class Event;
-
-//---------------------------------------------------------------------------
-class Win32Window : public SkinWindow
-{
-    private:
-        // General parameters
-        HWND hWnd;
-        LPPOINT CursorPos;
-        LPPOINT WindowPos;
-
-        // Tooltip texts
-        HWND ToolTipWindow;
-        TOOLINFO ToolTipInfo;
-
-        // Drag & drop
-        LPDROPTARGET DropTarget;
-
-    public:
-        // Cosntructors
-        Win32Window( intf_thread_t *_p_intf, HWND hwnd, int x, int y,
-            bool visible, int transition, int normalalpha, int movealpha,
-            bool dragdrop, bool playondrop );
-
-        // Destructors
-        virtual ~Win32Window();
-
-        // Event processing
-        virtual bool ProcessOSEvent( Event *evt );
-
-        // Window graphic aspect
-        virtual void ToggleOnTop();
-        virtual void OSShow( bool show );
-        virtual void RefreshFromImage( int x, int y, int w, int h );
-        virtual void SetTransparency( int Value = -1 );
-        virtual void WindowManualMove();
-        virtual void WindowManualMoveInit();
-
-        // Window methods
-        virtual void Move( int left, int top );
-        virtual void Size( int width, int height );
-
-        // Specific win32 methods
-        HWND GetHandle() {return hWnd; };
-
-        // Tooltip texts
-        virtual void ChangeToolTipText( string text );
-};
-//---------------------------------------------------------------------------
-
-#endif
-
-#endif
diff --git a/modules/gui/skins/x11/x11_api.cpp b/modules/gui/skins/x11/x11_api.cpp
deleted file mode 100644 (file)
index 564176d..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-/*****************************************************************************
- * x11_api.cpp: Various x11-specific functions
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_api.cpp,v 1.10 2003/12/22 14:32:56 sam Exp $
- *
- * Author: Cyril Deguet <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include <vlc/intf.h>
-#include "../src/skin_common.h"
-#include "../src/theme.h"
-#include "../src/window.h"
-#include "../os_theme.h"
-#include "../os_window.h"
-#include "../os_api.h"
-#include "../src/event.h"       // for MAX_PARAM_SIZE
-
-#include <unistd.h>                                       // unkink and rmdir
-#include <sys/types.h>
-#include <sys/stat.h>                                               // stat()
-#include <sys/time.h>                                       // gettimeofday()
-#include <dirent.h>                                  // opendir() and friends
-
-extern intf_thread_t *g_pIntf;  // ugly, but it's not my fault ;)
-
-//---------------------------------------------------------------------------
-// Event API
-//---------------------------------------------------------------------------
-void OSAPI_SendMessage( SkinWindow *win, unsigned int message,
-                        unsigned int param1, long param2 )
-{
-}
-//---------------------------------------------------------------------------
-void OSAPI_PostMessage( SkinWindow *win, unsigned int message,
-                        unsigned int param1, long param2 )
-{
-    XEvent event;
-
-    event.type = ClientMessage;
-    event.xclient.display = g_pIntf->p_sys->display;
-    event.xclient.send_event = 0;
-    event.xclient.message_type = 0;
-    event.xclient.format = 32;
-    event.xclient.data.l[0] = message;
-    event.xclient.data.l[1] = param1;
-    event.xclient.data.l[2] = param2;
-
-    if( win == NULL )
-    {
-        // broadcast message
-        event.xclient.window = g_pIntf->p_sys->mainWin;
-    }
-    else
-    {
-        event.xclient.window = (( X11Window *)win)->GetHandle();
-    }
-    XLOCK;
-    XSendEvent( g_pIntf->p_sys->display, event.xclient.window, False, 0,
-                &event );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// Graphic API
-//---------------------------------------------------------------------------
-int OSAPI_GetNonTransparentColor( int c )
-{
-    return ( c < 10 ? 10 : c );
-}
-//---------------------------------------------------------------------------
-
-
-
-
-//---------------------------------------------------------------------------
-// General
-//---------------------------------------------------------------------------
-int OSAPI_GetTime()
-{
-    struct timeval time;
-    gettimeofday( &time, NULL );
-    return( (time.tv_sec&0xffffff) * 1000 + time.tv_usec / 1000 );
-}
-//---------------------------------------------------------------------------
-void OSAPI_GetScreenSize( int &w, int &h )
-{
-    Display *display = g_pIntf->p_sys->display;
-    int screen = DefaultScreen( display );
-    w = DisplayWidth( display, screen );
-    h = DisplayHeight( display, screen );
-}
-//---------------------------------------------------------------------------
-void OSAPI_GetMousePos( int &x, int &y )
-{
-    Window rootReturn, childReturn;
-    int rootx, rooty;
-    int winx, winy;
-    unsigned int xmask;
-
-    Window root = DefaultRootWindow( g_pIntf->p_sys->display );
-    XLOCK;
-    XQueryPointer( g_pIntf->p_sys->display, root, &rootReturn, &childReturn,
-                   &rootx, &rooty, &winx, &winy, &xmask );
-    XUNLOCK;
-    x = rootx;
-    y = rooty;
-}
-//---------------------------------------------------------------------------
-string OSAPI_GetWindowTitle( SkinWindow *win )
-{
-    return ( (X11Window *)win )->GetName();
-}
-//---------------------------------------------------------------------------
-bool OSAPI_RmDir( string path )
-{
-    struct dirent *file;
-    DIR *dir;
-
-    dir = opendir( path.c_str() );
-    if( !dir ) return false;
-
-    /* Parse the directory and remove everything it contains. */
-    while( (file = readdir( dir )) )
-    {
-        struct stat statbuf;
-        string filename;
-
-        /* Skip "." and ".." */
-        if( !*file->d_name || *file->d_name == '.' ||
-            (!*(file->d_name+1) && *file->d_name == '.' &&
-             *(file->d_name+1) == '.') )
-        {
-            continue;
-        }
-
-        filename += path + "/";
-        filename += file->d_name;
-
-        if( !stat( filename.c_str(), &statbuf ) && statbuf.st_mode & S_IFDIR )
-        {
-            OSAPI_RmDir( filename );
-        }
-        else
-        {
-            unlink( filename.c_str() );
-        }
-    }
-
-    /* Close the directory */
-    closedir( dir );
-
-    rmdir( path.c_str() );
-
-    return true;
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_bitmap.cpp b/modules/gui/skins/x11/x11_bitmap.cpp
deleted file mode 100644 (file)
index 6fc6582..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*****************************************************************************
- * x11_bitmap.cpp: X11 implementation of the Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_bitmap.cpp,v 1.11 2003/06/09 12:33:16 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <Imlib2.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/graphics.h"
-#include "x11_graphics.h"
-#include "../src/bitmap.h"
-#include "x11_bitmap.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/skin_common.h"
-
-#include <stdio.h>
-
-// macros to read little endian numbers
-#define U16( p ) ( ((uint8_t*)(p))[0] | ((uint8_t*)(p))[1] << 8 )
-#define U32( p ) ( U16( p ) | ((uint8_t*)(p))[2] << 16 | ((uint8_t*)(p))[3] << 24 )
-
-//---------------------------------------------------------------------------
-//   X11Bitmap
-//---------------------------------------------------------------------------
-X11Bitmap::X11Bitmap( intf_thread_t *_p_intf, string FileName, int AColor )
-    : Bitmap( p_intf, FileName, AColor )
-{
-    p_intf = _p_intf;
-
-    // Find the display
-    display = p_intf->p_sys->display;
-    int screen = DefaultScreen( display );
-    Screen *screenptr = DefaultScreenOfDisplay( display );
-    Visual *visual = DefaultVisualOfScreen( screenptr );
-    Img = NULL;
-    Width = 0;
-    Height = 0;
-
-    if( FileName == "" )
-    {
-        return;
-    }
-
-    AlphaColor = (AColor & 0xff) << 16 | (AColor & 0xff00) | 
-                 (AColor & 0xff0000) >> 16;
-
-    XLOCK;
-    imlib_context_set_display( display );
-    imlib_context_set_visual( visual );
-    imlib_context_set_colormap( DefaultColormap( display, screen ) );
-    imlib_context_set_dither( 1 );
-    imlib_context_set_blend( 1 );
-
-    Img = imlib_load_image_immediately( FileName.c_str() );
-    imlib_context_set_image( Img );
-    Width = imlib_image_get_width();
-    Height = imlib_image_get_height();
-
-    // Add an alpha layer
-    DATA32 *data = imlib_image_get_data();
-    DATA32 *ptr = data;
-    for( int j = 0; j < Height; j++)
-    {
-        for( int i = 0; i < Width; i++)
-        {
-            if( AlphaColor != 0 && *ptr == 0xff000000 )
-            {
-                // Avoid transparency for black pixels
-                *ptr = 0xff00000c;
-            }
-            else if( (*ptr & 0xffffff) == AlphaColor )
-            {
-                *ptr &= 0x00ffffff;
-            }
-            ptr++;
-        }
-    }
-    imlib_image_set_has_alpha( 1 );
-    imlib_image_set_irrelevant_alpha( 0 );
-    imlib_image_put_back_data( data );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-X11Bitmap::X11Bitmap( intf_thread_t *_p_intf, Graphics *from, int x, int y,
-    int w, int h, int AColor ) : Bitmap( p_intf, from, x, y, w, h, AColor )
-{
-    p_intf = _p_intf;
-/*    Width  = w;
-    Height = h;
-    AlphaColor = AColor;
-    HBITMAP HBmp;
-    HDC fromDC = ( (X11Graphics *)from )->GetImageHandle();
-
-    // Create image
-    bmpDC = CreateCompatibleDC( fromDC );
-    HBmp  = CreateCompatibleBitmap( fromDC, Width, Height );
-    SelectObject( bmpDC, HBmp );
-    DeleteObject( HBmp );
-    BitBlt( bmpDC, 0, 0, Width, Height, fromDC, x, y, SRCCOPY );*/
-}
-//---------------------------------------------------------------------------
-X11Bitmap::X11Bitmap( intf_thread_t *_p_intf, Bitmap *c )
-    : Bitmap( p_intf, c )
-{
-    p_intf = _p_intf;
-/*    HBITMAP HBuf;
-
-    // Copy attibutes
-    c->GetSize( Width, Height );
-    AlphaColor = c->GetAlphaColor();
-
-    // Copy bmpDC
-    bmpDC = CreateCompatibleDC( NULL );
-    HBuf  = CreateCompatibleBitmap( bmpDC, Width, Height );
-    SelectObject( bmpDC, HBuf );
-
-    BitBlt( bmpDC, 0, 0, Width, Height, ( (X11Bitmap *)c )->GetBmpDC(),
-            0, 0, SRCCOPY );
-    DeleteObject( HBuf );*/
-}
-//---------------------------------------------------------------------------
-X11Bitmap::~X11Bitmap()
-{
-    if( Img )
-    {
-        XLOCK;
-        imlib_context_set_image( Img );
-        imlib_free_image();
-        XUNLOCK;
-    }
-}
-//---------------------------------------------------------------------------
-void X11Bitmap::DrawBitmap( int x, int y, int w, int h, int xRef, int yRef,
-                              Graphics *dest )
-{
-    if( Img )
-    {
-        XLOCK;
-        Drawable destImg = ( (X11Graphics *)dest )->GetImage();
-        imlib_context_set_image( Img );
-        imlib_context_set_drawable( destImg );
-        imlib_render_image_part_on_drawable_at_size( x, y, w, h, xRef, yRef, w, h );
-        XUNLOCK;
-    }
-}
-//---------------------------------------------------------------------------
-bool X11Bitmap::Hit( int x, int y)
-{
-    int c = GetBmpPixel( x, y );
-
-    if( c == -1 || (unsigned int)c == AlphaColor )
-        return false;
-    else
-        return true;
-}
-//---------------------------------------------------------------------------
-int X11Bitmap::GetBmpPixel( int x, int y )
-{
-    if( !Img || x < 0 || x >= Width || y < 0 || y >= Height )
-        return -1;
-
-    return 42;
-/*    guchar *pixels;
-    int rowstride, offset;
-    gboolean has_alpha;
-
-    rowstride = gdk_pixbuf_get_rowstride( Bmp );
-    pixels    = gdk_pixbuf_get_pixels( Bmp ); 
-    has_alpha = gdk_pixbuf_get_has_alpha( Bmp );
-
-    offset = y * rowstride + ( x * (has_alpha ? 4 : 3) );
-
-    int r = pixels [offset];
-    int g = pixels [offset + 1] << 8;
-    int b = pixels [offset + 2] << 16;
-
-    return r + g + b;*/
-}
-//---------------------------------------------------------------------------
-void X11Bitmap::SetBmpPixel( int x, int y, int color )
-{
-//    SetPixelV( bmpDC, x, y, color );
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_bitmap.h b/modules/gui/skins/x11/x11_bitmap.h
deleted file mode 100644 (file)
index fbbd14f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*****************************************************************************
- * x11_bitmap.h: X11 implementation of the Bitmap class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_bitmap.h,v 1.4 2003/05/29 21:40:27 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_X11_BITMAP
-#define VLC_X11_BITMAP
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-#include <Imlib2.h>
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Bitmap;
-class Graphics;
-
-//---------------------------------------------------------------------------
-class X11Bitmap : public Bitmap
-{
-    private:
-        intf_thread_t *p_intf;
-        Display *display;
-        Imlib_Image Img;
-
-    public:
-        // Constructors
-        X11Bitmap( intf_thread_t *_p_intf, string FileName, int AColor );
-        X11Bitmap( intf_thread_t *_p_intf, Graphics *from, int x, int y,
-                     int w, int h, int AColor );
-        X11Bitmap( intf_thread_t *_p_intf, Bitmap *c );
-
-        // Destructor
-        virtual ~X11Bitmap();
-
-        virtual void DrawBitmap( int x, int y, int w, int h, int xRef, int yRef,
-                                 Graphics *dest );
-        virtual bool Hit( int x, int y );
-
-        virtual int  GetBmpPixel( int x, int y );
-        virtual void SetBmpPixel( int x, int y, int color );
-
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_dragdrop.cpp b/modules/gui/skins/x11/x11_dragdrop.cpp
deleted file mode 100644 (file)
index e37dbc4..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/*****************************************************************************
- * x11_dragdrop.cpp: X11 implementation of the drag & drop
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_dragdrop.cpp,v 1.7 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/skin_common.h"
-#include "../src/event.h"
-#include "../os_api.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "x11_dragdrop.h"
-
-#include <string.h>
-
-
-//---------------------------------------------------------------------------
-X11DropObject::X11DropObject( intf_thread_t *_p_intf, Window win,
-                              bool playondrop )
-{
-    p_intf = _p_intf;
-    Win = win;
-    PlayOnDrop = playondrop;
-    display = p_intf->p_sys->display;
-}
-//---------------------------------------------------------------------------
-X11DropObject::~X11DropObject()
-{
-}
-//---------------------------------------------------------------------------
-void X11DropObject::DndEnter( ldata_t data )
-{
-    Window src = data[0];
-
-    // Retrieve available data types
-    list<string> dataTypes;
-    if( data[1] & 1 )   // more than 3 data types ?
-    {
-        Atom type;
-        int format;
-        unsigned long nitems, nbytes;
-        Atom *dataList;
-        XLOCK;
-        Atom typeListAtom = XInternAtom( display, "XdndTypeList", 0 );
-        XGetWindowProperty( display, src, typeListAtom, 0, 65536, False,
-                            XA_ATOM, &type, &format, &nitems, &nbytes,  
-                            (unsigned char**)&dataList );
-        XUNLOCK;
-        for( unsigned long i=0; i<nitems; i++ )
-        {
-            XLOCK;
-            string dataType = XGetAtomName( display, dataList[i] );
-            XUNLOCK;
-            dataTypes.push_back( dataType );
-        }
-        XFree( (void*)dataList );
-    }
-    else
-    {
-        for( int i=2; i<5; i++ )
-        {
-            if( data[i] != None )
-            {
-                XLOCK;
-                string dataType = XGetAtomName( display, data[i] );
-                XUNLOCK;
-                dataTypes.push_back( dataType );
-            }
-        }
-    }
-
-    // Find the right target
-    target = None;
-    list<string>::iterator it;
-    for( it = dataTypes.begin(); it != dataTypes.end(); it++ )
-    {
-        if( *it == "text/plain" || *it == "STRING" )
-        {
-            XLOCK;
-            target = XInternAtom( display, (*it).c_str(), 0 );
-            XUNLOCK;
-            break;
-        }
-    }
-}
-//---------------------------------------------------------------------------
-void X11DropObject::DndPosition( ldata_t data )
-{
-    Window src = data[0];
-    Time time = data[2];
-
-    XLOCK;
-    Atom selectionAtom = XInternAtom( display, "XdndSelection", 0 );
-    Atom targetAtom = XInternAtom( display, "text/plain", 0 );
-    Atom propAtom = XInternAtom( display, "VLC_SELECTION", 0 );
-
-    Atom actionAtom = XInternAtom( display, "XdndActionCopy", 0 );
-    Atom typeAtom = XInternAtom( display, "XdndFinished", 0 );
-
-    // Convert the selection into the given target
-    // NEEDED or it doesn't work !!!
-    XConvertSelection( display, selectionAtom, targetAtom, propAtom, src,
-                       time );
-
-    actionAtom = XInternAtom( display, "XdndActionCopy", 0 );
-    typeAtom = XInternAtom( display, "XdndStatus", 0 );
-
-    XEvent event;
-    event.type = ClientMessage;
-    event.xclient.window = src;
-    event.xclient.display = display;
-    event.xclient.message_type = typeAtom;
-    event.xclient.format = 32;
-    event.xclient.data.l[0] = Win;
-    if( target != None )
-    {
-        event.xclient.data.l[1] = 1;          // accept the drop
-    }
-    else
-    {
-        event.xclient.data.l[1] = 0;          // do not accept
-    }
-    int w, h;
-    OSAPI_GetScreenSize( w, h );
-    event.xclient.data.l[2] = 0;
-    event.xclient.data.l[3] = (w << 16) | h;
-    event.xclient.data.l[4] = actionAtom;
-
-    // Tell the source whether we accept the drop
-    XSendEvent( display, src, False, 0, &event );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11DropObject::DndLeave( ldata_t data )
-{
-}
-//---------------------------------------------------------------------------
-void X11DropObject::DndDrop( ldata_t data )
-{
-    Window src = data[0];
-    Time time = data[2];
-
-    XLOCK;
-    Atom selectionAtom = XInternAtom( display, "XdndSelection", 0 );
-    Atom targetAtom = XInternAtom( display, "text/plain", 0 );
-    Atom propAtom = XInternAtom( display, "VLC_SELECTION", 0 );
-
-    Atom actionAtom = XInternAtom( display, "XdndActionCopy", 0 );
-    Atom typeAtom = XInternAtom( display, "XdndFinished", 0 );
-
-    // Convert the selection into the given target
-    XConvertSelection( display, selectionAtom, targetAtom, propAtom, src,
-                       time );
-
-    // Read the selection
-    Atom type;
-    int format;
-    unsigned long nitems, nbytes;
-    char *buffer;
-    XGetWindowProperty( display, src, propAtom, 0, 1024, False,
-                        AnyPropertyType, &type, &format, &nitems, &nbytes,
-                        (unsigned char**)&buffer );
-    string selection = "";
-    if( buffer != NULL )
-    {
-        selection = buffer;
-    }
-    XFree( buffer );
-    XUNLOCK;
-
-    if( selection != "" )
-    {
-        // TODO: multiple files handling
-        string::size_type end = selection.find( "\n", 0 );
-        selection = selection.substr( 0, end -1 );
-        end = selection.find( "\r", 0 );
-        selection = selection.substr( 0, end -1 );
-
-        // Find the protocol, if any
-        string::size_type pos = selection.find( ":", 0 );
-        if( selection.find("///", pos + 1 ) == pos + 1 )
-        {
-            selection.erase( pos + 1, 2 );
-        }
-
-        char *name = new char[selection.size()+1];
-        strncpy( name, selection.c_str(), selection.size()+1 );
-        if( PlayOnDrop )
-        {
-            OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 1 );
-        }
-        else
-        {
-            OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)name, 0 );
-        }
-    }
-
-    // Tell the source we accepted the drop
-    XEvent event;
-    event.type = ClientMessage;
-    event.xclient.window = src;
-    event.xclient.display = display;
-    event.xclient.message_type = typeAtom;
-    event.xclient.format = 32;
-    event.xclient.data.l[0] = Win;
-    event.xclient.data.l[1] = 1;          // drop accepted
-    event.xclient.data.l[2] = actionAtom;
-    XLOCK;
-    XSendEvent( display, src, False, 0, &event );
-    XUNLOCK;
-}
-
-#endif
diff --git a/modules/gui/skins/x11/x11_dragdrop.h b/modules/gui/skins/x11/x11_dragdrop.h
deleted file mode 100644 (file)
index 2ed5cba..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*****************************************************************************
- * x11_dragdrop.h: X11 implementation of the drag & drop
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_dragdrop.h,v 1.5 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_DRAGDROP
-#define VLC_SKIN_X11_DRAGDROP
-
-//--- X11 -----------------------------------------------------------------
-#include <X11/Xlib.h>
-
-#include "../src/skin_common.h"
-
-//---------------------------------------------------------------------------
-
-typedef long ldata_t[5];
-
-class X11DropObject
-{
-    private:
-        intf_thread_t *p_intf;
-        Window Win;
-        bool PlayOnDrop;
-        Display *display;
-        Atom target;
-
-    public:
-       X11DropObject( intf_thread_t *_p_intf, Window win, bool playondrop );
-       virtual ~X11DropObject();
-
-       void DndEnter( ldata_t data );
-       void DndPosition( ldata_t data );
-       void DndLeave( ldata_t data );
-       void DndDrop( ldata_t data );
-};
-//---------------------------------------------------------------------------
-#endif
diff --git a/modules/gui/skins/x11/x11_event.cpp b/modules/gui/skins/x11/x11_event.cpp
deleted file mode 100644 (file)
index a6490ab..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*****************************************************************************
- * x11_event.cpp: x11 implementation of the Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_event.cpp,v 1.5 2003/06/22 12:54:03 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/skin_common.h"
-
-
-//---------------------------------------------------------------------------
-//   VLC Event
-//---------------------------------------------------------------------------
-X11Event::X11Event( intf_thread_t *p_intf, string Desc, string shortcut )
-    : Event( p_intf, Desc, shortcut )
-{
-    Wnd = None;
-}
-//---------------------------------------------------------------------------
-X11Event::X11Event( intf_thread_t *p_intf, Window wnd, unsigned int msg,
-    unsigned int par1, long par2 ) : Event( p_intf, msg, par1, par2 )
-{
-    Wnd = wnd;
-}
-//---------------------------------------------------------------------------
-X11Event::X11Event( intf_thread_t *p_intf, SkinWindow *win, unsigned int msg,
-    unsigned int par1, long par2 ) : Event( p_intf, msg, par1, par2 )
-{
-    Wnd = ( (X11Window *)win )->GetHandle();
-}
-//---------------------------------------------------------------------------
-X11Event::~X11Event()
-{
-}
-//---------------------------------------------------------------------------
-bool X11Event::SendEvent()
-{
-    if( Message != VLC_NOTHING )
-    {
-        // Find window matching with Wnd
-        list<SkinWindow *>::const_iterator win;
-        for( win = p_intf->p_sys->p_theme->WindowList.begin();
-             win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-        {
-            // If it is the correct window
-            if( Wnd == ( (X11Window *)(*win) )->GetHandle() )
-            {
-                OSAPI_PostMessage( *win, Message, Param1, Param2 );
-                PostSynchroMessage();
-                return true;
-            }
-        }
-        OSAPI_PostMessage( NULL, Message, Param1, Param2 );
-        return true;
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-bool X11Event::IsEqual( Event *evt )
-{
-    X11Event *XEvt = (X11Event *)evt;
-    return( XEvt->GetWindow() == Wnd   && XEvt->GetMessage() == Message &&
-            XEvt->GetParam1() == Param1 && XEvt->GetParam2()  == Param2 );
-}
-//---------------------------------------------------------------------------
-void X11Event::CreateOSEvent( string para1, string para2, string para3 )
-{
-    // Find Parameters
-    switch( Message )
-    {
-        case WINDOW_MOVE:
-            Wnd = GetWindowFromName( para1 );
-            break;
-
-        case WINDOW_CLOSE:
-            Wnd = GetWindowFromName( para1 );
-            break;
-
-        case WINDOW_OPEN:
-            Wnd = GetWindowFromName( para1 );
-            break;
-
-    }
-}
-//---------------------------------------------------------------------------
-Window X11Event::GetWindowFromName( string name )
-{
-    X11Window *win = (X11Window *)
-        p_intf->p_sys->p_theme->GetWindow( name );
-
-    if( win == NULL )
-    {
-        return None;
-    }
-    else
-    {
-        return win->GetHandle();
-    }
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_event.h b/modules/gui/skins/x11/x11_event.h
deleted file mode 100644 (file)
index 99db60e..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*****************************************************************************
- * x11_event.h: X11 implementation of the Event class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_event.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_EVENT
-#define VLC_SKIN_X11_EVENT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//--- X11 ------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-
-//---------------------------------------------------------------------------
-class X11Event : Event
-{
-    private:
-        Window GetWindowFromName( string name );
-        Window Wnd;
-    public:
-        // Constructor
-        X11Event( intf_thread_t *p_intf, string Desc, string shortcut );
-        X11Event( intf_thread_t *p_intf, Window wnd, unsigned int msg,
-                    unsigned int par1, long par2 );
-        X11Event( intf_thread_t *p_intf, SkinWindow *win, unsigned int msg,
-                    unsigned int par1, long par2 );
-
-        // Destructor
-        virtual ~X11Event();
-
-        // Event sending
-        virtual bool SendEvent();
-
-        // General operations on events
-        virtual void CreateOSEvent( string para1, string para2, string para3 );
-        virtual bool IsEqual( Event *evt );
-
-        // Getters
-        Window GetWindow()    { return Wnd; }
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_font.cpp b/modules/gui/skins/x11/x11_font.cpp
deleted file mode 100644 (file)
index dcdfddf..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*****************************************************************************
- * x11_font.cpp: X11 implementation of the Font class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_font.cpp,v 1.10 2003/06/09 22:02:13 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -----------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/skin_common.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "../src/font.h"
-#include "../os_font.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-
-//---------------------------------------------------------------------------
-// Font object
-//---------------------------------------------------------------------------
-X11Font::X11Font( intf_thread_t *_p_intf, string fontname, int size,
-    int color, int weight, bool italic, bool underline )
-    : SkinFont( _p_intf, fontname, size, color, weight, italic, underline )
-{
-    display = g_pIntf->p_sys->display;
-    Underline = underline;
-
-    char name[256];
-    char slant = ( italic ? 'i' : 'r' );
-    // FIXME: a lot of work...
-    size = ( size < 10 ? 8 : 12 );
-    snprintf( name, 256, "-*-helvetica-bold-%c-*-*-*-%i-*-*-*-*-*-*", 
-              slant, 10 * size );
-    XLOCK;
-    FontInfo = XLoadQueryFont( display, name );
-    font = FontInfo->fid;
-    Ascent = FontInfo->max_bounds.ascent;
-    Descent = FontInfo->max_bounds.descent;
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-X11Font::~X11Font()
-{
-    XLOCK;
-    XFreeFont( display, FontInfo );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Font::AssignFont( Graphics *dest )
-{
-}
-//---------------------------------------------------------------------------
-void X11Font::GetSize( string text, int &w, int &h )
-{
-    int direction, fontAscent, fontDescent;
-    XCharStruct overall;
-    
-    XLOCK;
-    XQueryTextExtents( display, font, text.c_str(), text.size(), 
-                        &direction, &fontAscent, &fontDescent, &overall );
-    XUNLOCK;
-
-    w = overall.rbearing - overall.lbearing;
-    h = Ascent + Descent;
-}
-//---------------------------------------------------------------------------
-void X11Font::GenericPrint( Graphics *dest, string text, int x, int y,
-                                 int w, int h, int align, int color )
-{
-    // Get handles
-    Drawable drawable = ( (X11Graphics *)dest )->GetImage();
-    GC gc = ( (X11Graphics *)dest )->GetGC();
-
-    XGCValues gcVal;
-    // Change color to avoid transparency
-    gcVal.foreground = (color < 10 ? 10 : color);
-    gcVal.font = font;
-    XRectangle rect;
-    rect.x = x;
-    rect.y = y;
-    rect.width = w;
-    rect.height = h;
-
-    XLOCK;
-    XChangeGC( display, gc, GCForeground|GCFont, &gcVal );
-    // Set the clipping region
-    XSetClipRectangles( display, gc, 0, 0, &rect, 1, Unsorted );  
-    
-    // Render text no the drawable
-    XDrawString( display, drawable, gc, x, y+Ascent, text.c_str(), text.size());
-    if( Underline )
-    {
-        XDrawLine( display, drawable, gc, x, y+Ascent+1, x+w, y+Ascent+1 );
-    }
-    
-    // Reset the clip mask
-    XSetClipMask( display, gc, None );
-    XUNLOCK;
-}
-
-//---------------------------------------------------------------------------
-void X11Font::Print( Graphics *dest, string text, int x, int y, int w,
-                       int h, int align )
-{
-    GenericPrint( dest, text, x, y, w, h, align, Color );
-}
-//---------------------------------------------------------------------------
-void X11Font::PrintColor( Graphics *dest, string text, int x, int y, int w,
-                            int h, int align, int color )
-{
-    GenericPrint( dest, text, x, y, w, h, align, color );
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_font.h b/modules/gui/skins/x11/x11_font.h
deleted file mode 100644 (file)
index 0bc1bc1..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*****************************************************************************
- * x11_font.h: X11 implementation of the Font class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_font.h,v 1.5 2003/06/09 12:33:16 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_FONT
-#define VLC_SKIN_X11_FONT
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//--- X11 -----------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class Graphics;
-
-//---------------------------------------------------------------------------
-class X11Font : SkinFont
-{
-    private:
-        Display *display;
-        Font font;
-        XFontStruct *FontInfo;
-        int Ascent;
-        int Descent;
-        bool Underline;
-
-        // Assign font to Device Context
-        virtual void AssignFont( Graphics *dest );
-
-        // Helper function
-        virtual void GenericPrint( Graphics *dest, string text, int x, int y,
-                                   int w, int h, int align, int color );
-
-    public:
-        // Constructor
-        X11Font( intf_thread_t *_p_intf, string fontname, int size, int color,
-                   int weight, bool italic, bool underline );
-
-        // Destructor
-        virtual ~X11Font();
-
-        // Get size of text
-        virtual void GetSize( string text, int &w, int &h );
-
-        // Draw text with boundaries
-        virtual void Print( Graphics *dest, string text, int x, int y, int w,
-                            int h, int align );
-
-        virtual void PrintColor( Graphics *dest, string text, int x, int y,
-                                 int w, int h, int align, int color );
-
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_graphics.cpp b/modules/gui/skins/x11/x11_graphics.cpp
deleted file mode 100644 (file)
index 9eb0a2c..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/*****************************************************************************
- * x11_graphics.cpp: X11 implementation of the Graphics and Region classes
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_graphics.cpp,v 1.8 2003/06/09 12:33:16 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -----------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//--- VLC -----------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../src/graphics.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "x11_graphics.h"
-#include "../src/skin_common.h"
-
-#include <stdio.h>
-#include <math.h>
-
-//---------------------------------------------------------------------------
-// X11 GRAPHICS
-//---------------------------------------------------------------------------
-X11Graphics::X11Graphics( intf_thread_t *p_intf, int w, int h,
-                          SkinWindow *from ) : Graphics( w, h )
-{
-    display = p_intf->p_sys->display;
-    int screen = DefaultScreen( display );
-
-    if( from != NULL )
-    {
-        Window fromWnd = ( (X11Window *)from )->GetHandle();
-
-        XWindowAttributes attr;
-        XLOCK;
-        XGetWindowAttributes( display, fromWnd, &attr);
-        Image = XCreatePixmap( display, fromWnd, w, h, attr.depth );
-        XUNLOCK;
-        Gc = DefaultGC( display, screen );
-    }
-    else
-    {
-        Window root = DefaultRootWindow( display );
-        XLOCK;
-        Image = XCreatePixmap( display, root, w, h,
-                               DefaultDepth( display, screen ) );
-        XUNLOCK;
-        Gc = DefaultGC( display, screen );
-    }
-
-    // Set the background color to black
-    DrawRect( 0, 0, w, h, 0 );
-}
-//---------------------------------------------------------------------------
-X11Graphics::~X11Graphics()
-{
-    XLOCK;
-    XFreePixmap( display, Image );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Graphics::CopyFrom( int dx, int dy, int dw, int dh, Graphics *Src,
-                              int sx, int sy, int Flag )
-{
-    XLOCK;
-    XCopyArea( display, (( X11Graphics* )Src )->GetImage(), Image, Gc, 
-               sx, sy, dw, dh, dx, dy );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Graphics::DrawRect( int x, int y, int w, int h, int color )
-{
-    XGCValues gcVal;
-    gcVal.foreground = color;
-    XLOCK;
-    XChangeGC( display, Gc, GCForeground,  &gcVal );
-    XFillRectangle( display, Image, Gc, x, y, w, h );    
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Graphics::SetClipRegion( SkinRegion *rgn )
-{
-/*    gdk_gc_set_clip_region( Gc, ( (X11Region *)rgn )->GetHandle() );*/
-}
-//---------------------------------------------------------------------------
-void X11Graphics::ResetClipRegion()
-{
-/*    GdkRectangle rect;
-    rect.x = 0;
-    rect.y = 0;
-    rect.width = Width;
-    rect.height = Height;
-    GdkRegion *rgn = gdk_region_rectangle( &rect );
-    gdk_gc_set_clip_region( Gc, rgn );
-    gdk_region_destroy( rgn );*/
-}
-//---------------------------------------------------------------------------
-
-
-
-//---------------------------------------------------------------------------
-// X11 REGION
-//---------------------------------------------------------------------------
-X11Region::X11Region()
-{
-    RefPoint.x = RefPoint.y = 0;
-}
-//---------------------------------------------------------------------------
-X11Region::X11Region( int x, int y, int w, int h )
-{
-    RefPoint.x = RefPoint.y = 0;
-    AddRectangle( x, y, w, h );
-}
-//---------------------------------------------------------------------------
-X11Region::~X11Region()
-{
-}
-//---------------------------------------------------------------------------
-void X11Region::AddPoint( int x, int y )
-{
-    AddRectangle( x, y, 1, 1 );
-}
-//---------------------------------------------------------------------------
-void X11Region::AddRectangle( int x, int y, int w, int h )
-{
-    CoordsRectangle coords;
-    coords.x = x - RefPoint.x; coords.y = y - RefPoint.y;
-    coords.w = w; coords.h = h;
-    RectanglesList.push_back( coords );
-}
-//---------------------------------------------------------------------------
-void X11Region::AddElipse( int x, int y, int w, int h )
-{
-    CoordsElipse coords;
-    coords.x = x - RefPoint.x; coords.y = y - RefPoint.y;
-    coords.w = w; coords.h = h;
-    ElipsesList.push_back( coords );
-}
-//---------------------------------------------------------------------------
-void X11Region::Move( int x, int y )
-{
-    RefPoint.x += x;
-    RefPoint.y += y;
-}
-//---------------------------------------------------------------------------
-bool X11Region::Hit( int x, int y )
-{
-    unsigned int i;
-
-    x -= RefPoint.x;
-    y -= RefPoint.y;
-
-    // Check our rectangles list first
-    for( i = 0; i < RectanglesList.size(); i++ )
-    {
-        if( x >= RectanglesList[i].x &&
-            x <= RectanglesList[i].x + RectanglesList[i].w &&
-            y >= RectanglesList[i].y &&
-            y <= RectanglesList[i].y + RectanglesList[i].h )
-        {
-            return true;
-        }
-    }
-
-    // Check our elipses list
-    for( i = 0; i < ElipsesList.size(); i++ )
-    {
-        // FIXME!!
-        if( x >= ElipsesList[i].x &&
-            x <= ElipsesList[i].x + ElipsesList[i].w &&
-            y >= ElipsesList[i].y &&
-            y <= ElipsesList[i].y + ElipsesList[i].h )
-        {
-            return true;
-        }
-    }
-
-    return false;
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_graphics.h b/modules/gui/skins/x11/x11_graphics.h
deleted file mode 100644 (file)
index 398c7c8..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*****************************************************************************
- * x11_graphics.h: X11 implementation of the Graphics and Region classes
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_graphics.h,v 1.3 2003/05/26 02:09:27 gbazin Exp $
- *
- * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
- *          Emmanuel Puig    <karibu@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_GRAPHICS
-#define VLC_SKIN_X11_GRAPHICS
-
-//--- GENERAL ---------------------------------------------------------------
-#include <vector>
-using namespace std;
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-//---------------------------------------------------------------------------
-class SkinRegion;
-class SkinWindow;
-
-struct CoordsPoint{ int x, y; };
-struct CoordsRectangle{ int x, y, w, h; };
-struct CoordsElipse{ int x, y, w, h; };
-
-//---------------------------------------------------------------------------
-class X11Graphics : public Graphics
-{
-    protected:
-        Display *display;
-        Drawable Image;
-        GC Gc;
-
-    public:
-        // Constructor
-        X11Graphics( intf_thread_t *p_intf, int w, int h, SkinWindow *from = NULL );
-        // Destructor
-        virtual ~X11Graphics();
-        // Drawing methods
-        virtual void CopyFrom( int dx, int dy, int dw, int dh, Graphics *Src,
-                              int sx, int sy, int Flag );
-        //virtual void CopyTo(  Graphics *Dest, int dx, int dy, int dw, int dh,
-        //                      int sx, int sy, int Flag );
-        virtual void DrawRect( int x, int y, int w, int h, int color );
-
-        // Clipping methods
-        virtual void SetClipRegion( SkinRegion *rgn );
-        virtual void ResetClipRegion();
-
-        // Specific X11 methods
-        Drawable GetImage() { return Image; };
-        GC GetGC()    { return Gc; };
-};
-//---------------------------------------------------------------------------
-class X11Region : public SkinRegion
-{
-    private:
-        Region *Rgn;
-    public:
-        // Constructor
-        X11Region();
-        X11Region( int x, int y, int w, int h );
-        // Destructor
-        ~X11Region();
-        // Modify region
-        virtual void AddPoint( int x, int y );
-        virtual void AddRectangle( int x, int y, int w, int h );
-        virtual void AddElipse( int x, int y, int w, int h );
-        virtual void Move( int x, int y );
-
-        virtual bool Hit( int x, int y );
-
-        // Specific X11 methods
-        Region *GetHandle() { return Rgn; };
-
-        vector<CoordsRectangle> RectanglesList;
-        vector<CoordsElipse> ElipsesList;
-
-        CoordsPoint RefPoint;
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_run.cpp b/modules/gui/skins/x11/x11_run.cpp
deleted file mode 100644 (file)
index 13e7ae4..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/*****************************************************************************
- * x11_run.cpp:
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_run.cpp,v 1.24 2003/07/25 22:50:12 gbazin Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/banks.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/skin_common.h"
-#include "../src/vlcproc.h"
-#include "x11_timer.h"
-
-
-//---------------------------------------------------------------------------
-// Specific method
-//---------------------------------------------------------------------------
-bool IsVLCEvent( unsigned int msg );
-int  SkinManage( intf_thread_t *p_intf );
-
-//---------------------------------------------------------------------------
-// X11 event processing
-//---------------------------------------------------------------------------
-int ProcessEvent( intf_thread_t *p_intf, VlcProc *proc, XEvent *event )
-{
-    // Variables
-    list<SkinWindow *>::const_iterator win;
-    unsigned int msg;
-    Event *evt;
-
-    Window wnd = ((XAnyEvent *)event)->window;
-    
-    // Create event to dispatch in windows
-    // Skin event
-    if( event->type == ClientMessage && 
-        ((XClientMessageEvent*)event)->message_type == 0 )
-    {
-        msg = ( (XClientMessageEvent *)event )->data.l[0];
-        evt = (Event *)new OSEvent( p_intf, 
-            ((XAnyEvent *)event)->window, msg,
-            ( (XClientMessageEvent *)event )->data.l[1],
-            ( (XClientMessageEvent *)event )->data.l[2] );
-    }
-    // System event
-    else
-    {
-        msg = event->type;
-        evt = (Event *)new OSEvent( p_intf,
-            ((XAnyEvent *)event)->window, msg, 0, (long)event );
-    }
-
-    // Process keyboard shortcuts
-    if( msg == KeyPress )
-    {
-        int KeyModifier = 0;
-        // If key is ALT
-        if( ((XKeyEvent *)event)->state & Mod1Mask )
-        {
-            KeyModifier = 1;
-        }
-        // If key is CTRL
-        else if( ((XKeyEvent *)event)->state & ControlMask )
-        {
-            KeyModifier = 2;
-        }
-        // Take the second keysym = upper case character
-        int key = XLookupKeysym( (XKeyEvent *)event, 1 );
-        if( KeyModifier > 0 )
-            p_intf->p_sys->p_theme->EvtBank->TestShortcut( key , KeyModifier );
-    }
-
-    // Send event
-    else if( IsVLCEvent( msg ) )
-    {
-        if( !proc->EventProc( evt ) )
-        {
-            delete (OSEvent *)evt;
-            return 1;      // Exit VLC !
-        }
-    }
-    else if( wnd == p_intf->p_sys->mainWin )
-    {
-        // Broadcast event
-        for( win = p_intf->p_sys->p_theme->WindowList.begin();
-             win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-        {
-            (*win)->ProcessEvent( evt );
-        }
-    }
-    else
-    {
-        // Find window matching with gwnd
-        for( win = p_intf->p_sys->p_theme->WindowList.begin();
-             win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-        {
-            // If it is the correct window
-            if( wnd == ( (X11Window *)(*win) )->GetHandle() )
-            {
-                // Send event and check if processed
-                if( (*win)->ProcessEvent( evt ) )
-                {
-                    delete (OSEvent *)evt;
-                    return 0;
-                }
-                else
-                {
-                    break;
-                }
-            }
-        }
-    }
-
-    evt->DestructParameters();
-    delete (OSEvent *)evt;
-
-    // Check if vlc is closing
-    proc->IsClosing();
-    
-    return 0;
-}
-
-
-bool RefreshCallback( void *data )
-{
-    SkinManage( (intf_thread_t*)data );
-    return True;
-}
-
-
-//---------------------------------------------------------------------------
-// X11 interface
-//---------------------------------------------------------------------------
-void OSRun( intf_thread_t *p_intf )
-{
-    VlcProc *proc = new VlcProc( p_intf );
-
-    Display *display = ((OSTheme *)p_intf->p_sys->p_theme)->GetDisplay();
-
-    X11TimerManager::Initialize();
-
-    // Timer for SkinManage
-    X11Timer *refreshTimer = new X11Timer( p_intf, 100000, RefreshCallback,
-                                           (void*)p_intf );
-    X11TimerManager *timerManager = X11TimerManager::Instance( p_intf );
-    timerManager->addTimer( refreshTimer );
-
-    // Main event loop
-    int close = 0;
-    while( !close )
-    {
-        XEvent event;
-        int nPending;
-        XLOCK;
-        nPending = XPending( display );
-        XUNLOCK;
-        while( !close && nPending > 0 )
-        {
-            XLOCK;
-            XNextEvent( display, &event );
-            XUNLOCK;
-            close = ProcessEvent( p_intf, proc, &event );
-            XLOCK;
-            nPending = XPending( display );
-            XUNLOCK;
-        }
-        msleep( 1000 );
-    }
-
-    timerManager->Destroy();
-    delete refreshTimer;
-    delete proc;
-}
-//---------------------------------------------------------------------------
-bool IsVLCEvent( unsigned int msg )
-{
-    return( msg > VLC_MESSAGE && msg < VLC_WINDOW );
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_theme.cpp b/modules/gui/skins/x11/x11_theme.cpp
deleted file mode 100644 (file)
index f0c4cb9..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*****************************************************************************
- * x11_theme.cpp: X11 implementation of the Theme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_theme.cpp,v 1.16 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/banks.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "../src/vlcproc.h"
-#include "../src/skin_common.h"
-
-
-//---------------------------------------------------------------------------
-void SkinManage( intf_thread_t *p_intf );
-
-
-//---------------------------------------------------------------------------
-// THEME
-//---------------------------------------------------------------------------
-X11Theme::X11Theme( intf_thread_t *_p_intf ) : Theme( _p_intf )
-{
-    //Initialize values
-    p_intf = _p_intf;
-    display = p_intf->p_sys->display;
-}
-
-//---------------------------------------------------------------------------
-X11Theme::~X11Theme()
-{
-}
-//---------------------------------------------------------------------------
-void X11Theme::OnLoadTheme()
-{
-/*    // The create menu
-    CreateSystemMenu();
-*/
-}
-//---------------------------------------------------------------------------
-void X11Theme::AddSystemMenu( string name, Event *event )
-{/*
-    if( name == "SEPARATOR" )
-    {
-        AppendMenu( SysMenu, MF_SEPARATOR, 0, NULL );
-    }
-    else
-    {
-        AppendMenu( SysMenu, MF_STRING, (unsigned int)event,
-                    (char *)name.c_str() );
-    }*/
-}
-//---------------------------------------------------------------------------
-void X11Theme::ChangeClientWindowName( string name )
-{
-    XLOCK;
-    XStoreName( display, p_intf->p_sys->mainWin, name.c_str() );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Theme::AddWindow( string name, int x, int y, bool visible,
-    int fadetime, int alpha, int movealpha, bool dragdrop, bool playondrop )
-{
-    // Create the window
-    Window root = DefaultRootWindow( display );
-    XSetWindowAttributes attr;
-    XLOCK;
-    Window wnd = XCreateWindow( display, root, 0, 0, 1, 1, 0, 0, InputOutput,
-                                CopyFromParent, 0, &attr );
-    XSelectInput( display, wnd, ExposureMask|StructureNotifyMask|
-                  KeyPressMask|KeyReleaseMask|ButtonPressMask|
-                  ButtonReleaseMask|PointerMotionMask|EnterWindowMask|
-                  LeaveWindowMask);
-    XUNLOCK;
-
-    // Changing decorations
-    struct {
-        unsigned long flags;
-        unsigned long functions;
-        unsigned long decorations;
-        long input_mode;
-        unsigned long status;
-    } motifWmHints;
-
-    Atom hints_atom = XInternAtom( display, "_MOTIF_WM_HINTS", False );
-
-    motifWmHints.flags = 2;    // MWM_HINTS_DECORATIONS;
-    motifWmHints.decorations = 0;
-    XLOCK;
-    XChangeProperty( display, wnd, hints_atom, hints_atom, 32,
-                     PropModeReplace, (unsigned char *)&motifWmHints,
-                     sizeof( motifWmHints ) / sizeof( long ) );
-
-    // Change the window title
-    XStoreName( display, wnd, name.c_str() );
-    XUNLOCK;
-
-    WindowList.push_back( (SkinWindow *)new OSWindow( p_intf, wnd, x, y,
-        visible, fadetime, alpha, movealpha, dragdrop, playondrop, name ) ) ;
-}
-//---------------------------------------------------------------------------
-void X11Theme::ChangeTray()
-{/*
-    if( ShowInTray )
-    {
-        Shell_NotifyIcon( NIM_DELETE, &TrayIcon );
-        ShowInTray = false;
-    }
-    else
-    {
-        Shell_NotifyIcon( NIM_ADD, &TrayIcon );
-        ShowInTray = true;
-    }*/
-}
-//---------------------------------------------------------------------------
-void X11Theme::ChangeTaskbar()
-{/*
-    if( ShowInTaskbar )
-    {
-        ShowWindow( ParentWindow, SW_HIDE );
-        SetWindowLongPtr( ParentWindow, GWL_EXSTYLE,
-                          WS_EX_LAYERED|WS_EX_TOOLWINDOW );
-        ShowWindow( ParentWindow, SW_SHOW );
-        ShowInTaskbar = false;
-    }
-    else
-    {
-        ShowWindow( ParentWindow, SW_HIDE );
-        SetWindowLongPtr( ParentWindow, GWL_EXSTYLE,
-                          WS_EX_LAYERED|WS_EX_APPWINDOW );
-        ShowWindow( ParentWindow, SW_SHOW );
-        ShowInTaskbar = true;
-    }*/
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_theme.h b/modules/gui/skins/x11/x11_theme.h
deleted file mode 100644 (file)
index a317013..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*****************************************************************************
- * x11_theme.h: X11 implementation of the Theme class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_theme.h,v 1.4 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_THEME
-#define VLC_SKIN_X11_THEME
-
-//--- GENERAL ---------------------------------------------------------------
-#include <string>
-using namespace std;
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-// macros to make X calls thread safe
-extern intf_thread_t *g_pIntf;
-#define XLOCK vlc_mutex_lock( &g_pIntf->p_sys->xlock )
-#define XUNLOCK vlc_mutex_unlock( &g_pIntf->p_sys->xlock )
-
-
-//---------------------------------------------------------------------------
-struct intf_thread_t;
-class SkinWindow;
-class EventBank;
-class BitmapBank;
-class FontBank;
-
-
-//---------------------------------------------------------------------------
-class X11Theme : public Theme
-{
-    protected:
-        intf_thread_t *p_intf;
-        // Handles
-        Display *display;
-/*
-        // System tray icon
-        NOTIFYICONDATA TrayIcon;
-        HMENU SysMenu;
-*/
-    public:
-        // Constructor
-        X11Theme( intf_thread_t *_p_intf );
-        virtual void OnLoadTheme();
-
-        // Destructor
-        virtual ~X11Theme();
-
-        // Specific methods
-        Display * GetDisplay()   { return display; }
-
-        // !!!
-        virtual void AddWindow( string name, int x, int y, bool visible,
-            int fadetime, int alpha, int movealpha, bool dragdrop,
-            bool playondrop );
-        virtual void ChangeClientWindowName( string name );
-
-        // Taskbar && system tray
-        virtual void AddSystemMenu( string name, Event *event );
-        virtual void ChangeTray();
-        virtual void ChangeTaskbar();
-//        HMENU GetSysMenu() { return SysMenu; }
-};
-//---------------------------------------------------------------------------
-
-
-#endif
-
diff --git a/modules/gui/skins/x11/x11_timer.cpp b/modules/gui/skins/x11/x11_timer.cpp
deleted file mode 100644 (file)
index 8e3ef60..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-/*****************************************************************************
- * x11_timer.cpp: helper class to implement timers
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id$
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "x11_timer.h"
-
-
-//---------------------------------------------------------------------------
-
-X11Timer::X11Timer( intf_thread_t *p_intf, mtime_t interval, callback_t func,
-                    void *data )
-{
-    _p_intf = p_intf;
-    _interval = interval;
-    _callback = func;
-    _data = data;
-    _nextDate = 0;
-    vlc_mutex_init( p_intf, &_lock );
-}
-
-
-X11Timer::~X11Timer()
-{
-    vlc_mutex_destroy( &_lock );
-}
-
-
-void X11Timer::SetDate( mtime_t date )
-{
-    _nextDate = date + _interval;
-}
-
-
-mtime_t X11Timer::GetNextDate()
-{
-    return _nextDate;
-}
-
-
-bool X11Timer::Execute()
-{
-    _nextDate += _interval;
-    return (*_callback)( _data );
-}
-
-//---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
-
-X11TimerManager *X11TimerManager::_instance = NULL;
-
-X11TimerManager::X11TimerManager( intf_thread_t *p_intf )
-{
-    _p_intf = p_intf;
-    
-    vlc_mutex_init( p_intf, &_lock );
-    
-    // Create the timer thread
-    _p_timer = (timer_thread_t*)vlc_object_create( _p_intf,
-                                                   sizeof( timer_thread_t ) );
-    _p_timer->die = 0;
-}
-
-
-X11TimerManager::~X11TimerManager()
-{
-    _p_timer->die = 1;
-    vlc_thread_join( _p_timer );
-
-    vlc_mutex_destroy( &_lock );
-}
-
-void X11TimerManager::Initialize()
-{
-    _instance = NULL;
-}
-
-// Return the instance of X11TimerManager (design pattern singleton)
-X11TimerManager *X11TimerManager::Instance( intf_thread_t *p_intf )
-{
-    if( _instance == NULL )
-    {
-        _instance = new X11TimerManager( p_intf );
-        // Run the timer thread
-        vlc_thread_create( _instance->_p_timer, "Skins timer thread", 
-                           &Thread, 0, VLC_TRUE );
-    }
-    return _instance;
-}
-
-
-// Destroy the instance, if any
-void X11TimerManager::Destroy()
-{
-    if( _instance != NULL )
-    {
-        delete _instance;
-    }
-}
-
-// Main timer loop
-void X11TimerManager::Thread( void *p_timer )
-{
-    vlc_thread_ready( (vlc_object_t*) p_timer );
-
-    while( !((timer_thread_t*)p_timer)->die )
-    {
-        _instance->WaitNextTimer();
-    }
-}
-
-
-void X11TimerManager::WaitNextTimer()
-{
-    mtime_t curDate = mdate();
-    mtime_t nextDate = LAST_MDATE;
-
-    X11Timer *nextTimer = NULL;
-    Lock();       
-    // Find the next timer to execute
-    list<X11Timer*>::iterator timer;
-    for( timer = _timers.begin(); timer != _timers.end(); timer++ )
-    {
-        mtime_t timerDate = (*timer)->GetNextDate();
-        if( timerDate < nextDate )
-        {
-            nextTimer = *timer;
-            nextDate = timerDate;
-        }
-    }
-    Unlock();
-    
-    if( nextTimer == NULL )
-    {
-        // FIXME: should wait on a cond instead
-        msleep( 10000 );
-    }
-    else
-    {
-        if( nextDate > curDate )
-        {
-            mwait( nextDate );
-        }
-        bool ret = nextTimer->Execute();
-        if( !ret ) 
-        {   
-            _timers.remove( nextTimer );
-        }
-    }
-}
-
-
-void X11TimerManager::addTimer( X11Timer *timer )
-{ 
-   timer->SetDate( mdate() );
-    _timers.push_back( timer ); 
-}
-
-
-void X11TimerManager::removeTimer( X11Timer *timer ) 
-{
-    Lock();
-    timer->Lock();
-    _timers.remove( timer ); 
-    Unlock();
-    timer->Unlock();
-}
-
-
-#endif
diff --git a/modules/gui/skins/x11/x11_timer.h b/modules/gui/skins/x11/x11_timer.h
deleted file mode 100644 (file)
index 4a7b9d9..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*****************************************************************************
- * x11_timer.h: helper class to implement timers
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_timer.h,v 1.6 2003/07/25 22:50:12 gbazin Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_TIMER
-#define VLC_SKIN_X11_TIMER
-
-#include <list>
-using namespace std;
-
-typedef struct
-{
-    VLC_COMMON_MEMBERS
-    int die;
-} timer_thread_t;
-
-class X11Timer;  // forward declaration
-
-typedef bool(*callback_t)( void* );
-
-//---------------------------------------------------------------------------
-class X11Timer
-{
-    private:
-        intf_thread_t *_p_intf;
-        mtime_t _interval;       
-        callback_t _callback;
-        void *_data;
-        vlc_mutex_t _lock;
-        mtime_t _nextDate;
-
-    public:
-        X11Timer( intf_thread_t *p_intf, mtime_t interval, callback_t func, 
-                  void *data );
-        ~X11Timer();
-
-        void SetDate( mtime_t date );
-        mtime_t GetNextDate();
-        bool Execute();
-        
-        inline void Lock() { vlc_mutex_lock( &_lock ); }
-        inline void Unlock() { vlc_mutex_unlock( &_lock ); }
-};
-//---------------------------------------------------------------------------
-class X11TimerManager
-{
-    private:
-        static X11TimerManager *_instance;
-        intf_thread_t *_p_intf;
-        timer_thread_t *_p_timer;
-        list<X11Timer*> _timers;
-        vlc_mutex_t _lock;
-
-        X11TimerManager( intf_thread_t *p_intf );
-        ~X11TimerManager();
-
-        static void Thread( void *p_timer );
-        void WaitNextTimer();
-
-    public:
-        static void Initialize();
-        static X11TimerManager *Instance( intf_thread_t *p_intf );
-        void Destroy();
-
-        void addTimer( X11Timer *timer );
-        void removeTimer( X11Timer *timer );
-
-        inline void Lock() { vlc_mutex_lock( &_lock ); }
-        inline void Unlock() { vlc_mutex_unlock( &_lock ); }
-};
-//---------------------------------------------------------------------------
-#endif
diff --git a/modules/gui/skins/x11/x11_window.cpp b/modules/gui/skins/x11/x11_window.cpp
deleted file mode 100644 (file)
index 4d5bab5..0000000
+++ /dev/null
@@ -1,620 +0,0 @@
-/*****************************************************************************
- * x11_window.cpp: X11 implementation of the Window class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_window.cpp,v 1.30 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-#ifdef X11_SKINS
-
-//--- GENERAL ---------------------------------------------------------------
-//#include <math.h>
-
-//--- VLC -------------------------------------------------------------------
-#include <vlc/intf.h>
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/extensions/shape.h>
-
-//--- SKIN ------------------------------------------------------------------
-#include "../os_api.h"
-#include "../src/anchor.h"
-#include "../controls/generic.h"
-#include "../src/window.h"
-#include "../os_window.h"
-#include "../src/event.h"
-#include "../os_event.h"
-#include "../src/graphics.h"
-#include "../os_graphics.h"
-#include "../src/skin_common.h"
-#include "../src/theme.h"
-#include "../os_theme.h"
-#include "x11_timer.h"
-
-
-static bool ToolTipCallback( void *data );
-static void DrawToolTipText( tooltip_t *tooltip );
-
-
-//---------------------------------------------------------------------------
-// Skinable Window
-//---------------------------------------------------------------------------
-X11Window::X11Window( intf_thread_t *p_intf, Window wnd, int x, int y,
-    bool visible, int transition, int normalalpha, int movealpha,
-    bool dragdrop, bool playondrop, string name )
-    : SkinWindow( p_intf, x, y, visible, transition, normalalpha, movealpha,
-              dragdrop  )
-{
-    // Set handles
-    Wnd         = wnd;
-    display     = p_intf->p_sys->display;
-    int screen  = DefaultScreen( display );
-    Name        = name;
-    LButtonDown = false;
-    RButtonDown = false;
-
-    // Creation of a graphic context that doesn't generate a GraphicsExpose
-    // event when using functions like XCopyArea
-    XGCValues gcVal;
-    gcVal.graphics_exposures = False;
-    XLOCK;
-    Gc = XCreateGC( display, wnd, GCGraphicsExposures, &gcVal );
-    XUNLOCK;
-
-    // Removing fading effect
-    Transition  = 0;
-
-    if( DragDrop )
-    {
-        // register the listview as a drop target
-        DropObject = new X11DropObject( p_intf, Wnd, playondrop );
-
-        Atom xdndAtom = XInternAtom( display, "XdndAware", False );
-        char xdndVersion = 4;
-        XLOCK;
-        XChangeProperty( display, wnd, xdndAtom, XA_ATOM, 32,
-                         PropModeReplace, (unsigned char *)&xdndVersion, 1);
-        XUNLOCK;
-    }
-
-    // Associate vlc icon to the window
-    XLOCK;
-    XWMHints *hints = XGetWMHints( display, Wnd );
-    if( !hints)
-    {
-        hints = XAllocWMHints();
-    }
-    if( p_intf->p_sys->iconPixmap != None )
-    {
-        hints->icon_pixmap = p_intf->p_sys->iconPixmap;
-        hints->flags |= IconPixmapHint;
-    }
-    if( p_intf->p_sys->iconMask != None )
-    {
-        hints->icon_mask = p_intf->p_sys->iconMask;
-        hints->flags |= IconMaskHint;
-    }
-    XSetWMHints( display, Wnd, hints );
-    XFree( hints );
-    XUNLOCK;
-
-    // Create Tool Tip window
-    XColor color;
-    color.red = 0xffff;
-    color.green = 0xffff;
-    color.blue = 0xa000;
-    Colormap cm = DefaultColormap( display, screen );
-    Window root = DefaultRootWindow( display );
-
-    XLOCK;
-    XAllocColor( display, cm, &color );
-    XSetWindowAttributes attr;
-    attr.background_pixel = color.pixel;
-    attr.override_redirect = True;
-    ToolTip.window = XCreateWindow( display, root, 0, 0, 1, 1, 1, 0,
-                                    InputOutput, CopyFromParent,
-                                    CWBackPixel|CWOverrideRedirect, &attr );
-    ToolTip.font = XLoadFont( display,
-                              "-*-helvetica-bold-r-*-*-*-80-*-*-*-*-*-*" );
-    gcVal.font = ToolTip.font;
-    gcVal.foreground = 0;
-    gcVal.background = color.pixel;
-    ToolTip.gc = XCreateGC( display, ToolTip.window, 
-                            GCBackground|GCForeground|GCFont, &gcVal );
-    XUNLOCK;
-
-    ToolTip.display = display;
-    X11Timer *timer = new X11Timer( p_intf, 500000, ToolTipCallback, &ToolTip );
-    ToolTip.p_intf = p_intf;
-    ToolTip.timer = timer;
-    ToolTip.active = False;
-
-    // Double-click handling
-    ClickedX = 0;
-    ClickedY = 0;
-    ClickedTime = 0;
-    // TODO: can be retrieved somewhere ?
-    DblClickDelay = 400;
-}
-//---------------------------------------------------------------------------
-X11Window::~X11Window()
-{
-    if( DragDrop )
-    {
-        delete DropObject;
-    }
-    delete ToolTip.timer;
-    XLOCK;
-    XFreeGC( display, ToolTip.gc );
-    XFreeGC( display, Gc );
-    XDestroyWindow( display, ToolTip.window );
-    XDestroyWindow( display, Wnd );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Window::ToggleOnTop()
-{
-    XEvent ev;
-    ev.type = ClientMessage;
-    ev.xclient.display = display;
-    ev.xclient.window = Wnd;
-    ev.xclient.serial = 0;
-    ev.xclient.send_event = True;
-    ev.xclient.message_type = XInternAtom( display, "_NET_WM_STATE", True );
-    ev.xclient.format = 32;
-    ev.xclient.data.l[1] = XInternAtom( display, "_NET_WM_STATE_ABOVE", False);
-    ev.xclient.data.l[2] = 0;
-    ev.xclient.data.l[3] = 0;
-    ev.xclient.data.l[4] = 0;
-
-    if( !p_intf->p_sys->b_on_top )
-    {
-        // Set the window on top
-        ev.xclient.data.l[0] = 1; // _NET_WM_STATE_ADD
-    }
-    else
-    {
-        // Set the window not on top
-        ev.xclient.data.l[0] = 0; // _NET_WM_STATE_REMOVE
-    }
-
-    XLOCK;
-    XSendEvent( display, DefaultRootWindow( display ), False,
-                SubstructureRedirectMask | SubstructureNotifyMask, &ev );
-    XUNLOCK;
-
-    /* For KDE */
-    ev.xclient.data.l[1] = XInternAtom( display, "_NET_WM_STATE_STAYS_ON_TOP",
-                                        False);
-    XLOCK;
-    XSendEvent( display, DefaultRootWindow( display ), False,
-                SubstructureRedirectMask | SubstructureNotifyMask, &ev );
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Window::OSShow( bool show )
-{
-    XLOCK;
-    XResizeWindow( display, Wnd, 1, 1 ); // Avoid flicker
-    XUNLOCK;
-
-    if( show )
-    {
-        // We do the call to XShapeCombineRegion() here because the window
-        // must be unmapped for this to work.
-        Drawable drawable = (( X11Graphics* )Image )->GetImage();
-
-        XLOCK;
-        XImage *image = XGetImage( display, drawable, 0, 0, Width, Height, 
-                                   AllPlanes, ZPixmap );
-        if( image )
-        {
-            // Mask for transparency
-            Region region = XCreateRegion();
-            for( int line = 0; line < Height; line++ )
-            {
-                int start = 0, end = 0;
-                while( start < Width )
-                {
-                    while( start < Width && XGetPixel( image, start, line )
-                           == 0 )
-                    {
-                        start++;
-                    }
-                    end = start;
-                    while( end < Width && XGetPixel( image, end, line ) != 0)
-                    {
-                        end++;
-                    }
-                    XRectangle rect;
-                    rect.x = start;
-                    rect.y = line;
-                    rect.width = end - start + 1;
-                    rect.height = 1;
-                    Region newRegion = XCreateRegion();
-                    XUnionRectWithRegion( &rect, region, newRegion );
-                    XDestroyRegion( region );
-                    region = newRegion;
-                    start = end + 1;
-                }
-            }
-            XDestroyImage( image );
-
-            XShapeCombineRegion( display, Wnd, ShapeBounding, 0, 0, region,
-                                 ShapeSet );
-            XDestroyRegion( region );
-
-        }
-        else
-        {
-            msg_Err( p_intf, "X11Window::OSShow XShapeCombineRegion() failed");
-        }
-
-        XMapWindow( display, Wnd );
-        XMoveResizeWindow( display, Wnd, Left, Top, Width, Height );
-        XUNLOCK;
-    }
-    else
-    {
-        XLOCK;
-        XUnmapWindow( display, Wnd );
-        XUNLOCK;
-    }
-}
-//---------------------------------------------------------------------------
-bool X11Window::ProcessOSEvent( Event *evt )
-{
-    unsigned int msg = evt->GetMessage();
-    //unsigned int p1  = evt->GetParam1();
-    int          p2  = evt->GetParam2();
-    int          time;
-    int          posX, posY;
-    string       type;
-    int          button;
-
-    switch( msg )
-    {
-        case Expose:
-            RefreshFromImage( 0, 0, Width, Height );
-            return true;
-
-        case MotionNotify:
-            if( LButtonDown )
-                MouseMove( (int)( (XMotionEvent *)p2 )->x,
-                           (int)( (XMotionEvent *)p2 )->y, 1 );
-            else if( RButtonDown )
-                MouseMove( (int)( (XMotionEvent *)p2 )->x,
-                           (int)( (XMotionEvent *)p2 )->y, 2 );
-            else
-                MouseMove( (int)( (XMotionEvent *)p2 )->x,
-                           (int)( (XMotionEvent *)p2 )->y, 0 );
-            return true;
-
-
-        case ButtonPress:
-            // Raise all the windows
-            for( list<SkinWindow *>::const_iterator win = 
-                    p_intf->p_sys->p_theme->WindowList.begin();
-                    win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
-            {
-                Window id = ( (X11Window *)(*win) )->GetHandle();
-                // the current window is raised last
-                if( id != Wnd )
-                {
-                    XLOCK;
-                    XRaiseWindow( display, id );
-                    XUNLOCK;
-                }
-            }
-            XLOCK;
-            XRaiseWindow( display, Wnd );
-            XUNLOCK;
-            
-            button = 0;
-            if( ((XButtonEvent *)p2 )->state & ControlMask )
-            {
-                button |= KEY_CTRL;
-            } 
-            if( ((XButtonEvent *)p2 )->state & ShiftMask )
-            {
-                button |= KEY_SHIFT;
-            }
-
-            switch( ( (XButtonEvent *)p2 )->button )
-            {
-                case 1:
-                    // Left button
-                    button |= MOUSE_LEFT;
-                    time = OSAPI_GetTime();
-                    OSAPI_GetMousePos( posX, posY );
-                    if( time - ClickedTime < DblClickDelay && 
-                        posX == ClickedX && posY == ClickedY )
-                    {
-                        // Double-click
-                        ClickedTime = 0; 
-                        MouseDblClick( (int)( (XButtonEvent *)p2 )->x,
-                                       (int)( (XButtonEvent *)p2 )->y, button );
-                    }
-                    else
-                    {
-                        ClickedTime = time;
-                        ClickedX = posX;
-                        ClickedY = posY;
-                        LButtonDown = true;
-                        MouseDown( (int)( (XButtonEvent *)p2 )->x,
-                                   (int)( (XButtonEvent *)p2 )->y, button );
-                    }
-                    break;
-
-                case 3:
-                    // Right button
-                    button |= MOUSE_RIGHT;
-                    RButtonDown = true;
-                    MouseDown( (int)( (XButtonEvent *)p2 )->x,
-                               (int)( (XButtonEvent *)p2 )->y, button );
-                    break;
-
-                default:
-                    break;
-            }
-            return true;
-
-        case ButtonRelease:
-            button = 0;
-            if( ((XButtonEvent *)p2 )->state & ControlMask )
-            {
-                button |= KEY_CTRL;
-            }
-            if( ((XButtonEvent *)p2 )->state & ShiftMask )
-            {
-                button |= KEY_SHIFT;
-            }
-
-            switch( ( (XButtonEvent *)p2 )->button )
-            {
-                case 1:
-                    // Left button
-                    button |= MOUSE_LEFT;
-                    LButtonDown = false;
-                    MouseUp( (int)( (XButtonEvent *)p2 )->x,
-                             (int)( (XButtonEvent *)p2 )->y, button );
-                    break;
-
-                case 3:
-                    button |= MOUSE_RIGHT;
-                    // Right button
-                    RButtonDown = false;
-                    MouseUp( (int)( (XButtonEvent *)p2 )->x,
-                             (int)( (XButtonEvent *)p2 )->y, button );
-                    break; 
-
-                case 4:
-                    // Scroll up
-                    MouseScroll( (int)( (XButtonEvent *)p2 )->x,
-                                 (int)( (XButtonEvent *)p2 )->y,
-                                 MOUSE_SCROLL_UP);
-                    break;
-                case 5:
-                    // Scroll down
-                    MouseScroll( (int)( (XButtonEvent *)p2 )->x,
-                                 (int)( (XButtonEvent *)p2 )->y,
-                                 MOUSE_SCROLL_DOWN);
-                    break;
-
-                default:
-                    break;
-            }
-            return true;
-
-        case LeaveNotify:
-            OSAPI_PostMessage( this, WINDOW_LEAVE, 0, 0 );
-            return true;
-
-        case ClientMessage:
-            XLOCK;
-            type = XGetAtomName( display, ( (XClientMessageEvent*)
-                                             p2 )->message_type );
-            XUNLOCK;
-            if( type == "XdndEnter" )
-            {
-                DropObject->DndEnter( ((XClientMessageEvent*)p2)->data.l );
-                return true;
-            }
-            else if( type == "XdndPosition" )
-            {
-                DropObject->DndPosition( ((XClientMessageEvent*)p2)->data.l );
-                return true;
-            }
-            else if( type == "XdndLeave" )
-            {
-                DropObject->DndLeave( ((XClientMessageEvent*)p2)->data.l );
-                return true;
-            }
-            else if( type == "XdndDrop" )
-            {
-                DropObject->DndDrop( ((XClientMessageEvent*)p2)->data.l );
-                return true;
-            }
-            return false;
-            
-        default:
-            return false;
-    }
-}
-//---------------------------------------------------------------------------
-void X11Window::SetTransparency( int Value )
-{
-/*    if( Value > -1 )
-        Alpha = Value;
-    SetLayeredWindowAttributes( hWnd, 0, Alpha, LWA_ALPHA | LWA_COLORKEY );
-    UpdateWindow( hWnd );*/
-}
-//---------------------------------------------------------------------------
-void X11Window::RefreshFromImage( int x, int y, int w, int h )
-{
-    Drawable drawable = (( X11Graphics* )Image )->GetImage();
-
-    XLOCK;
-    XCopyArea( display, drawable, Wnd, Gc, x, y, w, h, x, y );
-    XSync( display, 0);
-    XUNLOCK;
-}
-//---------------------------------------------------------------------------
-void X11Window::WindowManualMove()
-{
-    // Get mouse cursor position
-    int x, y;
-    OSAPI_GetMousePos( x, y );
-
-    // Move window and chek for magnetism
-    p_intf->p_sys->p_theme->MoveSkinMagnet( this,
-        WindowX + x - CursorX, WindowY + y - CursorY );
-
-}
-//---------------------------------------------------------------------------
-void X11Window::WindowManualMoveInit()
-{
-    OSAPI_GetMousePos( CursorX, CursorY );
-    WindowX = Left;
-    WindowY = Top;
-}
-//---------------------------------------------------------------------------
-void X11Window::Move( int left, int top )
-{
-    Left = left;
-    Top  = top;
-    XMoveWindow( display, Wnd, left, top );
-}
-//---------------------------------------------------------------------------
-void X11Window::Size( int width, int height )
-{
-    Width  = width;
-    Height = height;
-    XResizeWindow( display, Wnd, width, height );
-}
-//---------------------------------------------------------------------------
-
-
-bool ToolTipCallback( void *data )
-{
-    int direction, fontAscent, fontDescent;
-
-    Display *disp = ((tooltip_t*)data)->display;
-    Window win = ((tooltip_t*)data)->window;
-    Font font = ((tooltip_t*)data)->font;
-    GC gc = ((tooltip_t*)data)->gc;
-    string text = ((tooltip_t*)data)->text;
-    int curX = ((tooltip_t*)data)->curX;
-    int curY = ((tooltip_t*)data)->curY;
-    XLOCK;
-    XClearWindow( disp, win );
-    XCharStruct overall;
-    XQueryTextExtents( disp, font, text.c_str(), text.size(), &direction, 
-                       &fontAscent, &fontDescent, &overall );
-    int w = overall.rbearing - overall.lbearing;
-    int h = overall.ascent + overall.descent;
-    XMapRaised( disp, win );
-    XMoveWindow( disp, win, curX - w/4, curY + 20 );
-    XResizeWindow( disp, win, w+8, h+8 );
-    XDrawString( disp, win, gc, 4, overall.ascent+4, text.c_str(), 
-                 text.size() );
-    XSync( disp, 0 );
-    ((tooltip_t*)data)->active = True;
-    XUNLOCK;
-    
-    return False;
-}
-
-
-
-void DrawToolTipText( tooltip_t *tooltip )
-{
-    int direction, fontAscent, fontDescent;
-
-    Display *disp = tooltip->display;
-    Window win = tooltip->window;
-    Font font = tooltip->font;
-    GC gc = tooltip->gc;
-    string text = tooltip->text;
-    int curX = tooltip->curX;
-    int curY = tooltip->curY;
-    XLOCK;
-    XClearWindow( disp, win );
-    XCharStruct overall;
-    XQueryTextExtents( disp, font, text.c_str(), text.size(), &direction, 
-                       &fontAscent, &fontDescent, &overall );
-    int w = overall.rbearing - overall.lbearing;
-    int h = overall.ascent + overall.descent;
-    XMoveWindow( disp, win, curX - w/4, curY + 20 );
-    XResizeWindow( disp, win, w+8, h+8 );
-    XDrawString( disp, win, gc, 4, overall.ascent+4, text.c_str(), 
-                 text.size() );
-    XSync( disp, 0 );
-    XUNLOCK;
-}
-
-
-void X11Window::ChangeToolTipText( string text )
-{
-    if( text == "none" )
-    {
-        if( ToolTipText != "none" )
-        {
-            ToolTipText = "none";
-            XLOCK;
-            // Hide the tooltip window
-            X11TimerManager *timerManager = X11TimerManager::Instance( p_intf );
-            timerManager->removeTimer( ToolTip.timer );
-            XUnmapWindow( display, ToolTip.window );
-            XResizeWindow( display, ToolTip.window, 1, 1 );
-            XSync( display, 0 );
-            ToolTip.active = False;
-            XUNLOCK;
-        }
-    }
-    else
-    {
-        if( text != ToolTipText )
-        {
-            ToolTipText = text;
-            ToolTip.text = text;
-            if( !ToolTip.active )
-            {
-                // Create the tooltip
-                OSAPI_GetMousePos( ToolTip.curX, ToolTip.curY );
-                X11TimerManager *timerManager = X11TimerManager::Instance( p_intf );
-                timerManager->addTimer( ToolTip.timer );
-            }
-            else
-            {
-                // Refresh the tooltip
-                DrawToolTipText( &ToolTip );
-            }
-        }
-    }
-}
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/modules/gui/skins/x11/x11_window.h b/modules/gui/skins/x11/x11_window.h
deleted file mode 100644 (file)
index 77a2dca..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*****************************************************************************
- * x11_window.h: X11 implementation of the Window class
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: x11_window.h,v 1.8 2003/10/22 19:12:56 ipkiss Exp $
- *
- * Authors: Cyril Deguet     <asmax@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
- * USA.
- *****************************************************************************/
-
-
-#ifndef VLC_SKIN_X11_WIN
-#define VLC_SKIN_X11_WIN
-
-//--- X11 -------------------------------------------------------------------
-#include <X11/Xlib.h>
-
-#include "x11_timer.h"
-
-//---------------------------------------------------------------------------
-class Graphics;
-class Event;
-
-
-typedef struct
-{
-    intf_thread_t *p_intf;
-    X11Timer *timer;
-    string text;
-    Display *display;
-    Window window;
-    GC gc;
-    Font font;
-    int curX;
-    int curY;
-    bool active;
-} tooltip_t;
-
-
-//---------------------------------------------------------------------------
-class X11Window : public SkinWindow
-{
-    private:
-        // General parameters
-        Window Wnd;
-        Display *display;
-        GC Gc;
-        int CursorX;
-        int CursorY;
-        int WindowX;
-        int WindowY;
-        string Name;
-
-        // Drag&Drop
-        X11DropObject *DropObject;
-
-        // Tooltip texts
-        tooltip_t ToolTip;
-
-        // Double-click handling
-        int ClickedX;
-        int ClickedY;
-        int ClickedTime;
-        int DblClickDelay;
-
-        // Left button down
-        bool LButtonDown;
-        // Right button down
-        bool RButtonDown;
-
-    public:
-        // Cosntructors
-        X11Window( intf_thread_t *_p_intf, Window wnd, int x, int y,
-            bool visible, int transition, int normalalpha, int movealpha,
-            bool dragdrop, bool playondrop, string name );
-
-        // Destructors
-        virtual ~X11Window();
-
-        // Event processing
-        virtual bool ProcessOSEvent( Event *evt );
-
-        // Window graphic aspect
-        virtual void ToggleOnTop();
-        virtual void OSShow( bool show );
-        virtual void RefreshFromImage( int x, int y, int w, int h );
-        virtual void SetTransparency( int Value = -1 );
-        virtual void WindowManualMove();
-        virtual void WindowManualMoveInit();
-
-        // Window methods
-        virtual void Move( int left, int top );
-        virtual void Size( int width, int height );
-
-        // Specific X11 methods
-        Window GetHandle() { return Wnd; };
-
-        // Tooltip texts
-        virtual void ChangeToolTipText( string text );
-
-        // Getters
-        string GetName() { return Name; }
-};
-//---------------------------------------------------------------------------
-
-#endif
diff --git a/toolbox b/toolbox
index 3942dd7bbda75263321d9174f9647a66d073ca5d..fe1272c47712e055d0773dd0cf20ca20a3fadb96 100755 (executable)
--- a/toolbox
+++ b/toolbox
@@ -554,20 +554,6 @@ EOF
   exit 0
 fi
 
-##
-##  Fix flexml-generated files
-##
-if test "${action}" = "flexml"
-then
-  cd modules/gui/skins/parser
-  flexml -SH -a skin.act skin.dtd
-  # comment the dummy main function
-  file=skin.c
-  sed 's@int main@//int main@' < $file > $file.$$.bak
-  mv -f $file.$$.bak $file
-  flex -oflex.c -BLs skin.l
-fi
-
 ##
 ##  Make distclean
 ##
index 3398b1a909a24c2c2c1743a867d1fffe99026f6a..42d2b387f65e0eb0bcffb18a00927c3177851ba4 100644 (file)
@@ -133,7 +133,6 @@ Section "Media player (required)" SEC01
 \r
   File  /r plugins\r
   File  /r locale\r
-  File  /r skins\r
   File  /r skins2\r
   File  /r http\r
 \r
@@ -177,8 +176,6 @@ Section "Start Menu + Desktop Shortcut" SEC02
     "$INSTDIR\vlc.exe" "--intf wxwin"\r
   CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (skins).lnk" \\r
     "$INSTDIR\vlc.exe" "--intf skins2"\r
-  CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player (old skins).lnk" \\r
-    "$INSTDIR\vlc.exe" "--intf skins"\r
   CreateShortCut "$DESKTOP\VLC media player.lnk" \\r
     "$INSTDIR\vlc.exe" "--intf wxwin"\r
   WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" \\r