Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
2396f46b
Commit
2396f46b
authored
Apr 28, 2003
by
Cyril Deguet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* skeleton of X11 skins
parent
a796b89d
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
2352 additions
and
0 deletions
+2352
-0
modules/gui/skins/x11/x11_api.cpp
modules/gui/skins/x11/x11_api.cpp
+168
-0
modules/gui/skins/x11/x11_bitmap.cpp
modules/gui/skins/x11/x11_bitmap.cpp
+195
-0
modules/gui/skins/x11/x11_bitmap.h
modules/gui/skins/x11/x11_bitmap.h
+67
-0
modules/gui/skins/x11/x11_dragdrop.cpp
modules/gui/skins/x11/x11_dragdrop.cpp
+117
-0
modules/gui/skins/x11/x11_dragdrop.h
modules/gui/skins/x11/x11_dragdrop.h
+45
-0
modules/gui/skins/x11/x11_event.cpp
modules/gui/skins/x11/x11_event.cpp
+138
-0
modules/gui/skins/x11/x11_event.h
modules/gui/skins/x11/x11_event.h
+69
-0
modules/gui/skins/x11/x11_font.cpp
modules/gui/skins/x11/x11_font.cpp
+150
-0
modules/gui/skins/x11/x11_font.h
modules/gui/skins/x11/x11_font.h
+76
-0
modules/gui/skins/x11/x11_graphics.cpp
modules/gui/skins/x11/x11_graphics.cpp
+186
-0
modules/gui/skins/x11/x11_graphics.h
modules/gui/skins/x11/x11_graphics.h
+90
-0
modules/gui/skins/x11/x11_run.cpp
modules/gui/skins/x11/x11_run.cpp
+277
-0
modules/gui/skins/x11/x11_theme.cpp
modules/gui/skins/x11/x11_theme.cpp
+216
-0
modules/gui/skins/x11/x11_theme.h
modules/gui/skins/x11/x11_theme.h
+82
-0
modules/gui/skins/x11/x11_window.cpp
modules/gui/skins/x11/x11_window.cpp
+382
-0
modules/gui/skins/x11/x11_window.h
modules/gui/skins/x11/x11_window.h
+94
-0
No files found.
modules/gui/skins/x11/x11_api.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_api.cpp: Various x11-specific functions
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_api.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- SKIN ------------------------------------------------------------------
#include "../src/window.h"
#include "../os_window.h"
#include "../os_api.h"
#include "../src/event.h" // for MAX_PARAM_SIZE
#include <stdio.h>
//---------------------------------------------------------------------------
// Event API
//---------------------------------------------------------------------------
void
OSAPI_SendMessage
(
SkinWindow
*
win
,
unsigned
int
message
,
unsigned
int
param1
,
long
param2
)
{
/* if( win == NULL )
SendMessage( NULL, message, param1, param2 );
else
SendMessage( ( (Win32Window *)win )->GetHandle(), message, param1,
param2 );*/
}
//---------------------------------------------------------------------------
void
OSAPI_PostMessage
(
SkinWindow
*
win
,
unsigned
int
message
,
unsigned
int
param1
,
long
param2
)
{
/* GdkEventClient *event = new GdkEventClient;
event->type = GDK_CLIENT_EVENT;
if( win == NULL )
event->window = NULL;
else
event->window = (( Window )win)->GetHandle();
event->send_event = 0;
event->message_type = NULL;
event->data_format = 32;
event->data.l[0] = message;
event->data.l[1] = param1;
event->data.l[2] = param2;
gdk_event_put( (GdkEvent *)event );
delete event;*/
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Graphic API
//---------------------------------------------------------------------------
int
OSAPI_GetNonTransparentColor
(
int
c
)
{
/* // Get desktop device context
HDC DeskDC = GetWindowDC( GetDesktopWindow() );
// If color is black or color is same as black wether pixel color depth
if( c == 0 || SetPixel( DeskDC, 0, 0, c ) == 0 )
{
if( GetDeviceCaps( DeskDC, BITSPIXEL ) < 24 )
c = RGB(8, 0, 0);
else
c = RGB(1, 0, 0);
}
ReleaseDC( GetDesktopWindow(), DeskDC );
return c;*/
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// General
//---------------------------------------------------------------------------
int
OSAPI_GetTime
()
{
/* GTimeVal time;
g_get_current_time( &time );
return ( time.tv_sec * 1000 + time.tv_usec / 1000 );*/
}
//---------------------------------------------------------------------------
void
OSAPI_GetScreenSize
(
int
&
w
,
int
&
h
)
{
/* w = GetSystemMetrics(SM_CXSCREEN);
h = GetSystemMetrics(SM_CYSCREEN);*/
}
//---------------------------------------------------------------------------
void
OSAPI_GetMousePos
(
int
&
x
,
int
&
y
)
{
/* gdk_window_get_pointer( gdk_get_default_root_window(), &x, &y, NULL );*/
}
//---------------------------------------------------------------------------
string
OSAPI_GetWindowTitle
(
SkinWindow
*
win
)
{
/* return ( (GTK2Window *)win )->GetName();*/
}
//---------------------------------------------------------------------------
bool
OSAPI_RmDir
(
string
path
)
{
/* WIN32_FIND_DATA find;
string File;
string FindFiles = path + "\\*.*";
HANDLE handle = FindFirstFile( (char *)FindFiles.c_str(), &find );
while( handle != INVALID_HANDLE_VALUE )
{
// If file is neither "." nor ".."
if( strcmp( find.cFileName, "." ) && strcmp( find.cFileName, ".." ) )
{
// Set file name
File = path + "\\" + (string)find.cFileName;
// If file is a directory, delete it recursively
if( find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
OSAPI_RmDir( File );
}
// Else, it is a file so simply delete it
else
{
DeleteFile( (char *)File.c_str() );
}
}
// If no more file in directory, exit while
if( !FindNextFile( handle, &find ) )
break;
}
// Now directory is empty so can be removed
FindClose( handle );
RemoveDirectory( (char *)path.c_str() );
return true;*/
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_bitmap.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_bitmap.cpp: X11 implementation of the Bitmap class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_bitmap.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
* Emmanuel Puig <karibu@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
#include <X11/Xutil.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- SKIN ------------------------------------------------------------------
#include "../os_api.h"
#include "../src/graphics.h"
#include "x11_graphics.h"
#include "../src/bitmap.h"
#include "x11_bitmap.h"
#include "../src/theme.h"
#include "../os_theme.h"
#include "../src/skin_common.h"
//---------------------------------------------------------------------------
// X11Bitmap
//---------------------------------------------------------------------------
X11Bitmap
::
X11Bitmap
(
intf_thread_t
*
p_intf
,
string
FileName
,
int
AColor
)
:
Bitmap
(
p_intf
,
FileName
,
AColor
)
{
// Find the display
display
=
p_intf
->
p_sys
->
display
;
Window
root
=
DefaultRootWindow
(
display
);
AlphaColor
=
AColor
;
// Load the bitmap image
int
hotspotX
,
hotspotY
;
int
rc
=
XReadBitmapFile
(
display
,
root
,
FileName
.
c_str
(),
(
unsigned
int
*
)
&
Width
,
(
unsigned
int
*
)
&
Height
,
&
Bmp
,
&
hotspotX
,
&
hotspotY
);
if
(
rc
!=
BitmapSuccess
)
{
if
(
FileName
!=
""
)
msg_Warn
(
p_intf
,
"Couldn't load bitmap: %s"
,
FileName
.
c_str
()
);
Width
=
0
;
Height
=
0
;
}
/* else
{
Width = gdk_pixbuf_get_width( Bmp );
Height = gdk_pixbuf_get_height( Bmp );
if( AColor != 0 )
{
// Change black pixels to another color to avoid transparency
int rowstride = gdk_pixbuf_get_rowstride( Bmp );
guchar *pixel = gdk_pixbuf_get_pixels( Bmp );
int pix_size = ( gdk_pixbuf_get_has_alpha( Bmp ) ? 4 : 3 );
for( int y = 0; y < Height; y++ )
{
for( int x = 0; x < Width; x++ )
{
guint32 r = pixel[0];
guint32 g = pixel[1]<<8;
guint32 b = pixel[2]<<16;
if( r+g+b == 0 )
{
pixel[2] = 10; // slight blue
}
pixel += pix_size;
}
}
}
Bmp = gdk_pixbuf_add_alpha( Bmp, TRUE, AColor & 0xff, (AColor>>8) & 0xff,
(AColor>>16) & 0xff );
}*/
}
//---------------------------------------------------------------------------
X11Bitmap
::
X11Bitmap
(
intf_thread_t
*
p_intf
,
Graphics
*
from
,
int
x
,
int
y
,
int
w
,
int
h
,
int
AColor
)
:
Bitmap
(
p_intf
,
from
,
x
,
y
,
w
,
h
,
AColor
)
{
/* Width = w;
Height = h;
AlphaColor = AColor;
HBITMAP HBmp;
HDC fromDC = ( (X11Graphics *)from )->GetImageHandle();
// Create image
bmpDC = CreateCompatibleDC( fromDC );
HBmp = CreateCompatibleBitmap( fromDC, Width, Height );
SelectObject( bmpDC, HBmp );
DeleteObject( HBmp );
BitBlt( bmpDC, 0, 0, Width, Height, fromDC, x, y, SRCCOPY );*/
}
//---------------------------------------------------------------------------
X11Bitmap
::
X11Bitmap
(
intf_thread_t
*
p_intf
,
Bitmap
*
c
)
:
Bitmap
(
p_intf
,
c
)
{
/* HBITMAP HBuf;
// Copy attibutes
c->GetSize( Width, Height );
AlphaColor = c->GetAlphaColor();
// Copy bmpDC
bmpDC = CreateCompatibleDC( NULL );
HBuf = CreateCompatibleBitmap( bmpDC, Width, Height );
SelectObject( bmpDC, HBuf );
BitBlt( bmpDC, 0, 0, Width, Height, ( (X11Bitmap *)c )->GetBmpDC(),
0, 0, SRCCOPY );
DeleteObject( HBuf );*/
}
//---------------------------------------------------------------------------
X11Bitmap
::~
X11Bitmap
()
{
XFreePixmap
(
display
,
Bmp
);
}
//---------------------------------------------------------------------------
void
X11Bitmap
::
DrawBitmap
(
int
x
,
int
y
,
int
w
,
int
h
,
int
xRef
,
int
yRef
,
Graphics
*
dest
)
{
if
(
Bmp
)
{
/* GdkDrawable *destImg = ( (X11Graphics *)dest )->GetImage();
GdkGC *destGC = ( (X11Graphics *)dest )->GetGC();
gdk_pixbuf_render_to_drawable( Bmp, destImg, destGC, x, y, xRef, yRef,
w, h, GDK_RGB_DITHER_NORMAL, 0, 0);*/
}
}
//---------------------------------------------------------------------------
bool
X11Bitmap
::
Hit
(
int
x
,
int
y
)
{
// unsigned int c = (unsigned int)GetBmpPixel( x, y );
/* if( c == -1 || c == AlphaColor )
return false;
else
return true;*/
}
//---------------------------------------------------------------------------
int
X11Bitmap
::
GetBmpPixel
(
int
x
,
int
y
)
{
if
(
!
Bmp
||
x
<
0
||
x
>=
Width
||
y
<
0
||
y
>=
Height
)
return
-
1
;
/* guchar *pixels;
int rowstride, offset;
gboolean has_alpha;
rowstride = gdk_pixbuf_get_rowstride( Bmp );
pixels = gdk_pixbuf_get_pixels( Bmp );
has_alpha = gdk_pixbuf_get_has_alpha( Bmp );
offset = y * rowstride + ( x * (has_alpha ? 4 : 3) );
int r = pixels [offset];
int g = pixels [offset + 1] << 8;
int b = pixels [offset + 2] << 16;
return r + g + b;*/
}
//---------------------------------------------------------------------------
void
X11Bitmap
::
SetBmpPixel
(
int
x
,
int
y
,
int
color
)
{
// SetPixelV( bmpDC, x, y, color );
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_bitmap.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_bitmap.h: X11 implementation of the Bitmap class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_bitmap.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_X11_BITMAP
#define VLC_X11_BITMAP
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- GENERAL ---------------------------------------------------------------
#include <string>
using
namespace
std
;
//---------------------------------------------------------------------------
struct
intf_thread_t
;
class
Bitmap
;
class
Graphics
;
//---------------------------------------------------------------------------
class
X11Bitmap
:
public
Bitmap
{
private:
Display
*
display
;
Pixmap
Bmp
;
public:
// Constructors
X11Bitmap
(
intf_thread_t
*
p_intf
,
string
FileName
,
int
AColor
);
X11Bitmap
(
intf_thread_t
*
p_intf
,
Graphics
*
from
,
int
x
,
int
y
,
int
w
,
int
h
,
int
AColor
);
X11Bitmap
(
intf_thread_t
*
p_intf
,
Bitmap
*
c
);
// Destructor
virtual
~
X11Bitmap
();
virtual
void
DrawBitmap
(
int
x
,
int
y
,
int
w
,
int
h
,
int
xRef
,
int
yRef
,
Graphics
*
dest
);
virtual
bool
Hit
(
int
x
,
int
y
);
virtual
int
GetBmpPixel
(
int
x
,
int
y
);
virtual
void
SetBmpPixel
(
int
x
,
int
y
,
int
color
);
};
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_dragdrop.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_dragdrop.cpp: X11 implementation of the drag & drop
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_dragdrop.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- SKIN ------------------------------------------------------------------
#include "../src/event.h"
#include "../os_api.h"
#include "x11_dragdrop.h"
//---------------------------------------------------------------------------
X11DropObject
::
X11DropObject
(
intf_thread_t
*
_p_intf
)
{
p_intf
=
_p_intf
;
}
//---------------------------------------------------------------------------
X11DropObject
::~
X11DropObject
()
{
}
//---------------------------------------------------------------------------
#if 0
void X11DropObject::HandleDropStart( GdkDragContext *context )
{
/* GdkAtom atom = gdk_drag_get_selection( context );
guchar *buffer;
GdkAtom prop_type;
gint prop_format;
// Get the owner of the selection
GdkWindow *owner = gdk_selection_owner_get( atom );
// Find the possible targets for the selection
string target = "";
gdk_selection_convert( owner, atom, gdk_atom_intern("TARGETS", FALSE),
OSAPI_GetTime() );
int len = gdk_selection_property_get( owner, &buffer, &prop_type,
&prop_format );
for( int i = 0; i < len / sizeof(GdkAtom); i++ )
{
GdkAtom atom = ( (GdkAtom*)buffer )[i];
gchar *name = gdk_atom_name( atom );
if( name )
{
string curTarget = name;
if( (curTarget == "text/plain" || curTarget == "STRING") )
{
target = curTarget;
break;
}
}
}
if( target == "" )
{
msg_Warn( p_intf, "Drag&Drop: target not found\n" );
}
else
{
gdk_selection_convert( owner, atom, gdk_atom_intern(target.c_str(),
FALSE), OSAPI_GetTime() );
len = gdk_selection_property_get( owner, &buffer, &prop_type,
&prop_format);
OSAPI_PostMessage( NULL, VLC_DROP, (unsigned int)buffer, 0 );
}
*/
/* // Get number of files that are dropped into vlc
int NbFiles = DragQueryFile( (HDROP)HDrop, 0xFFFFFFFF, NULL, 0 );
// For each dropped files
for( int i = 0; i < NbFiles; i++ )
{
// Get the name of the file
int NameLength = DragQueryFile( (HDROP)HDrop, i, NULL, 0 ) + 1;
char *FileName = new char[NameLength];
DragQueryFile( (HDROP)HDrop, i, FileName, NameLength );
// The pointer must not be deleted here because it will be deleted
// in the VLC specific messages processing function
PostMessage( NULL, VLC_DROP, (WPARAM)FileName, 0 );
}
DragFinish( (HDROP)HDrop );
*/
// gdk_drop_finish( context, TRUE,OSAPI_GetTime() );
}
#endif
#endif
modules/gui/skins/x11/x11_dragdrop.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_dragdrop.h: X11 implementation of the drag & drop
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_dragdrop.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_SKIN_X11_DRAGDROP
#define VLC_SKIN_X11_DRAGDROP
//--- X11 -----------------------------------------------------------------
#include <X11/Xlib.h>
//---------------------------------------------------------------------------
class
X11DropObject
{
private:
intf_thread_t
*
p_intf
;
public:
X11DropObject
(
intf_thread_t
*
_p_intf
);
virtual
~
X11DropObject
();
// void HandleDropStart( GdkDragContext *context );
};
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_event.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_event.cpp: x11 implementation of the Event class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_event.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
* Emmanuel Puig <karibu@via.ecp.fr>
* Olivier Teulire <ipkiss@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- SKIN ------------------------------------------------------------------
#include "../os_api.h"
#include "../src/event.h"
#include "../os_event.h"
#include "../src/window.h"
#include "../os_window.h"
#include "../src/theme.h"
#include "../os_theme.h"
#include "../src/skin_common.h"
//---------------------------------------------------------------------------
// VLC Event
//---------------------------------------------------------------------------
X11Event
::
X11Event
(
intf_thread_t
*
p_intf
,
string
Desc
,
string
shortcut
)
:
Event
(
p_intf
,
Desc
,
shortcut
)
{
Wnd
=
NULL
;
}
//---------------------------------------------------------------------------
X11Event
::
X11Event
(
intf_thread_t
*
p_intf
,
Window
wnd
,
unsigned
int
msg
,
unsigned
int
par1
,
long
par2
)
:
Event
(
p_intf
,
msg
,
par1
,
par2
)
{
Wnd
=
wnd
;
}
//---------------------------------------------------------------------------
X11Event
::
X11Event
(
intf_thread_t
*
p_intf
,
SkinWindow
*
win
,
unsigned
int
msg
,
unsigned
int
par1
,
long
par2
)
:
Event
(
p_intf
,
msg
,
par1
,
par2
)
{
// gWnd = ( (X11Window *)win )->GetHandle();
}
//---------------------------------------------------------------------------
X11Event
::~
X11Event
()
{
}
//---------------------------------------------------------------------------
bool
X11Event
::
SendEvent
()
{
/* if( Message != VLC_NOTHING )
{
// Find window matching with gwnd
list<SkinWindow *>::const_iterator win;
for( win = p_intf->p_sys->p_theme->WindowList.begin();
win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
{
// If it is the correct window
if( gWnd == ( (X11Window *)(*win) )->GetHandle() )
{
OSAPI_PostMessage( *win, Message, Param1, Param2 );
PostSynchroMessage();
return true;
}
}
OSAPI_PostMessage( NULL, Message, Param1, Param2 );
return true;
}
*/
return
false
;
}
//---------------------------------------------------------------------------
bool
X11Event
::
IsEqual
(
Event
*
evt
)
{
/* X11Event *GTKEvt = (X11Event *)evt;
return( GTKEvt->GetWindow() == gWnd && GTKEvt->GetMessage() == Message &&
GTKEvt->GetParam1() == Param1 && GTKEvt->GetParam2() == Param2 );*/
}
//---------------------------------------------------------------------------
void
X11Event
::
CreateOSEvent
(
string
para1
,
string
para2
,
string
para3
)
{
// Find Parameters
/* switch( Message )
{
case WINDOW_MOVE:
gWnd = GetWindowFromName( para1 );
break;
case WINDOW_CLOSE:
gWnd = GetWindowFromName( para1 );
break;
case WINDOW_OPEN:
gWnd = GetWindowFromName( para1 );
break;
}*/
}
//---------------------------------------------------------------------------
Window
X11Event
::
GetWindowFromName
(
string
name
)
{
/* X11Window *win = (X11Window *)
p_intf->p_sys->p_theme->GetWindow( name );
if( win == NULL )
{
return NULL;
}
else
{
return win->GetHandle();
}*/
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_event.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_event.h: X11 implementation of the Event class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_event.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_SKIN_X11_EVENT
#define VLC_SKIN_X11_EVENT
//--- GENERAL ---------------------------------------------------------------
#include <string>
using
namespace
std
;
//--- X11 ------------------------------------------------------------------
#include <X11/Xlib.h>
//---------------------------------------------------------------------------
struct
intf_thread_t
;
class
SkinWindow
;
//---------------------------------------------------------------------------
class
X11Event
:
Event
{
private:
Window
GetWindowFromName
(
string
name
);
Window
Wnd
;
public:
// Constructor
X11Event
(
intf_thread_t
*
p_intf
,
string
Desc
,
string
shortcut
);
X11Event
(
intf_thread_t
*
p_intf
,
Window
wnd
,
unsigned
int
msg
,
unsigned
int
par1
,
long
par2
);
X11Event
(
intf_thread_t
*
p_intf
,
SkinWindow
*
win
,
unsigned
int
msg
,
unsigned
int
par1
,
long
par2
);
// Destructor
virtual
~
X11Event
();
// Event sending
virtual
bool
SendEvent
();
// General operations on events
virtual
void
CreateOSEvent
(
string
para1
,
string
para2
,
string
para3
);
virtual
bool
IsEqual
(
Event
*
evt
);
// Getters
Window
GetWindow
()
{
return
Wnd
;
}
};
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_font.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_font.cpp: X11 implementation of the Font class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_font.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
* Emmanuel Puig <karibu@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -----------------------------------------------------------------
#include <X11/Xlib.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- SKIN ------------------------------------------------------------------
#include "../src/graphics.h"
#include "../os_graphics.h"
#include "../src/font.h"
#include "../os_font.h"
//---------------------------------------------------------------------------
// Font object
//---------------------------------------------------------------------------
X11Font
::
X11Font
(
intf_thread_t
*
_p_intf
,
string
fontname
,
int
size
,
int
color
,
int
weight
,
bool
italic
,
bool
underline
)
:
SkinFont
(
_p_intf
,
fontname
,
size
,
color
,
weight
,
italic
,
underline
)
{
/* Context = gdk_pango_context_get();
Layout = pango_layout_new( Context );
// Text properties setting
FontDesc = pango_font_description_new();
pango_font_description_set_family( FontDesc, fontname.c_str() );
pango_font_description_set_size( FontDesc, size * PANGO_SCALE );
if( italic )
{
pango_font_description_set_style( FontDesc, PANGO_STYLE_ITALIC );
}
else
{
pango_font_description_set_style( FontDesc, PANGO_STYLE_NORMAL );
}
pango_font_description_set_weight( FontDesc, (PangoWeight)weight );
//pango_context_set_font_description( Context, FontDesc );
pango_layout_set_font_description( Layout, FontDesc );
// Set attributes
PangoAttrList *attrs = pango_attr_list_new();
// FIXME: doesn't work
if( underline )
{
pango_attr_list_insert( attrs,
pango_attr_underline_new( PANGO_UNDERLINE_SINGLE ) );
}
pango_layout_set_attributes( Layout, attrs );*/
}
//---------------------------------------------------------------------------
X11Font
::~
X11Font
()
{
}
//---------------------------------------------------------------------------
void
X11Font
::
AssignFont
(
Graphics
*
dest
)
{
}
//---------------------------------------------------------------------------
void
X11Font
::
GetSize
(
string
text
,
int
&
w
,
int
&
h
)
{
/* pango_layout_set_text( Layout, text.c_str(), text.length() );
pango_layout_get_pixel_size( Layout, &w, &h );*/
}
//---------------------------------------------------------------------------
void
X11Font
::
GenericPrint
(
Graphics
*
dest
,
string
text
,
int
x
,
int
y
,
int
w
,
int
h
,
int
align
,
int
color
)
{
/* // Set text
pango_layout_set_text( Layout, text.c_str(), -1 );
// Set size
pango_layout_set_width( Layout, -1 );
int real_w, real_h;
// Create buffer image
Graphics* cov = (Graphics *)new OSGraphics( w, h );
cov->CopyFrom( 0, 0, w, h, dest, x, y, SRC_COPY );
// Get handles
GdkDrawable *drawable = ( (X11Graphics *)cov )->GetImage();
GdkGC *gc = ( (X11Graphics *)cov )->GetGC();
// Set width of text
pango_layout_set_width( Layout, w * PANGO_SCALE );
// Set attributes
pango_layout_set_alignment( Layout, (PangoAlignment)align );
// Avoid transrency for black text
if( color == 0 ) color = 10;
gdk_rgb_gc_set_foreground( gc, color );
// Render text on buffer
gdk_draw_layout( drawable, gc, 0, 0, Layout );
// Copy buffer on dest graphics
dest->CopyFrom( x, y, w, h, cov, 0, 0, SRC_COPY );
// Free memory
delete (OSGraphics *)cov;*/
}
//---------------------------------------------------------------------------
void
X11Font
::
Print
(
Graphics
*
dest
,
string
text
,
int
x
,
int
y
,
int
w
,
int
h
,
int
align
)
{
GenericPrint
(
dest
,
text
,
x
,
y
,
w
,
h
,
align
,
Color
);
}
//---------------------------------------------------------------------------
void
X11Font
::
PrintColor
(
Graphics
*
dest
,
string
text
,
int
x
,
int
y
,
int
w
,
int
h
,
int
align
,
int
color
)
{
GenericPrint
(
dest
,
text
,
x
,
y
,
w
,
h
,
align
,
color
);
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_font.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_font.h: X11 implementation of the Font class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_font.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_SKIN_X11_FONT
#define VLC_SKIN_X11_FONT
//--- GENERAL ---------------------------------------------------------------
#include <string>
using
namespace
std
;
//--- X11 -----------------------------------------------------------------
#include <X11/Xlib.h>
//---------------------------------------------------------------------------
struct
intf_thread_t
;
class
Graphics
;
//---------------------------------------------------------------------------
class
X11Font
:
SkinFont
{
private:
/* PangoContext *Context;
PangoLayout *Layout;
PangoFontDescription *FontDesc;*/
// Assign font to Device Context
virtual
void
AssignFont
(
Graphics
*
dest
);
// Helper function
virtual
void
GenericPrint
(
Graphics
*
dest
,
string
text
,
int
x
,
int
y
,
int
w
,
int
h
,
int
align
,
int
color
);
public:
// Constructor
X11Font
(
intf_thread_t
*
_p_intf
,
string
fontname
,
int
size
,
int
color
,
int
weight
,
bool
italic
,
bool
underline
);
// Destructor
virtual
~
X11Font
();
// Get size of text
virtual
void
GetSize
(
string
text
,
int
&
w
,
int
&
h
);
// Draw text with boundaries
virtual
void
Print
(
Graphics
*
dest
,
string
text
,
int
x
,
int
y
,
int
w
,
int
h
,
int
align
);
virtual
void
PrintColor
(
Graphics
*
dest
,
string
text
,
int
x
,
int
y
,
int
w
,
int
h
,
int
align
,
int
color
);
};
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_graphics.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_graphics.cpp: X11 implementation of the Graphics and Region classes
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_graphics.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
* Emmanuel Puig <karibu@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -----------------------------------------------------------------
#include <X11/Xlib.h>
//--- SKIN ------------------------------------------------------------------
#include "../src/graphics.h"
#include "../src/window.h"
#include "../os_window.h"
#include "x11_graphics.h"
#include <stdio.h>
#include <math.h>
//---------------------------------------------------------------------------
// X11 GRAPHICS
//---------------------------------------------------------------------------
X11Graphics
::
X11Graphics
(
int
w
,
int
h
,
SkinWindow
*
from
)
:
Graphics
(
w
,
h
)
{
/* if( from != NULL )
{
GdkWindow *fromWnd = ( (X11Window *)from )->GetHandle();
Image = (GdkDrawable*) gdk_pixmap_new( fromWnd, w, h, -1 );
Gc = gdk_gc_new( ( GdkDrawable* )fromWnd );
}
else
{
// FIXME: 8 -> screen depth
Image = (GdkDrawable*) gdk_pixmap_new( NULL, w, h, 16 );
gdk_drawable_set_colormap( Image, gdk_colormap_get_system() );
Gc = gdk_gc_new( Image );
}
// Set the background color to black
gdk_draw_rectangle( Image, Gc, TRUE, 0, 0, w, h );*/
}
//---------------------------------------------------------------------------
X11Graphics
::~
X11Graphics
()
{
/* g_object_unref( Gc );
g_object_unref( Image );*/
}
//---------------------------------------------------------------------------
void
X11Graphics
::
CopyFrom
(
int
dx
,
int
dy
,
int
dw
,
int
dh
,
Graphics
*
Src
,
int
sx
,
int
sy
,
int
Flag
)
{
/* gdk_draw_drawable( Image, Gc, (( X11Graphics* )Src )->GetImage(),
sx, sy, dx, dy, dw, dh );*/
}
//---------------------------------------------------------------------------
void
X11Graphics
::
DrawRect
(
int
x
,
int
y
,
int
w
,
int
h
,
int
color
)
{
/* gdk_rgb_gc_set_foreground( Gc, color );
gdk_draw_rectangle( Image, Gc, TRUE, x, y, w, h);*/
}
//---------------------------------------------------------------------------
void
X11Graphics
::
SetClipRegion
(
SkinRegion
*
rgn
)
{
/* gdk_gc_set_clip_region( Gc, ( (X11Region *)rgn )->GetHandle() );*/
}
//---------------------------------------------------------------------------
void
X11Graphics
::
ResetClipRegion
()
{
/* GdkRectangle rect;
rect.x = 0;
rect.y = 0;
rect.width = Width;
rect.height = Height;
GdkRegion *rgn = gdk_region_rectangle( &rect );
gdk_gc_set_clip_region( Gc, rgn );
gdk_region_destroy( rgn );*/
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// X11 REGION
//---------------------------------------------------------------------------
X11Region
::
X11Region
()
{
/* Rgn = gdk_region_new();*/
}
//---------------------------------------------------------------------------
X11Region
::
X11Region
(
int
x
,
int
y
,
int
w
,
int
h
)
{
/* GdkRectangle rect;
rect.x = x;
rect.y = y;
rect.width = w;
rect.height = h;
Rgn = gdk_region_rectangle( &rect );*/
}
//---------------------------------------------------------------------------
X11Region
::~
X11Region
()
{
/* gdk_region_destroy( Rgn );*/
}
//---------------------------------------------------------------------------
void
X11Region
::
AddPoint
(
int
x
,
int
y
)
{
AddRectangle
(
x
,
y
,
1
,
1
);
}
//---------------------------------------------------------------------------
void
X11Region
::
AddRectangle
(
int
x
,
int
y
,
int
w
,
int
h
)
{
/* GdkRectangle rect;
rect.x = x;
rect.y = y;
rect.width = w;
rect.height = h;
GdkRegion *Buffer = gdk_region_rectangle( &rect );
gdk_region_union( Rgn, Buffer );*/
}
//---------------------------------------------------------------------------
void
X11Region
::
AddElipse
(
int
x
,
int
y
,
int
w
,
int
h
)
{
/* GdkRegion *Buffer;
GdkRectangle rect;
rect.height = 1;
double ex, ey;
double a = w / 2;
double b = h / 2;
if( !a || !b )
return;
for( ey = 0; ey < h; ey++ )
{
// Calculate coords
ex = a * sqrt( 1 - ey * ey / ( b * b ) );
// Upper line
rect.x = (gint)( x + a - ex );
rect.y = (gint)( y + b - ey );
rect.width = (gint)( 2 * ex );
Buffer = gdk_region_rectangle( &rect );
gdk_region_union( Rgn, Buffer );
gdk_region_destroy( Buffer );
// Lower line
rect.y = (gint)( y + b + ey );
Buffer = gdk_region_rectangle( &rect );
gdk_region_union( Rgn, Buffer );
gdk_region_destroy( Buffer );
}*/
}
//---------------------------------------------------------------------------
void
X11Region
::
Move
(
int
x
,
int
y
)
{
/* gdk_region_offset( Rgn, x, y );*/
}
//---------------------------------------------------------------------------
bool
X11Region
::
Hit
(
int
x
,
int
y
)
{
/* return gdk_region_point_in( Rgn, x, y );*/
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_graphics.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_graphics.h: X11 implementation of the Graphics and Region classes
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_graphics.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@via.ecp.fr>
* Olivier Teulire <ipkiss@via.ecp.fr>
* Emmanuel Puig <karibu@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_SKIN_X11_GRAPHICS
#define VLC_SKIN_X11_GRAPHICS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
#include <X11/Xutil.h>
//---------------------------------------------------------------------------
class
SkinRegion
;
class
SkinWindow
;
//---------------------------------------------------------------------------
class
X11Graphics
:
public
Graphics
{
protected:
/* Drawable *Image;
GdkGC *Gc;*/
public:
// Constructor
X11Graphics
(
int
w
,
int
h
,
SkinWindow
*
from
=
NULL
);
// Destructor
virtual
~
X11Graphics
();
// Drawing methods
virtual
void
CopyFrom
(
int
dx
,
int
dy
,
int
dw
,
int
dh
,
Graphics
*
Src
,
int
sx
,
int
sy
,
int
Flag
);
//virtual void CopyTo( Graphics *Dest, int dx, int dy, int dw, int dh,
// int sx, int sy, int Flag );
virtual
void
DrawRect
(
int
x
,
int
y
,
int
w
,
int
h
,
int
color
);
// Clipping methods
virtual
void
SetClipRegion
(
SkinRegion
*
rgn
);
virtual
void
ResetClipRegion
();
// Specific X11 methods
/* GdkDrawable *GetImage() { return Image; };
GdkGC *GetGC() { return Gc; };*/
};
//---------------------------------------------------------------------------
class
X11Region
:
public
SkinRegion
{
private:
Region
*
Rgn
;
public:
// Constructor
X11Region
();
X11Region
(
int
x
,
int
y
,
int
w
,
int
h
);
// Destructor
~
X11Region
();
// Modify region
virtual
void
AddPoint
(
int
x
,
int
y
);
virtual
void
AddRectangle
(
int
x
,
int
y
,
int
w
,
int
h
);
virtual
void
AddElipse
(
int
x
,
int
y
,
int
w
,
int
h
);
virtual
void
Move
(
int
x
,
int
y
);
virtual
bool
Hit
(
int
x
,
int
y
);
// Specific X11 methods
Region
*
GetHandle
()
{
return
Rgn
;
};
};
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_run.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_run.cpp:
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_run.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- WWWINDOWS -------------------------------------------------------------
#include <wx/wx.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- SKIN ------------------------------------------------------------------
#include "../os_api.h"
#include "../src/event.h"
#include "../os_event.h"
#include "../src/banks.h"
#include "../src/window.h"
#include "../os_window.h"
#include "../src/theme.h"
#include "../os_theme.h"
#include "../src/skin_common.h"
#include "../src/vlcproc.h"
#include "../src/wxdialogs.h"
// include the icon graphic
#include "share/vlc32x32.xpm"
//---------------------------------------------------------------------------
class
CallBackObjects
{
public:
VlcProc
*
Proc
;
};
//---------------------------------------------------------------------------
// Specific method
//---------------------------------------------------------------------------
bool
IsVLCEvent
(
unsigned
int
msg
);
int
SkinManage
(
intf_thread_t
*
p_intf
);
//---------------------------------------------------------------------------
// Local classes declarations.
//---------------------------------------------------------------------------
class
Instance
:
public
wxApp
{
public:
Instance
();
Instance
(
intf_thread_t
*
_p_intf
,
CallBackObjects
*
callback
);
bool
OnInit
();
OpenDialog
*
open
;
private:
intf_thread_t
*
p_intf
;
CallBackObjects
*
callbackobj
;
};
//---------------------------------------------------------------------------
// GTK2 interface
//---------------------------------------------------------------------------
/*void GTK2Proc( GdkEvent *event, gpointer data )
{
// Get objects from data
CallBackObjects *obj = (CallBackObjects *)data;
VlcProc *proc = obj->Proc;
// Get pointer to thread info
intf_thread_t *p_intf = proc->GetpIntf();
// Variables
unsigned int msg;
Event *evt;
list<SkinWindow *>::const_iterator win;
GdkWindow *gwnd = ((GdkEventAny *)event)->window;
// Create event to dispatch in windows
// Skin event
if( event->type == GDK_CLIENT_EVENT )
{
msg = ( (GdkEventClient *)event )->data.l[0];
evt = (Event *)new OSEvent( p_intf,
((GdkEventAny *)event)->window,
msg,
( (GdkEventClient *)event )->data.l[1],
( (GdkEventClient *)event )->data.l[2] );
}
// System event
else
{
msg = event->type;
evt = (Event *)new OSEvent( p_intf,
((GdkEventAny *)event)->window, msg, 0, (long)event );
}
// Process keyboard shortcuts
if( msg == GDK_KEY_PRESS )
{
int KeyModifier = 0;
// If key is ALT
if( ((GdkEventKey *)event)->state & GDK_MOD1_MASK )
{
KeyModifier = 1;
}
// If key is CTRL
else if( ((GdkEventKey *)event)->state & GDK_CONTROL_MASK )
{
KeyModifier = 2;
}
int key = ((GdkEventKey *)event)->keyval;
// Translate into lower case
if( key >= 'a' && key <= 'z' )
{
key -= ('a' - 'A');
}
if( KeyModifier > 0 )
p_intf->p_sys->p_theme->EvtBank->TestShortcut( key , KeyModifier );
}
// Send event
else if( IsVLCEvent( msg ) )
{
if( !proc->EventProc( evt ) )
{
wxExit();
return; // Exit VLC !
}
}
else if( gwnd == NULL )
{
for( win = p_intf->p_sys->p_theme->WindowList.begin();
win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
{
(*win)->ProcessEvent( evt );
}
}
else
{
// Find window matching with gwnd
for( win = p_intf->p_sys->p_theme->WindowList.begin();
win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
{
// If it is the correct window
if( gwnd == ( (GTK2Window *)(*win) )->GetHandle() )
{
// Send event and check if processed
if( (*win)->ProcessEvent( evt ) )
{
delete (OSEvent *)evt;
return;
}
else
{
break;
}
}
}
}
evt->DestructParameters();
delete (OSEvent *)evt;
// Check if vlc is closing
proc->IsClosing();
gtk_main_do_event( event )
}*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// REFRESH TIMER CALLBACK
//---------------------------------------------------------------------------
/*gboolean RefreshTimer( gpointer data )
{
intf_thread_t *p_intf = (intf_thread_t *)data;
SkinManage( p_intf );
return true;
}*/
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Implementation of Instance class
//---------------------------------------------------------------------------
Instance
::
Instance
(
)
{
}
Instance
::
Instance
(
intf_thread_t
*
_p_intf
,
CallBackObjects
*
callback
)
{
// Initialization
p_intf
=
_p_intf
;
callbackobj
=
callback
;
}
IMPLEMENT_APP_NO_MAIN
(
Instance
)
bool
Instance
::
OnInit
()
{
// Set event callback. Yes, it's a big hack ;)
// gdk_event_handler_set( GTK2Proc, (gpointer)callbackobj, NULL );
p_intf
->
p_sys
->
p_icon
=
new
wxIcon
(
vlc_xpm
);
p_intf
->
p_sys
->
OpenDlg
=
new
OpenDialog
(
p_intf
,
NULL
,
FILE_ACCESS
);
p_intf
->
p_sys
->
MessagesDlg
=
new
Messages
(
p_intf
,
NULL
);
p_intf
->
p_sys
->
SoutDlg
=
new
SoutDialog
(
p_intf
,
NULL
);
p_intf
->
p_sys
->
PrefsDlg
=
new
PrefsDialog
(
p_intf
,
NULL
);
p_intf
->
p_sys
->
InfoDlg
=
new
FileInfo
(
p_intf
,
NULL
);
// Add timer
// g_timeout_add( 200, (GSourceFunc)RefreshTimer, (gpointer)p_intf );
return
TRUE
;
}
//---------------------------------------------------------------------------
// GTK2 interface
//---------------------------------------------------------------------------
void
OSRun
(
intf_thread_t
*
p_intf
)
{
static
char
*
p_args
[]
=
{
""
};
// Create VLC event object processing
CallBackObjects
*
callbackobj
=
new
CallBackObjects
();
callbackobj
->
Proc
=
new
VlcProc
(
p_intf
);
/* wxTheApp = new Instance( p_intf, callbackobj );
wxEntry( 1, p_args );*/
Display
*
display
=
((
OSTheme
*
)
p_intf
->
p_sys
->
p_theme
)
->
GetDisplay
();
// Main event loop
while
(
1
)
{
XEvent
*
event
;
XNextEvent
(
display
,
event
);
fprintf
(
stderr
,
"event %d
\n
"
,
event
->
type
);
}
delete
callbackobj
;
}
//---------------------------------------------------------------------------
bool
IsVLCEvent
(
unsigned
int
msg
)
{
return
(
msg
>
VLC_MESSAGE
&&
msg
<
VLC_WINDOW
);
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_theme.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_theme.cpp: X11 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_theme.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- SKIN ------------------------------------------------------------------
#include "../os_api.h"
#include "../src/banks.h"
#include "../src/window.h"
#include "../os_window.h"
#include "../src/event.h"
#include "../os_event.h"
#include "../src/theme.h"
#include "../os_theme.h"
#include "../src/vlcproc.h"
#include "../src/skin_common.h"
//---------------------------------------------------------------------------
void
SkinManage
(
intf_thread_t
*
p_intf
);
//---------------------------------------------------------------------------
// THEME
//---------------------------------------------------------------------------
X11Theme
::
X11Theme
(
intf_thread_t
*
_p_intf
)
:
Theme
(
_p_intf
)
{
//Initialize values
ParentWindow
=
0
;
display
=
p_intf
->
p_sys
->
display
;
}
//---------------------------------------------------------------------------
X11Theme
::~
X11Theme
()
{
/*
// Unregister the window class if needed
WNDCLASS wndclass;
if( GetClassInfo( hinst, "SkinWindow", &wndclass ) )
{
UnregisterClass( "SkinWindow", hinst );
}
if( GetClassInfo( hinst, "ParentWindow", &wndclass ) )
{
UnregisterClass( "ParentWindow", hinst );
}
// Delete tray icon if exists
if( ShowInTray )
{
Shell_NotifyIcon( NIM_DELETE, &TrayIcon );
}
*/
// Destroy parent window
/* if( ParentWindow )
{
gdk_window_destroy( ParentWindow );
}*/
}
//---------------------------------------------------------------------------
void
X11Theme
::
OnLoadTheme
()
{
/* // The create menu
CreateSystemMenu();
*/
// Set the parent window attributes
/* GdkWindowAttr attr;
attr.title = "VLC Media Player";
attr.event_mask = GDK_ALL_EVENTS_MASK;
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;
gint mask = GDK_WA_TITLE|GDK_WA_X|GDK_WA_Y|GDK_WA_NOREDIR;
// Create the parent window
ParentWindow = gdk_window_new( NULL, &attr, mask);
if( !ParentWindow )
{
msg_Err( p_intf, "gdk_window_new failed" );
return;
}*/
/* Window root = DefaultRootWindow( display );
ParentWindow = XCreateSimpleWindow( display, root, 0, 0, 100, 100, 0, 0, 0 );
XSelectInput( display, ParentWindow, ExposureMask|
KeyPressMask|KeyReleaseMask|ButtonPressMask|PointerMotionMask|
PointerMotionHintMask| EnterWindowMask|LeaveWindowMask);
XMapRaised( display, ParentWindow );
XFlush( display );*/
}
//---------------------------------------------------------------------------
void
X11Theme
::
AddSystemMenu
(
string
name
,
Event
*
event
)
{
/*
if( name == "SEPARATOR" )
{
AppendMenu( SysMenu, MF_SEPARATOR, 0, NULL );
}
else
{
AppendMenu( SysMenu, MF_STRING, (unsigned int)event,
(char *)name.c_str() );
}*/
}
//---------------------------------------------------------------------------
void
X11Theme
::
ChangeClientWindowName
(
string
name
)
{
/*
SetWindowText( ParentWindow, name.c_str() );*/
}
//---------------------------------------------------------------------------
void
X11Theme
::
AddWindow
(
string
name
,
int
x
,
int
y
,
bool
visible
,
int
fadetime
,
int
alpha
,
int
movealpha
,
bool
dragdrop
)
{
/* GdkWindowAttr attr;
attr.title = (gchar *)name.c_str();
attr.event_mask = GDK_ALL_EVENTS_MASK;
attr.width = 0;
attr.height = 0;
attr.window_type = GDK_WINDOW_TOPLEVEL;
attr.wclass = GDK_INPUT_OUTPUT;
attr.override_redirect = FALSE;
gint mask = GDK_WA_NOREDIR;
// Create the window
GdkWindow *gwnd = gdk_window_new( NULL, &attr, mask );
if( !gwnd )
{
msg_Err( p_intf, "gdk_window_new failed" );
return;
}
gdk_window_set_decorations( gwnd, (GdkWMDecoration)0 );
gdk_window_show( gwnd );*/
Window
root
=
DefaultRootWindow
(
display
);
Window
wnd
=
XCreateSimpleWindow
(
display
,
root
,
0
,
0
,
200
,
100
,
0
,
0
,
0
);
XSelectInput
(
display
,
wnd
,
ExposureMask
|
KeyPressMask
|
KeyReleaseMask
|
ButtonPressMask
|
PointerMotionMask
|
PointerMotionHintMask
|
EnterWindowMask
|
LeaveWindowMask
);
XMapRaised
(
display
,
wnd
);
XFlush
(
display
);
WindowList
.
push_back
(
(
SkinWindow
*
)
new
OSWindow
(
p_intf
,
wnd
,
x
,
y
,
visible
,
fadetime
,
alpha
,
movealpha
,
dragdrop
,
name
)
)
;
}
//---------------------------------------------------------------------------
void
X11Theme
::
ChangeTray
()
{
/*
if( ShowInTray )
{
Shell_NotifyIcon( NIM_DELETE, &TrayIcon );
ShowInTray = false;
}
else
{
Shell_NotifyIcon( NIM_ADD, &TrayIcon );
ShowInTray = true;
}*/
}
//---------------------------------------------------------------------------
void
X11Theme
::
ChangeTaskbar
()
{
/*
if( ShowInTaskbar )
{
ShowWindow( ParentWindow, SW_HIDE );
SetWindowLongPtr( ParentWindow, GWL_EXSTYLE,
WS_EX_LAYERED|WS_EX_TOOLWINDOW );
ShowWindow( ParentWindow, SW_SHOW );
ShowInTaskbar = false;
}
else
{
ShowWindow( ParentWindow, SW_HIDE );
SetWindowLongPtr( ParentWindow, GWL_EXSTYLE,
WS_EX_LAYERED|WS_EX_APPWINDOW );
ShowWindow( ParentWindow, SW_SHOW );
ShowInTaskbar = true;
}*/
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_theme.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_theme.h: X11 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_theme.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_SKIN_X11_THEME
#define VLC_SKIN_X11_THEME
//--- GENERAL ---------------------------------------------------------------
#include <string>
using
namespace
std
;
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//---------------------------------------------------------------------------
struct
intf_thread_t
;
class
SkinWindow
;
class
EventBank
;
class
BitmapBank
;
class
FontBank
;
//---------------------------------------------------------------------------
class
X11Theme
:
public
Theme
{
protected:
// Handles
Display
*
display
;
Window
ParentWindow
;
/*
// System tray icon
NOTIFYICONDATA TrayIcon;
HMENU SysMenu;
*/
public:
// Constructor
X11Theme
(
intf_thread_t
*
_p_intf
);
virtual
void
OnLoadTheme
();
// Destructor
virtual
~
X11Theme
();
// Specific methods
Display
*
GetDisplay
()
{
return
display
;
}
Window
GetParentWindow
()
{
return
ParentWindow
;
}
// !!!
virtual
void
AddWindow
(
string
name
,
int
x
,
int
y
,
bool
visible
,
int
fadetime
,
int
alpha
,
int
movealpha
,
bool
dragdrop
);
virtual
void
ChangeClientWindowName
(
string
name
);
// Taskbar && system tray
virtual
void
AddSystemMenu
(
string
name
,
Event
*
event
);
virtual
void
ChangeTray
();
virtual
void
ChangeTaskbar
();
// HMENU GetSysMenu() { return SysMenu; }
};
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_window.cpp
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_window.cpp: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.cpp,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifdef X11_SKINS
//--- GENERAL ---------------------------------------------------------------
//#include <math.h>
//--- VLC -------------------------------------------------------------------
#include <vlc/intf.h>
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//--- SKIN ------------------------------------------------------------------
#include "../os_api.h"
#include "../src/anchor.h"
#include "../controls/generic.h"
#include "../src/window.h"
#include "../os_window.h"
#include "../src/event.h"
#include "../os_event.h"
#include "../src/graphics.h"
#include "../os_graphics.h"
#include "../src/skin_common.h"
#include "../src/theme.h"
//---------------------------------------------------------------------------
// Skinable Window
//---------------------------------------------------------------------------
X11Window
::
X11Window
(
intf_thread_t
*
p_intf
,
Window
wnd
,
int
x
,
int
y
,
bool
visible
,
int
transition
,
int
normalalpha
,
int
movealpha
,
bool
dragdrop
,
string
name
)
:
SkinWindow
(
p_intf
,
x
,
y
,
visible
,
transition
,
normalalpha
,
movealpha
,
dragdrop
)
{
// Set handles
Wnd
=
wnd
;
// gc = gdk_gc_new( gwnd );
Name
=
name
;
LButtonDown
=
false
;
RButtonDown
=
false
;
// Removing fading effect
Transition
=
0
;
/*
// Set position parameters
CursorPos = new POINT;
WindowPos = new POINT;
// Create Tool Tip Window
ToolTipWindow = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL,
WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hWnd, 0, GetModuleHandle( NULL ), 0);
// Create Tool Tip infos
ToolTipInfo.cbSize = sizeof(TOOLINFO);
ToolTipInfo.uFlags = TTF_SUBCLASS|TTF_IDISHWND;
ToolTipInfo.hwnd = hWnd;
ToolTipInfo.hinst = GetModuleHandle( NULL );
ToolTipInfo.uId = (unsigned int)hWnd;
ToolTipInfo.lpszText = NULL;
ToolTipInfo.rect.left = ToolTipInfo.rect.top = 0;
ToolTipInfo.rect.right = ToolTipInfo.rect.bottom = 0;
SendMessage( ToolTipWindow, TTM_ADDTOOL, 0,
(LPARAM)(LPTOOLINFO) &ToolTipInfo );
*/
if
(
DragDrop
)
{
// register the listview as a drop target
DropObject
=
new
X11DropObject
(
p_intf
);
// gdk_window_register_dnd( gwnd );
}
// Create Tool Tip window
/* GdkWindowAttr attr;
attr.event_mask = GDK_ALL_EVENTS_MASK;
attr.width = 100;
attr.height = 100;
attr.window_type = GDK_WINDOW_CHILD;
attr.wclass = GDK_INPUT_OUTPUT;
gint mask = 0;
ToolTipWindow = gdk_window_new( gwnd, &attr, mask);*/
}
//---------------------------------------------------------------------------
X11Window
::~
X11Window
()
{
/* delete CursorPos;
delete WindowPos;
if( hWnd != NULL )
{
DestroyWindow( hWnd );
}
if( ToolTipWindow != NULL )
{
DestroyWindow( ToolTipWindow );
}
if( DragDrop )
{
// Remove the listview from the list of drop targets
RevokeDragDrop( hWnd );
DropTarget->Release();
// Uninitialize the OLE library
OleUninitialize();
}*/
/* if( gWnd )
{
gdk_window_destroy( gWnd );
}*/
}
//---------------------------------------------------------------------------
void
X11Window
::
OSShow
(
bool
show
)
{
if
(
show
)
{
/* gdk_window_show( gWnd );
gdk_window_move( gWnd, Left, Top );*/
}
else
{
/* gdk_window_hide( gWnd );*/
}
}
//---------------------------------------------------------------------------
bool
X11Window
::
ProcessOSEvent
(
Event
*
evt
)
{
unsigned
int
msg
=
evt
->
GetMessage
();
unsigned
int
p1
=
evt
->
GetParam1
();
int
p2
=
evt
->
GetParam2
();
/*
switch( msg )
{
case GDK_EXPOSE:
RefreshFromImage( 0, 0, Width, Height );
return true;
case GDK_MOTION_NOTIFY:
if( LButtonDown )
MouseMove( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 1 );
else if( RButtonDown )
MouseMove( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 2 );
else
MouseMove( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 0 );
gdk_window_get_pointer( gWnd, 0, 0, 0 );
return true;
case GDK_BUTTON_PRESS:
// Raise all the windows
for( list<SkinWindow *>::const_iterator win =
p_intf->p_sys->p_theme->WindowList.begin();
win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
{
gdk_window_raise( ( (X11Window *)(*win) )->GetHandle() );
}
switch( ( (GdkEventButton *)p2 )->button )
{
case 1:
// Left button
LButtonDown = true;
MouseDown( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 1 );
break;
case 3:
// Right button
RButtonDown = true;
MouseDown( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 2 );
break;
default:
break;
}
return true;
case GDK_BUTTON_RELEASE:
switch( ( (GdkEventButton *)p2 )->button )
{
case 1:
// Left button
LButtonDown = false;
MouseUp( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 1 );
break;
case 3:
// Right button
RButtonDown = false;
MouseUp( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 2 );
break;
default:
break;
}
return true;
case GDK_LEAVE_NOTIFY:
OSAPI_PostMessage( this, WINDOW_LEAVE, 0, 0 );
return true;
case GDK_2BUTTON_PRESS:
MouseDblClick( (int)( (GdkEventButton *)p2 )->x,
(int)( (GdkEventButton *)p2 )->y, 1 );
return true;
case GDK_DROP_START:
DropObject->HandleDropStart( ( (GdkEventDND *)p2 )->context );
return true;
case GDK_SCROLL:
switch( ( (GdkEventScroll *)p2 )->direction )
{
case GDK_SCROLL_UP:
MouseScroll( ( (GdkEventScroll *)p2 )->x,
( (GdkEventScroll *)p2 )->y,
MOUSE_SCROLL_UP);
break;
case GDK_SCROLL_DOWN:
MouseScroll( ( (GdkEventScroll *)p2 )->x,
( (GdkEventScroll *)p2 )->y,
MOUSE_SCROLL_DOWN);
break;
}
return true;
default:
return false;
}*/
}
//---------------------------------------------------------------------------
void
X11Window
::
SetTransparency
(
int
Value
)
{
/* if( Value > -1 )
Alpha = Value;
SetLayeredWindowAttributes( hWnd, 0, Alpha, LWA_ALPHA | LWA_COLORKEY );
UpdateWindow( hWnd );*/
}
//---------------------------------------------------------------------------
void
X11Window
::
RefreshFromImage
(
int
x
,
int
y
,
int
w
,
int
h
)
{
// Initialize painting
/* HDC DC = GetWindowDC( hWnd );
// Draw image on window
BitBlt( DC, x, y, w, h, ( (X11Graphics *)Image )->GetImageHandle(),
x, y, SRCCOPY );
// Release window device context
ReleaseDC( hWnd, DC );
*/
/* GdkDrawable *drawable = (( X11Graphics* )Image )->GetImage();
GdkImage *image = gdk_drawable_get_image( drawable, 0, 0, Width, Height );
gdk_draw_drawable( gWnd, gc, drawable, x, y, x, y, w, h );
// Mask for transparency
GdkRegion *region = gdk_region_new();
for( int line = 0; line < Height; line++ )
{
int start = 0, end = 0;
while( start < Width )
{
while( start < Width && gdk_image_get_pixel( image, start, line ) == 0 )
{
start++;
}
end = start;
while( end < Width && gdk_image_get_pixel( image, end, line ) != 0)
{
end++;
}
GdkRectangle rect;
rect.x = start;
rect.y = line;
rect.width = end - start + 1;
rect.height = 1;
GdkRegion *rectReg = gdk_region_rectangle( &rect );
gdk_region_union( region, rectReg );
gdk_region_destroy( rectReg );
start = end + 1;
}
}
gdk_window_shape_combine_region( gWnd, region, 0, 0 );
gdk_region_destroy( region );*/
}
//---------------------------------------------------------------------------
void
X11Window
::
WindowManualMove
()
{
// Get mouse cursor position
int
x
,
y
;
OSAPI_GetMousePos
(
x
,
y
);
// Move window and chek for magnetism
p_intf
->
p_sys
->
p_theme
->
MoveSkinMagnet
(
this
,
WindowX
+
x
-
CursorX
,
WindowY
+
y
-
CursorY
);
}
//---------------------------------------------------------------------------
void
X11Window
::
WindowManualMoveInit
()
{
/* gdk_window_get_pointer( gdk_get_default_root_window(), &CursorX, &CursorY,
NULL );*/
WindowX
=
Left
;
WindowY
=
Top
;
}
//---------------------------------------------------------------------------
void
X11Window
::
Move
(
int
left
,
int
top
)
{
Left
=
left
;
Top
=
top
;
/* gdk_window_move( gWnd, left, top );*/
}
//---------------------------------------------------------------------------
void
X11Window
::
Size
(
int
width
,
int
height
)
{
Width
=
width
;
Height
=
height
;
/* gdk_window_resize( gWnd, width, height );*/
}
//---------------------------------------------------------------------------
void
X11Window
::
ChangeToolTipText
(
string
text
)
{
/* if( text == "none" )
{
if( ToolTipText != "none" )
{
ToolTipText = "none";
ToolTipInfo.lpszText = NULL;
SendMessage( ToolTipWindow, TTM_ACTIVATE, 0 , 0 );
}
}
else
{
if( text != ToolTipText )
{
ToolTipText = text;
ToolTipInfo.lpszText = (char *)ToolTipText.c_str();
SendMessage( ToolTipWindow, TTM_ACTIVATE, 1 , 0 );
SendMessage( ToolTipWindow, TTM_UPDATETIPTEXT, 0,
(LPARAM)(LPTOOLINFO)&ToolTipInfo );
}
}
*/
}
//---------------------------------------------------------------------------
#endif
modules/gui/skins/x11/x11_window.h
0 → 100644
View file @
2396f46b
/*****************************************************************************
* x11_window.h: X11 implementation of the Window class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id: x11_window.h,v 1.1 2003/04/28 14:32:57 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
* USA.
*****************************************************************************/
#ifndef VLC_SKIN_X11_WIN
#define VLC_SKIN_X11_WIN
//--- X11 -------------------------------------------------------------------
#include <X11/Xlib.h>
//---------------------------------------------------------------------------
class
Graphics
;
class
Event
;
//---------------------------------------------------------------------------
class
X11Window
:
public
SkinWindow
{
private:
// General parameters
Window
Wnd
;
// GdkGC *gc;
int
CursorX
;
int
CursorY
;
int
WindowX
;
int
WindowY
;
string
Name
;
// Drag&Drop
X11DropObject
*
DropObject
;
// Tooltip texts
Window
ToolTipWindow
;
// TOOLINFO ToolTipInfo;
// Left button down
bool
LButtonDown
;
bool
RButtonDown
;
public:
// Cosntructors
X11Window
(
intf_thread_t
*
_p_intf
,
Window
wnd
,
int
x
,
int
y
,
bool
visible
,
int
transition
,
int
normalalpha
,
int
movealpha
,
bool
dragdrop
,
string
name
);
// Destructors
virtual
~
X11Window
();
// Event processing
virtual
bool
ProcessOSEvent
(
Event
*
evt
);
// Window graphic aspect
virtual
void
OSShow
(
bool
show
);
virtual
void
RefreshFromImage
(
int
x
,
int
y
,
int
w
,
int
h
);
virtual
void
SetTransparency
(
int
Value
=
-
1
);
virtual
void
WindowManualMove
();
virtual
void
WindowManualMoveInit
();
// Window methods
virtual
void
Move
(
int
left
,
int
top
);
virtual
void
Size
(
int
width
,
int
height
);
// Specific gtk2 methods
Window
GetHandle
()
{
return
Wnd
;
};
// Tooltip texts
virtual
void
ChangeToolTipText
(
string
text
);
// Getters
string
GetName
()
{
return
Name
;
}
};
//---------------------------------------------------------------------------
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment