]> git.saurik.com Git - wxWidgets.git/commitdiff
Removed usage of GdkImlib
authorRobert Roebling <robert@roebling.de>
Sat, 24 Oct 1998 17:12:05 +0000 (17:12 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 24 Oct 1998 17:12:05 +0000 (17:12 +0000)
  Added platform independent wxImage class
  Changed wxBitmap and wxImageList accordingly
  Correctted header text

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

81 files changed:
include/wx/gtk/accel.h
include/wx/gtk/app.h
include/wx/gtk/bitmap.h
include/wx/gtk/bmpbuttn.h
include/wx/gtk/brush.h
include/wx/gtk/button.h
include/wx/gtk/checkbox.h
include/wx/gtk/choice.h
include/wx/gtk/colour.h
include/wx/gtk1/accel.h
include/wx/gtk1/app.h
include/wx/gtk1/bitmap.h
include/wx/gtk1/bmpbuttn.h
include/wx/gtk1/brush.h
include/wx/gtk1/button.h
include/wx/gtk1/checkbox.h
include/wx/gtk1/choice.h
include/wx/gtk1/colour.h
include/wx/image.h [new file with mode: 0644]
samples/image/Makefile [new file with mode: 0644]
samples/image/Makefile.in [new file with mode: 0644]
samples/image/horse.png [new file with mode: 0644]
samples/image/image.cpp [new file with mode: 0644]
src/Makefile.in
src/common/image.cpp [new file with mode: 0644]
src/generic/imaglist.cpp
src/gtk.inc
src/gtk/app.cpp
src/gtk/bitmap.cpp
src/gtk/bmpbuttn.cpp
src/gtk/brush.cpp
src/gtk/button.cpp
src/gtk/checkbox.cpp
src/gtk/choice.cpp
src/gtk/colour.cpp
src/gtk/combobox.cpp
src/gtk/control.cpp
src/gtk/cursor.cpp
src/gtk/data.cpp
src/gtk/dc.cpp
src/gtk/dcclient.cpp
src/gtk/dcmemory.cpp
src/gtk/dcscreen.cpp
src/gtk/dialog.cpp
src/gtk/dnd.cpp
src/gtk/filedlg.cpp
src/gtk/font.cpp
src/gtk/frame.cpp
src/gtk/gauge.cpp
src/gtk/notebook.cpp
src/gtk/timer.cpp
src/gtk/utilsgtk.cpp
src/gtk/win_gtk.c
src/gtk/window.cpp
src/gtk1/app.cpp
src/gtk1/bitmap.cpp
src/gtk1/bmpbuttn.cpp
src/gtk1/brush.cpp
src/gtk1/button.cpp
src/gtk1/checkbox.cpp
src/gtk1/choice.cpp
src/gtk1/colour.cpp
src/gtk1/combobox.cpp
src/gtk1/control.cpp
src/gtk1/cursor.cpp
src/gtk1/data.cpp
src/gtk1/dc.cpp
src/gtk1/dcclient.cpp
src/gtk1/dcmemory.cpp
src/gtk1/dcscreen.cpp
src/gtk1/dialog.cpp
src/gtk1/dnd.cpp
src/gtk1/filedlg.cpp
src/gtk1/font.cpp
src/gtk1/frame.cpp
src/gtk1/gauge.cpp
src/gtk1/notebook.cpp
src/gtk1/timer.cpp
src/gtk1/utilsgtk.cpp
src/gtk1/win_gtk.c
src/gtk1/window.cpp

index 3f7ce4056e627ef36c6b6020752c5ff23dbdc68b..9b2f0e69d081f6d08588ebf7eafcef716157f34b 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     wxAcceleratorTable class
 // Author:      Robert
 // Modified by:
-// RCS-ID:      
+// RCS-ID:      $id$
 // Copyright:   (c) Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
index 53f89a2abe39a9b8af42b2f11abfc1f9f6eb723f..2df05b4886e991bed136b2d73171bce2f22657d9 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Created:     01/02/97
 // Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 81406d49ecee9a1fcea68de40ef9f45a0a424282..15af99d2c524127efe27fe0ff2408536cb4f7dfe 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bitmap.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -20,6 +19,7 @@
 #include "wx/object.h"
 #include "wx/string.h"
 #include "wx/palette.h"
+#include "wx/image.h"
 
 //-----------------------------------------------------------------------------
 // classes
@@ -60,7 +60,6 @@ class wxMask: public wxObject
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-// CMB 20/5/98: added xbm constructor and GetBitmap() method
 class wxBitmap: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxBitmap)
@@ -70,6 +69,7 @@ class wxBitmap: public wxObject
     wxBitmap();
     wxBitmap( int width, int height, int depth = -1 );
     wxBitmap( const char bits[], int width, int height, int depth = 1 );
+    wxBitmap( const wxImage &image );
     wxBitmap( char **bits );
     wxBitmap( const wxBitmap& bmp );
     wxBitmap( const wxBitmap* bmp );
@@ -79,6 +79,8 @@ class wxBitmap: public wxObject
     bool operator == ( const wxBitmap& bmp );
     bool operator != ( const wxBitmap& bmp );
     bool Ok() const;
+    
+    wxImage ConvertToImage() const;
 
     int GetHeight() const;
     int GetWidth() const;
@@ -90,8 +92,6 @@ class wxBitmap: public wxObject
     wxMask *GetMask() const;
     void SetMask( wxMask *mask );
 
-    void Resize( int height, int width );
-
     bool SaveFile( const wxString &name, int type, wxPalette *palette = (wxPalette *) NULL );
     bool LoadFile( const wxString &name, int type = wxBITMAP_TYPE_XPM);
 
@@ -104,10 +104,6 @@ class wxBitmap: public wxObject
     GdkPixmap *GetPixmap() const;
     GdkBitmap *GetBitmap() const;
 
-    void DestroyImage();
-    void RecreateImage();
-    void Render();
-
     // no data :-)
 };
 
index 6800d97bf4a8068b4f27ba1a4e9ec3bf9accaf53..5d61d0708b25d52dd8698c4be1e9af0c397f3909 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bmpbutton.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 66a3d451d5c35e22c5624ef93ebbea4c1e082c13..8a9fd41bf4b2879d6c525fcc59f8b3c5650dd3b6 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        brush.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index bbc5f130e2eb6d248b8ffbb7b4ffa9964f23d547..bfabb1d0be2348c4743e7c38f643cb4dacea0313 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        button.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index d83a8d59ea7062412928eacd8ab79ee40b1b731c..f2027e494b29a088e913c4460aad66705182a8b1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        checkbox.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 9929a37fef33e3d50ee5f20ea8d3421e24d47ae3..40cecba7866fcbdfd3685023c82cf09fca4080dc 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        choice.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index da8e9ee208090053d3560ed86886821bfa269b9e..77e4155350d8447ca57fdb60cf651ce90c8a8833 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        colour.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 3f7ce4056e627ef36c6b6020752c5ff23dbdc68b..9b2f0e69d081f6d08588ebf7eafcef716157f34b 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     wxAcceleratorTable class
 // Author:      Robert
 // Modified by:
-// RCS-ID:      
+// RCS-ID:      $id$
 // Copyright:   (c) Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
index 53f89a2abe39a9b8af42b2f11abfc1f9f6eb723f..2df05b4886e991bed136b2d73171bce2f22657d9 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Created:     01/02/97
 // Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 81406d49ecee9a1fcea68de40ef9f45a0a424282..15af99d2c524127efe27fe0ff2408536cb4f7dfe 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bitmap.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -20,6 +19,7 @@
 #include "wx/object.h"
 #include "wx/string.h"
 #include "wx/palette.h"
+#include "wx/image.h"
 
 //-----------------------------------------------------------------------------
 // classes
@@ -60,7 +60,6 @@ class wxMask: public wxObject
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-// CMB 20/5/98: added xbm constructor and GetBitmap() method
 class wxBitmap: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxBitmap)
@@ -70,6 +69,7 @@ class wxBitmap: public wxObject
     wxBitmap();
     wxBitmap( int width, int height, int depth = -1 );
     wxBitmap( const char bits[], int width, int height, int depth = 1 );
+    wxBitmap( const wxImage &image );
     wxBitmap( char **bits );
     wxBitmap( const wxBitmap& bmp );
     wxBitmap( const wxBitmap* bmp );
@@ -79,6 +79,8 @@ class wxBitmap: public wxObject
     bool operator == ( const wxBitmap& bmp );
     bool operator != ( const wxBitmap& bmp );
     bool Ok() const;
+    
+    wxImage ConvertToImage() const;
 
     int GetHeight() const;
     int GetWidth() const;
@@ -90,8 +92,6 @@ class wxBitmap: public wxObject
     wxMask *GetMask() const;
     void SetMask( wxMask *mask );
 
-    void Resize( int height, int width );
-
     bool SaveFile( const wxString &name, int type, wxPalette *palette = (wxPalette *) NULL );
     bool LoadFile( const wxString &name, int type = wxBITMAP_TYPE_XPM);
 
@@ -104,10 +104,6 @@ class wxBitmap: public wxObject
     GdkPixmap *GetPixmap() const;
     GdkBitmap *GetBitmap() const;
 
-    void DestroyImage();
-    void RecreateImage();
-    void Render();
-
     // no data :-)
 };
 
index 6800d97bf4a8068b4f27ba1a4e9ec3bf9accaf53..5d61d0708b25d52dd8698c4be1e9af0c397f3909 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bmpbutton.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 66a3d451d5c35e22c5624ef93ebbea4c1e082c13..8a9fd41bf4b2879d6c525fcc59f8b3c5650dd3b6 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        brush.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index bbc5f130e2eb6d248b8ffbb7b4ffa9964f23d547..bfabb1d0be2348c4743e7c38f643cb4dacea0313 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        button.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index d83a8d59ea7062412928eacd8ab79ee40b1b731c..f2027e494b29a088e913c4460aad66705182a8b1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        checkbox.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 9929a37fef33e3d50ee5f20ea8d3421e24d47ae3..40cecba7866fcbdfd3685023c82cf09fca4080dc 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        choice.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index da8e9ee208090053d3560ed86886821bfa269b9e..77e4155350d8447ca57fdb60cf651ce90c8a8833 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        colour.h
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
diff --git a/include/wx/image.h b/include/wx/image.h
new file mode 100644 (file)
index 0000000..dd8a5e9
--- /dev/null
@@ -0,0 +1,162 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        image.h
+// Purpose:     wxImage class
+// Author:      Robert Roebling
+// RCS-ID:      $Id$
+// Copyright:   (c) Robert Roebling
+// Licence:    wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_IMAGE_H_
+#define _WX_IMAGE_H_
+
+#ifdef __GNUG__
+#pragma interface "image.h"
+#endif
+
+#include "wx/setup.h"
+#include "wx/object.h"
+#include "wx/string.h"
+#include "wx/gdicmn.h"
+
+//-----------------------------------------------------------------------------
+// classes
+//-----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxImageHandler;
+class WXDLLEXPORT wxPNGHandler;
+class WXDLLEXPORT wxBMPHandler;
+class WXDLLEXPORT wxImage;
+
+//-----------------------------------------------------------------------------
+// wxImageHandler
+//-----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxImageHandler: public wxObject
+{
+  DECLARE_DYNAMIC_CLASS(wxImageHandler)
+  
+public:
+  wxImageHandler() { m_name = ""; m_extension = ""; m_type = 0; }
+
+  virtual bool LoadFile( wxImage *image, const wxString& name );
+  virtual bool SaveFile( wxImage *image, const wxString& name );
+
+  inline void SetName(const wxString& name) { m_name = name; }
+  inline void SetExtension(const wxString& ext) { m_extension = ext; }
+  inline void SetType(long type) { m_type = type; }
+  inline wxString GetName() const { return m_name; }
+  inline wxString GetExtension() const { return m_extension; }
+  inline long GetType() const { return m_type; }
+  
+protected:
+  wxString  m_name;
+  wxString  m_extension;
+  long      m_type;
+  
+};
+
+//-----------------------------------------------------------------------------
+// wxPNGHandler
+//-----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxPNGHandler: public wxImageHandler
+{
+  DECLARE_DYNAMIC_CLASS(wxPNGHandler)
+  
+public:
+
+    inline wxPNGHandler()
+    {
+        m_name = "PNG file";
+        m_extension = "png";
+        m_type = wxBITMAP_TYPE_PNG;
+    };
+
+    virtual bool LoadFile( wxImage *image, const wxString& name );
+    virtual bool SaveFile( wxImage *image, const wxString& name );
+};
+
+//-----------------------------------------------------------------------------
+// wxBMPHandler
+//-----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxBMPHandler: public wxImageHandler
+{
+  DECLARE_DYNAMIC_CLASS(wxBMPHandler)
+  
+public:
+
+    inline wxBMPHandler()
+    {
+        m_name = "BMP file";
+        m_extension = "bmp";
+        m_type = wxBITMAP_TYPE_BMP;
+    };
+
+    virtual bool LoadFile( wxImage *image, const wxString& name );
+};
+//-----------------------------------------------------------------------------
+// wxImage
+//-----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxImage: public wxObject
+{
+  DECLARE_DYNAMIC_CLASS(wxImage)
+
+  friend class WXDLLEXPORT wxImageHandler;
+
+public:
+
+  wxImage();
+  wxImage( int width, int height );
+  wxImage( const wxString& name, long type = wxBITMAP_TYPE_PNG );
+  
+  wxImage( const wxImage& image );
+  wxImage( const wxImage* image );
+
+  void Create( int width, int height );
+  void Destroy();
+  
+  virtual bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_PNG );
+  virtual bool SaveFile( const wxString& name, int type );
+
+  bool Ok() const;
+  int GetWidth() const;
+  int GetHeight() const;
+
+  char unsigned *GetData() const;
+  void SetData( char unsigned *data );
+  
+  void SetMaskColour( unsigned char r, unsigned char g, unsigned char b );
+  unsigned char GetMaskRed() const;
+  unsigned char GetMaskGreen() const;
+  unsigned char GetMaskBlue() const;
+  void SetMask( bool mask = TRUE );
+  bool HasMask() const;
+
+  inline wxImage& operator = (const wxImage& image) 
+    { if (*this == image) return (*this); Ref(image); return *this; }
+  inline bool operator == (const wxImage& image) 
+    { return m_refData == image.m_refData; }
+  inline bool operator != (const wxImage& image) 
+    { return m_refData != image.m_refData; }
+
+  static inline wxList& GetHandlers() { return sm_handlers; }
+  static void AddHandler( wxImageHandler *handler );
+  static void InsertHandler( wxImageHandler *handler );
+  static bool RemoveHandler( const wxString& name );
+  static wxImageHandler *FindHandler( const wxString& name );
+  static wxImageHandler *FindHandler( const wxString& extension, long imageType );
+  static wxImageHandler *FindHandler( long imageType );
+  
+  static void CleanUpHandlers();
+
+protected:
+
+  static wxList sm_handlers;
+  
+};
+
+#endif
+  // _WX_IMAGE_H_
diff --git a/samples/image/Makefile b/samples/image/Makefile
new file mode 100644 (file)
index 0000000..bccce53
--- /dev/null
@@ -0,0 +1 @@
+include ../../setup/general/makeapp
diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in
new file mode 100644 (file)
index 0000000..d8cbc50
--- /dev/null
@@ -0,0 +1,26 @@
+# WXXT base directory
+WXBASEDIR=@WXBASEDIR@
+
+# set the OS type for compilation
+OS=@OS@
+# compile a library only
+RULE=bin
+
+# define library name
+BIN_TARGET=image
+# define library sources
+BIN_SRC=\
+image.cpp
+
+#define library objects
+BIN_OBJ=\
+image.o
+
+# additional things needed to link
+BIN_LINK=
+
+# additional things needed to compile
+ADD_COMPILE=
+
+# include the definitions now
+include ../../../template.mak
diff --git a/samples/image/horse.png b/samples/image/horse.png
new file mode 100644 (file)
index 0000000..a9cd2a3
Binary files /dev/null and b/samples/image/horse.png differ
diff --git a/samples/image/image.cpp b/samples/image/image.cpp
new file mode 100644 (file)
index 0000000..997b1f9
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Program: image
+ * 
+ * Author: Robert Roebling
+ *
+ * Copyright: (C) 1998, Robert Roebling
+ *
+ */
+
+#include "wx/wx.h"
+#include "wx/image.h"
+
+// derived classes
+
+class MyFrame;
+class MyApp;
+
+// MyCanvas
+
+class MyCanvas: public wxScrolledWindow
+{
+  DECLARE_DYNAMIC_CLASS(MyCanvas)
+  
+  public:
+  
+    MyCanvas(void) {};
+    MyCanvas( wxWindow *parent, wxWindowID, const wxPoint &pos, const wxSize &size );
+    ~MyCanvas(void);
+    void OnPaint( wxPaintEvent &event );
+    
+    wxBitmap  *my_horse;
+    
+  DECLARE_EVENT_TABLE()
+};
+
+// MyFrame
+
+class MyFrame: public wxFrame
+{
+  DECLARE_DYNAMIC_CLASS(MyFrame)
+
+  public:
+  
+    MyFrame(void);
+    void OnSize( wxSizeEvent &event );
+    void OnAbout( wxCommandEvent &event );
+    void OnQuit( wxCommandEvent &event );
+    
+    MyCanvas         *m_canvas;
+    
+  DECLARE_EVENT_TABLE()
+};
+
+// MyApp
+
+class MyApp: public wxApp
+{
+  public:
+  
+    MyApp(void);
+    virtual bool OnInit(void);
+};
+
+// main program
+
+IMPLEMENT_APP(MyApp)
+
+// MyCanvas
+
+IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxScrolledWindow)
+
+BEGIN_EVENT_TABLE(MyCanvas,wxScrolledWindow)
+  EVT_PAINT  (MyCanvas::OnPaint)
+END_EVENT_TABLE()
+
+MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, const wxPoint &pos, const wxSize &size ) 
+  : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ) 
+{
+  wxImage image;
+  image.LoadFile( "../horse.png", wxBITMAP_TYPE_PNG );
+  my_horse = new wxBitmap( image );
+}
+
+MyCanvas::~MyCanvas(void)
+{
+  delete my_horse;
+}
+
+void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
+{
+  wxPaintDC dc( this );
+  PrepareDC( dc );
+
+  dc.DrawBitmap( *my_horse, 30, 120 );
+}
+
+// MyFrame
+
+const  ID_QUIT  = 108;
+const  ID_ABOUT = 109;
+
+IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
+
+BEGIN_EVENT_TABLE(MyFrame,wxFrame)
+  EVT_MENU    (ID_ABOUT, MyFrame::OnAbout)
+  EVT_MENU    (ID_QUIT,  MyFrame::OnQuit)
+END_EVENT_TABLE()
+
+MyFrame::MyFrame(void) :
+  wxFrame( (wxFrame *) NULL, -1, (char *) "Robert's Test application", wxPoint(20,20), wxSize(470,360) )
+{
+  wxMenu *file_menu = new wxMenu();
+  file_menu->Append( ID_ABOUT, "About..");
+  file_menu->Append( ID_QUIT, "Exit");
+  
+  wxMenuBar *menu_bar = new wxMenuBar();
+  menu_bar->Append(file_menu, "File");
+  menu_bar->Show( TRUE );
+  
+  SetMenuBar( menu_bar );
+  
+  m_canvas = new MyCanvas( this, -1, wxPoint(2,62), wxSize(300-4,120-4) );
+  m_canvas->SetScrollbars( 10, 10, 50, 50 );
+}
+
+void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
+{
+  Close( TRUE );
+}
+
+void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
+{
+  (void) wxMessageBox( "Image demo\nRobert Roebling (c) 1998", "About Image Demo", wxOK );
+}
+
+//-----------------------------------------------------------------------------
+// MyApp
+//-----------------------------------------------------------------------------
+
+MyApp::MyApp(void) : 
+  wxApp( )
+{
+}
+
+bool MyApp::OnInit(void)
+{
+  wxImage::AddHandler( new wxPNGHandler );
+  
+  wxFrame *frame = new MyFrame();
+  frame->Show( TRUE );
+  
+  return TRUE;
+}
+
+
+
+
+
index 5caeef4a469fe69d9db98c3f60e434452b041532..7ec517ec58b052fbd310a618dfdfbc8017f363ab 100644 (file)
@@ -39,7 +39,6 @@ all::
        @if test ! -d generic; then mkdir generic; fi
        @if test ! -d png; then mkdir png; fi
        @if test ! -d zlib; then mkdir zlib; fi
-       @if test ! -d gdk_imlib; then mkdir gdk_imlib; fi
        @if test ! -d iodbc; then mkdir iodbc; fi
 
 install::
@@ -118,13 +117,11 @@ clean::
        $(RM) -rf generic
        $(RM) -rf png
        $(RM) -rf zlib
-       $(RM) -rf gdk_imlib
        $(RM) -rf iodbc
        @$(RM) lexer.c parser.c
 
 #additional things needed for compile
-ADD_COMPILE= \
-   -DHAVE_LIBPNG -DDJPEG_PROG=\"\" -DCJPEG_PROG=\"\"
+ADD_COMPILE=
 
 # include the definitions now
 include ../../template.mak
diff --git a/src/common/image.cpp b/src/common/image.cpp
new file mode 100644 (file)
index 0000000..dae0abc
--- /dev/null
@@ -0,0 +1,898 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        image.cpp
+// Purpose:     wxImage
+// Author:      Robert Roebling
+// RCS-ID:      $Id$
+// Copyright:   (c) Robert Roebling
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef __GNUG__
+#pragma implementation "image.h"
+#endif
+
+#include "wx/image.h"
+#include "wx/debug.h"
+#include "wx/log.h"
+#include "../png/png.h"
+
+//-----------------------------------------------------------------------------
+// wxImage
+//-----------------------------------------------------------------------------
+
+class wxImageRefData: public wxObjectRefData
+{
+  public:
+  
+    wxImageRefData(void);
+    ~wxImageRefData(void);
+  
+    int             m_width;
+    int             m_height;
+    unsigned char  *m_data;
+    bool            m_hasMask;
+    unsigned char   m_maskRed,m_maskGreen,m_maskBlue;
+    bool            m_ok;
+};
+
+wxImageRefData::wxImageRefData(void)
+{
+  m_width = 0;
+  m_height = 0;
+  m_data = (unsigned char*) NULL;
+  m_ok = FALSE;
+  m_maskRed = 0;
+  m_maskGreen = 0;
+  m_maskBlue = 0;
+  m_hasMask = FALSE;
+}
+
+wxImageRefData::~wxImageRefData(void)
+{
+  if (m_data) free( m_data );
+}
+
+wxList wxImage::sm_handlers;
+
+//-----------------------------------------------------------------------------
+
+#define M_IMGDATA ((wxImageRefData *)m_refData)
+
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxImage, wxObject)
+#endif
+
+wxImage::wxImage()
+{
+}
+
+wxImage::wxImage( int width, int height )
+{
+  Create( width, height );
+}
+
+wxImage::wxImage( const wxString& name, long type )
+{
+  LoadFile( name, type );
+}
+
+wxImage::wxImage( const wxImage& image )  
+{  
+  Ref(image); 
+}
+
+wxImage::wxImage( const wxImage* image )  
+{ 
+  if (image) Ref(*image); 
+}
+
+void wxImage::Create( int width, int height )
+{
+  m_refData = new wxImageRefData();
+  
+  M_IMGDATA->m_data = (unsigned char *) malloc( width*height*3 );
+  if (M_IMGDATA->m_data)
+  {
+    for (int l = 0; l < width*height*3; l++) M_IMGDATA->m_data[l] = 0;
+  
+    M_IMGDATA->m_width = width;
+    M_IMGDATA->m_height = height;
+    M_IMGDATA->m_ok = TRUE;
+  }
+  else
+  {
+    UnRef();
+  }
+}
+
+void wxImage::Destroy()
+{
+  UnRef();
+}
+
+bool wxImage::Ok() const 
+{ 
+  return (M_IMGDATA && M_IMGDATA->m_ok); 
+}
+
+char unsigned *wxImage::GetData() const
+{
+  if (!Ok()) return (char unsigned *)NULL;
+  
+  return M_IMGDATA->m_data;
+}
+
+void wxImage::SetData( char unsigned *WXUNUSED(data) )
+{
+}
+
+void wxImage::SetMaskColour( unsigned char r, unsigned char g, unsigned char b )
+{
+  if (!Ok()) return;
+  
+  M_IMGDATA->m_maskRed = r;
+  M_IMGDATA->m_maskGreen = g;
+  M_IMGDATA->m_maskBlue = b;
+  M_IMGDATA->m_hasMask = TRUE;
+}
+
+unsigned char wxImage::GetMaskRed() const
+{
+  if (!Ok()) return 0;
+  
+  return M_IMGDATA->m_maskRed;
+}
+
+unsigned char wxImage::GetMaskGreen() const
+{
+  if (!Ok()) return 0;
+  
+  return M_IMGDATA->m_maskGreen;
+}
+
+unsigned char wxImage::GetMaskBlue() const
+{
+  if (!Ok()) return 0;
+  
+  return M_IMGDATA->m_maskBlue;
+}
+  
+void wxImage::SetMask( bool mask )
+{
+  if (!Ok()) return;
+  
+  M_IMGDATA->m_hasMask = mask;
+}
+
+bool wxImage::HasMask() const
+{
+  if (!Ok()) return FALSE;
+  
+  return M_IMGDATA->m_hasMask;
+}
+
+int wxImage::GetWidth() const 
+{ 
+  return (M_IMGDATA ? M_IMGDATA->m_width : 0); 
+}
+
+int wxImage::GetHeight() const 
+{ 
+  return (M_IMGDATA ? M_IMGDATA->m_height : 0); 
+}
+
+bool wxImage::LoadFile( const wxString& filename, long type )
+{
+  UnRef();
+
+  m_refData = new wxImageRefData;
+
+  wxImageHandler *handler = FindHandler(type);
+
+  if (handler == NULL) 
+  {
+    wxLogWarning( "No image handler for type %d defined.", type );
+
+    return FALSE;
+  }
+
+  return handler->LoadFile( this, filename );
+}
+
+bool wxImage::SaveFile( const wxString& filename, int type )
+{
+  wxImageHandler *handler = FindHandler(type);
+
+  if (handler == NULL) 
+  {
+    wxLogWarning( "No image handler for type %d defined.", type );
+
+    return FALSE;
+  }
+
+  return handler->SaveFile( this, filename );
+}
+
+void wxImage::AddHandler( wxImageHandler *handler )
+{
+    sm_handlers.Append( handler );
+}
+
+void wxImage::InsertHandler( wxImageHandler *handler )
+{
+    sm_handlers.Insert( handler );
+}
+
+bool wxImage::RemoveHandler( const wxString& name )
+{
+  wxImageHandler *handler = FindHandler(name);
+  if (handler)
+  {
+    sm_handlers.DeleteObject(handler);
+    return TRUE;
+  }
+  else
+    return FALSE;
+}
+
+wxImageHandler *wxImage::FindHandler( const wxString& name )
+{
+  wxNode *node = sm_handlers.First();
+  while (node)
+  {
+    wxImageHandler *handler = (wxImageHandler*)node->Data();
+    if (handler->GetName() == name) return handler;
+    node = node->Next();
+  }
+  return (wxImageHandler *)NULL;
+}
+
+wxImageHandler *wxImage::FindHandler( const wxString& extension, long bitmapType )
+{
+  wxNode *node = sm_handlers.First();
+  while (node)
+  {
+    wxImageHandler *handler = (wxImageHandler*)node->Data();
+    if ( handler->GetExtension() == extension &&
+        (bitmapType == -1 || handler->GetType() == bitmapType) )
+      return handler;
+    node = node->Next();
+  }
+  return (wxImageHandler*)NULL;
+}
+
+wxImageHandler *wxImage::FindHandler( long bitmapType )
+{
+  wxNode *node = sm_handlers.First();
+  while (node)
+  {
+    wxImageHandler *handler = (wxImageHandler *)node->Data();
+    if (handler->GetType() == bitmapType) return handler;
+    node = node->Next();
+  }
+  return NULL;
+}
+
+void wxImage::CleanUpHandlers()
+{
+  wxNode *node = sm_handlers.First();
+  while (node)
+  {
+    wxImageHandler *handler = (wxImageHandler *)node->Data();
+    wxNode *next = node->Next();
+    delete handler;
+    delete node;
+    node = next;
+  }
+}
+
+//-----------------------------------------------------------------------------
+// wxImageHandler
+//-----------------------------------------------------------------------------
+
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxImageHandler,wxObject)
+#endif
+
+bool wxImageHandler::LoadFile( wxImage *WXUNUSED(image), const wxString& WXUNUSED(name) )
+{
+  return FALSE;
+}
+
+bool wxImageHandler::SaveFile( wxImage *WXUNUSED(image), const wxString& WXUNUSED(name) )
+{
+  return FALSE;
+}
+
+//-----------------------------------------------------------------------------
+// wxPNGHandler
+//-----------------------------------------------------------------------------
+
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler)
+#endif
+  
+bool wxPNGHandler::LoadFile( wxImage *image, const wxString& name )
+{
+   FILE               *f;
+   png_structp         png_ptr;
+   png_infop           info_ptr;
+   unsigned char      *ptr, **lines, *ptr2;
+   int                 transp,bit_depth,color_type,interlace_type;
+   png_uint_32         width, height;
+
+   image->Destroy();
+   
+   transp = 0;
+   png_ptr = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, NULL, NULL );
+   if (!png_ptr) return FALSE;
+
+   info_ptr = png_create_info_struct( png_ptr );
+   if (!info_ptr)
+   {
+     png_destroy_read_struct( &png_ptr, NULL, NULL );
+     return FALSE;
+   }
+
+   if (setjmp(png_ptr->jmpbuf))
+   {
+     png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+     return FALSE;
+   }
+
+   if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+   {
+     png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+     return FALSE;
+   }
+   
+   f = fopen( name, "rb" );
+   png_init_io( png_ptr, f );
+   
+   png_read_info( png_ptr, info_ptr );
+   png_get_IHDR( png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL );
+   
+   if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_expand( png_ptr );
+   
+   png_set_strip_16( png_ptr );
+   png_set_packing( png_ptr );
+   if (png_get_valid( png_ptr, info_ptr, PNG_INFO_tRNS)) png_set_expand( png_ptr );
+   png_set_filler( png_ptr, 0xff, PNG_FILLER_AFTER );
+   
+   image->Create( width, height );
+   
+   if (!image->Ok())
+   {
+     png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+     return FALSE;
+   }
+   
+   lines = (unsigned char **)malloc( height * sizeof(unsigned char *) );
+   if (lines == NULL)
+   {
+     image->Destroy();
+     png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+     return FALSE;
+   }
+   
+   for (unsigned int i = 0; i < height; i++)
+   {
+     if ((lines[i] = (unsigned char *)malloc(width * (sizeof(unsigned char) * 4))) == NULL)
+     {
+       image->Destroy();
+       for (unsigned int n = 0; n < i; n++) free( lines[n] );
+       free( lines );
+       png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+       return FALSE;
+     }
+  }
+     
+   png_read_image( png_ptr, lines );
+   png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+   ptr = image->GetData();
+   if ((color_type == PNG_COLOR_TYPE_GRAY) ||
+       (color_type == PNG_COLOR_TYPE_GRAY_ALPHA))
+     {
+       for (unsigned int y = 0; y < height; y++)
+         {
+            ptr2 = lines[y];
+            for (unsigned int x = 0; x < width; x++)
+              {
+                 unsigned char r = *ptr2++;
+                 unsigned char a = *ptr2++;
+                 if (a < 128)
+                   {
+                      *ptr++ = 255;
+                      *ptr++ = 0;
+                      *ptr++ = 255;
+                      transp = 1;
+                   }
+                 else
+                   {
+                      *ptr++ = r;
+                      *ptr++ = r;
+                      *ptr++ = r;
+                   }
+              }
+         }
+     }
+   else
+     {
+       for (unsigned int y = 0; y < height; y++)
+         {
+            ptr2 = lines[y];
+            for (unsigned int x = 0; x < width; x++)
+              {
+                 unsigned char r = *ptr2++;
+                 unsigned char g = *ptr2++;
+                 unsigned char b = *ptr2++;
+                 unsigned char a = *ptr2++;
+                 if (a < 128)
+                   {
+                      *ptr++ = 255;
+                      *ptr++ = 0;
+                      *ptr++ = 255;
+                      transp = 1;
+                   }
+                 else
+                   {
+                      if ((r == 255) && (g == 0) && (b == 255)) r = 254;
+                      *ptr++ = r;
+                      *ptr++ = g;
+                      *ptr++ = b;
+                   }
+              }
+         }
+     }
+   for (unsigned int i = 0; i < height; i++) free( lines[i] );
+   free( lines );
+   if (transp)
+     image->SetMaskColour( 255, 0, 255 );
+   else
+     image->SetMask( FALSE );
+   
+   return TRUE;
+}
+
+
+bool wxPNGHandler::SaveFile( wxImage *image, const wxString& name )
+{
+  FILE *f = fopen( name, "wb" );
+  if (f)
+  {
+    png_structp png_ptr = png_create_write_struct( PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+    if (!png_ptr) 
+    { 
+      fclose( f ); 
+      return FALSE; 
+    }
+    
+    png_infop info_ptr = png_create_info_struct(png_ptr);
+    if (info_ptr == NULL)
+    {
+      fclose(f);
+      png_destroy_write_struct( &png_ptr, (png_infopp)NULL );
+      return FALSE;
+    }
+    
+    if (setjmp(png_ptr->jmpbuf))
+    {
+      fclose( f );
+      png_destroy_write_struct( &png_ptr, (png_infopp)NULL );
+      return FALSE;
+    }
+    
+    png_init_io( png_ptr, f );
+    png_set_IHDR( png_ptr, info_ptr, image->GetWidth(), image->GetHeight(), 8,
+                 PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE,
+                 PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+                         
+    png_color_8 sig_bit;
+    sig_bit.red = 8;
+    sig_bit.green = 8;
+    sig_bit.blue = 8;
+    sig_bit.alpha = 8;
+    png_set_sBIT( png_ptr, info_ptr, &sig_bit );
+    png_write_info( png_ptr, info_ptr );
+    png_set_shift( png_ptr, &sig_bit );
+    png_set_packing( png_ptr );
+    
+    unsigned char *data = (unsigned char *)malloc( image->GetWidth()*4 );
+    if (!data)
+    {
+      fclose( f );
+      png_destroy_write_struct( &png_ptr, (png_infopp)NULL );
+      return FALSE;
+    }
+    
+    for (int y = 0; y < image->GetHeight(); y++)
+    {
+      unsigned char *ptr = image->GetData() + (y * image->GetWidth() * 3);
+      for (int x = 0; x < image->GetWidth(); x++)
+      {
+       data[(x << 2) + 0] = *ptr++;
+       data[(x << 2) + 1] = *ptr++;
+       data[(x << 2) + 2] = *ptr++;
+       if ((data[(x << 2) + 0] == image->GetMaskRed()) &&
+           (data[(x << 2) + 1] == image->GetMaskGreen()) &&
+           (data[(x << 2) + 2] == image->GetMaskBlue()))
+          data[(x << 2) + 3] = 0;
+       else
+         data[(x << 2) + 3] = 255;
+      }
+      png_bytep row_ptr = data;
+      png_write_rows( png_ptr, &row_ptr, 1 );
+    }
+    free(data);
+    png_write_end( png_ptr, info_ptr );
+    png_destroy_write_struct( &png_ptr, (png_infopp)NULL );
+
+    fclose(f);
+  }
+  return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// wxBMPHandler
+//-----------------------------------------------------------------------------
+
+#if !USE_SHARED_LIBRARIES
+IMPLEMENT_DYNAMIC_CLASS(wxBMPHandler,wxImageHandler)
+#endif
+  
+bool wxBMPHandler::LoadFile( wxImage *image, const wxString& name )
+{
+   FILE               *file;
+   unsigned char      *data, *ptr;
+   int                 done, i, bpp, planes, comp, ncolors, line, column,
+                       linesize, linepos, rshift = 0, gshift = 0, bshift = 0;
+   unsigned char       byte;
+   short int           word;
+   long int            dbuf[4], dword, rmask = 0, gmask = 0, bmask = 0, offset,
+                       size;
+   signed char         bbuf[4];
+   struct _cmap
+     {
+       unsigned char       r, g, b;
+     }
+                      *cmap = NULL;
+
+#define BI_RGB       0
+#define BI_RLE8      1
+#define BI_RLE4      2
+#define BI_BITFIELDS 3
+
+  image->Destroy();
+
+   file = fopen(name, "r");
+   if (!file)
+      return NULL;
+
+   done = 0;
+   /* 
+    * Reading the bmp header 
+    */
+
+   fread(&bbuf, 1, 2, file);
+
+   fread(dbuf, 4, 4, file);
+
+   size = dbuf[0];
+   offset = dbuf[2];
+
+   fread(dbuf, 4, 2, file);
+   int width = (int)dbuf[0];
+   int height = (int)dbuf[1];
+   if (width > 32767)
+     {
+       fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for file\n");
+       fclose(file);
+       return FALSE;
+     }
+   if (height > 32767)
+     {
+       fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for file\n");
+       fclose(file);
+       return FALSE;
+     }
+   fread(&word, 2, 1, file);
+   planes = (int)word;
+   fread(&word, 2, 1, file);
+   bpp = (int)word;
+   if (bpp != 1 && bpp != 4 && bpp != 8 && bpp && 16 && bpp != 24 && bpp != 32)
+     {
+       fprintf(stderr, "IMLIB ERROR: unknown bitdepth in file\n");
+       fclose(file);
+       return FALSE;
+     }
+   fread(dbuf, 4, 4, file);
+   comp = (int)dbuf[0];
+   if (comp != BI_RGB && comp != BI_RLE4 && comp != BI_RLE8 && comp != BI_BITFIELDS)
+     {
+       fprintf(stderr, "IMLIB ERROR: unknown encoding in Windows BMP file\n");
+       fclose(file);
+       return FALSE;
+     }
+   fread(dbuf, 4, 2, file);
+   ncolors = (int)dbuf[0];
+   if (ncolors == 0)
+      ncolors = 1 << bpp;
+   /* some more sanity checks */
+   if (((comp == BI_RLE4) && (bpp != 4)) || ((comp == BI_RLE8) && (bpp != 8)) || ((comp == BI_BITFIELDS) && (bpp != 16 && bpp != 32)))
+     {
+       fprintf(stderr, "IMLIB ERROR: encoding of BMP doesn't match bitdepth\n");
+       fclose(file);
+       return FALSE;
+     }
+   if (bpp < 16)
+     {
+       cmap = (struct _cmap *)malloc(sizeof(struct _cmap) * ncolors);
+
+       if (!cmap)
+         {
+            fprintf(stderr, "IMLIB ERROR: Cannot allocate RAM for color map in BMP file\n");
+            fclose(file);
+            return FALSE;
+         }
+     }
+   else
+      cmap = NULL;
+      
+   image->Create( width, height );      
+   ptr = image->GetData();
+   if (!ptr)
+     {
+       fprintf(stderr, "IMLIB ERROR: Cannot allocate RAM for RGB data in file\n");
+       fclose(file);
+       if (cmap)
+          free(cmap);
+       return FALSE;
+     }
+
+   /*
+    * Reading the palette, if it exists.
+    */
+   if (bpp < 16 && ncolors != 0)
+     {
+       for (i = 0; i < ncolors; i++)
+         {
+            fread(bbuf, 1, 4, file);
+            cmap[i].b = bbuf[0];
+            cmap[i].g = bbuf[1];
+            cmap[i].r = bbuf[2];
+         }
+     }
+   else if (bpp == 16 || bpp == 32)
+     {
+       if (comp == BI_BITFIELDS)
+         {
+            int                 bit = 0;
+
+            fread(dbuf, 4, 3, file);
+            bmask = dbuf[0];
+            gmask = dbuf[1];
+            rmask = dbuf[2];
+            /* find shift amount.. ugly, but i can't think of a better way */
+            for (bit = 0; bit < bpp; bit++)
+              {
+                 if (bmask & (1 << bit))
+                    bshift = bit;
+                 if (gmask & (1 << bit))
+                    gshift = bit;
+                 if (rmask & (1 << bit))
+                    rshift = bit;
+              }
+         }
+       else if (bpp == 16)
+         {
+            rmask = 0x7C00;
+            gmask = 0x03E0;
+            bmask = 0x001F;
+            rshift = 10;
+            gshift = 5;
+            bshift = 0;
+         }
+       else if (bpp == 32)
+         {
+            rmask = 0x00FF0000;
+            gmask = 0x0000FF00;
+            bmask = 0x000000FF;
+            rshift = 16;
+            gshift = 8;
+            bshift = 0;
+         }
+     }
+
+   /*
+    * REading the image data
+    */
+   fseek(file, offset, SEEK_SET);
+   data = ptr;
+
+   /* set the whole image to the background color */
+   if (bpp < 16 && (comp == BI_RLE4 || comp == BI_RLE8))
+     {
+       for (i = 0; i < width * height; i++)
+         {
+            *ptr++ = cmap[0].r;
+            *ptr++ = cmap[0].g;
+            *ptr++ = cmap[0].b;
+         }
+       ptr = data;
+     }
+   line = 0;
+   column = 0;
+#define poffset (line * width * 3 + column * 3)
+
+   /*
+    * BMPs are stored upside down... hmmmmmmmmmm....
+    */
+
+   linesize = ((width * bpp + 31) / 32) * 4;
+   for (line = (height - 1); line >= 0; line--)
+     {
+       linepos = 0;
+       for (column = 0; column < width;)
+         {
+            if (bpp < 16)
+              {
+                 int                 index;
+
+                 linepos++;
+                 byte = getc(file);
+                 if (bpp == 1)
+                   {
+                      int                 bit = 0;
+
+                      for (bit = 0; bit < 8; bit++)
+                        {
+                           index = ((byte & (0x80 >> bit)) ? 1 : 0);
+                           ptr[poffset] = cmap[index].r;
+                           ptr[poffset + 1] = cmap[index].g;
+                           ptr[poffset + 2] = cmap[index].b;
+                           column++;
+                        }
+                   }
+                 else if (bpp == 4)
+                   {
+                      if (comp == BI_RLE4)
+                        {
+                           fprintf(stderr, "can't deal with 4bit encoded yet.\n");
+                           image->Destroy();
+                           free(cmap);
+                           return FALSE;
+                        }
+                      else
+                        {
+                           int                 nibble = 0;
+
+                           for (nibble = 0; nibble < 2; nibble++)
+                             {
+                                index = ((byte & (0xF0 >> nibble * 4)) >> (!nibble * 4));
+                                if (index >= 16)
+                                   index = 15;
+                                ptr[poffset] = cmap[index].r;
+                                ptr[poffset + 1] = cmap[index].g;
+                                ptr[poffset + 2] = cmap[index].b;
+                                column++;
+                             }
+                        }
+                   }
+                 else if (bpp == 8)
+                   {
+                      if (comp == BI_RLE8)
+                        {
+                           unsigned char       first;
+
+                           first = byte;
+                           byte = getc(file);
+                           if (first == 0)
+                             {
+                                if (byte == 0)
+                                  {
+/*                                    column = width; */
+                                  }
+                                else if (byte == 1)
+                                  {
+                                     column = width;
+                                     line = -1;
+                                  }
+                                else if (byte == 2)
+                                  {
+                                     byte = getc(file);
+                                     column += byte;
+                                     linepos = column * bpp / 8;
+                                     byte = getc(file);
+                                     line += byte;
+                                  }
+                                else
+                                  {
+                                     int                 absolute = byte;
+
+                                     for (i = 0; i < absolute; i++)
+                                       {
+                                          +linepos++;
+                                          byte = getc(file);
+                                          ptr[poffset] = cmap[byte].r;
+                                          ptr[poffset + 1] = cmap[byte].g;
+                                          ptr[poffset + 2] = cmap[byte].b;
+                                          column++;
+                                       }
+                                     if (absolute & 0x01)
+                                        byte = getc(file);
+                                  }
+                             }
+                           else
+                             {
+                                for (i = 0; i < first; i++)
+                                  {
+                                     ptr[poffset] = cmap[byte].r;
+                                     ptr[poffset + 1] = cmap[byte].g;
+                                     ptr[poffset + 2] = cmap[byte].b;
+                                     column++;
+                                     linepos++;
+                                  }
+                             }
+                        }
+                      else
+                        {
+                           ptr[poffset] = cmap[byte].r;
+                           ptr[poffset + 1] = cmap[byte].g;
+                           ptr[poffset + 2] = cmap[byte].b;
+                           column++;
+                           linepos += size;
+                        }
+                   }
+              }
+            else if (bpp == 24)
+              {
+                 linepos += fread(&bbuf, 1, 3, file);
+                 ptr[poffset] = (unsigned char)bbuf[2];
+                 ptr[poffset + 1] = (unsigned char)bbuf[1];
+                 ptr[poffset + 2] = (unsigned char)bbuf[0];
+                 column++;
+              }
+            else if (bpp == 16)
+              {
+                 unsigned char       temp;
+
+                 linepos += fread(&word, 2, 1, file);
+                 temp = (word & rmask) >> rshift;
+                 ptr[poffset] = temp;
+                 temp = (word & gmask) >> gshift;
+                 ptr[poffset + 1] = temp;
+                 temp = (word & bmask) >> gshift;
+                 ptr[poffset + 2] = temp;
+                 column++;
+              }
+            else
+              {
+                 unsigned char       temp;
+
+                 linepos += fread(&dword, 4, 1, file);
+                 temp = (dword & rmask) >> rshift;
+                 ptr[poffset] = temp;
+                 temp = (dword & gmask) >> gshift;
+                 ptr[poffset + 1] = temp;
+                 temp = (dword & bmask) >> bshift;
+                 ptr[poffset + 2] = temp;
+                 column++;
+              }
+         }
+       while ((linepos < linesize) && (comp != 1) && (comp != 2))
+         {
+            int                 temp = fread(&byte, 1, 1, file);
+
+            linepos += temp;
+            if (!temp)
+               break;
+         }
+     }
+   if (cmap) free(cmap);
+      
+   image->SetMask( FALSE );
+   
+   fclose(file);
+   return TRUE;
+}
+
index 20a5101650ff4c1e86298536a1dd89d8b06ec40d..fcc9c4e1739471625b567f1cdd21018a88073c1b 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        imaglist.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -91,15 +90,6 @@ bool wxImageList::RemoveAll()
 
 bool wxImageList::GetSize( int index, int &width, int &height ) const
 {
-#ifdef __WXGTK__
-
-  width = m_width;
-  height = m_height;
-  
-  return (m_images.Nth( index ) != NULL);
-  
-#else
-  
   wxNode *node = m_images.Nth( index );
   if (node)
   {
@@ -114,8 +104,6 @@ bool wxImageList::GetSize( int index, int &width, int &height ) const
     height = 0;
     return FALSE;
   }
-
-#endif  
 }
 
 bool wxImageList::Draw( int index, wxDC &dc, int x, int y,
@@ -125,19 +113,6 @@ bool wxImageList::Draw( int index, wxDC &dc, int x, int y,
   if (!node) return FALSE;
   wxBitmap *bm = (wxBitmap*)node->Data();
   
-#ifdef __WXGTK__
-
-  // As X doesn't have a standard size for icons, we resize here.
-  // Otherwise we'd simply have to forbid different bitmap sizes.
-
-  if ((m_width != bm->GetWidth()) ||
-      (m_height != bm->GetHeight()))
-  {
-    bm->Resize( m_width, m_height );
-  }
-  
-#endif  
-  
   wxIcon *icon = (wxIcon*)bm;
   dc.DrawIcon( *icon, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 );
 
index 063d5cca2fe9c944b2a326230f413ff38f8d9504..507bb5b075714b253efab5d5fd50634287c4083f 100644 (file)
@@ -25,6 +25,7 @@ LIB_CPP_SRC=\
  common/hash.cpp \
  common/helpbase.cpp \
  common/intl.cpp \
+ common/image.cpp \
  common/ipcbase.cpp \
  common/layout.cpp \
  common/list.cpp \
@@ -167,12 +168,3 @@ LIB_C_SRC=\
  zlib/infcodes.c \
  zlib/infutil.c \
  zlib/inffast.c \
-\
- gdk_imlib/cache.c \
- gdk_imlib/colors.c \
- gdk_imlib/globals.c \
- gdk_imlib/load.c \
- gdk_imlib/misc.c \
- gdk_imlib/rend.c \
- gdk_imlib/save.c \
- gdk_imlib/utils.c
index fb0c54118ad9d753df4d5b8762942a71aed6d407..d65cff17cf4185f0a326c03b8edaa4284db67bd6 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        app.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "unistd.h"
 
-#ifdef wxUSE_GDK_IMLIB
-#include "../gdk_imlib/gdk_imlib.h"
-#endif
-
 //-----------------------------------------------------------------------------
 // global data
 //-----------------------------------------------------------------------------
@@ -38,6 +33,74 @@ wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
 extern wxList wxPendingDelete;
 extern wxResourceCache *wxTheResourceCache;
 
+unsigned char g_palette[64*3] =
+{
+  0x0,  0x0,  0x0,
+  0xff, 0xff, 0xff,
+  0xff, 0x0,  0x0,
+  0xff, 0xff, 0x0,
+  0x0,  0xff, 0x0,
+  0x0,  0x0,  0xff,
+  0x0,  0xff, 0xff,
+  0x99, 0x99, 0x99,
+  0xff, 0x88, 0x0,
+  0x88, 0x0,  0x0,
+  0x0,  0x88, 0x88,
+  0x88, 0x88, 0x0,
+  0xff, 0xcc, 0x97,
+  0xbb, 0xbb, 0xbb,
+  0x9f, 0x6b, 0x42,
+  0x55, 0x55, 0x55,
+  0xdd, 0xdd, 0xdd,
+  0x77, 0x77, 0x77,
+  0x33, 0x33, 0x33,
+  0xcc, 0x0,  0x0,
+  0xff, 0x44, 0x0,
+  0xff, 0xcc, 0x0,
+  0xcc, 0xcc, 0x0,
+  0x60, 0x60, 0x0,
+  0x0,  0x43, 0x0,
+  0x0,  0x7f, 0x0,
+  0x0,  0xcc, 0x0,
+  0x0,  0x44, 0x44,
+  0x0,  0x0,  0x44,
+  0x0,  0x0,  0x88,
+  0xef, 0xb1, 0x7b,
+  0xdf, 0x98, 0x5f,
+  0xbf, 0x87, 0x56,
+  0x7f, 0x57, 0x26,
+  0x5f, 0x39, 0xc,
+  0x3f, 0x1c, 0x0,
+  0x21, 0x0,  0x0,
+  0x0,  0x43, 0x87,
+  0x2d, 0x70, 0xaf,
+  0x5a, 0x9e, 0xd7,
+  0x87, 0xcc, 0xff,
+  0xff, 0xe0, 0xba,
+  0x21, 0x43, 0xf,
+  0x3d, 0x5d, 0x25,
+  0x59, 0x78, 0x3a,
+  0x75, 0x93, 0x4f,
+  0x91, 0xae, 0x64,
+  0xad, 0xc8, 0x7a,
+  0xf0, 0xa8, 0xef, 
+  0xd0, 0x88, 0xd0,
+  0xaf, 0x66, 0xaf,
+  0x8e, 0x44, 0x8e,
+  0x6d, 0x22, 0x6d,
+  0x4b, 0x0,  0x4b, 
+  0xff, 0xc0, 0xbc,
+  0xff, 0x93, 0x91,
+  0xff, 0x66, 0x67,
+  0xd8, 0xf2, 0xbf,
+  0xff, 0xc9, 0x68,
+  0xff, 0x96, 0x67,
+  0xa5, 0x60, 0xff,
+  0x51, 0xff, 0x99,
+  0x3f, 0xa5, 0x63,
+  0x98, 0x90, 0x67
+};
+
 //-----------------------------------------------------------------------------
 // local functions
 //-----------------------------------------------------------------------------
@@ -355,15 +418,22 @@ int wxEntry( int argc, char *argv[] )
   
   gtk_init( &argc, &argv );
 
-#ifdef wxUSE_GDK_IMLIB
-
-  gdk_imlib_init();
-
-  gtk_widget_push_visual(gdk_imlib_get_visual());
+  GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE );
 
-  gtk_widget_push_colormap(gdk_imlib_get_colormap());
-
-#endif
+  for (int i = 0; i < 64; i++)
+  {
+    GdkColor col;
+    col.red    = g_palette[i*3 + 0] << 8;
+    col.green  = g_palette[i*3 + 1] << 8;
+    col.blue   = g_palette[i*3 + 2] << 8;
+    col.pixel  = 0;
+    
+    gdk_color_alloc( cmap, &col );
+  }
+  
+  gtk_widget_push_colormap( cmap );
+  
+  gtk_widget_set_default_colormap( cmap );
 
   wxApp::CommonInit();
 
index 07519ea19f6a4158ada558ecc639473b80323d1d..4706c2e7d7457c5b2ba7df30138ed0658c09e6f1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bitmap.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/bitmap.h"
 #include "wx/icon.h"
 #include "gdk/gdkprivate.h"
-
-#ifdef wxUSE_GDK_IMLIB
-
-#include "../gdk_imlib/gdk_imlib.h"
-#include "gdk/gdkx.h"        // GDK_DISPLAY
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#endif
+#include "gdk/gdkx.h"
 
 //-----------------------------------------------------------------------------
 // wxMask
@@ -50,11 +41,7 @@ wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) )
 
 wxMask::~wxMask(void)
 {
-#ifdef wxUSE_GDK_IMLIB
-  // do not delete the mask, gdk_imlib does it for you
-#else
   if (m_bitmap) gdk_bitmap_unref( m_bitmap );
-#endif  
 }
 
 GdkBitmap *wxMask::GetBitmap(void) const
@@ -66,7 +53,6 @@ GdkBitmap *wxMask::GetBitmap(void) const
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-// CMB 20/5/98: added m_bitmap for GdkBitmaps
 class wxBitmapRefData: public wxObjectRefData
 {
   public:
@@ -80,9 +66,6 @@ class wxBitmapRefData: public wxObjectRefData
     int             m_width;
     int             m_height;
     int             m_bpp;
-#ifdef wxUSE_GDK_IMLIB
-    GdkImlibImage  *m_image;
-#endif
     wxPalette      *m_palette;
 };
 
@@ -95,19 +78,11 @@ wxBitmapRefData::wxBitmapRefData(void)
   m_height = 0;
   m_bpp = 0;
   m_palette = (wxPalette *) NULL;
-#ifdef wxUSE_GDK_IMLIB
-  m_image = (GdkImlibImage *) NULL;
-#endif
 }
 
 wxBitmapRefData::~wxBitmapRefData(void)
 {
-#ifdef wxUSE_GDK_IMLIB
-  if (m_pixmap) gdk_imlib_free_pixmap( m_pixmap );
-  if (m_image) gdk_imlib_kill_image( m_image );
-#else
   if (m_pixmap) gdk_pixmap_unref( m_pixmap );
-#endif
   if (m_bitmap) gdk_bitmap_unref( m_bitmap );
   if (m_mask) delete m_mask;
   if (m_palette) delete m_palette;
@@ -141,8 +116,6 @@ wxBitmap::wxBitmap( char **bits )
 {
   m_refData = new wxBitmapRefData();
 
-#ifndef wxUSE_GDK_IMLIB
-
   GdkBitmap *mask = NULL;
   
   M_BMPDATA->m_pixmap = 
@@ -156,13 +129,6 @@ wxBitmap::wxBitmap( char **bits )
   
   gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
   
-#else
-
-  M_BMPDATA->m_image = gdk_imlib_create_image_from_xpm_data( bits );
-  Render();
-  
-#endif
-                                 
   M_BMPDATA->m_bpp = 24; // ?
    
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
@@ -189,7 +155,6 @@ wxBitmap::wxBitmap( const wxString &filename, int type )
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
 }
 
-// CMB 15/5/98: add constructor for xbm bitmaps
 wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth))
 {
   m_refData = new wxBitmapRefData();
@@ -315,43 +280,7 @@ void wxBitmap::SetMask( wxMask *mask )
   M_BMPDATA->m_mask = mask;
 }
 
