pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] r2753 - in branches/pingus_sdl: . data/controller src src/g


From: jsalmon3
Subject: [Pingus-CVS] r2753 - in branches/pingus_sdl: . data/controller src src/gui src/input src/input/axes src/input/buttons src/input/pointers src/input/scrollers
Date: Wed, 18 Jul 2007 06:33:26 +0200

Author: jsalmon3
Date: 2007-07-18 06:32:38 +0200 (Wed, 18 Jul 2007)
New Revision: 2753

Modified:
   branches/pingus_sdl/config.h
   branches/pingus_sdl/data/controller/default.scm
   branches/pingus_sdl/pingus.vcproj
   branches/pingus_sdl/src/SConscript
   branches/pingus_sdl/src/gui/component.hpp
   branches/pingus_sdl/src/gui/input_box.cpp
   branches/pingus_sdl/src/gui/input_box.hpp
   branches/pingus_sdl/src/gui/screen_manager.cpp
   branches/pingus_sdl/src/input/axes/button_axis.cpp
   branches/pingus_sdl/src/input/axes/button_axis.hpp
   branches/pingus_sdl/src/input/axes/inverted_axis.cpp
   branches/pingus_sdl/src/input/axes/joystick_axis.cpp
   branches/pingus_sdl/src/input/axes/mouse_axis.cpp
   branches/pingus_sdl/src/input/axis_factory.cpp
   branches/pingus_sdl/src/input/axis_factory.hpp
   branches/pingus_sdl/src/input/button.hpp
   branches/pingus_sdl/src/input/button_factory.cpp
   branches/pingus_sdl/src/input/buttons/joystick_button.cpp
   branches/pingus_sdl/src/input/buttons/key_button.cpp
   branches/pingus_sdl/src/input/buttons/key_button.hpp
   branches/pingus_sdl/src/input/buttons/mouse_button.cpp
   branches/pingus_sdl/src/input/buttons/mouse_button.hpp
   branches/pingus_sdl/src/input/buttons/multiple_button.cpp
   branches/pingus_sdl/src/input/buttons/multiple_button.hpp
   branches/pingus_sdl/src/input/controller.cpp
   branches/pingus_sdl/src/input/controller.hpp
   branches/pingus_sdl/src/input/event.hpp
   branches/pingus_sdl/src/input/pointer.hpp
   branches/pingus_sdl/src/input/pointer_factory.hpp
   branches/pingus_sdl/src/input/pointers/axis_pointer.cpp
   branches/pingus_sdl/src/input/pointers/axis_pointer.hpp
   branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp
   branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp
   branches/pingus_sdl/src/input/scroller.hpp
   branches/pingus_sdl/src/input/scroller_factory.cpp
   branches/pingus_sdl/src/input/scroller_factory.hpp
   branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp
   branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp
   branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp
   branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp
Log:
Updated input code to work with SDL

Modified: branches/pingus_sdl/config.h
===================================================================
--- branches/pingus_sdl/config.h        2007-07-18 03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/config.h        2007-07-18 04:32:38 UTC (rev 2753)
@@ -65,7 +65,11 @@
 #define HAVE_UNISTD_H 1
 
 /* Define as const if the declaration of iconv() needs const. */
-#define ICONV_CONST 
+#ifdef __CYGWIN__
+#define ICONV_CONST const
+#else
+#define ICONV_CONST
+#endif
 
 /* Name of package */
 #define PACKAGE "pingus"

Modified: branches/pingus_sdl/data/controller/default.scm
===================================================================
--- branches/pingus_sdl/data/controller/default.scm     2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/data/controller/default.scm     2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -4,11 +4,11 @@
 
   (primary-button
     (mouse-button
-      (button 0)))
+      (button 1)))
 
   (secondary-button
     (mouse-button
-      (button 2)))
+      (button 3)))
 
   (pause-button
     (key-button

Modified: branches/pingus_sdl/pingus.vcproj
===================================================================
--- branches/pingus_sdl/pingus.vcproj   2007-07-18 03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/pingus.vcproj   2007-07-18 04:32:38 UTC (rev 2753)
@@ -122,7 +122,7 @@
                                UsePrecompiledHeader="0"
                                WarningLevel="3"
                                Detect64BitPortabilityProblems="false"
-                               DebugInformationFormat="3"
+                               DebugInformationFormat="0"
                        />
                        <Tool
                                Name="VCManagedResourceCompilerTool"
@@ -1414,6 +1414,10 @@
                                        >
                                </File>
                                <File
+                                       
RelativePath=".\src\input\axis_factory.cpp"
+                                       >
+                               </File>
+                               <File
                                        
RelativePath=".\src\input\axis_factory.hpp"
                                        >
                                </File>
@@ -1422,6 +1426,10 @@
                                        >
                                </File>
                                <File
+                                       
RelativePath=".\src\input\button_factory.cpp"
+                                       >
+                               </File>
+                               <File
                                        
RelativePath=".\src\input\button_factory.hpp"
                                        >
                                </File>
@@ -1446,6 +1454,10 @@
                                        >
                                </File>
                                <File
+                                       
RelativePath=".\src\input\pointer_factory.cpp"
+                                       >
+                               </File>
+                               <File
                                        
RelativePath=".\src\input\pointer_factory.hpp"
                                        >
                                </File>
@@ -1454,6 +1466,10 @@
                                        >
                                </File>
                                <File
+                                       
RelativePath=".\src\input\scroller_factory.cpp"
+                                       >
+                               </File>
+                               <File
                                        
RelativePath=".\src\input\scroller_factory.hpp"
                                        >
                                </File>
@@ -1461,6 +1477,10 @@
                                        Name="axes"
                                        >
                                        <File
+                                               
RelativePath=".\src\input\axes\button_axis.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\axes\button_axis.hpp"
                                                >
                                        </File>
@@ -1469,18 +1489,34 @@
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\axes\inverted_axis.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\axes\inverted_axis.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\axes\joystick_axis.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\axes\joystick_axis.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\axes\mouse_axis.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\axes\mouse_axis.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\axes\multiple_axis.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\axes\multiple_axis.hpp"
                                                >
                                        </File>
@@ -1489,6 +1525,10 @@
                                        Name="buttons"
                                        >
                                        <File
+                                               
RelativePath=".\src\input\buttons\double_button.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\buttons\double_button.hpp"
                                                >
                                        </File>
@@ -1497,14 +1537,42 @@
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\buttons\joystick_button.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\buttons\joystick_button.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\buttons\key_button.cpp"
+                                               >
+                                       </File>
+                                       <File
+                                               
RelativePath=".\src\input\buttons\key_button.hpp"
+                                               >
+                                       </File>
+                                       <File
+                                               
RelativePath=".\src\input\buttons\mouse_button.cpp"
+                                               >
+                                       </File>
+                                       <File
+                                               
RelativePath=".\src\input\buttons\mouse_button.hpp"
+                                               >
+                                       </File>
+                                       <File
+                                               
RelativePath=".\src\input\buttons\multiple_button.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\buttons\multiple_button.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\buttons\triple_button.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\buttons\triple_button.hpp"
                                                >
                                        </File>
@@ -1513,6 +1581,10 @@
                                        Name="scrollers"
                                        >
                                        <File
+                                               
RelativePath=".\src\input\scrollers\axis_scroller.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\scrollers\axis_scroller.hpp"
                                                >
                                        </File>
@@ -1521,18 +1593,38 @@
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\scrollers\inverted_scroller.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\scrollers\inverted_scroller.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\scrollers\joystick_scroller.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\scrollers\joystick_scroller.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\scrollers\mouse_scroller.cpp"
+                                               >
+                                       </File>
+                                       <File
+                                               
RelativePath=".\src\input\scrollers\multiple_scroller.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\scrollers\multiple_scroller.hpp"
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\scrollers\pointer_scroller.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\scrollers\pointer_scroller.hpp"
                                                >
                                        </File>
@@ -1541,6 +1633,10 @@
                                        Name="pointers"
                                        >
                                        <File
+                                               
RelativePath=".\src\input\pointers\axis_pointer.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\pointers\axis_pointer.hpp"
                                                >
                                        </File>
@@ -1549,6 +1645,14 @@
                                                >
                                        </File>
                                        <File
+                                               
RelativePath=".\src\input\pointers\mouse_pointer.cpp"
+                                               >
+                                       </File>
+                                       <File
+                                               
RelativePath=".\src\input\pointers\multiple_pointer.cpp"
+                                               >
+                                       </File>
+                                       <File
                                                
RelativePath=".\src\input\pointers\multiple_pointer.hpp"
                                                >
                                        </File>

Modified: branches/pingus_sdl/src/SConscript
===================================================================
--- branches/pingus_sdl/src/SConscript  2007-07-18 03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/SConscript  2007-07-18 04:32:38 UTC (rev 2753)
@@ -26,6 +26,7 @@
 sdl_env = Environment(CC = 'gcc',
                       CCFLAGS = ['-O2', '-Wall', '-Werror', '-g'])
 
+env['CCFLAGS'] += ['-I/usr/include/boost-1_33_1']
 # env.Copy(LIBS = ['a', 'b'])
 
 # FIXME: Make this configurable
@@ -173,30 +174,30 @@
 'lisp/properties.cpp',
 'lisp/writer.cpp',
 
-# # 'input/axes/button_axis.cpp', 
-# # 'input/axes/inverted_axis.cpp', 
-# # 'input/axes/joystick_axis.cpp', 
-# # 'input/axes/multiple_axis.cpp', 
-# # 'input/axis_factory.cpp', 
-# # 'input/button_factory.cpp', 
-# # 'input/buttons/double_button.cpp', 
-# # 'input/buttons/joystick_button.cpp', 
-# # 'input/buttons/key_button.cpp', 
-# # 'input/buttons/mouse_button.cpp', 
-# # 'input/buttons/multiple_button.cpp', 
-# # 'input/buttons/triple_button.cpp', 
+'input/axes/button_axis.cpp', 
+'input/axes/inverted_axis.cpp', 
+'input/axes/joystick_axis.cpp', 
+'input/axes/multiple_axis.cpp', 
+'input/axis_factory.cpp', 
+'input/button_factory.cpp', 
+'input/buttons/double_button.cpp', 
+'input/buttons/joystick_button.cpp', 
+'input/buttons/key_button.cpp', 
+'input/buttons/mouse_button.cpp', 
+'input/buttons/multiple_button.cpp', 
+'input/buttons/triple_button.cpp', 
 'input/controller.cpp', 
-# # 'input/pointer_factory.cpp', 
-# # 'input/pointers/axis_pointer.cpp', 
-# # 'input/pointers/mouse_pointer.cpp', 
-# # 'input/pointers/multiple_pointer.cpp', 
-# # 'input/scroller_factory.cpp', 
-# # 'input/scrollers/axis_scroller.cpp', 
-# # 'input/scrollers/inverted_scroller.cpp', 
-# # 'input/scrollers/joystick_scroller.cpp', 
-# # 'input/scrollers/mouse_scroller.cpp', 
-# # 'input/scrollers/multiple_scroller.cpp', 
-# # 'input/scrollers/pointer_scroller.cpp', 
+'input/pointer_factory.cpp', 
+'input/pointers/axis_pointer.cpp', 
+'input/pointers/mouse_pointer.cpp', 
+'input/pointers/multiple_pointer.cpp', 
+'input/scroller_factory.cpp', 
+'input/scrollers/axis_scroller.cpp', 
+'input/scrollers/inverted_scroller.cpp', 
+'input/scrollers/joystick_scroller.cpp', 
+'input/scrollers/mouse_scroller.cpp', 
+'input/scrollers/multiple_scroller.cpp', 
+'input/scrollers/pointer_scroller.cpp', 
 
 'layer_manager.cpp', 
 'components/menu_button.cpp', 

Modified: branches/pingus_sdl/src/gui/component.hpp
===================================================================
--- branches/pingus_sdl/src/gui/component.hpp   2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/gui/component.hpp   2007-07-18 04:32:38 UTC (rev 
2753)
@@ -75,9 +75,9 @@
       coordinates */
   virtual void on_pointer_move (int x, int y) { UNUSED_ARG(x); UNUSED_ARG(y); }
        
-       /** Emitted whenever a keyboard character is pressed.  Only certain 
-                       components should implement this */
-       virtual void on_key_pressed(const char c) { UNUSED_ARG(c); }
+  /** Emitted whenever a keyboard character is pressed.  Only certain 
+      components should implement this */
+  virtual void on_key_pressed(const unsigned short c) { UNUSED_ARG(c); }
 
   // status functions for use in the update() function
   /** return true if currently pressed */

Modified: branches/pingus_sdl/src/gui/input_box.cpp
===================================================================
--- branches/pingus_sdl/src/gui/input_box.cpp   2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/gui/input_box.cpp   2007-07-18 04:32:38 UTC (rev 
2753)
@@ -32,7 +32,7 @@
        width(width_),
        height((float)Fonts::pingus_small.get_height()),
        is_locked(locked),
-  label(label_) 
+       label(label_)
 {
        
 }
@@ -48,9 +48,9 @@
        // If there is text, draw it:
        if (str != std::string())
                gc.print_left(Fonts::pingus_small, pos.x + 10, pos.y, 
shrink_string(str));
-       
-  if (label != std::string())
-    gc.print_right(Fonts::pingus_small, pos.x, pos.y, label);
+
+       if (label != std::string())
+               gc.print_right(Fonts::pingus_small, pos.x, pos.y, label);
      
        if (has_focus)
                gc.draw_line(pos.x + 
Fonts::pingus_small.get_size(shrink_string(str)).width + 12,
@@ -80,19 +80,23 @@
 }
 
 void
-InputBox::on_key_pressed(const char c)
+InputBox::on_key_pressed(const unsigned short c)
 {
        if (!is_locked)
        {
                // Verify input and escape out bad characters
                if (c == 0x08)  // backspace
+               {
                        str = str.substr(0, str.length()-1);
+               }
                else if ((c > 0x2c && c < 0x3a)    // - . / 0-9
                        || (c > 0x40 && c < 0x5b)        // capital letters
                        || (c > 0x60 && c < 0x7b)        // lowercase letters
-      || (c == 0x7e || c == 0x5f)      // ~ and _
-      ||  c == 0x20)                   // space
-                       str += c;
+                       || (c == 0x7e || c == 0x5f)      // ~ and _
+                       ||  c == 0x20)                   // space
+               {
+                       str += (unsigned char)c;
+               }
        }
 }
 

Modified: branches/pingus_sdl/src/gui/input_box.hpp
===================================================================
--- branches/pingus_sdl/src/gui/input_box.hpp   2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/gui/input_box.hpp   2007-07-18 04:32:38 UTC (rev 
2753)
@@ -41,18 +41,18 @@
        /** Shrink the string to fit in the box */
        std::string shrink_string(const std::string& s) const;
   
-  /** Optional label to display */
-  std::string label;  
+       /** Optional label to display */
+       std::string label;  
 
 public:
   InputBox(float width_, Vector3f p, const std::string& 
                default_value = std::string(), bool locked = false,
-    const std::string& label_ = std::string());
+       const std::string& label_ = std::string());
 
        void set_string(const std::string& s) { str = s; }
        std::string get_string() { return str; }
        
