* it works !
authorCyril Deguet <asmax@videolan.org>
Mon, 14 Apr 2003 20:07:49 +0000 (20:07 +0000)
committerCyril Deguet <asmax@videolan.org>
Mon, 14 Apr 2003 20:07:49 +0000 (20:07 +0000)
modules/gui/skins/gtk2/gtk2_bitmap.cpp
modules/gui/skins/gtk2/gtk2_graphics.cpp
modules/gui/skins/gtk2/gtk2_graphics.h
modules/gui/skins/gtk2/gtk2_theme.cpp
modules/gui/skins/gtk2/gtk2_window.cpp
modules/gui/skins/gtk2/gtk2_window.h
modules/gui/skins/src/window.cpp

index 26ef785..7f47451 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2_bitmap.cpp: GTK2 implementation of the Bitmap class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2_bitmap.cpp,v 1.6 2003/04/14 17:56:45 karibu Exp $
+ * $Id: gtk2_bitmap.cpp,v 1.7 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@videolan.org>
  *
@@ -163,14 +163,11 @@ void GTK2Bitmap::DrawBitmap( int x, int y, int w, int h, int xRef, int yRef,
     // New method, not available in win95
     TransparentBlt( destDC, xRef, yRef, w, h, bmpDC, x, y, w, h, AlphaColor );
 */
-    GdkDrawable *destImg = ( (GTK2Graphics *)dest )->GetImageHandle();
-
-    GdkGC *gc = gdk_gc_new( destImg );
-    /*gdk_pixbuf_render_to_drawable( Bmp, destImg, gc, 0, 0, x, y, w, h,  
-            GDK_RGB_DITHER_NONE, 0, 0);*/
-fprintf(stderr, "draw %d %d %d %d\n", xRef, yRef, w, h);
-    gdk_pixbuf_render_to_drawable( Bmp, destImg, gc, 0, 0, xRef, yRef, w, h,
-            GDK_RGB_DITHER_NONE, 0, 0);
+    GdkDrawable *destImg = ( (GTK2Graphics *)dest )->GetImage();
+    GdkGC *destGC = ( (GTK2Graphics *)dest )->GetGC();
+
+    gdk_pixbuf_render_to_drawable( Bmp, destImg, destGC, x, y, xRef, yRef, 
+            w, h, GDK_RGB_DITHER_NONE, 0, 0);
 }
 //---------------------------------------------------------------------------
 bool GTK2Bitmap::Hit( int x, int y)
index 91aef55..86f6991 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2_graphics.cpp: GTK2 implementation of the Graphics and Region classes
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2_graphics.cpp,v 1.5 2003/04/13 20:07:34 asmax Exp $
+ * $Id: gtk2_graphics.cpp,v 1.6 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@videolan.org>
  *
@@ -33,6 +33,8 @@
 #include "os_window.h"
 #include "gtk2_graphics.h"
 
+#include <stdio.h>
+
 //---------------------------------------------------------------------------
 // GTK2 GRAPHICS
 //---------------------------------------------------------------------------
@@ -53,8 +55,18 @@ GTK2Graphics::GTK2Graphics( int w, int h, Window *from ) : Graphics( w, h )
     SelectObject( Image, HImage );
     DeleteObject( HImage );*/
     
-    Image = ( GdkDrawable* )( (GTK2Window *)from )->GetHandle();
-    Gc = gdk_gc_new( Image );
+    if( from != NULL )
+    {
+        GdkWindow *fromWnd = ( (GTK2Window *)from )->GetHandle();
+        Image = (GdkDrawable*) gdk_pixmap_new( fromWnd, w, h, -1 );
+        Gc = gdk_gc_new( ( GdkDrawable* )fromWnd );
+    }
+    else
+    {
+        Image = (GdkDrawable*) gdk_pixmap_new( NULL, w, h, 8 );
+        gdk_drawable_set_colormap( Image, gdk_colormap_get_system() );
+        Gc = gdk_gc_new( Image );
+    }
 }
 //---------------------------------------------------------------------------
 GTK2Graphics::~GTK2Graphics()
@@ -67,6 +79,9 @@ void GTK2Graphics::CopyFrom( int dx, int dy, int dw, int dh, Graphics *Src,
 {
 /*    BitBlt( Image, dx, dy, dw, dh, ( (GTK2Graphics *)Src )->GetImageHandle(),
         sx, sy, Flag );*/
+        fprintf(stderr, "%d %d %d %d %d %d\n", sx, sy, dx, dy, dw, dh);
+    gdk_draw_drawable( Image, Gc, (( GTK2Graphics* )Src )->GetImage(),
+            sx, sy, dx, dy, dw, dh );
 }
 
 //---------------------------------------------------------------------------
index 6a4e108..ba5da01 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2_graphics.h: GTK2 implementation of the Graphics and Region classes
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2_graphics.h,v 1.2 2003/04/13 17:46:22 asmax Exp $
+ * $Id: gtk2_graphics.h,v 1.3 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -58,7 +58,8 @@ class GTK2Graphics : public Graphics
         virtual void SetClipRegion( Region *rgn );
 
         // Specific GTK2 methods
-        GdkDrawable *GetImageHandle()    { return Image; };
+        GdkDrawable *GetImage() { return Image; };
+        GdkGC *GetGC()    { return Gc; };
 };
 //---------------------------------------------------------------------------
 class GTK2Region : public Region