-void wxBitmap::Resize( int height, int width )
-{
-  if (!Ok())
-  {
-    wxFAIL_MSG( "invalid bitmap" );
-    return;
-  }
-  
-#ifdef wxUSE_GDK_IMLIB
-  
-  if (M_BMPDATA->m_bitmap)
-  {
-    wxFAIL_MSG( "wxBitmap::Resize not supported for mono-bitmaps" );
-    return;
-  }
-  
-  if (!M_BMPDATA->m_image) RecreateImage();
-  
-  if (M_BMPDATA->m_pixmap) gdk_imlib_free_pixmap( M_BMPDATA->m_pixmap );
-  if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
-  
-  GdkImlibImage* image = gdk_imlib_clone_scaled_image( M_BMPDATA->m_image, height, width );
-  gdk_imlib_destroy_image( M_BMPDATA->m_image );
-  M_BMPDATA->m_image = image;
-  M_BMPDATA->m_height = height;
-  M_BMPDATA->m_width = width;
-  
-  Render();
-  
-#else
-  
-  wxFAIL_MSG( "wxBitmap::Resize not implemented without GdkImlib" );
-  
-#endif
-}
-
-bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
+bool wxBitmap::SaveFile( const wxString &WXUNUSED(name), int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
 {
   if (!Ok())
@@ -360,55 +289,17 @@ bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type),
     return FALSE;
   }
   