-       void on_key_pressed(const char c);
+       void on_key_pressed(const unsigned short c);
        
        /// GUI Component functions:
        ///

Modified: branches/pingus_sdl/src/gui/screen_manager.cpp
===================================================================
--- branches/pingus_sdl/src/gui/screen_manager.cpp      2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/gui/screen_manager.cpp      2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -48,7 +48,7 @@
   Input::Controller* input_controller = 0;
 
   if (controller_file.empty())
-    input_controller = new 
Input::Controller(path_manager.complete("controller/default.xml"));
+    input_controller = new 
Input::Controller(path_manager.complete("controller/default.scm"));
   else
     input_controller = new Input::Controller(controller_file);
   Input::Controller::set_current(input_controller);

Modified: branches/pingus_sdl/src/input/axes/button_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/button_axis.cpp  2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/axes/button_axis.cpp  2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -23,7 +23,7 @@
 namespace Input {
 namespace Axes {
 
-ButtonAxis::ButtonAxis (float angle_, Button* button1_, Button* button2_) :
+ButtonAxis::ButtonAxis(float angle_, Button* button1_, Button* button2_) :
   pos(0), angle(angle_), button1(button1_), button2(button2_)
 {
   if (angle < 0)
@@ -32,26 +32,26 @@
     angle = static_cast<float>((static_cast<int>(angle) % 360) + 0);
 }
 
-ButtonAxis::~ButtonAxis ()
+ButtonAxis::~ButtonAxis()
 {
   delete button1;
   delete button2;
 }
 
 const float&
-ButtonAxis::get_pos () const
+ButtonAxis::get_pos() const
 {
   return pos;
 }
 
 const float&
-ButtonAxis::get_angle () const
+ButtonAxis::get_angle() const
 {
   return angle;
 }
 
 void
-ButtonAxis::update (float delta)
+ButtonAxis::update(float delta)
 {
   button1->update(delta);
   button2->update(delta);

Modified: branches/pingus_sdl/src/input/axes/button_axis.hpp
===================================================================
--- branches/pingus_sdl/src/input/axes/button_axis.hpp  2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/axes/button_axis.hpp  2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -44,16 +44,16 @@
 
 public:
 
-  ButtonAxis (float angle_, Button* button1_, Button* button2_);
-  ~ButtonAxis ();
+  ButtonAxis(float angle_, Button* button1_, Button* button2_);
+  ~ButtonAxis();
 
-  virtual const float& get_pos () const;
-  virtual const float& get_angle () const;
+  virtual const float& get_pos() const;
+  virtual const float& get_angle() const;
 
-  virtual void  update (float delta);
+  virtual void update(float delta);
 
 private:
-  ButtonAxis (const ButtonAxis&);
+  ButtonAxis(const ButtonAxis&);
   ButtonAxis& operator= (const ButtonAxis&);
 };
 

Modified: branches/pingus_sdl/src/input/axes/inverted_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/inverted_axis.cpp        2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/axes/inverted_axis.cpp        2007-07-18 
04:32:38 UTC (rev 2753)
@@ -22,30 +22,30 @@
 namespace Input {
 namespace Axes {
 
-InvertedAxis::InvertedAxis (Axis* axis_) : axis(axis_)
+InvertedAxis::InvertedAxis(Axis* axis_) : axis(axis_)
 {
   angle = static_cast<float>((static_cast<int>(axis->get_angle()) + 180) % 
360);
 }
 
-InvertedAxis::~InvertedAxis ()
+InvertedAxis::~InvertedAxis()
 {
   delete axis;
 }
 
 const float&
-InvertedAxis::get_pos () const
+InvertedAxis::get_pos() const
 {
   return axis->get_pos();
 }
 
 const float&
-InvertedAxis::get_angle () const
+InvertedAxis::get_angle() const
 {
   return angle;
 }
 
 void
-InvertedAxis::update (float delta)
+InvertedAxis::update(float delta)
 {
   axis->update(delta);
 }

Modified: branches/pingus_sdl/src/input/axes/joystick_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/joystick_axis.cpp        2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/axes/joystick_axis.cpp        2007-07-18 
04:32:38 UTC (rev 2753)
@@ -17,10 +17,6 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-//#include <ClanLib/Display/input.h>
-#include <ClanLib/Display/input_device.h>
-#include <ClanLib/Display/joystick.h>
-//#include <ClanLib/Display/inputaxis.h>
 #include "joystick_axis.hpp"
 #include "../../pingus_error.hpp"
 
@@ -30,11 +26,13 @@
 JoystickAxis::JoystickAxis(int id_, int axis_, float angle_) 
   : id(id_), axis(axis_), pos(0), angle(angle_)
 {
+#if 0
   if (id >= CL_Joystick::get_device_count())
     PingusError::raise("JoystickAxis: Invalid joystick id");
 
   if (axis > CL_Joystick::get_device(id).get_axis_count())
     PingusError::raise("JoystickAxis: Invalid joystick axis id");
+#endif
 
   if (angle < 0)
     angle = float(static_cast<int>(angle) % 360) + 360;
@@ -57,7 +55,9 @@
 void
 JoystickAxis::update (float)
 {
+#if 0
   pos = CL_Joystick::get_device(id).get_axis(axis);
+#endif
 }
 
 } // namespace Axes

Modified: branches/pingus_sdl/src/input/axes/mouse_axis.cpp
===================================================================
--- branches/pingus_sdl/src/input/axes/mouse_axis.cpp   2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/axes/mouse_axis.cpp   2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -17,9 +17,6 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-#include <ClanLib/Display/Input/input.h>
-#include <ClanLib/Display/Input/inputdevice.h>
-#include <ClanLib/Display/Input/inputcursor.h>
 #include "mouse_axis.hpp"
 
 namespace Input {
@@ -29,10 +26,11 @@
     MouseAxis::MouseAxis(int axis_, float angle_) : axis(axis_), 
angle(angle_), pos(0), old_pos(0)
     {
       if (angle < 0)
-        angle = (static_cast<int>(angle) % 360) + 360;
+        angle = (float)((static_cast<int>(angle) % 360) + 360);
       else if (angle > 360)
-        angle = static_cast<int>(angle) % 360;
+        angle = (float)(static_cast<int>(angle) % 360);
 
+#if 0
       switch (axis)
         {
           case 0:  old_pos = CL_Input::pointers[0]->get_cursor(0)->get_x();
@@ -41,6 +39,7 @@
                   break;
          default: old_pos = 0;
         }
+#endif
     }
 
     const float&
@@ -58,6 +57,7 @@
     void
     MouseAxis::update (float)
     {
+#if 0
       switch (axis)
         {
           case 0:  if (old_pos != 
CL_Input::pointers[0]->get_cursor(0)->get_x())
@@ -85,6 +85,7 @@
                   break;
           default: break; // do nothing
         }
+#endif
     }
 
   }

Modified: branches/pingus_sdl/src/input/axis_factory.cpp
===================================================================
--- branches/pingus_sdl/src/input/axis_factory.cpp      2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/axis_factory.cpp      2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -51,7 +51,7 @@
   return 0; // never reached
 }
 
-Axis* AxisFactory::button_axis (FileReader reader)
+Axis* AxisFactory::button_axis(FileReader reader)
 {
   float angle;
   if (!reader.read_float("angle", angle))
@@ -73,7 +73,7 @@
   return new InvertedAxis(create(reader));
 }
 
-Axis* AxisFactory::joystick_axis (FileReader reader)
+Axis* AxisFactory::joystick_axis(FileReader reader)
 {
   float angle;
   if (!reader.read_float("angle", angle))
@@ -90,7 +90,7 @@
   return new JoystickAxis(id, axis, angle);
 }
 
-Axis* AxisFactory::multiple_axis (FileReader reader)
+Axis* AxisFactory::multiple_axis(FileReader reader)
 {
   std::vector<Axis*> axes;
 

Modified: branches/pingus_sdl/src/input/axis_factory.hpp
===================================================================
--- branches/pingus_sdl/src/input/axis_factory.hpp      2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/axis_factory.hpp      2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -29,17 +29,17 @@
 class AxisFactory
 {
 private:
-  static Axis* button_axis   (FileReader reader);
-  static Axis* inverted_axis (FileReader reader);
-  static Axis* joystick_axis (FileReader reader);
-  static Axis* multiple_axis (FileReader reader);
+  static Axis* button_axis(FileReader reader);
+  static Axis* inverted_axis(FileReader reader);
+  static Axis* joystick_axis(FileReader reader);
+  static Axis* multiple_axis(FileReader reader);
 
 public:
-  static Axis* create (FileReader reader);
+  static Axis* create(FileReader reader);
 
 private:
-  AxisFactory ();
-  AxisFactory (const AxisFactory&);
+  AxisFactory();
+  AxisFactory(const AxisFactory&);
   AxisFactory& operator= (const AxisFactory&);
 };
 

Modified: branches/pingus_sdl/src/input/button.hpp
===================================================================
--- branches/pingus_sdl/src/input/button.hpp    2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/input/button.hpp    2007-07-18 04:32:38 UTC (rev 
2753)
@@ -21,29 +21,59 @@
 #define HEADER_PINGUS_INPUT_BUTTON_HXX
 
 #include "../pingus.hpp"
+#include "controller.hpp"
 
 namespace Input {
 
+typedef void (*button_callback_func)(void*);
+
 /// abstract base class which defines the button interface
 class Button
 {
 public:
-  Button () { }
-  virtual ~Button () { }
+  Button() { }
+  virtual ~Button() { }
 
   /// returns true if the button is pressed, false otherwise
-  virtual bool is_pressed ()      const =0;
-  virtual void update     (float)       =0;
+  virtual bool is_pressed() const = 0;
+  virtual void update(float) = 0;
 
-  CL_Signal_v0& sig_button_down() { return button_down; }
-  CL_Signal_v0& sig_button_up() { return button_up; }
+  virtual void button_down() {
+    std::vector<button_callback_info>::iterator i;
+    for (i = button_down_callbacks.begin(); i != button_down_callbacks.end(); 
++i) {
+      i->callback(i->userdata);
+    }
+  }
+  virtual void button_up() {
+    std::vector<button_callback_info>::iterator i;
+    for (i = button_up_callbacks.begin(); i != button_up_callbacks.end(); ++i) 
{
+      i->callback(i->userdata);
+    }
+  }
 
+  virtual void add_down_callback(button_callback_func callback, void* 
userdata) {
+    button_callback_info bci;
+    bci.callback = callback;
+    bci.userdata = userdata;
+    button_down_callbacks.push_back(bci);
+  }
+  virtual void add_up_callback(button_callback_func callback, void* userdata) {
+    button_callback_info bci;
+    bci.callback = callback;
+    bci.userdata = userdata;
+    button_up_callbacks.push_back(bci);
+  }
+
 protected:
-  CL_Signal_v0 button_down; 
-  CL_Signal_v0 button_up; 
+  struct button_callback_info {
+    button_callback_func callback;
+    void *userdata;
+  };
+  std::vector<button_callback_info> button_down_callbacks;
+  std::vector<button_callback_info> button_up_callbacks;
 
 private:
-  Button (const Button&);
+  Button(const Button&);
   Button& operator= (const Button&);
 };
 

Modified: branches/pingus_sdl/src/input/button_factory.cpp
===================================================================
--- branches/pingus_sdl/src/input/button_factory.cpp    2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/button_factory.cpp    2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -18,8 +18,6 @@
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #include <iostream>
-#include <ClanLib/Display/keyboard.h>
-#include <ClanLib/Display/input_device.h>
 #include "../file_reader.hpp"
 #include "../pingus_error.hpp"
 #include "button_factory.hpp"
@@ -34,7 +32,7 @@
 
 using namespace Buttons;
 
-Button* ButtonFactory::create (FileReader reader)
+Button* ButtonFactory::create(FileReader reader)
 {
   if (reader.get_name() == "double-button")
     return double_button(reader);
@@ -60,7 +58,7 @@
   return 0; // never reached
 }
 
-Button* ButtonFactory::double_button (FileReader reader)
+Button* ButtonFactory::double_button(FileReader reader)
 {
   const std::vector<FileReader>& sections = reader.get_sections();
   
@@ -75,7 +73,7 @@
   return new DoubleButton(button1, button2);
 }
 
-Button* ButtonFactory::joystick_button (FileReader reader)
+Button* ButtonFactory::joystick_button(FileReader reader)
 {
   int id;
   if (!reader.read_int("id", id))
@@ -88,13 +86,13 @@
   return new JoystickButton(id, button);
 }
 
-Button* ButtonFactory::key_button (FileReader reader)
+Button* ButtonFactory::key_button(FileReader reader)
 {
   std::string key;
   if (!reader.read_string("key", key))
     PingusError::raise("KeyButton without key parameter");
 
-  return new KeyButton(CL_Keyboard::get_device().string_to_keyid(key));
+  return new KeyButton(KeyButton::string_to_keyid(key));
 }
 
 Button* ButtonFactory::mouse_button (FileReader reader)
@@ -106,7 +104,7 @@
   return new MouseButton(button);
 }
 
-Button* ButtonFactory::multiple_button (FileReader reader)
+Button* ButtonFactory::multiple_button(FileReader reader)
 {
   std::vector<Button*> buttons;
 
@@ -119,7 +117,7 @@
   return new MultipleButton(buttons);
 }
 
-Button* ButtonFactory::triple_button (FileReader reader)
+Button* ButtonFactory::triple_button(FileReader reader)
 {
   const std::vector<FileReader>& sections = reader.get_sections();
   

Modified: branches/pingus_sdl/src/input/buttons/joystick_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/joystick_button.cpp   2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/joystick_button.cpp   2007-07-18 
04:32:38 UTC (rev 2753)
@@ -17,10 +17,6 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-#include <ClanLib/Core/System/clanstring.h>
-#include <ClanLib/Display/joystick.h>
-#include <ClanLib/Display/input_device.h>
-//#include <ClanLib/Display/input_button.h>
 #include "joystick_button.hpp"
 #include "../../pingus_error.hpp"
 
@@ -29,11 +25,13 @@
 
 JoystickButton::JoystickButton(int id_, int button_) : id(id_), button(button_)
 {
+#if 0
   if (id >= CL_Joystick::get_device_count())
     PingusError::raise("JoystickButton: Invalid joystick id: " + 
CL_String::to(id));
 
   if (button > CL_Joystick::get_device(id).get_button_count())
     PingusError::raise("JoystickButton: Invalid joystick button id: " + 
CL_String::to(button));
+#endif
 }
 
 void
@@ -44,7 +42,8 @@
 bool
 JoystickButton::is_pressed() const
 {
-  return CL_Joystick::get_device(id).get_keycode(button);
+//  return CL_Joystick::get_device(id).get_keycode(button);
+  return false;
 }
 
 } // namespace Buttons

Modified: branches/pingus_sdl/src/input/buttons/key_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/key_button.cpp        2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/key_button.cpp        2007-07-18 
04:32:38 UTC (rev 2753)
@@ -17,52 +17,165 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-#include <ClanLib/Display/keyboard.h>
-#include <ClanLib/Display/input_event.h>
 #include "key_button.hpp"
 
 #include <iostream>
+#include <map>
 
 namespace Input {
 namespace Buttons {
 
-KeyButton::KeyButton (int button_) 
+KeyButton::KeyButton(int button_) 
   : button(button_),
-    key_press  (CL_Keyboard::sig_key_down().connect(this, 
&Input::Buttons::KeyButton::key_press_handler)),
-    key_release(CL_Keyboard::sig_key_up().connect(this, 
&Input::Buttons::KeyButton::key_release_handler)),
     pressed(false)
 {
+  Controller::add_key_callback(&KeyButton::key_handler, this);
 }
 
 void
-KeyButton::update (float)
+KeyButton::update(float)
 {
 }
 
 bool
-KeyButton::is_pressed () const
+KeyButton::is_pressed() const
 {
   return pressed;
 }
 
 void
-KeyButton::key_press_handler (const CL_InputEvent& event)
+KeyButton::key_handler(const SDL_Event& event, void* userdata)
 {
-  if (event.id == button)
+  KeyButton* kb = (KeyButton*)userdata;
+  if (event.key.keysym.sym == kb->button)
     {
-      pressed = true;
-      button_down();
+      if (event.key.state == SDL_PRESSED)
+        {
+          kb->pressed = true;
+          kb->button_down();
+        }
+      else
+        {
+          kb->pressed = false;
+          kb->button_up();
+        }
     }
 }
 
-void
-KeyButton::key_release_handler (const CL_InputEvent& event)
+int
+KeyButton::string_to_keyid(std::string key)
 {
-  if (event.id == button)
+  static bool init = true;
+  static std::map<std::string, int> string_to_id;
+
+  if (init)
     {
-      pressed = false;
-      button_up();
+      init = false;
+
+      string_to_id["backspace"] = SDLK_BACKSPACE;
+      string_to_id["tab"] = SDLK_TAB;
+      string_to_id["clear"] = SDLK_CLEAR;
+      string_to_id["return"] = SDLK_RETURN;
+//      string_to_id["shift"] = CL_KEY_SHIFT;
+//      string_to_id["control"] = CL_KEY_CONTROL;
+      string_to_id["menu"] = SDLK_MENU;
+      string_to_id["pause"] = SDLK_PAUSE;
+      string_to_id["escape"] = SDLK_ESCAPE;
+      string_to_id["space"] = SDLK_SPACE;
+      string_to_id["prior"] = SDLK_PAGEUP;
+      string_to_id["next"] = SDLK_PAGEDOWN;
+      string_to_id["end"] = SDLK_END;
+      string_to_id["home"] = SDLK_HOME;
+      string_to_id["left"] = SDLK_LEFT;
+      string_to_id["up"] = SDLK_UP;
+      string_to_id["right"] = SDLK_RIGHT;
+      string_to_id["down"] = SDLK_DOWN;
+//      string_to_id["select"] = CL_KEY_SELECT;
+//      string_to_id["print"] = CL_KEY_PRINT;
+//      string_to_id["execute"] = CL_KEY_EXECUTE;
+      string_to_id["insert"] = SDLK_INSERT;
+      string_to_id["delete"] = SDLK_DELETE;
+      string_to_id["help"] = SDLK_HELP;
+      string_to_id["0"] = SDLK_0;
+      string_to_id["1"] = SDLK_1;
+      string_to_id["2"] = SDLK_2;
+      string_to_id["3"] = SDLK_3;
+      string_to_id["4"] = SDLK_4;
+      string_to_id["5"] = SDLK_5;
+      string_to_id["6"] = SDLK_6;
+      string_to_id["7"] = SDLK_7;
+      string_to_id["8"] = SDLK_8;
+      string_to_id["9"] = SDLK_9;
+      string_to_id["a"] = SDLK_a;
+      string_to_id["b"] = SDLK_b;
+      string_to_id["c"] = SDLK_c;
+      string_to_id["d"] = SDLK_d;
+      string_to_id["e"] = SDLK_e;
+      string_to_id["f"] = SDLK_f;
+      string_to_id["g"] = SDLK_g;
+      string_to_id["h"] = SDLK_h;
+      string_to_id["i"] = SDLK_i;
+      string_to_id["j"] = SDLK_j;
+      string_to_id["k"] = SDLK_k;
+      string_to_id["l"] = SDLK_l;
+      string_to_id["m"] = SDLK_m;
+      string_to_id["n"] = SDLK_n;
+      string_to_id["o"] = SDLK_o;
+      string_to_id["p"] = SDLK_p;
+      string_to_id["q"] = SDLK_q;
+      string_to_id["r"] = SDLK_r;
+      string_to_id["s"] = SDLK_s;
+      string_to_id["t"] = SDLK_t;
+      string_to_id["u"] = SDLK_u;
+      string_to_id["v"] = SDLK_v;
+      string_to_id["w"] = SDLK_w;
+      string_to_id["x"] = SDLK_x;
+      string_to_id["y"] = SDLK_y;
+      string_to_id["z"] = SDLK_z;
+      string_to_id["lwin"] = SDLK_LSUPER;
+      string_to_id["rwin"] = SDLK_RSUPER;
+      string_to_id["numpad0"] = SDLK_KP0;
+      string_to_id["numpad1"] = SDLK_KP1;
+      string_to_id["numpad2"] = SDLK_KP2;
+      string_to_id["numpad3"] = SDLK_KP3;
+      string_to_id["numpad4"] = SDLK_KP4;
+      string_to_id["numpad5"] = SDLK_KP5;
+      string_to_id["numpad6"] = SDLK_KP6;
+      string_to_id["numpad7"] = SDLK_KP7;
+      string_to_id["numpad8"] = SDLK_KP8;
+      string_to_id["numpad9"] = SDLK_KP9;
+      string_to_id["multiply"] = SDLK_KP_MULTIPLY;
+      string_to_id["add"] = SDLK_KP_PLUS;
+//      string_to_id["separator"] = CL_KEY_SEPARATOR;
+      string_to_id["subtract"] = SDLK_KP_MINUS;
+      string_to_id["decimal"] = SDLK_KP_PERIOD;
+      string_to_id["divide"] = SDLK_KP_DIVIDE;
+      string_to_id["f1"] = SDLK_F1;
+      string_to_id["f2"] = SDLK_F2;
+      string_to_id["f3"] = SDLK_F3;
+      string_to_id["f4"] = SDLK_F4;
+      string_to_id["f5"] = SDLK_F5;
+      string_to_id["f6"] = SDLK_F6;
+      string_to_id["f7"] = SDLK_F7;
+      string_to_id["f8"] = SDLK_F8;
+      string_to_id["f9"] = SDLK_F9;
+      string_to_id["f10"] = SDLK_F10;
+      string_to_id["f11"] = SDLK_F11;
+      string_to_id["f12"] = SDLK_F12;
+      string_to_id["f13"] = SDLK_F13;
+      string_to_id["f14"] = SDLK_F14;
+      string_to_id["f15"] = SDLK_F15;
+      string_to_id["numlock"] = SDLK_NUMLOCK;
+      string_to_id["scroll"] = SDLK_SCROLLOCK;
+      string_to_id["lshift"] = SDLK_LSHIFT;
+      string_to_id["rshift"] = SDLK_RSHIFT;
+      string_to_id["lcontrol"] = SDLK_LCTRL;
+      string_to_id["rcontrol"] = SDLK_RCTRL;
+      string_to_id["lmenu"] = SDLK_LALT;
+      string_to_id["rmenu"] = SDLK_RALT;
     }
+
+    return string_to_id[key];
 }
 
 } // namespace Buttons

Modified: branches/pingus_sdl/src/input/buttons/key_button.hpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/key_button.hpp        2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/key_button.hpp        2007-07-18 
04:32:38 UTC (rev 2753)
@@ -20,12 +20,9 @@
 #ifndef HEADER_PINGUS_INPUT_KEY_BUTTON_HXX
 #define HEADER_PINGUS_INPUT_KEY_BUTTON_HXX
 
-#include <ClanLib/Signals/slot.h>
+#include <string>
 #include "../button.hpp"
 
-class CL_InputEvent;
-class CL_InputDevice;
-
 namespace Input {
 namespace Buttons {
 
@@ -38,22 +35,23 @@
 
 private:
   int     button;
-  CL_Slot key_press;
-  CL_Slot key_release;
   bool    pressed;
 
 public:
 
-  KeyButton (int button_);
+  KeyButton(int button_);
 
-  virtual bool is_pressed () const;
-  virtual void update (float);
+  inline int get_button() const { return button; }
 
+  virtual bool is_pressed() const;
+  virtual void update(float);
+
+  static int string_to_keyid(std::string key);
+
 private:
-  void key_press_handler (const CL_InputEvent& event);
-  void key_release_handler (const CL_InputEvent& event);
+  static void key_handler(const SDL_Event& event, void *userdata);
       
-  KeyButton (const KeyButton&);
+  KeyButton(const KeyButton&);
   KeyButton& operator= (const KeyButton&);
 };
 

Modified: branches/pingus_sdl/src/input/buttons/mouse_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/mouse_button.cpp      2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/mouse_button.cpp      2007-07-18 
04:32:38 UTC (rev 2753)
@@ -17,22 +17,17 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-#include <ClanLib/Core/System/clanstring.h>
-#include <ClanLib/Display/input_event.h>
-#include <ClanLib/Display/keys.h>
-#include <ClanLib/Display/mouse.h>
 #include "mouse_button.hpp"
 #include "../../pingus_error.hpp"
 
 namespace Input {
 namespace Buttons {
   
-MouseButton::MouseButton (int button_)
+MouseButton::MouseButton(int button_)
   : button(button_),
-    button_press_slot  (CL_Mouse::sig_key_down().connect(this, 
&Input::Buttons::MouseButton::press_handler)),
-    button_release_slot(CL_Mouse::sig_key_up().connect(this, 
&Input::Buttons::MouseButton::release_handler)),
     pressed(false)
 {
+  Controller::add_mouse_callback(&MouseButton::mouse_handler, this);
 }
 
 void
@@ -41,67 +36,53 @@
 }
 
 void
-MouseButton::press_handler (const CL_InputEvent& signal) // may not be a 
member function since CL_Signal doesn't take a member function pointer
+MouseButton::mouse_handler(const SDL_Event& event, void* userdata)
 {
-  switch (button)
+  MouseButton* mb = (MouseButton*)userdata;
+  switch (mb->button)
     {
-    case 0:
-      if (signal.id == CL_MOUSE_LEFT) {
-        pressed = true;
-        button_down();
-      }
-      break;
-            
     case 1:
-      if (signal.id == CL_MOUSE_MIDDLE) {
-        pressed = true;
-        button_down();
+      if (event.button.button == SDL_BUTTON_LEFT) {
+        if (event.button.state == SDL_PRESSED) {
+          mb->pressed = true;
+          mb->button_down();
+        } else {
+          mb->pressed = false;
+          mb->button_up();
+        }
       }
       break;
             
     case 2:
-      if (signal.id == CL_MOUSE_RIGHT) {
-        pressed = true;
-        button_down();
+      if (event.button.button == SDL_BUTTON_MIDDLE) {
+        if (event.button.state == SDL_PRESSED) {
+          mb->pressed = true;
+          mb->button_down();
+        } else {
+          mb->pressed = false;
+          mb->button_up();
+        }
       }
       break;
             
-    default: // only three buttons support so far
-      break;
-    }
-}
-
-void
-MouseButton::release_handler (const CL_InputEvent& signal) // may not be a 
member function since CL_Signal doesn't take a member function pointer
-{
-  switch (button)
-    {
-    case 0:
-      if (signal.id == CL_MOUSE_LEFT) {
-        pressed = false;
-        button_up();
+    case 3:
+      if (event.button.button == SDL_BUTTON_RIGHT) {
+        if (event.button.state == SDL_PRESSED) {
+          mb->pressed = true;
+          mb->button_down();
+        } else {
+          mb->pressed = false;
+          mb->button_up();
+        }
       }
       break;
             
-    case 1:
-      if (signal.id == CL_MOUSE_MIDDLE) {
-        pressed = false;
-        button_up();
-      }
-      break;
-            
-    case 2:
-      if (signal.id == CL_MOUSE_RIGHT) {
-        pressed = false;
-        button_up();
-      }
-      break;
-            
     default: // only three buttons support so far
       break;
     }
 }
-    
+
+
 } // namespace Buttons
 } // namespace Input
 

Modified: branches/pingus_sdl/src/input/buttons/mouse_button.hpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/mouse_button.hpp      2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/mouse_button.hpp      2007-07-18 
04:32:38 UTC (rev 2753)
@@ -20,11 +20,8 @@
 #ifndef HEADER_PINGUS_INPUT_MOUSE_BUTTON_HXX
 #define HEADER_PINGUS_INPUT_MOUSE_BUTTON_HXX
 
-#include <ClanLib/Signals/slot.h>
 #include "../button.hpp"
 
-class CL_InputEvent;
-
 namespace Input {
 namespace Buttons {
 
@@ -37,21 +34,20 @@
 
 private:
   int button;
-  CL_Slot button_press_slot;
-  CL_Slot button_release_slot;
   bool pressed;
 
 public:
-  MouseButton (int button_);
+  MouseButton(int button_);
 
-  virtual bool is_pressed () const { return pressed; }
-  virtual void update (float);
+  inline int get_button() const { return button; }
 
+  virtual bool is_pressed() const { return pressed; }
+  virtual void update(float);
+
 private:
-  void   press_handler (const CL_InputEvent& number);
-  void release_handler (const CL_InputEvent& number);
+  static void mouse_handler(const SDL_Event& event, void *userdata);
       
-  MouseButton (const MouseButton&);
+  MouseButton(const MouseButton&);
   MouseButton& operator= (const MouseButton&);
 };
 

Modified: branches/pingus_sdl/src/input/buttons/multiple_button.cpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/multiple_button.cpp   2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/multiple_button.cpp   2007-07-18 
04:32:38 UTC (rev 2753)
@@ -29,8 +29,8 @@
 
   for (std::vector<Button*>::iterator it = buttons.begin(); it != 
buttons.end(); it++)
     {
-      slots.push_back((*it)->sig_button_up()  .connect(this, 
&MultipleButton::on_button_up));
-      slots.push_back((*it)->sig_button_down().connect(this, 
&MultipleButton::on_button_down));
+      (*it)->add_down_callback(&MultipleButton::on_button_down, this);
+      (*it)->add_up_callback(&MultipleButton::on_button_up, this);
     }
 }
 
@@ -58,23 +58,25 @@
 }
 
 void
-MultipleButton::on_button_up()
+MultipleButton::on_button_up(void* userdata)
 {
-  down_count -= 1;
-  if (down_count < 0)
-    down_count = 0;
+  MultipleButton* mb = (MultipleButton*)userdata;
+  mb->down_count -= 1;
+  if (mb->down_count < 0)
+    mb->down_count = 0;
 
-  if (down_count == 0)
-    button_up();
+  if (mb->down_count == 0)
+    mb->button_up();
 }
 
 void
-MultipleButton::on_button_down()
+MultipleButton::on_button_down(void* userdata)
 {
-  if (down_count == 0)
-    button_down();
+  MultipleButton* mb = (MultipleButton*)userdata;
+  if (mb->down_count == 0)
+    mb->button_down();
 
-  down_count += 1; 
+  mb->down_count += 1;
 }
 
 } // namespace Buttons

Modified: branches/pingus_sdl/src/input/buttons/multiple_button.hpp
===================================================================
--- branches/pingus_sdl/src/input/buttons/multiple_button.hpp   2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/buttons/multiple_button.hpp   2007-07-18 
04:32:38 UTC (rev 2753)
@@ -37,20 +37,19 @@
 
 private:
   std::vector<Button*> buttons;
-  std::vector<CL_Slot> slots;
   int down_count;
 public:
-  MultipleButton (const std::vector<Button*>& buttons_);
-  ~MultipleButton ();
+  MultipleButton(const std::vector<Button*>& buttons_);
+  ~MultipleButton();
 
-  virtual bool is_pressed () const;
-  virtual void update (float delta);
+  virtual bool is_pressed() const;
+  virtual void update(float delta);
 
 private:
-  void on_button_up();
-  void on_button_down();
+  static void on_button_up(void*);
+  static void on_button_down(void*);
 
-  MultipleButton (const MultipleButton&);
+  MultipleButton(const MultipleButton&);
   MultipleButton& operator= (const MultipleButton&);
 };
 

Modified: branches/pingus_sdl/src/input/controller.cpp
===================================================================
--- branches/pingus_sdl/src/input/controller.cpp        2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/controller.cpp        2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -25,81 +25,95 @@
 
 #include "controller.hpp"
 #include "axes/dummy_axis.hpp"
-////#include "buttons/dummy_button.hpp"
+#include "buttons/dummy_button.hpp"
 #include "pointers/dummy_pointer.hpp"
 #include "scrollers/dummy_scroller.hpp"
 #include "pointer_factory.hpp"
-////#include "../xml_file_reader.hpp"
 #include "scroller_factory.hpp"
-////#include "button_factory.hpp"
+#include "button_factory.hpp"
+#include "buttons/key_button.hpp"
+#include "buttons/mouse_button.hpp"
+#include "scrollers/axis_scroller.hpp"
 
 namespace Input {
 
 using namespace Axes;
-////using namespace Buttons;
+using namespace Buttons;
 using namespace Pointers;
 using namespace Scrollers;
 
 Controller* Controller::current_controller = 0;
+std::vector<Controller::key_callback_info> Controller::key_callbacks;
+std::vector<Controller::mouse_callback_info> Controller::mouse_callbacks;
 
-Controller::Controller (const std::string& configfile)
+Controller::Controller(const std::string& configfile)
   : standard_pointer(0),
     scroller(0),
     std_pointer_x(0),
     std_pointer_y(0)
 {
-#if 0
-  CL_InputSourceProvider_File provider(".");
-  CL_DomDocument doc(provider.open_source(configfile), true);
-
-  XMLFileReader reader(doc.get_document_element());
-
+  FileReader reader = FileReader::parse(configfile);
   if (reader.get_name() != "pingus-controller")
     {
       PingusError::raise("Controller: invalid config file <" + configfile + 
">");
     }
   else
     {
+      FileReader head;
+
       const std::vector<FileReader>& sections = reader.get_sections();
-      for(std::vector<FileReader>::const_iterator i = sections.begin();
+      for (std::vector<FileReader>::const_iterator i = sections.begin();
           i != sections.end(); ++i)
         {
-          if (i->get_name() ==  "standard-pointer")
-            standard_pointer = PointerFactory::create(i->get_sections()[0]);
-          
-          else if (i->get_name() == "scroller")
-            scroller = ScrollerFactory::create(i->get_sections()[0]);
-
+          if (i->get_name() == "standard-pointer")
+            {
+              standard_pointer = PointerFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "primary-button")
-            buttons[primary] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[primary] = ButtonFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "secondary-button")
-            buttons[secondary] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[secondary] = ButtonFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "pause-button")
-            buttons[pause] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[pause] = ButtonFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "fast-forward-button")
-            buttons[fast_forward] = 
ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[fast_forward] = 
ButtonFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "armageddon-button")
-            buttons[armageddon] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[armageddon] = 
ButtonFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "escape-button")
-            buttons[escape] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[escape] = ButtonFactory::create(i->get_sections()[0]);
+            }
+          else if (i->get_name() == "scroller")
+            {
+              scroller = ScrollerFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "action-buttons")
-            create_action_buttons(*i);
-
+            {
+              create_action_buttons(*i);
+            }
           else if (i->get_name() == "action-up")
-            buttons[action_up] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[action_up] = ButtonFactory::create(i->get_sections()[0]);
+            }
           else if (i->get_name() == "action-down")
-            buttons[action_down] = ButtonFactory::create(i->get_sections()[0]);
-
+            {
+              buttons[action_down] = 
ButtonFactory::create(i->get_sections()[0]);
+            }
           else
-            PingusError::raise(std::string("Unkown Element in Controller 
Config: ") 
-                               + i->get_name());
+            {
+              PingusError::raise(std::string("Unkown Element in Controller 
Config: ") 
+                                 + i->get_name());
+            }
         }
     }
 
@@ -114,12 +128,6 @@
       std_pointer_y = standard_pointer->get_y_pos();
     }
 
-  if (!scroller)
-    {
-      scroller = new DummyScroller;
-      pwarn << "Controller: No scroller - inserting dummy" << std::endl;
-    }
-
   if (!buttons.count(primary))
     {
       buttons[primary] = new DummyButton;
@@ -156,6 +164,12 @@
       pwarn << "Controller: No escape button - inserting dummy" << std::endl;
     }
 
+  if (!scroller)
+    {
+      scroller = new DummyScroller;
+      pwarn << "Controller: No scroller - inserting dummy" << std::endl;
+    }
+
   if (!buttons.count(action_up))
     {
       buttons[action_up] = new DummyButton;
@@ -170,31 +184,27 @@
 
   for (std::map<ButtonName, Button*>::iterator it = buttons.begin(); it != 
buttons.end(); ++it)
     {
-      slots.push_back(it->second->sig_button_down().connect(this, 
&Controller::on_button_down, it->first));
-      slots.push_back(it->second->sig_button_up().connect(this, 
&Controller::on_button_up, it->first));
+      static int button_names[max_button];
+      button_names[it->first] = it->first;
+      it->second->add_down_callback(&Controller::on_button_down, 
&button_names[it->first]);
+      it->second->add_up_callback(&Controller::on_button_up, 
&button_names[it->first]);
     }
-       
-       // Catch all keyboard input
-       CL_InputDevice keyboard = 
CL_Display::get_current_window()->get_ic()->get_keyboard();
-       slots.push_back(keyboard.sig_key_down().connect(this, 
&Controller::key_pressed));
-#endif 
+
 }
 
-Controller::~Controller ()
+Controller::~Controller()
 {
-#if 0
   delete scroller;
   delete standard_pointer;
 
-  for (std::map<ButtonName, Button*>::iterator it = buttons.begin(); it != 
buttons.end(); ++it)
+  std::map<ButtonName, Button*>::iterator it;
+  for (it = buttons.begin(); it != buttons.end(); ++it)
     delete it->second;
-#endif
 }
 
 void
-Controller::create_action_buttons (FileReader reader)
+Controller::create_action_buttons(FileReader reader)
 {
-#if 0
   int count = 0;
   
   const std::vector<FileReader>& sections = reader.get_sections();
@@ -202,22 +212,25 @@
       i != sections.end(); ++i)
     {
       if (i->get_name() == "action-button")
+      {
         buttons[static_cast<ButtonName>(action_1 + count)] 
           = ButtonFactory::create(i->get_sections()[0]);
+      }
       else
+      {
         PingusError::raise(std::string("Wrong Element in Controller Config 
(action-buttons): ") 
                            + i->get_name());
-      count += 1;
+      }
+      count++;
     }
-#endif
 }
 
 void
-Controller::update (float delta)
+Controller::update(float delta)
 {
   // Let SDL fetch events
   SDL_Event event;
-  while(SDL_PollEvent(&event))
+  while (SDL_PollEvent(&event))
     {
       switch(event.type)
         {
@@ -230,42 +243,63 @@
           break;
 
         case SDL_MOUSEBUTTONDOWN:
-          if (event.button.button == SDL_BUTTON_LEFT)
-            events.push_back(makeButtonEvent(Input::primary, Input::pressed));
-          else if (event.button.button == SDL_BUTTON_MIDDLE)
-            events.push_back(makeButtonEvent(Input::pause, Input::pressed));
-          else if (event.button.button == SDL_BUTTON_RIGHT)
-            events.push_back(makeButtonEvent(Input::secondary, 
Input::pressed));
-          break;
+         {
+            std::vector<mouse_callback_info>::iterator i;
+            for (i = mouse_callbacks.begin(); i != mouse_callbacks.end(); ++i)
+              {
+                i->callback(event, i->userdata);
+              }
+            break;
+         }
 
         case SDL_MOUSEBUTTONUP:
-          if (event.button.button == SDL_BUTTON_LEFT)
-            events.push_back(makeButtonEvent(Input::primary, Input::released));
-          else if (event.button.button == SDL_BUTTON_MIDDLE)
-            events.push_back(makeButtonEvent(Input::pause, Input::released));
-          else if (event.button.button == SDL_BUTTON_RIGHT)
-            events.push_back(makeButtonEvent(Input::secondary, 
Input::released));
-          break;
+         {
+            std::vector<mouse_callback_info>::iterator i;
+            for (i = mouse_callbacks.begin(); i != mouse_callbacks.end(); ++i)
+              {
+                i->callback(event, i->userdata);
+              }
+            break;
+         }
           
         case SDL_KEYDOWN:
-          break;
+          {
+            std::vector<key_callback_info>::iterator i;
+            for (i = key_callbacks.begin(); i != key_callbacks.end(); ++i)
+              {
+                i->callback(event, i->userdata);
+              }
 
+            events.push_back(makeKeyboardEvent(event.key.keysym.unicode));
+            break;
+          }
+
         case SDL_KEYUP:
-          break;          
+          {
+            std::vector<key_callback_info>::iterator i;
+            for (i = key_callbacks.begin(); i != key_callbacks.end(); ++i)
+              {
+                i->callback(event, i->userdata);
+              }
 
+            events.push_back(makeKeyboardEvent(event.key.keysym.unicode));
+            break;
+          }
+
         default:
           // FIXME: feed other events to the input manager
           break;
         }
     }
 
-#if 0
-  scroller        ->update(delta);
+  scroller->update(delta);
   standard_pointer->update(delta);
 
-  for (std::map<ButtonName, Button*>::iterator it = buttons.begin(); it != 
buttons.end(); ++it)
+  for (std::map<ButtonName, Button*>::iterator it = buttons.begin();
+      it != buttons.end(); ++it)
     it->second->update(delta);
-  
+
+#if 0
   // FIXME: Busy checking of button status and other events is *VERY EVIL*
   if (std_pointer_x != standard_pointer->get_x_pos()
       || std_pointer_y != standard_pointer->get_y_pos())
@@ -275,27 +309,39 @@
 
       events.push_back(makePointerEvent(standard, std_pointer_x, 
std_pointer_y));
     }
+#endif
 
   // FIXME: Busy checking of button status and other events is *VERY EVIL*
   if (scroller->get_x_delta() || scroller->get_y_delta())
     events.push_back(makeScrollEvent(scroller->get_x_delta(), 
scroller->get_y_delta()));
-       
-       std::string keys_pressed = get_keys_pressed();
-       for (unsigned i = 0; i < (unsigned)keys_pressed.length(); i++) 
-       {
-               events.push_back(makeKeyboardEvent( keys_pressed[i] ));
-       }
-#endif
 }
 
 void
 Controller::clear()
 {
-  events.clear ();
+  events.clear();
 }
 
+void
+Controller::add_key_callback(key_callback_func callback, void *userdata)
+{
+  key_callback_info cb;
+  cb.callback = callback;
+  cb.userdata = userdata;
+  key_callbacks.push_back(cb);
+}
+
+void
+Controller::add_mouse_callback(mouse_callback_func callback, void *userdata)
+{
+  mouse_callback_info cb;
+  cb.callback = callback;
+  cb.userdata = userdata;
+  mouse_callbacks.push_back(cb);
+}
+
 const Button*
-Controller::get_button (ButtonName name)
+Controller::get_button(ButtonName name)
 {
   if (buttons.count(name))
     return buttons[name];
@@ -304,32 +350,20 @@
 }
 
 void
-Controller::on_button_down(ButtonName name)
+Controller::on_button_down(void* userdata)
 {
-  events.push_back(makeButtonEvent(name, pressed));
+  ButtonName name = *(ButtonName*)userdata;
+  Controller::get_current()->events.push_back(makeButtonEvent(name, pressed));
 }
 
 void
-Controller::on_button_up(ButtonName name)
+Controller::on_button_up(void* userdata)
 {
-  events.push_back(makeButtonEvent(name, released));
+  ButtonName name = *(ButtonName*)userdata;
+  Controller::get_current()->events.push_back(makeButtonEvent(name, released));
 }
-#if 0
-void
-Controller::key_pressed(const CL_InputEvent &event)
-{
-       keys += event.str;
-}
-#endif 
-std::string
-Controller::get_keys_pressed()
-{
-       std::string ret_keys = keys;
-       keys.clear();
-       return ret_keys;
-}
- 
 
+
 } // namespace Input
 
 /* EOF */

