1998-05-20 14:01:55 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: dcscreen.cpp
|
|
|
|
// Purpose:
|
|
|
|
// Author: Robert Roebling
|
|
|
|
// Created: 01/02/97
|
|
|
|
// Id:
|
|
|
|
// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma implementation "dcscreen.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "wx/dcscreen.h"
|
|
|
|
#include "wx/window.h"
|
|
|
|
#include "gdk/gdkx.h"
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// wxScreenDC
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC_CLASS(wxScreenDC,wxPaintDC)
|
|
|
|
|
|
|
|
wxScreenDC::wxScreenDC(void)
|
|
|
|
{
|
|
|
|
m_ok = FALSE;
|
1998-08-23 03:22:56 +00:00
|
|
|
m_window = (GdkWindow *) NULL;
|
1998-05-20 14:01:55 +00:00
|
|
|
m_cmap = gdk_colormap_get_system();
|
|
|
|
|
|
|
|
m_window = GDK_ROOT_PARENT();
|
|
|
|
|
|
|
|
SetUpDC();
|
|
|
|
|
|
|
|
gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS );
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
1998-05-20 14:01:55 +00:00
|
|
|
|
|
|
|
wxScreenDC::~wxScreenDC(void)
|
|
|
|
{
|
|
|
|
EndDrawingOnTop();
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
1998-05-20 14:01:55 +00:00
|
|
|
|
|
|
|
bool wxScreenDC::StartDrawingOnTop( wxWindow *WXUNUSED(window) )
|
|
|
|
{
|
|
|
|
return TRUE;
|
|
|
|
/*
|
|
|
|
if (!window)
|
|
|
|
{
|
|
|
|
StartDrawingOnTop();
|
|
|
|
return;
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
1998-05-20 14:01:55 +00:00
|
|
|
wxRectangle rect;
|
|
|
|
rect.x = 0;
|
|
|
|
rect.y = 0;
|
|
|
|
window->GetPosition( &rect.x, &rect.y );
|
|
|
|
rect.width = 0;
|
|
|
|
rect.height = 0;
|
|
|
|
window->GetSize( &rect.width, &rect.height );
|
|
|
|
window->ClientToScreen( &rect.x, &rect.y );
|
|
|
|
StartDrawingOnTop( &rect );
|
|
|
|
return TRUE;
|
|
|
|
*/
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
1998-05-20 14:01:55 +00:00
|
|
|
|
|
|
|
bool wxScreenDC::StartDrawingOnTop( wxRectangle *WXUNUSED(rect) )
|
|
|
|
{
|
|
|
|
return TRUE;
|
|
|
|
/*
|
|
|
|
int x = 0;
|
|
|
|
int y = 0;
|
|
|
|
int width = gdk_screen_width();
|
|
|
|
int height = gdk_screen_height();
|
|
|
|
if (rect)
|
|
|
|
{
|
|
|
|
x = rect->x;
|
|
|
|
y = rect->y;
|
|
|
|
width = rect->width;
|
|
|
|
height = rect->height;
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
1998-05-20 14:01:55 +00:00
|
|
|
|
|
|
|
GTK cannot set transparent backgrounds. :-(
|
|
|
|
|
|
|
|
GdkWindowAttr attr;
|
|
|
|
attr.x = x;
|
|
|
|
attr.y = y;
|
|
|
|
attr.width = width;
|
|
|
|
attr.height = height;
|
|
|
|
attr.override_redirect = TRUE;
|
|
|
|
attr.wclass = GDK_INPUT_OUTPUT;
|
|
|
|
attr.event_mask = 0;
|
|
|
|
attr.window_type = GDK_WINDOW_TEMP;
|
|
|
|
m_window = gdk_window_new( NULL, &attr, GDK_WA_NOREDIR | GDK_WA_X | GDK_WA_Y );
|
|
|
|
|
|
|
|
gdk_window_show( m_window );
|
|
|
|
|
|
|
|
m_window = GDK_ROOT_PARENT();
|
|
|
|
|
|
|
|
SetUpDC();
|
|
|
|
|
|
|
|
gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS );
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
*/
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
1998-05-20 14:01:55 +00:00
|
|
|
|
|
|
|
bool wxScreenDC::EndDrawingOnTop(void)
|
|
|
|
{
|
|
|
|
return TRUE;
|
|
|
|
/*
|
|
|
|
if (m_window) gdk_window_destroy( m_window );
|
|
|
|
m_window = NULL;
|
|
|
|
m_isOk = FALSE;
|
|
|
|
return TRUE;
|
|
|
|
*/
|
1998-08-16 19:39:29 +00:00
|
|
|
}
|
|
|
|
|