-#ifdef wxUSE_GDK_IMLIB
-
-  if (M_BMPDATA->m_bitmap)
-  {
-    wxFAIL_MSG( "wxBitmap::SaveFile not supported for mono-bitmaps" );
-    return FALSE;
-  }
-  
-  if (!M_BMPDATA->m_image) RecreateImage();
-  
-  return gdk_imlib_save_image( M_BMPDATA->m_image, WXSTRINGCAST name, (GdkImlibSaveInfo *) NULL );
-
-#else
-  
-  wxFAIL_MSG( "wxBitmap::SaveFile not implemented without GdkImlib" );
-  
-#endif
-
   return FALSE;
 }
 
-bool wxBitmap::LoadFile( const wxString &name, int WXUNUSED(type) )
+bool wxBitmap::LoadFile( const wxString &WXUNUSED(name), int WXUNUSED(type) )
 {
-#ifdef wxUSE_GDK_IMLIB
-
-  UnRef();
-  m_refData = new wxBitmapRefData();
-  
-  M_BMPDATA->m_image = gdk_imlib_load_image( WXSTRINGCAST name );
-
-  if (!M_BMPDATA->m_image)
+  if (!Ok())
   {
-    UnRef();
+    wxFAIL_MSG( "invalid bitmap" );
     return FALSE;
   }
-
-  Render();
-                                 
-  gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
-  M_BMPDATA->m_bpp = 24; // ?
-  
-  return TRUE;
-  
-#else
-  
-  wxFAIL_MSG( "wxBitmap::LoadFile not implemented without GdkImlib" );
   
-#endif
-
   return FALSE;
 }
         
@@ -426,8 +317,6 @@ GdkPixmap *wxBitmap::GetPixmap(void) const
     return (GdkPixmap *) NULL;
   }
   
-//  if (!M_BMPDATA->m_image) RecreateImage();
-  
   return M_BMPDATA->m_pixmap;
 }
   
@@ -442,118 +331,200 @@ GdkBitmap *wxBitmap::GetBitmap(void) const
   return M_BMPDATA->m_bitmap;
 }
   
-void wxBitmap::DestroyImage(void)
+wxBitmap::wxBitmap( const wxImage &image )
 {
-  if (!Ok())
-  {
-    wxFAIL_MSG( "invalid bitmap" );
-    return;
-  }
+  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
   
-  if (M_BMPDATA->m_image)
-  {
-    gdk_imlib_destroy_image( M_BMPDATA->m_image );
-    M_BMPDATA->m_image = (GdkImlibImage *) NULL;
-  }
-}
+  if (!image.Ok()) return;
 
-void wxBitmap::RecreateImage(void)
-{
-  if (!Ok())
-  {
-    wxFAIL_MSG( "invalid bitmap" );
-    return;
-  }
-  
-#ifdef wxUSE_GDK_IMLIB
+  m_refData = new wxBitmapRefData();
 
-  DestroyImage();
+  M_BMPDATA->m_height = image.GetHeight();
+  M_BMPDATA->m_width = image.GetWidth();
+  int width = image.GetWidth();
+  int height = image.GetHeight();
+  
+  // Create picture
   
-  wxCHECK_RET( M_BMPDATA->m_pixmap != NULL, "invalid bitmap" );
+  GdkImage *data_image = 
+    gdk_image_new( GDK_IMAGE_FASTEST, gdk_visual_get_system(), width, height );
   
-  long size = (long)(M_BMPDATA->m_width)*(long)(M_BMPDATA->m_height)*(long)3;
-  unsigned char *data = new unsigned char[size];
-  for (long i = 0; i < size; i++) data[i] = 100;
+  M_BMPDATA->m_pixmap = 
+    gdk_pixmap_new( (GdkWindow*)&gdk_root_parent, width, height, -1 );
+
+  // Create mask
   
-  GdkImage *image = gdk_image_get( M_BMPDATA->m_pixmap, 0, 0, M_BMPDATA->m_width, M_BMPDATA->m_height );
+  GdkImage *mask_image = (GdkImage*) NULL;
   
-  long pos = 0;
-  for (int j = 0; j < M_BMPDATA->m_height; j++)
+  if (image.HasMask())
   {
-    for (int i = 0; i < M_BMPDATA->m_width; i++)
-    {
-      XColor xcol;
-      xcol.pixel = gdk_image_get_pixel( image, i, j );
-      Colormap cm = ((GdkColormapPrivate*)gdk_imlib_get_colormap())->xcolormap;
-      XQueryColor( gdk_display, cm, &xcol );
-      
-      data[pos] = xcol.red;
-      data[pos+1] = xcol.green;
-      data[pos+2] = xcol.blue;
-      pos += 3;
-    }
+    unsigned char *mask_data = (unsigned char*)malloc( ((width >> 3)+8) * height );
+  
+    mask_image =  gdk_image_new_bitmap( gdk_visual_get_system(), mask_data, width, height );
+  
+    M_BMPDATA->m_mask = new wxMask();
+    M_BMPDATA->m_mask->m_bitmap = gdk_pixmap_new( (GdkWindow*)&gdk_root_parent, width, height, 1 );
   }
   
-  wxCHECK_RET( M_BMPDATA->m_pixmap != NULL, "invalid bitmap" );
+  // Retrieve depth  
+  
+  M_BMPDATA->m_bpp = data_image->depth;
+  
+  int render_depth = 8;
+  if (M_BMPDATA->m_bpp > 8) render_depth = M_BMPDATA->m_bpp;
+  
+  // Render
+  
+  int r_mask = image.GetMaskRed();
+  int g_mask = image.GetMaskGreen();
+  int b_mask = image.GetMaskBlue();
+  
+  unsigned char* data = image.GetData();
+  
+  int index = 0;
+  for (int y = 0; y < height; y++)
+    for (int x = 0; x < width; x++)
+      {
+        int r = data[index];
+       index++;
+        int g = data[index];
+       index++;
+        int b = data[index];
+       index++;
+       
+       if (image.HasMask())
+       {
+         if ((r == r_mask) && (b = b_mask) && (g = g_mask))
+           gdk_image_put_pixel( mask_image, x, y, 0 );
+         else
+           gdk_image_put_pixel( mask_image, x, y, 1 );
+       }
+       
+       switch (render_depth)
+       {
+         case 8:
+         {
+           GdkColormap *cmap = gtk_widget_get_default_colormap();
+            GdkColor *colors = cmap->colors;
+            int max = 3 * (65536);
+            int index = -1;
+
+            for (int i = 0; i < cmap->size; i++)
+            {
+              int rdiff = (r << 8) - colors[i].red;
+              int gdiff = (g << 8) - colors[i].green;
+              int bdiff = (b << 8) - colors[i].blue;
+              int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
+              if (sum < max) { index = i; max = sum; }
+            }
+           
+           gdk_image_put_pixel( data_image, x, y, index );
+           
+           break;
+         }
+         case 15:
+         {
+           guint32 pixel = ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3);
+           gdk_image_put_pixel( data_image, x, y, pixel );
+           break;
+         }
+         case 16:
+         {
+           guint32 pixel = ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3);
+           gdk_image_put_pixel( data_image, x, y, pixel );
+           break;
+         }
+         case 24:
+         {
+           break;
+         }
+         case 32:
+         {
+           break;
+         }
+         default: break;
+       }
+      }
+    
+  // Blit picture
   
-  M_BMPDATA->m_image = gdk_imlib_create_image_from_data( 
-     data, (unsigned char*)NULL, M_BMPDATA->m_width, M_BMPDATA->m_height );
+  GdkGC *data_gc = gdk_gc_new( M_BMPDATA->m_pixmap );
   
-  delete[] data;
+  gdk_draw_image( M_BMPDATA->m_pixmap, data_gc, data_image, 0, 0, 0, 0, width, height );
   
-  gdk_image_destroy( image );
+  gdk_image_destroy( data_image );
+  gdk_gc_unref( data_gc );
   
-  Render();
+  // Blit mask
   
-#else
+  if (image.HasMask())
+  {
+    GdkGC *mask_gc = gdk_gc_new( M_BMPDATA->m_mask->m_bitmap );
   
-  wxFAIL_MSG( "wxBitmap::RecreateImage not implemented without GdkImlib" );
+    gdk_draw_image( M_BMPDATA->m_mask->m_bitmap, mask_gc, mask_image, 0, 0, 0, 0, width, height );
   
-#endif
+    gdk_image_destroy( mask_image );
+    gdk_gc_unref( mask_gc );
+  }
+   
 }
 
-void wxBitmap::Render(void)
+wxImage wxBitmap::ConvertToImage() const
 {
+  wxImage image;
+
   if (!Ok())
   {
     wxFAIL_MSG( "invalid bitmap" );
-    return;
+    return image;
   }
   
-#ifdef wxUSE_GDK_IMLIB
-
-  if (!M_BMPDATA->m_image) RecreateImage();
+  GdkImage *gdk_image = gdk_image_get( M_BMPDATA->m_pixmap, 0, 0, M_BMPDATA->m_width, M_BMPDATA->m_height );
   
-  if (M_BMPDATA->m_pixmap)
-  { 
-    gdk_imlib_free_pixmap( M_BMPDATA->m_pixmap );
-    M_BMPDATA->m_pixmap = (GdkPixmap*) NULL;
-  }
-  if (M_BMPDATA->m_mask)
-  {
-    delete M_BMPDATA->m_mask;
-    M_BMPDATA->m_mask = (wxMask*) NULL;
-  }
+  if (!gdk_image) return image;
   
-  gdk_imlib_render( M_BMPDATA->m_image, M_BMPDATA->m_image->rgb_width, M_BMPDATA->m_image->rgb_height );
-  M_BMPDATA->m_width = M_BMPDATA->m_image->rgb_width;
-  M_BMPDATA->m_height = M_BMPDATA->m_image->rgb_height;
-  M_BMPDATA->m_pixmap = gdk_imlib_move_image( M_BMPDATA->m_image );
+  image.Create( M_BMPDATA->m_width, M_BMPDATA->m_height );
+  char unsigned *data = image.GetData();
   
-  wxCHECK_RET( M_BMPDATA->m_pixmap != NULL, "pixmap rendering failed" ) 
+  int bpp = gdk_image->bpp;
+  GdkColormap *cmap = gtk_widget_get_default_colormap();
   
-  GdkBitmap *mask = gdk_imlib_move_mask( M_BMPDATA->m_image );
-  if (mask)
+  long pos = 0;
+  for (int j = 0; j < M_BMPDATA->m_height; j++)
   {
-    M_BMPDATA->m_mask = new wxMask();
-    M_BMPDATA->m_mask->m_bitmap = mask;
+    for (int i = 0; i < M_BMPDATA->m_width; i++)
+    {
+      int pixel = gdk_image_get_pixel( gdk_image, i, j );
+      if (bpp <= 8)
+      {
+        data[pos] = cmap->colors[pixel].red >> 8;
+        data[pos+1] = cmap->colors[pixel].green >> 8;
+        data[pos+2] = cmap->colors[pixel].blue >> 8;
+      } else if (bpp == 15)
+      {
+        data[pos] = (pixel >> 7) & 0xf8;
+        data[pos+1] = (pixel >> 3) & 0xf8;
+        data[pos+2] = (pixel << 3) & 0xf8;
+      } else if (bpp == 16)
+      {
+        data[pos] = (pixel >> 8) & 0xf8;
+        data[pos+1] = (pixel >> 3) & 0xfc;
+        data[pos+2] = (pixel << 3) & 0xf8;
+      } else
+      {
+        data[pos] = (pixel >> 16) & 0xff;
+        data[pos+1] = (pixel >> 8) & 0xff;
+        data[pos+2] = pixel & 0xff;
+      }
+      
+      pos += 3;
+    }
   }
   
-#else
+  gdk_image_destroy( gdk_image );
   
-  wxFAIL_MSG( "wxBitmap::Render not implemented without GdkImlib" );
-  
-#endif
+  return image;
 }
 
 
+
index 25968dbcd8a3c302aea3e8d1eaf1a5bf7aecbe17..df7d7f6a1ad29e4d6b38c5c4dbca37a2c4d87aa3 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bmpbuttn.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index ae90ec472d5236f012aea3fa36e0b1f7f09a9b33..29131bbede719011e9481c9528e1a7c3b469edf1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        brush.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 034e229f1843b48a0f1902dab60c02806eb628b1..b0278860acb4959ba645b80659f272c5ffa82d29 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        button.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index c4aac9364a1b3d47d18149dddb181da0f0d8246a..385f9bc7c37bc581055eb729b3872a486ac7c203 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        checkbox.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index edcf64f3e96fbae595f4b3cd0e63d15ee8995a7d..f6e3925ea43709a978d078367c6b895916297164 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        choice.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index b7c2dc11769cb2ecbe33d9cc1c42db048b32200b..7e57df104f649c45de5a89753bcc4d6e3e850e38 100644 (file)
@@ -15,9 +15,7 @@
 
 #include "wx/gdicmn.h"
 