Modified: branches/pingus_sdl/src/input/controller.hpp
===================================================================
--- branches/pingus_sdl/src/input/controller.hpp        2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/controller.hpp        2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -24,6 +24,7 @@
 #include <list>
 #include <string>
 #include <vector>
+#include "SDL.h"
 #include "../file_reader.hpp"
 #include "event.hpp"
 
@@ -34,53 +35,66 @@
 class Pointer;
 class Scroller;
 
+typedef void (*key_callback_func)(const SDL_Event&, void*);
+typedef void (*mouse_callback_func)(const SDL_Event&, void*);
+
 class Controller {
 
 private:
-  Pointer*  standard_pointer;
+  Pointer* standard_pointer;
   Scroller* scroller;
 
   std::map<ButtonName, Button*> buttons;
 
   std::vector<Event> events;
 
-  float             std_pointer_x;
-  float             std_pointer_y;
+  float std_pointer_x;
+  float std_pointer_y;
 
   ////  std::vector<CL_Slot> slots;
 
 public:
-  Controller (const std::string& configfile);
-  ~Controller ();
+  Controller(const std::string& configfile);
+  ~Controller();
 
-  std::vector<Event>& get_events () { return events; }
+  std::vector<Event>& get_events() { return events; }
        
-  const Pointer * get_pointer     () const { return standard_pointer; }
-  const Scroller* get_scroller    () const { return scroller;         }
+  const Pointer * get_pointer() const { return standard_pointer; }
+  const Scroller* get_scroller() const { return scroller; }
 
   /// returns the requested Buttons::Button or 0 if it doesn't exist (e.g. 
undefined action Buttons::Button)
-  const Button* get_button (ButtonName name);
+  const Button* get_button(ButtonName name);
 