index 1234e30..cf48fea 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2_theme.cpp: GTK2 implementation of the Theme class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2_theme.cpp,v 1.7 2003/04/14 18:05:35 asmax Exp $
+ * $Id: gtk2_theme.cpp,v 1.8 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@videolan.org>
  *
@@ -264,10 +264,10 @@ void GTK2Theme::OnLoadTheme()
     GdkWindowAttr attr;
     attr.title = "VLC Media Player";
     attr.event_mask = GDK_ALL_EVENTS_MASK;
-    attr.x = 100;
-    attr.y = 100;
-    attr.width = 400;
-    attr.height = 150;
+    attr.x = 0;
+    attr.y = 0;
+    attr.width = 0;
+    attr.height = 0;
     attr.window_type = GDK_WINDOW_TOPLEVEL;
     attr.wclass = GDK_INPUT_ONLY;
     attr.override_redirect = FALSE;
@@ -277,7 +277,7 @@ void GTK2Theme::OnLoadTheme()
     // Create the parent window
     ParentWindow = gdk_window_new( NULL, &attr, mask);
 
-    gdk_window_show( ParentWindow );
+//    gdk_window_show( ParentWindow );
 }
 //---------------------------------------------------------------------------
 void GTK2Theme::AddSystemMenu( string name, Event *event )
@@ -322,13 +322,13 @@ void GTK2Theme::AddWindow( string name, int x, int y, bool visible,
     attr.event_mask = GDK_ALL_EVENTS_MASK;
     attr.width = 0;
     attr.height = 0;
-    attr.window_type = GDK_WINDOW_CHILD;
+    attr.window_type = GDK_WINDOW_TOPLEVEL;
     attr.wclass = GDK_INPUT_OUTPUT;
     
     gint mask =0;
     
     // Create the window
-    GdkWindow *gwnd = gdk_window_new( ParentWindow, &attr, mask );
+    GdkWindow *gwnd = gdk_window_new( NULL, &attr, mask );
     if( !gwnd )
     {
         msg_Err( p_intf, "CreateWindow failed" );
index 984bf37..828a0a0 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2_window.cpp: GTK2 implementation of the Window class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2_window.cpp,v 1.6 2003/04/14 17:03:42 asmax Exp $
+ * $Id: gtk2_window.cpp,v 1.7 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@videolan.org>
  *
@@ -70,6 +70,7 @@ GTK2Window::GTK2Window( intf_thread_t *p_intf, GdkWindow *gwnd, int x, int y,
 {
     // Set handles
     gWnd           = gwnd;
+    gc = gdk_gc_new( gwnd );
 /*
     // Set position parameters
     CursorPos    = new POINT;
@@ -234,7 +235,12 @@ void GTK2Window::RefreshFromImage( int x, int y, int w, int h )
 
     // Release window device context
     ReleaseDC( hWnd, DC );
+    
 */
+    
+ fprintf(stderr, "window %d %d %d %d\n", x, y, w, h);
+    gdk_draw_drawable( gWnd, gc, (( GTK2Graphics* )Image )->GetImage(),
+            x, y, x, y, w, h );
 }
 //---------------------------------------------------------------------------
 void GTK2Window::WindowManualMove()
@@ -271,7 +277,6 @@ void GTK2Window::Move( int left, int top )
 //---------------------------------------------------------------------------
 void GTK2Window::Size( int width, int height )
 {
-fprintf(stderr, "size %d %d\n", width, height);
     Width  = width;
     Height = height;
     gdk_window_resize( gWnd, width, height );
index 7e93710..3018f90 100644 (file)
@@ -2,7 +2,7 @@
  * gtk2_window.h: GTK2 implementation of the Window class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: gtk2_window.h,v 1.2 2003/04/13 17:46:22 asmax Exp $
+ * $Id: gtk2_window.h,v 1.3 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@videolan.org>
  *
@@ -39,6 +39,7 @@ class GTK2Window : public Window
     private:
         // General parameters
         GdkWindow *gWnd;
+        GdkGC *gc;
 //        LPPOINT CursorPos;
 //        LPPOINT WindowPos;
 
@@ -73,7 +74,7 @@ class GTK2Window : public Window
         virtual void Size( int width, int height );
 
         // Specific gtk2 methods
-        GdkWindow *GetHandle() {return gWnd; };
+        GdkWindow *GetHandle() { return gWnd; };
 
         // Tooltip texts
         virtual void ChangeToolTipText( string text );
index 6d7e56f..d267d0b 100644 (file)
@@ -2,7 +2,7 @@
  * window.cpp: Window class
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: window.cpp,v 1.7 2003/04/13 20:07:34 asmax Exp $
+ * $Id: window.cpp,v 1.8 2003/04/14 20:07:49 asmax Exp $
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *          Emmanuel Puig    <karibu@via.ecp.fr>
@@ -409,6 +409,8 @@ void Window::Init()
     // Refresh Image buffer
     RefreshImage( 0, 0, Width, Height );
 
+fprintf(stderr, "kludge in window.cpp!\n");
+    RefreshFromImage( 0, 0, Width, Height );
     // Move window as it hasn't been moved yet
     Move( Left, Top );
 }