-#ifdef wxUSE_GDK_IMLIB
-#include "../gdk_imlib/gdk_imlib.h"
-#endif
+#include "gdk/gdkprivate.h"
 
 //-----------------------------------------------------------------------------
 // wxColour
@@ -186,19 +184,30 @@ void wxColour::CalcPixel( GdkColormap *cmap )
   if ((M_COLDATA->m_hasPixel) && (M_COLDATA->m_colormap == cmap)) return;
   M_COLDATA->FreeColour();
   
-#ifdef wxUSE_GDK_IMLIB
-
-  int r = M_COLDATA->m_color.red >> SHIFT;
-  int g = M_COLDATA->m_color.green >> SHIFT;
-  int b = M_COLDATA->m_color.blue >> SHIFT;
-  M_COLDATA->m_hasPixel = TRUE;
-  M_COLDATA->m_color.pixel = gdk_imlib_best_color_match( &r, &g, &b );
-
-#else
+  GdkColormapPrivate *private_colormap = (GdkColormapPrivate*) cmap;
+  if ((private_colormap->visual->type == GDK_VISUAL_GRAYSCALE) ||
+      (private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR))
+  {
+    GdkColor *colors = cmap->colors;
+    int max = 3 * (65536);
+    int index = -1;
 
-  M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
-  
-#endif
+    for (int i = 0; i < cmap->size; i++)
+    {
+      int rdiff = (M_COLDATA->m_color.red - colors[i].red);
+      int gdiff = (M_COLDATA->m_color.green - colors[i].green);
+      int bdiff = (M_COLDATA->m_color.blue - colors[i].blue);
+      int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
+      if (sum < max) { index = i; max = sum; }
+    }
+    
+    M_COLDATA->m_hasPixel = TRUE;
+    M_COLDATA->m_color.pixel = index;
+  }
+  else
+  {
+    M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
+  }
   
   M_COLDATA->m_colormap = cmap;
 }
index efe78a6f3fd71b09532178028072839355bfc3a0..59f2f9821e63630665c6ac0512a35786b7691e74 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        combobox.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 61bab59ecf0d26ea217725e7d3661ee0fa9a616b..658ebcd8c96e35313cb8e2349ee12c59f5a8677a 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        control.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 7195cfa0c6f5605b27e52bf0b4ce24348f598c1b..20a8d3c19ef310eb3497f2a5bec5fdf48519eb91 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        cursor.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 96bce38d00f59dfacfe5db58b63f6ff5bf46bfd1..815bdca347f64228f7b411753dd230f3b996d19f 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        data.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
+// Id:          $id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
index 13ffab2a442fe08dccea417da49ede0e24d8d486..3678494de46c238a4020b46ca8da26e6784ab89b 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        dc.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:    wxWindows licence
index 17cd0074333090febd5463b143a92abecc0e7db9..a724a4d51c60990c2bad7ee77e70163d99b94964 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dcclient.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling, Markus Holzem, Chris Breeze
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -138,8 +137,6 @@ void wxPaintDC::DrawLine( long x1, long y1, long x2, long y2 )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
     gdk_draw_line( m_window, m_penGC, 
@@ -151,8 +148,6 @@ void wxPaintDC::CrossHair( long x, long y )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
     int w = 0;
@@ -171,8 +166,6 @@ void wxPaintDC::DrawArc( long x1, long y1, long x2, long y2, double xc, double y
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx1 = XLOG2DEV(x1); 
   long yy1 = YLOG2DEV(y1);
   long xx2 = XLOG2DEV(x2); 
@@ -221,8 +214,6 @@ void wxPaintDC::DrawEllipticArc( long x, long y, long width, long height, double
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx = XLOG2DEV(x);    
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width); 
@@ -245,8 +236,6 @@ void wxPaintDC::DrawPoint( long x, long y )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() != wxTRANSPARENT)
     gdk_draw_point( m_window, m_penGC, XLOG2DEV(x), YLOG2DEV(y) );
 }
@@ -255,8 +244,6 @@ void wxPaintDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() == wxTRANSPARENT) return;
   
   for (int i = 0; i < n-1; i++)
@@ -273,8 +260,6 @@ void wxPaintDC::DrawLines( wxList *points, long xoffset, long yoffset )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() == wxTRANSPARENT) return;
   
   wxNode *node = points->First();
@@ -295,8 +280,6 @@ void wxPaintDC::DrawPolygon( int n, wxPoint points[], long xoffset, long yoffset
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
    if (!n) return;    // Nothing to draw
    GdkPoint *gdkpoints = new GdkPoint[n+1];
    int i;
@@ -322,8 +305,6 @@ void wxPaintDC::DrawPolygon( wxList *lines, long xoffset, long yoffset, int WXUN
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
    int n = lines->Number();
    GdkPoint *gdkpoints = new GdkPoint[n];
    wxNode *node = lines->First();
@@ -356,8 +337,6 @@ void wxPaintDC::DrawRectangle( long x, long y, long width, long height )
 {
   if (!Ok()) return;
 
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx = XLOG2DEV(x);
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width);
@@ -381,8 +360,6 @@ void wxPaintDC::DrawRoundedRectangle( long x, long y, long width, long height, d
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (radius < 0.0) radius = - radius * ((width < height) ? width : height);
   
   long xx = XLOG2DEV(x);    
@@ -448,8 +425,6 @@ void wxPaintDC::DrawEllipse( long x, long y, long width, long height )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx = XLOG2DEV(x);    
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width); 
@@ -477,8 +452,6 @@ void wxPaintDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
   
   if (!icon.Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   int xx = XLOG2DEV(x);
   int yy = YLOG2DEV(y);
   
@@ -506,8 +479,6 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
 {
   if (!Ok()) return FALSE;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_isMemDC)
   {
     wxMemoryDC* srcDC = (wxMemoryDC*)source;
@@ -547,8 +518,6 @@ void wxPaintDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(us
 {
   if (!Ok()) return;
 
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   GdkFont *font = m_font.GetInternalFont( m_scaleY );
 
   x = XLOG2DEV(x);
@@ -618,8 +587,6 @@ void wxPaintDC::Clear(void)
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (!m_isMemDC)
   {
     gdk_window_clear( m_window );
index aa8ab7a2696159c8aa3f38a2ffb2a95433213c3b..f346200a81233a2829f05aae300c705411911f8c 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dcmemory.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/dcmemory.h"
 
-#ifdef wxUSE_GDK_IMLIB
-#include "../gdk_imlib/gdk_imlib.h"
-#endif
-
 //-----------------------------------------------------------------------------
 // wxMemoryDC
 //-----------------------------------------------------------------------------
@@ -28,22 +23,14 @@ wxMemoryDC::wxMemoryDC(void)
 {
   m_ok = FALSE;
   
-#ifdef wxUSE_GDK_IMLIB
-  m_cmap = gdk_imlib_get_colormap();
-#else
-  m_cmap = gdk_colormap_get_system();
-#endif
+  m_cmap = gtk_widget_get_default_colormap();
 }
 
 wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 {
   m_ok = FALSE;
   
-#ifdef wxUSE_GDK_IMLIB
-  m_cmap = gdk_imlib_get_colormap();
-#else
-  m_cmap = gdk_colormap_get_system();
-#endif
+  m_cmap = gtk_widget_get_default_colormap();
 }
 
 wxMemoryDC::~wxMemoryDC(void)
index c3a930375157fc216faed5841c6d9d0f0ccf8d1c..cd47777fdbd8d5caf8d90305ac178f87be7ee608 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dcscreen.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 73ae00a02b40b5746350640e9e2f7ad115160987..9bbc5f9a289e56d6a2dddbb21778c8864c6cbdd5 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dialog.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 458eb72641c80b987c70d1d48034dab000b9ff9a..4090bb15ec5685ff0a10a3e5a97925c74b71ad7a 100644 (file)
@@ -2,8 +2,9 @@
 // Name:        dnd.cpp
 // Purpose:     wxDropTarget class
 // Author:      Robert Roebling
-// Copyright:   Robert Roebling
-// Licence:     wxWindows license
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
+// Licence:    wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
index 021946bb57d21bf0eb135e77cd255b765fd856e3..dae464b19f4b246289f3fc4dc24fd40504be1465 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        filedlg.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index ef95c79be8d2a92c0335292ef56c1e2714b9469a..119b9cc83ce96797f5bfc731653a6a3265ab36a5 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        font.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
+// Id:          $id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
index bead5e36e2218f77d8c0a375bb2d1e09fb62a612..fbb256de87b16597fbbb798dc1a141086ce93cb1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        frame.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 8499339d67e761ed6c8f97458f783ca7c9dfd496..30688eda357ef1d929f6724ccf75c22714f333a7 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        gauge.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 0a3b30089d1cdf6f8ed11a5b29dcbc5bda5c23b0..f006c328a02d1c4d9aa6fd52dfd9ce332e13d3eb 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        notebook.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 4e36a67f1447dc978ce61c33a361ef179d54811b..89ecf05f6d2fdca9f67d59b672b5273be9691ee3 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        timer.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 3de7efc8bcfa316edc293ddea70bd1ecd45dd274..086ef60b6b34b614285bf896fca7a31a5e40970d 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        utils.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:           wxWindows licence
index 3a999cdeffb87bd00c7f79f2c2d27b26a7f64e73..c4e8c421010071f1ed1a0d0411774504e360f238 100644 (file)
@@ -1,10 +1,9 @@
 /* ///////////////////////////////////////////////////////////////////////////
 // Name:        wx_gtk.h
-// Purpose:
+// Purpose:     native GTK+ widget for wxWindows
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////// */
 
index 1e6c3b6b9208c62452c874d27b8a4346a38a7dfa..eb9b9dcb84cdf03e0f19737bbdc3bd55a2d2b806 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        window.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index fb0c54118ad9d753df4d5b8762942a71aed6d407..d65cff17cf4185f0a326c03b8edaa4284db67bd6 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        app.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "unistd.h"
 
-#ifdef wxUSE_GDK_IMLIB
-#include "../gdk_imlib/gdk_imlib.h"
-#endif
-
 //-----------------------------------------------------------------------------
 // global data
 //-----------------------------------------------------------------------------
@@ -38,6 +33,74 @@ wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
 extern wxList wxPendingDelete;
 extern wxResourceCache *wxTheResourceCache;
 
+unsigned char g_palette[64*3] =
+{
+  0x0,  0x0,  0x0,
+  0xff, 0xff, 0xff,
+  0xff, 0x0,  0x0,
+  0xff, 0xff, 0x0,
+  0x0,  0xff, 0x0,
+  0x0,  0x0,  0xff,
+  0x0,  0xff, 0xff,
+  0x99, 0x99, 0x99,
+  0xff, 0x88, 0x0,
+  0x88, 0x0,  0x0,
+  0x0,  0x88, 0x88,
+  0x88, 0x88, 0x0,
+  0xff, 0xcc, 0x97,
+  0xbb, 0xbb, 0xbb,
+  0x9f, 0x6b, 0x42,
+  0x55, 0x55, 0x55,
+  0xdd, 0xdd, 0xdd,
+  0x77, 0x77, 0x77,
+  0x33, 0x33, 0x33,
+  0xcc, 0x0,  0x0,
+  0xff, 0x44, 0x0,
+  0xff, 0xcc, 0x0,
+  0xcc, 0xcc, 0x0,
+  0x60, 0x60, 0x0,
+  0x0,  0x43, 0x0,
+  0x0,  0x7f, 0x0,
+  0x0,  0xcc, 0x0,
+  0x0,  0x44, 0x44,
+  0x0,  0x0,  0x44,
+  0x0,  0x0,  0x88,
+  0xef, 0xb1, 0x7b,
+  0xdf, 0x98, 0x5f,
+  0xbf, 0x87, 0x56,
+  0x7f, 0x57, 0x26,
+  0x5f, 0x39, 0xc,
+  0x3f, 0x1c, 0x0,
+  0x21, 0x0,  0x0,
+  0x0,  0x43, 0x87,
+  0x2d, 0x70, 0xaf,
+  0x5a, 0x9e, 0xd7,
+  0x87, 0xcc, 0xff,
+  0xff, 0xe0, 0xba,
+  0x21, 0x43, 0xf,
+  0x3d, 0x5d, 0x25,
+  0x59, 0x78, 0x3a,
+  0x75, 0x93, 0x4f,
+  0x91, 0xae, 0x64,
+  0xad, 0xc8, 0x7a,
+  0xf0, 0xa8, 0xef, 
+  0xd0, 0x88, 0xd0,
+  0xaf, 0x66, 0xaf,
+  0x8e, 0x44, 0x8e,
+  0x6d, 0x22, 0x6d,
+  0x4b, 0x0,  0x4b, 
+  0xff, 0xc0, 0xbc,
+  0xff, 0x93, 0x91,
+  0xff, 0x66, 0x67,
+  0xd8, 0xf2, 0xbf,
+  0xff, 0xc9, 0x68,
+  0xff, 0x96, 0x67,
+  0xa5, 0x60, 0xff,
+  0x51, 0xff, 0x99,
+  0x3f, 0xa5, 0x63,
+  0x98, 0x90, 0x67
+};
+
 //-----------------------------------------------------------------------------
 // local functions
 //-----------------------------------------------------------------------------
@@ -355,15 +418,22 @@ int wxEntry( int argc, char *argv[] )
   
   gtk_init( &argc, &argv );
 
-#ifdef wxUSE_GDK_IMLIB
-
-  gdk_imlib_init();
-
-  gtk_widget_push_visual(gdk_imlib_get_visual());
+  GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE );
 
-  gtk_widget_push_colormap(gdk_imlib_get_colormap());
-
-#endif
+  for (int i = 0; i < 64; i++)
+  {
+    GdkColor col;
+    col.red    = g_palette[i*3 + 0] << 8;
+    col.green  = g_palette[i*3 + 1] << 8;
+    col.blue   = g_palette[i*3 + 2] << 8;
+    col.pixel  = 0;
+    
+    gdk_color_alloc( cmap, &col );
+  }
+  
+  gtk_widget_push_colormap( cmap );
+  
+  gtk_widget_set_default_colormap( cmap );
 
   wxApp::CommonInit();
 
index 07519ea19f6a4158ada558ecc639473b80323d1d..4706c2e7d7457c5b2ba7df30138ed0658c09e6f1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bitmap.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/bitmap.h"
 #include "wx/icon.h"
 #include "gdk/gdkprivate.h"
-
-#ifdef wxUSE_GDK_IMLIB
-
-#include "../gdk_imlib/gdk_imlib.h"
-#include "gdk/gdkx.h"        // GDK_DISPLAY
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#endif
+#include "gdk/gdkx.h"
 
 //-----------------------------------------------------------------------------
 // wxMask
@@ -50,11 +41,7 @@ wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) )
 
 wxMask::~wxMask(void)
 {
-#ifdef wxUSE_GDK_IMLIB
-  // do not delete the mask, gdk_imlib does it for you
-#else
   if (m_bitmap) gdk_bitmap_unref( m_bitmap );
-#endif  
 }
 
 GdkBitmap *wxMask::GetBitmap(void) const
@@ -66,7 +53,6 @@ GdkBitmap *wxMask::GetBitmap(void) const
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-// CMB 20/5/98: added m_bitmap for GdkBitmaps
 class wxBitmapRefData: public wxObjectRefData
 {
   public:
@@ -80,9 +66,6 @@ class wxBitmapRefData: public wxObjectRefData
     int             m_width;
     int             m_height;
     int             m_bpp;
-#ifdef wxUSE_GDK_IMLIB
-    GdkImlibImage  *m_image;
-#endif
     wxPalette      *m_palette;
 };
 
@@ -95,19 +78,11 @@ wxBitmapRefData::wxBitmapRefData(void)
   m_height = 0;
   m_bpp = 0;
   m_palette = (wxPalette *) NULL;
-#ifdef wxUSE_GDK_IMLIB
-  m_image = (GdkImlibImage *) NULL;
-#endif
 }
 
 wxBitmapRefData::~wxBitmapRefData(void)
 {
-#ifdef wxUSE_GDK_IMLIB
-  if (m_pixmap) gdk_imlib_free_pixmap( m_pixmap );
-  if (m_image) gdk_imlib_kill_image( m_image );
-#else
   if (m_pixmap) gdk_pixmap_unref( m_pixmap );
-#endif
   if (m_bitmap) gdk_bitmap_unref( m_bitmap );
   if (m_mask) delete m_mask;
   if (m_palette) delete m_palette;
@@ -141,8 +116,6 @@ wxBitmap::wxBitmap( char **bits )
 {
   m_refData = new wxBitmapRefData();
 
-#ifndef wxUSE_GDK_IMLIB
-
   GdkBitmap *mask = NULL;
   
   M_BMPDATA->m_pixmap = 
@@ -156,13 +129,6 @@ wxBitmap::wxBitmap( char **bits )
   
   gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
   
-#else
-
-  M_BMPDATA->m_image = gdk_imlib_create_image_from_xpm_data( bits );
-  Render();
-  
-#endif
-                                 
   M_BMPDATA->m_bpp = 24; // ?
    
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
@@ -189,7 +155,6 @@ wxBitmap::wxBitmap( const wxString &filename, int type )
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
 }
 
-// CMB 15/5/98: add constructor for xbm bitmaps
 wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth))
 {
   m_refData = new wxBitmapRefData();
@@ -315,43 +280,7 @@ void wxBitmap::SetMask( wxMask *mask )
   M_BMPDATA->m_mask = mask;
 }
 
-void wxBitmap::Resize( int height, int width )
-{
-  if (!Ok())
-  {
-    wxFAIL_MSG( "invalid bitmap" );
-    return;
-  }
-  
-#ifdef wxUSE_GDK_IMLIB
-  
-  if (M_BMPDATA->m_bitmap)
-  {
-    wxFAIL_MSG( "wxBitmap::Resize not supported for mono-bitmaps" );
-    return;
-  }
-  
-  if (!M_BMPDATA->m_image) RecreateImage();
-  
-  if (M_BMPDATA->m_pixmap) gdk_imlib_free_pixmap( M_BMPDATA->m_pixmap );
-  if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
-  
-  GdkImlibImage* image = gdk_imlib_clone_scaled_image( M_BMPDATA->m_image, height, width );
-  gdk_imlib_destroy_image( M_BMPDATA->m_image );
-  M_BMPDATA->m_image = image;
-  M_BMPDATA->m_height = height;
-  M_BMPDATA->m_width = width;
-  
-  Render();
-  
-#else
-  
-  wxFAIL_MSG( "wxBitmap::Resize not implemented without GdkImlib" );
-  
-#endif
-}
-
-bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
+bool wxBitmap::SaveFile( const wxString &WXUNUSED(name), int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
 {
   if (!Ok())
@@ -360,55 +289,17 @@ bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type),
     return FALSE;
   }
   
-#ifdef wxUSE_GDK_IMLIB
-
-  if (M_BMPDATA->m_bitmap)
-  {
-    wxFAIL_MSG( "wxBitmap::SaveFile not supported for mono-bitmaps" );
-    return FALSE;
-  }
-  
-  if (!M_BMPDATA->m_image) RecreateImage();
-  
-  return gdk_imlib_save_image( M_BMPDATA->m_image, WXSTRINGCAST name, (GdkImlibSaveInfo *) NULL );
-
-#else
-  
-  wxFAIL_MSG( "wxBitmap::SaveFile not implemented without GdkImlib" );
-  
-#endif
-
   return FALSE;
 }
 
-bool wxBitmap::LoadFile( const wxString &name, int WXUNUSED(type) )
+bool wxBitmap::LoadFile( const wxString &WXUNUSED(name), int WXUNUSED(type) )
 {
-#ifdef wxUSE_GDK_IMLIB
-
-  UnRef();
-  m_refData = new wxBitmapRefData();
-  
-  M_BMPDATA->m_image = gdk_imlib_load_image( WXSTRINGCAST name );
-
-  if (!M_BMPDATA->m_image)
+  if (!Ok())
   {
-    UnRef();
+    wxFAIL_MSG( "invalid bitmap" );
     return FALSE;
   }
-
-  Render();
-                                 
-  gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
-  M_BMPDATA->m_bpp = 24; // ?
-  
-  return TRUE;
-  
-#else
-  
-  wxFAIL_MSG( "wxBitmap::LoadFile not implemented without GdkImlib" );
   
-#endif
-
   return FALSE;
 }
         
@@ -426,8 +317,6 @@ GdkPixmap *wxBitmap::GetPixmap(void) const
     return (GdkPixmap *) NULL;
   }
   