-  void update (float delta);
+  void update(float delta);
   void clear();
 
   static void set_current(Controller* controller) { current_controller = 
controller; }
   static Controller* get_current() { return current_controller; }
+
+  static void add_key_callback(key_callback_func, void*);
+  static void add_mouse_callback(mouse_callback_func, void*);
        
 private:
   static Controller* current_controller;
 
-  void on_button_down(ButtonName name);
-  void on_button_up(ButtonName name);
-  void create_action_buttons (FileReader reader);
+  static void on_button_down(void*);
+  static void on_button_up(void*);
+  void create_action_buttons(FileReader reader);
   ////void key_pressed(const CL_InputEvent &event);
 
-/** Get keyboard keys pressed to handle general keyboard input */
-       std::string get_keys_pressed();
+  struct key_callback_info {
+    key_callback_func callback;
+    void *userdata;
+  };
+  static std::vector<key_callback_info> key_callbacks;
 
-       std::string keys;
+  struct mouse_callback_info {
+    mouse_callback_func callback;
+    void *userdata;
+  };
+  static std::vector<mouse_callback_info> mouse_callbacks;
 
-  Controller (const Controller&);
+  Controller(const Controller&);
   Controller& operator= (const Controller&);
 };
 

Modified: branches/pingus_sdl/src/input/event.hpp
===================================================================
--- branches/pingus_sdl/src/input/event.hpp     2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/input/event.hpp     2007-07-18 04:32:38 UTC (rev 
2753)
@@ -30,7 +30,7 @@
 
 enum ButtonName { primary, secondary, pause, fast_forward, armageddon, escape, 
action_1, action_2,
                   action_3, action_4, action_5, action_6, action_7, action_8, 
action_9, action_10,
-                  action_up, action_down };
+                  action_up, action_down, max_button };
 
 enum State { pressed, released };
 
