Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
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
Expand all
Hide 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
This diff is collapsed.
Click to expand it.
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