-//  if (!M_BMPDATA->m_image) RecreateImage();
-  
   return M_BMPDATA->m_pixmap;
 }
   
@@ -442,118 +331,200 @@ GdkBitmap *wxBitmap::GetBitmap(void) const
   return M_BMPDATA->m_bitmap;
 }
   
-void wxBitmap::DestroyImage(void)
+wxBitmap::wxBitmap( const wxImage &image )
 {
-  if (!Ok())
-  {
-    wxFAIL_MSG( "invalid bitmap" );
-    return;
-  }
+  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
   
-  if (M_BMPDATA->m_image)
-  {
-    gdk_imlib_destroy_image( M_BMPDATA->m_image );
-    M_BMPDATA->m_image = (GdkImlibImage *) NULL;
-  }
-}
+  if (!image.Ok()) return;
 
-void wxBitmap::RecreateImage(void)
-{
-  if (!Ok())
-  {
-    wxFAIL_MSG( "invalid bitmap" );
-    return;
-  }
-  
-#ifdef wxUSE_GDK_IMLIB
+  m_refData = new wxBitmapRefData();
 
-  DestroyImage();
+  M_BMPDATA->m_height = image.GetHeight();
+  M_BMPDATA->m_width = image.GetWidth();
+  int width = image.GetWidth();
+  int height = image.GetHeight();
+  
+  // Create picture
   
-  wxCHECK_RET( M_BMPDATA->m_pixmap != NULL, "invalid bitmap" );
+  GdkImage *data_image = 
+    gdk_image_new( GDK_IMAGE_FASTEST, gdk_visual_get_system(), width, height );
   
-  long size = (long)(M_BMPDATA->m_width)*(long)(M_BMPDATA->m_height)*(long)3;
-  unsigned char *data = new unsigned char[size];
-  for (long i = 0; i < size; i++) data[i] = 100;
+  M_BMPDATA->m_pixmap = 
+    gdk_pixmap_new( (GdkWindow*)&gdk_root_parent, width, height, -1 );
+
+  // Create mask
   
-  GdkImage *image = gdk_image_get( M_BMPDATA->m_pixmap, 0, 0, M_BMPDATA->m_width, M_BMPDATA->m_height );
+  GdkImage *mask_image = (GdkImage*) NULL;
   
-  long pos = 0;
-  for (int j = 0; j < M_BMPDATA->m_height; j++)
+  if (image.HasMask())
   {
-    for (int i = 0; i < M_BMPDATA->m_width; i++)
-    {
-      XColor xcol;
-      xcol.pixel = gdk_image_get_pixel( image, i, j );
-      Colormap cm = ((GdkColormapPrivate*)gdk_imlib_get_colormap())->xcolormap;
-      XQueryColor( gdk_display, cm, &xcol );
-      
-      data[pos] = xcol.red;
-      data[pos+1] = xcol.green;
-      data[pos+2] = xcol.blue;
-      pos += 3;
-    }
+    unsigned char *mask_data = (unsigned char*)malloc( ((width >> 3)+8) * height );
+  
+    mask_image =  gdk_image_new_bitmap( gdk_visual_get_system(), mask_data, width, height );
+  
+    M_BMPDATA->m_mask = new wxMask();
+    M_BMPDATA->m_mask->m_bitmap = gdk_pixmap_new( (GdkWindow*)&gdk_root_parent, width, height, 1 );
   }
   
-  wxCHECK_RET( M_BMPDATA->m_pixmap != NULL, "invalid bitmap" );
+  // Retrieve depth  
+  
+  M_BMPDATA->m_bpp = data_image->depth;
+  
+  int render_depth = 8;
+  if (M_BMPDATA->m_bpp > 8) render_depth = M_BMPDATA->m_bpp;
+  
+  // Render
+  
+  int r_mask = image.GetMaskRed();
+  int g_mask = image.GetMaskGreen();
+  int b_mask = image.GetMaskBlue();
+  
+  unsigned char* data = image.GetData();
+  
+  int index = 0;
+  for (int y = 0; y < height; y++)
+    for (int x = 0; x < width; x++)
+      {
+        int r = data[index];
+       index++;
+        int g = data[index];
+       index++;
+        int b = data[index];
+       index++;
+       
+       if (image.HasMask())
+       {
+         if ((r == r_mask) && (b = b_mask) && (g = g_mask))
+           gdk_image_put_pixel( mask_image, x, y, 0 );
+         else
+           gdk_image_put_pixel( mask_image, x, y, 1 );
+       }
+       
+       switch (render_depth)
+       {
+         case 8:
+         {
+           GdkColormap *cmap = gtk_widget_get_default_colormap();
+            GdkColor *colors = cmap->colors;
+            int max = 3 * (65536);
+            int index = -1;
+
+            for (int i = 0; i < cmap->size; i++)
+            {
+              int rdiff = (r << 8) - colors[i].red;
+              int gdiff = (g << 8) - colors[i].green;
+              int bdiff = (b << 8) - colors[i].blue;
+              int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
+              if (sum < max) { index = i; max = sum; }
+            }
+           
+           gdk_image_put_pixel( data_image, x, y, index );
+           
+           break;
+         }
+         case 15:
+         {
+           guint32 pixel = ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3);
+           gdk_image_put_pixel( data_image, x, y, pixel );
+           break;
+         }
+         case 16:
+         {
+           guint32 pixel = ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3);
+           gdk_image_put_pixel( data_image, x, y, pixel );
+           break;
+         }
+         case 24:
+         {
+           break;
+         }
+         case 32:
+         {
+           break;
+         }
+         default: break;
+       }
+      }
+    
+  // Blit picture
   
-  M_BMPDATA->m_image = gdk_imlib_create_image_from_data( 
-     data, (unsigned char*)NULL, M_BMPDATA->m_width, M_BMPDATA->m_height );
+  GdkGC *data_gc = gdk_gc_new( M_BMPDATA->m_pixmap );
   
-  delete[] data;
+  gdk_draw_image( M_BMPDATA->m_pixmap, data_gc, data_image, 0, 0, 0, 0, width, height );
   
-  gdk_image_destroy( image );
+  gdk_image_destroy( data_image );
+  gdk_gc_unref( data_gc );
   
-  Render();
+  // Blit mask
   
-#else
+  if (image.HasMask())
+  {
+    GdkGC *mask_gc = gdk_gc_new( M_BMPDATA->m_mask->m_bitmap );
   
-  wxFAIL_MSG( "wxBitmap::RecreateImage not implemented without GdkImlib" );
+    gdk_draw_image( M_BMPDATA->m_mask->m_bitmap, mask_gc, mask_image, 0, 0, 0, 0, width, height );
   
-#endif
+    gdk_image_destroy( mask_image );
+    gdk_gc_unref( mask_gc );
+  }
+   
 }
 