@@ -65,7 +65,7 @@
 
 struct KeyboardEvent
 {
-       char key;
+  unsigned short key;
 };
 
 struct Event
@@ -77,13 +77,13 @@
     PointerEvent  pointer;
     AxisEvent     axis;
     ScrollEvent   scroll;
-               KeyboardEvent keyboard;
+    KeyboardEvent keyboard;
   };
 };
 
 typedef std::vector<Event> EventLst;
 
-inline Event makeButtonEvent (ButtonName name, State state)
+inline Event makeButtonEvent(ButtonName name, State state)
 {
   Event event;
 
@@ -106,7 +106,7 @@
   return event;
 }
 
-inline Event makeAxisEvent (float dir, AxisName name = action)
+inline Event makeAxisEvent(float dir, AxisName name = action)
 {
   Event event;
 
@@ -117,7 +117,7 @@
   return event;
 }
 
-inline Event makeScrollEvent (float x_delta, float y_delta)
+inline Event makeScrollEvent(float x_delta, float y_delta)
 {
   Event event;
 
@@ -128,14 +128,14 @@
   return event;
 }
 
-inline Event makeKeyboardEvent (char c)
+inline Event makeKeyboardEvent(unsigned short c)
 {
-       Event event;
+  Event event;
        
-       event.type = KeyboardEventType;
-       event.keyboard.key = c;
+  event.type = KeyboardEventType;
+  event.keyboard.key = c;
        
-       return event;
+  return event;
 }
 
 } // namespace Input

Modified: branches/pingus_sdl/src/input/pointer.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointer.hpp   2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/input/pointer.hpp   2007-07-18 04:32:38 UTC (rev 
2753)
@@ -28,19 +28,19 @@
 class Pointer
 {
 public:
-  Pointer () { }
+  Pointer() { }
   virtual ~Pointer() { }
 
   /// returns the X coordinate of the pointer
-  virtual const float& get_x_pos () const =0;
+  virtual const float& get_x_pos() const =0;
 
   /// returns the Y coordinate of the pointer
-  virtual const float& get_y_pos () const =0;
+  virtual const float& get_y_pos() const =0;
 
   /// sets the pointer to the given position
-  virtual void  set_pos (float, float) =0;
+  virtual void set_pos(float, float) =0;
 
-  virtual void  update (float) =0;
+  virtual void update(float) =0;
 
 private:
   Pointer (const Pointer&);

Modified: branches/pingus_sdl/src/input/pointer_factory.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointer_factory.hpp   2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/pointer_factory.hpp   2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -29,16 +29,16 @@
 class PointerFactory
 {
 private:
-  static Pointer* axis_pointer     (FileReader reader);
-  static Pointer* mouse_pointer    ();
-  static Pointer* multiple_pointer (FileReader reader);
+  static Pointer* axis_pointer(FileReader reader);
+  static Pointer* mouse_pointer();
+  static Pointer* multiple_pointer(FileReader reader);
 
 public:
-  static Pointer* create (FileReader reader);
+  static Pointer* create(FileReader reader);
 
 private:
-  PointerFactory ();
-  PointerFactory (const PointerFactory&);
+  PointerFactory();
+  PointerFactory(const PointerFactory&);
   PointerFactory& operator= (const PointerFactory&);
 };
 

Modified: branches/pingus_sdl/src/input/pointers/axis_pointer.cpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/axis_pointer.cpp     2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/axis_pointer.cpp     2007-07-18 
04:32:38 UTC (rev 2753)
@@ -25,39 +25,39 @@
 namespace Input {
 namespace Pointers {
 
-AxisPointer::AxisPointer (float speed_, const std::vector<Axis*>& axes_) : 
speed(speed_), axes(axes_)
+AxisPointer::AxisPointer(float speed_, const std::vector<Axis*>& axes_) : 
speed(speed_), axes(axes_)
 {
   assert(axes.size() >= 2);
   assert(axes[0]->get_angle() != axes[1]->get_angle());
 }
 
-AxisPointer::~AxisPointer ()
+AxisPointer::~AxisPointer()
 {
   for (std::vector<Axis*>::const_iterator it = axes.begin(); it != axes.end(); 
it++)
     delete *it;
 }
 
 const float&
-AxisPointer::get_x_pos () const
+AxisPointer::get_x_pos() const
 {
   return x_pos;
 }
 
 const float&
-AxisPointer::get_y_pos () const
+AxisPointer::get_y_pos() const
 {
   return y_pos;
 }
 
 void
-AxisPointer::set_pos (float new_x, float new_y)
+AxisPointer::set_pos(float new_x, float new_y)
 {
   x_pos = new_x;
   y_pos = new_y;
 }
 
 void
-AxisPointer::update (float delta)
+AxisPointer::update(float delta)
 {
   for (std::vector<Axis*>::const_iterator it = axes.begin(); it != axes.end(); 
it++)
     {

Modified: branches/pingus_sdl/src/input/pointers/axis_pointer.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/axis_pointer.hpp     2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/axis_pointer.hpp     2007-07-18 
04:32:38 UTC (rev 2753)
@@ -42,26 +42,26 @@
 
 private:
 
-  const float        speed;
+  const float speed;
   std::vector<Axis*> axes;
 
-  float              x_pos;
-  float              y_pos;
+  float x_pos;
+  float y_pos;
 
 public:
 
-  AxisPointer (float speed, const std::vector<Axis*>& axes_);
-  ~AxisPointer ();
+  AxisPointer(float speed, const std::vector<Axis*>& axes_);
+  ~AxisPointer();
 
-  virtual const float& get_x_pos () const;
-  virtual const float& get_y_pos () const;
+  virtual const float& get_x_pos() const;
+  virtual const float& get_y_pos() const;
 
   virtual void  set_pos(float new_x, float new_y);
 
-  virtual void  update (float delta);
+  virtual void  update(float delta);
 
 private:
-  AxisPointer (const AxisPointer&);
+  AxisPointer(const AxisPointer&);
   AxisPointer& operator= (const AxisPointer&);
 };
 

Modified: branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp    2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/mouse_pointer.cpp    2007-07-18 
04:32:38 UTC (rev 2753)
@@ -17,50 +17,52 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-#include <ClanLib/Display/mouse.h>
-#include <ClanLib/Display/input_event.h>
 #include "mouse_pointer.hpp"
 
 namespace Input {
 namespace Pointers {
 
-MousePointer::MousePointer () 
+MousePointer::MousePointer() 
   : x_pos(0),
-    y_pos(0),
-    move_slot(CL_Mouse::sig_move().connect(this, 
&Input::Pointers::MousePointer::move_signal))
+    y_pos(0)
+//    move_slot(CL_Mouse::sig_move().connect(this, 
&Input::Pointers::MousePointer::move_signal))
 {
 }
 
 const float&
-MousePointer::get_x_pos () const
+MousePointer::get_x_pos() const
 {
   return x_pos;
 }
 
 const float&
-MousePointer::get_y_pos () const
+MousePointer::get_y_pos() const
 {
   return y_pos;
 }
 
 void
-MousePointer::set_pos (float new_x, float new_y)
+MousePointer::set_pos(float new_x, float new_y)
 {
+#if 0
   CL_Mouse::set_position(static_cast<int>(new_x),
                          static_cast<int>(new_y));
+#endif
 }
 
 void
-MousePointer::update (float)
+MousePointer::update(float)
 {
 }
 
+#if 0
 void
-MousePointer::move_signal (const CL_InputEvent& event)
+MousePointer::move_signal(const CL_InputEvent& event)
 {
   x_pos = (float)event.mouse_pos.x;
   y_pos = (float)event.mouse_pos.y;
 }
+#endif
 
 } // namespace Pointers
 } // namespace Input

Modified: branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp
===================================================================
--- branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp    2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/pointers/mouse_pointer.hpp    2007-07-18 
04:32:38 UTC (rev 2753)
@@ -20,11 +20,8 @@
 #ifndef HEADER_PINGUS_INPUT_MOUSE_POINTER_HXX
 #define HEADER_PINGUS_INPUT_MOUSE_POINTER_HXX
 
-#include <ClanLib/Signals/slot.h>
 #include "../pointer.hpp"
 
-class CL_InputEvent;
-
 namespace Input {
 namespace Pointers {
 
@@ -38,22 +35,22 @@
 private:
   float x_pos;
   float y_pos;
-  CL_Slot move_slot;
+//  CL_Slot move_slot;
 
 public:
-  MousePointer ();
+  MousePointer();
 
-  virtual const float& get_x_pos () const;
-  virtual const float& get_y_pos () const;
+  virtual const float& get_x_pos() const;
+  virtual const float& get_y_pos() const;
 
-  virtual void  set_pos (float new_x, float new_y);
+  virtual void set_pos(float new_x, float new_y);
 
-  virtual void  update (float);
+  virtual void update(float);
 
 private:
-  void move_signal (const CL_InputEvent& event);
+//  void move_signal(const CL_InputEvent& event);
       
-  MousePointer (const MousePointer&);
+  MousePointer(const MousePointer&);
   MousePointer& operator= (const MousePointer&);
 };
 

Modified: branches/pingus_sdl/src/input/scroller.hpp
===================================================================
--- branches/pingus_sdl/src/input/scroller.hpp  2007-07-18 03:49:14 UTC (rev 
2752)
+++ branches/pingus_sdl/src/input/scroller.hpp  2007-07-18 04:32:38 UTC (rev 
2753)
@@ -27,22 +27,22 @@
 /// abstract base class defining the scroller interface
 class Scroller {
 public:
-  Scroller () { }
-  virtual ~Scroller () { }
+  Scroller() { }
+  virtual ~Scroller() { }
 
   /// returns the scroll delta in X direction
-  virtual const float& get_x_delta () const =0;
+  virtual const float& get_x_delta() const =0;
 
   /// returns the scroll delta in Y direction
-  virtual const float& get_y_delta () const =0;
+  virtual const float& get_y_delta() const =0;
 
   /// writes the X/Y scroll delta into it's parameters
-  virtual void  get_delta (float&, float&) const =0;
+  virtual void get_delta(float&, float&) const =0;
 
-  virtual void  update (float) =0;
+  virtual void update(float) =0;
 
 private:
-  Scroller (const Scroller&);
+  Scroller(const Scroller&);
   Scroller& operator= (const Scroller&);
 };
 

Modified: branches/pingus_sdl/src/input/scroller_factory.cpp
===================================================================
--- branches/pingus_sdl/src/input/scroller_factory.cpp  2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/scroller_factory.cpp  2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -65,7 +65,7 @@
 }
 
 Scroller*
-ScrollerFactory::axis_scroller (FileReader reader)
+ScrollerFactory::axis_scroller(FileReader reader)
 {
   float speed;
   if (!reader.read_float("speed", speed))
@@ -81,7 +81,7 @@
 }
 
 Scroller*
-ScrollerFactory::inverted_scroller (FileReader reader)
+ScrollerFactory::inverted_scroller(FileReader reader)
 {
   bool invert_x;
   if (!reader.read_bool("invert-x", invert_x))
@@ -98,7 +98,7 @@
 }
 
 Scroller*
-ScrollerFactory::joystick_scroller (FileReader reader)
+ScrollerFactory::joystick_scroller(FileReader reader)
 {
   int id;
   if (!reader.read_int("id", id))
@@ -120,7 +120,7 @@
 }
 
 Scroller*
-ScrollerFactory::multiple_scroller (FileReader reader)
+ScrollerFactory::multiple_scroller(FileReader reader)
 {
   std::vector<Scroller*> scrollers;
 
@@ -135,7 +135,7 @@
 }
 
 Scroller*
-ScrollerFactory::pointer_scroller (FileReader reader)
+ScrollerFactory::pointer_scroller(FileReader reader)
 {
   Pointer* pointer;
   Button*  button;

Modified: branches/pingus_sdl/src/input/scroller_factory.hpp
===================================================================
--- branches/pingus_sdl/src/input/scroller_factory.hpp  2007-07-18 03:49:14 UTC 
(rev 2752)
+++ branches/pingus_sdl/src/input/scroller_factory.hpp  2007-07-18 04:32:38 UTC 
(rev 2753)
@@ -29,19 +29,19 @@
 class ScrollerFactory
 {
 private:
-  static Scroller* axis_scroller     (FileReader reader);
-  static Scroller* inverted_scroller (FileReader reader);
-  static Scroller* joystick_scroller (FileReader reader);
-  static Scroller* mouse_scroller    (FileReader reader);
-  static Scroller* multiple_scroller (FileReader reader);
-  static Scroller* pointer_scroller  (FileReader reader);
+  static Scroller* axis_scroller(FileReader reader);
+  static Scroller* inverted_scroller(FileReader reader);
+  static Scroller* joystick_scroller(FileReader reader);
+  static Scroller* mouse_scroller(FileReader reader);
+  static Scroller* multiple_scroller(FileReader reader);
+  static Scroller* pointer_scroller(FileReader reader);
 
 public:
-  static Scroller* create (FileReader reader);
+  static Scroller* create(FileReader reader);
 
 private:
-  ScrollerFactory ();
-  ScrollerFactory (const ScrollerFactory&);
+  ScrollerFactory();
+  ScrollerFactory(const ScrollerFactory&);
   ScrollerFactory& operator= (const ScrollerFactory&);
 };
 

Modified: branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp   2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/axis_scroller.cpp   2007-07-18 
04:32:38 UTC (rev 2753)
@@ -20,13 +20,14 @@
 #include <math.h>
 #include <assert.h>
 #include "../../debug.hpp"
+#include "../../math.hpp"
 #include "../axis.hpp"
 #include "axis_scroller.hpp"
 
 namespace Input {
 namespace Scrollers {
 
-AxisScroller::AxisScroller (const std::vector<Axis*>& axes_, float speed_)
+AxisScroller::AxisScroller(const std::vector<Axis*>& axes_, float speed_)
   : axes(axes_),
     speed(speed_),
     x_delta(0),
@@ -36,33 +37,33 @@
   assert(axes[0]->get_angle() != axes[1]->get_angle());
 }
 
-AxisScroller::~AxisScroller ()
+AxisScroller::~AxisScroller()
 {
   for (unsigned int i=0; i < axes.size(); ++i)
     delete axes[i];
 }
 
 const float&
-AxisScroller::get_x_delta () const
+AxisScroller::get_x_delta() const
 {
   return x_delta;
 }
 
 const float&
-AxisScroller::get_y_delta () const
+AxisScroller::get_y_delta() const
 {
   return y_delta;
 }
 
 void
-AxisScroller::get_delta (float& x, float& y) const
+AxisScroller::get_delta(float& x, float& y) const
 {
   x = x_delta;
   y = y_delta;
 }
 
 void
-AxisScroller::update (float delta)
+AxisScroller::update(float delta)
 {
   x_delta = 0;
   y_delta = 0;
@@ -71,8 +72,8 @@
     {
       (*it)->update(delta);
 
-      x_delta += (float)cos((*it)->get_angle() * 3.14159265 / 180) * speed * 
delta * (*it)->get_pos();
-      y_delta += (float)sin((*it)->get_angle() * 3.14159265 / 180) * speed * 
delta * (*it)->get_pos();
+      x_delta += (float)cos((*it)->get_angle() * Math::pi / 180) * speed * 
delta * (*it)->get_pos();
+      y_delta += (float)sin((*it)->get_angle() * Math::pi / 180) * speed * 
delta * (*it)->get_pos();
     }
 
 }

Modified: branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp   2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/axis_scroller.hpp   2007-07-18 
04:32:38 UTC (rev 2753)
@@ -46,18 +46,18 @@
   float y_delta;
 
 public:
-  AxisScroller (const std::vector<Axis*>& axes_, float speed_);
-  ~AxisScroller ();
+  AxisScroller(const std::vector<Axis*>& axes_, float speed_);
+  ~AxisScroller();
 
-  const float& get_x_delta () const;
-  const float& get_y_delta () const;
+  const float& get_x_delta() const;
+  const float& get_y_delta() const;
 
-  void  get_delta (float& x, float& y) const;
+  void  get_delta(float& x, float& y) const;
 
-  void  update (float delta);
+  void  update(float delta);
 
 private:
-  AxisScroller (const AxisScroller&);
+  AxisScroller(const AxisScroller&);
   AxisScroller& operator= (const AxisScroller&);
 };
 

Modified: branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp  2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/mouse_scroller.cpp  2007-07-18 
04:32:38 UTC (rev 2753)
@@ -17,8 +17,6 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-#include <ClanLib/Display/mouse.h>
-#include <ClanLib/Core/System/error.h>
 #include "mouse_scroller.hpp"
 
 namespace Input {
@@ -26,10 +24,12 @@
 
 MouseScroller::MouseScroller(int id) : old_x(0), old_y(0), x_delta(0), 
y_delta(0)
 {
+#if 0
   if (id < 0 || id >= CL_Mouse::get_device_count())
     throw CL_Error("MouseScroller: id is outside of the range");
 
   device = CL_Mouse::get_device(id);
+#endif
 }
 
 const float&
@@ -54,11 +54,13 @@
 void
 MouseScroller::update (float)
 {
+#if 0
   x_delta = device.get_x() - old_x;
   y_delta = device.get_y() - old_y;
 
   old_x = (float)device.get_x();
   old_y = (float)device.get_y();
+#endif
 }
 
 } // namespace Scroller

Modified: branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp
===================================================================
--- branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp  2007-07-18 
03:49:14 UTC (rev 2752)
+++ branches/pingus_sdl/src/input/scrollers/mouse_scroller.hpp  2007-07-18 
04:32:38 UTC (rev 2753)
@@ -20,7 +20,6 @@
 #ifndef HEADER_PINGUS_INPUT_MOUSE_SCROLLER_HXX
 #define HEADER_PINGUS_INPUT_MOUSE_SCROLLER_HXX
 
-#include <ClanLib/Display/input_device.h>
 #include "../scroller.hpp"
 
 namespace Input {
@@ -33,7 +32,6 @@
 */
 class MouseScroller : public Scroller {
 private:
-  CL_InputDevice device;
   float old_x;
   float old_y;
   float x_delta;
@@ -42,15 +40,15 @@
 public:
   MouseScroller(int id);
 
-  const float& get_x_delta () const;
-  const float& get_y_delta () const;
+  const float& get_x_delta() const;
+  const float& get_y_delta() const;
 
-  void  get_delta (float& x, float& y) const;
+  void  get_delta(float& x, float& y) const;
 
-  void  update (float);
+  void  update(float);
 
 private:
-  MouseScroller (const MouseScroller&);
+  MouseScroller(const MouseScroller&);
   MouseScroller& operator= (const MouseScroller&);
 };
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]