-void wxBitmap::Render(void)
+wxImage wxBitmap::ConvertToImage() const
 {
+  wxImage image;
+
   if (!Ok())
   {
     wxFAIL_MSG( "invalid bitmap" );
-    return;
+    return image;
   }
   
-#ifdef wxUSE_GDK_IMLIB
-
-  if (!M_BMPDATA->m_image) RecreateImage();
+  GdkImage *gdk_image = gdk_image_get( M_BMPDATA->m_pixmap, 0, 0, M_BMPDATA->m_width, M_BMPDATA->m_height );
   
-  if (M_BMPDATA->m_pixmap)
-  { 
-    gdk_imlib_free_pixmap( M_BMPDATA->m_pixmap );
-    M_BMPDATA->m_pixmap = (GdkPixmap*) NULL;
-  }
-  if (M_BMPDATA->m_mask)
-  {
-    delete M_BMPDATA->m_mask;
-    M_BMPDATA->m_mask = (wxMask*) NULL;
-  }
+  if (!gdk_image) return image;
   
-  gdk_imlib_render( M_BMPDATA->m_image, M_BMPDATA->m_image->rgb_width, M_BMPDATA->m_image->rgb_height );
-  M_BMPDATA->m_width = M_BMPDATA->m_image->rgb_width;
-  M_BMPDATA->m_height = M_BMPDATA->m_image->rgb_height;
-  M_BMPDATA->m_pixmap = gdk_imlib_move_image( M_BMPDATA->m_image );
+  image.Create( M_BMPDATA->m_width, M_BMPDATA->m_height );
+  char unsigned *data = image.GetData();
   
-  wxCHECK_RET( M_BMPDATA->m_pixmap != NULL, "pixmap rendering failed" ) 
+  int bpp = gdk_image->bpp;
+  GdkColormap *cmap = gtk_widget_get_default_colormap();
   
-  GdkBitmap *mask = gdk_imlib_move_mask( M_BMPDATA->m_image );
-  if (mask)
+  long pos = 0;
+  for (int j = 0; j < M_BMPDATA->m_height; j++)
   {
-    M_BMPDATA->m_mask = new wxMask();
-    M_BMPDATA->m_mask->m_bitmap = mask;
+    for (int i = 0; i < M_BMPDATA->m_width; i++)
+    {
+      int pixel = gdk_image_get_pixel( gdk_image, i, j );
+      if (bpp <= 8)
+      {
+        data[pos] = cmap->colors[pixel].red >> 8;
+        data[pos+1] = cmap->colors[pixel].green >> 8;
+        data[pos+2] = cmap->colors[pixel].blue >> 8;
+      } else if (bpp == 15)
+      {
+        data[pos] = (pixel >> 7) & 0xf8;
+        data[pos+1] = (pixel >> 3) & 0xf8;
+        data[pos+2] = (pixel << 3) & 0xf8;
+      } else if (bpp == 16)
+      {
+        data[pos] = (pixel >> 8) & 0xf8;
+        data[pos+1] = (pixel >> 3) & 0xfc;
+        data[pos+2] = (pixel << 3) & 0xf8;
+      } else
+      {
+        data[pos] = (pixel >> 16) & 0xff;
+        data[pos+1] = (pixel >> 8) & 0xff;
+        data[pos+2] = pixel & 0xff;
+      }
+      
+      pos += 3;
+    }
   }
   
-#else
+  gdk_image_destroy( gdk_image );
   
-  wxFAIL_MSG( "wxBitmap::Render not implemented without GdkImlib" );
-  
-#endif
+  return image;
 }
 
 
+
index 25968dbcd8a3c302aea3e8d1eaf1a5bf7aecbe17..df7d7f6a1ad29e4d6b38c5c4dbca37a2c4d87aa3 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        bmpbuttn.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index ae90ec472d5236f012aea3fa36e0b1f7f09a9b33..29131bbede719011e9481c9528e1a7c3b469edf1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        brush.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 034e229f1843b48a0f1902dab60c02806eb628b1..b0278860acb4959ba645b80659f272c5ffa82d29 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        button.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index c4aac9364a1b3d47d18149dddb181da0f0d8246a..385f9bc7c37bc581055eb729b3872a486ac7c203 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        checkbox.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index edcf64f3e96fbae595f4b3cd0e63d15ee8995a7d..f6e3925ea43709a978d078367c6b895916297164 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        choice.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index b7c2dc11769cb2ecbe33d9cc1c42db048b32200b..7e57df104f649c45de5a89753bcc4d6e3e850e38 100644 (file)
@@ -15,9 +15,7 @@
 
 #include "wx/gdicmn.h"
 
-#ifdef wxUSE_GDK_IMLIB
-#include "../gdk_imlib/gdk_imlib.h"
-#endif
+#include "gdk/gdkprivate.h"
 
 //-----------------------------------------------------------------------------
 // wxColour
@@ -186,19 +184,30 @@ void wxColour::CalcPixel( GdkColormap *cmap )
   if ((M_COLDATA->m_hasPixel) && (M_COLDATA->m_colormap == cmap)) return;
   M_COLDATA->FreeColour();
   
-#ifdef wxUSE_GDK_IMLIB
-
-  int r = M_COLDATA->m_color.red >> SHIFT;
-  int g = M_COLDATA->m_color.green >> SHIFT;
-  int b = M_COLDATA->m_color.blue >> SHIFT;
-  M_COLDATA->m_hasPixel = TRUE;
-  M_COLDATA->m_color.pixel = gdk_imlib_best_color_match( &r, &g, &b );
-
-#else
+  GdkColormapPrivate *private_colormap = (GdkColormapPrivate*) cmap;
+  if ((private_colormap->visual->type == GDK_VISUAL_GRAYSCALE) ||
+      (private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR))
+  {
+    GdkColor *colors = cmap->colors;
+    int max = 3 * (65536);
+    int index = -1;
 
-  M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
-  
-#endif
+    for (int i = 0; i < cmap->size; i++)
+    {
+      int rdiff = (M_COLDATA->m_color.red - colors[i].red);
+      int gdiff = (M_COLDATA->m_color.green - colors[i].green);
+      int bdiff = (M_COLDATA->m_color.blue - colors[i].blue);
+      int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
+      if (sum < max) { index = i; max = sum; }
+    }
+    
+    M_COLDATA->m_hasPixel = TRUE;
+    M_COLDATA->m_color.pixel = index;
+  }
+  else
+  {
+    M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
+  }
   
   M_COLDATA->m_colormap = cmap;
 }
index efe78a6f3fd71b09532178028072839355bfc3a0..59f2f9821e63630665c6ac0512a35786b7691e74 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        combobox.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 61bab59ecf0d26ea217725e7d3661ee0fa9a616b..658ebcd8c96e35313cb8e2349ee12c59f5a8677a 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        control.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 7195cfa0c6f5605b27e52bf0b4ce24348f598c1b..20a8d3c19ef310eb3497f2a5bec5fdf48519eb91 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        cursor.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 96bce38d00f59dfacfe5db58b63f6ff5bf46bfd1..815bdca347f64228f7b411753dd230f3b996d19f 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        data.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
+// Id:          $id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
index 13ffab2a442fe08dccea417da49ede0e24d8d486..3678494de46c238a4020b46ca8da26e6784ab89b 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        dc.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:    wxWindows licence
index 17cd0074333090febd5463b143a92abecc0e7db9..a724a4d51c60990c2bad7ee77e70163d99b94964 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dcclient.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling, Markus Holzem, Chris Breeze
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -138,8 +137,6 @@ void wxPaintDC::DrawLine( long x1, long y1, long x2, long y2 )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
     gdk_draw_line( m_window, m_penGC, 
@@ -151,8 +148,6 @@ void wxPaintDC::CrossHair( long x, long y )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() != wxTRANSPARENT)
   {
     int w = 0;
@@ -171,8 +166,6 @@ void wxPaintDC::DrawArc( long x1, long y1, long x2, long y2, double xc, double y
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx1 = XLOG2DEV(x1); 
   long yy1 = YLOG2DEV(y1);
   long xx2 = XLOG2DEV(x2); 
@@ -221,8 +214,6 @@ void wxPaintDC::DrawEllipticArc( long x, long y, long width, long height, double
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx = XLOG2DEV(x);    
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width); 
@@ -245,8 +236,6 @@ void wxPaintDC::DrawPoint( long x, long y )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() != wxTRANSPARENT)
     gdk_draw_point( m_window, m_penGC, XLOG2DEV(x), YLOG2DEV(y) );
 }
@@ -255,8 +244,6 @@ void wxPaintDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() == wxTRANSPARENT) return;
   
   for (int i = 0; i < n-1; i++)
@@ -273,8 +260,6 @@ void wxPaintDC::DrawLines( wxList *points, long xoffset, long yoffset )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_pen.GetStyle() == wxTRANSPARENT) return;
   
   wxNode *node = points->First();
@@ -295,8 +280,6 @@ void wxPaintDC::DrawPolygon( int n, wxPoint points[], long xoffset, long yoffset
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
    if (!n) return;    // Nothing to draw
    GdkPoint *gdkpoints = new GdkPoint[n+1];
    int i;
@@ -322,8 +305,6 @@ void wxPaintDC::DrawPolygon( wxList *lines, long xoffset, long yoffset, int WXUN
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
    int n = lines->Number();
    GdkPoint *gdkpoints = new GdkPoint[n];
    wxNode *node = lines->First();
@@ -356,8 +337,6 @@ void wxPaintDC::DrawRectangle( long x, long y, long width, long height )
 {
   if (!Ok()) return;
 
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx = XLOG2DEV(x);
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width);
@@ -381,8 +360,6 @@ void wxPaintDC::DrawRoundedRectangle( long x, long y, long width, long height, d
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (radius < 0.0) radius = - radius * ((width < height) ? width : height);
   
   long xx = XLOG2DEV(x);    
@@ -448,8 +425,6 @@ void wxPaintDC::DrawEllipse( long x, long y, long width, long height )
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   long xx = XLOG2DEV(x);    
   long yy = YLOG2DEV(y);
   long ww = m_signX * XLOG2DEVREL(width); 
@@ -477,8 +452,6 @@ void wxPaintDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
   
   if (!icon.Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   int xx = XLOG2DEV(x);
   int yy = YLOG2DEV(y);
   
@@ -506,8 +479,6 @@ bool wxPaintDC::Blit( long xdest, long ydest, long width, long height,
 {
   if (!Ok()) return FALSE;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (m_isMemDC)
   {
     wxMemoryDC* srcDC = (wxMemoryDC*)source;
@@ -547,8 +518,6 @@ void wxPaintDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(us
 {
   if (!Ok()) return;
 
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   GdkFont *font = m_font.GetInternalFont( m_scaleY );
 
   x = XLOG2DEV(x);
@@ -618,8 +587,6 @@ void wxPaintDC::Clear(void)
 {
   if (!Ok()) return;
   
-  if (m_isMemDC) ((wxMemoryDC*)this)->m_selected.DestroyImage();
-  
   if (!m_isMemDC)
   {
     gdk_window_clear( m_window );
index aa8ab7a2696159c8aa3f38a2ffb2a95433213c3b..f346200a81233a2829f05aae300c705411911f8c 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dcmemory.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/dcmemory.h"
 
-#ifdef wxUSE_GDK_IMLIB
-#include "../gdk_imlib/gdk_imlib.h"
-#endif
-
 //-----------------------------------------------------------------------------
 // wxMemoryDC
 //-----------------------------------------------------------------------------
@@ -28,22 +23,14 @@ wxMemoryDC::wxMemoryDC(void)
 {
   m_ok = FALSE;
   
-#ifdef wxUSE_GDK_IMLIB
-  m_cmap = gdk_imlib_get_colormap();
-#else
-  m_cmap = gdk_colormap_get_system();
-#endif
+  m_cmap = gtk_widget_get_default_colormap();
 }
 
 wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
 {
   m_ok = FALSE;
   
-#ifdef wxUSE_GDK_IMLIB
-  m_cmap = gdk_imlib_get_colormap();
-#else
-  m_cmap = gdk_colormap_get_system();
-#endif
+  m_cmap = gtk_widget_get_default_colormap();
 }
 
 wxMemoryDC::~wxMemoryDC(void)
index c3a930375157fc216faed5841c6d9d0f0ccf8d1c..cd47777fdbd8d5caf8d90305ac178f87be7ee608 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dcscreen.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 73ae00a02b40b5746350640e9e2f7ad115160987..9bbc5f9a289e56d6a2dddbb21778c8864c6cbdd5 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        dialog.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 458eb72641c80b987c70d1d48034dab000b9ff9a..4090bb15ec5685ff0a10a3e5a97925c74b71ad7a 100644 (file)
@@ -2,8 +2,9 @@
 // Name:        dnd.cpp
 // Purpose:     wxDropTarget class
 // Author:      Robert Roebling
-// Copyright:   Robert Roebling
-// Licence:     wxWindows license
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
+// Licence:    wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
index 021946bb57d21bf0eb135e77cd255b765fd856e3..dae464b19f4b246289f3fc4dc24fd40504be1465 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        filedlg.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index ef95c79be8d2a92c0335292ef56c1e2714b9469a..119b9cc83ce96797f5bfc731653a6a3265ab36a5 100644 (file)
@@ -2,8 +2,7 @@
 // Name:        font.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
+// Id:          $id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
index bead5e36e2218f77d8c0a375bb2d1e09fb62a612..fbb256de87b16597fbbb798dc1a141086ce93cb1 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        frame.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 8499339d67e761ed6c8f97458f783ca7c9dfd496..30688eda357ef1d929f6724ccf75c22714f333a7 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        gauge.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 0a3b30089d1cdf6f8ed11a5b29dcbc5bda5c23b0..f006c328a02d1c4d9aa6fd52dfd9ce332e13d3eb 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        notebook.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 4e36a67f1447dc978ce61c33a361ef179d54811b..89ecf05f6d2fdca9f67d59b672b5273be9691ee3 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        timer.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
index 3de7efc8bcfa316edc293ddea70bd1ecd45dd274..086ef60b6b34b614285bf896fca7a31a5e40970d 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        utils.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
 // Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
 // Licence:           wxWindows licence
index 3a999cdeffb87bd00c7f79f2c2d27b26a7f64e73..c4e8c421010071f1ed1a0d0411774504e360f238 100644 (file)
@@ -1,10 +1,9 @@
 /* ///////////////////////////////////////////////////////////////////////////
 // Name:        wx_gtk.h
-// Purpose:
+// Purpose:     native GTK+ widget for wxWindows
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////// */
 
index 1e6c3b6b9208c62452c874d27b8a4346a38a7dfa..eb9b9dcb84cdf03e0f19737bbdc3bd55a2d2b806 100644 (file)
@@ -2,9 +2,8 @@
 // Name:        window.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Id:          $id$
+// Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////