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
6df353d4
Commit
6df353d4
authored
Jul 11, 2002
by
Tony Castley
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed changing workspaces problem.
Added a popup menu to enable changing output sizes.
parent
67bc8190
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
100 additions
and
30 deletions
+100
-30
plugins/beos/MsgVals.h
plugins/beos/MsgVals.h
+6
-1
plugins/beos/VideoWindow.h
plugins/beos/VideoWindow.h
+3
-3
plugins/beos/vout_beos.cpp
plugins/beos/vout_beos.cpp
+91
-26
No files found.
plugins/beos/MsgVals.h
View file @
6df353d4
...
...
@@ -2,7 +2,7 @@
* MsgVals.h
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: MsgVals.h,v 1.9
2002/03/22 13:16:35
tcastley Exp $
* $Id: MsgVals.h,v 1.9
.2.1 2002/07/11 07:21:57
tcastley Exp $
*
* Authors: Tony Castley <tcastley@mail.powerup.com.au>
*
...
...
@@ -43,4 +43,9 @@ const uint32 NEXT_TITLE = 'NXTI';
const
uint32
PREV_CHAPTER
=
'
PRCH
'
;
const
uint32
NEXT_CHAPTER
=
'
NXCH
'
;
const
uint32
TOGGLE_ON_TOP
=
'
ONTP
'
;
const
uint32
TOGGLE_FULL_SCREEN
=
'
TGFS
'
;
const
uint32
RESIZE_100
=
'
RSOR
'
;
const
uint32
RESIZE_200
=
'
RSDB
'
;
const
uint32
ASPECT_CORRECT
=
'
ASCO
'
;
const
uint32
VERT_SYNC
=
'
VSYN
'
;
plugins/beos/VideoWindow.h
View file @
6df353d4
...
...
@@ -2,7 +2,7 @@
* VideoWindow.h: BeOS video window class prototype
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
* $Id: VideoWindow.h,v 1.19.2.
2 2002/07/10 05:17:2
7 tcastley Exp $
* $Id: VideoWindow.h,v 1.19.2.
3 2002/07/11 07:21:5
7 tcastley Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Tony Castley <tcastley@mail.powerup.com.au>
...
...
@@ -74,8 +74,8 @@ public:
void
drawBuffer
(
int
bufferIndex
);
void
WindowActivated
(
bool
active
);
int
SelectDrawingMode
(
int
width
,
int
height
);
bool
QuitRequested
(
);
virtual
void
MessageReceived
(
BMessage
*
message
);
// this is the hook controling direct screen connection
int32
i_width
;
// incomming bitmap size
int32
i_height
;
...
...
plugins/beos/vout_beos.cpp
View file @
6df353d4
...
...
@@ -2,7 +2,7 @@
* vout_beos.cpp: beos video output display method
*****************************************************************************
* Copyright (C) 2000, 2001 VideoLAN
* $Id: vout_beos.cpp,v 1.58.2.
1 2002/06/01 10:12:10
tcastley Exp $
* $Id: vout_beos.cpp,v 1.58.2.
2 2002/07/11 07:21:57
tcastley Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -49,6 +49,7 @@ extern "C"
#include "VideoWindow.h"
#include "DrawingTidbits.h"
#include "MsgVals.h"
/*****************************************************************************
* vout_sys_t: BeOS video output method descriptor
...
...
@@ -63,7 +64,7 @@ typedef struct vout_sys_s
s32
i_width
;
s32
i_height
;
u8
*
pp_buffer
[
3
];
//
u8 *pp_buffer[3];
int
i_index
;
}
vout_sys_t
;
...
...
@@ -133,12 +134,21 @@ VideoWindow::VideoWindow( int v_width, int v_height,
}
delete
screen
;
mode
=
SelectDrawingMode
(
v_width
,
v_height
);
// remember current settings
i_width
=
frame
.
IntegerWidth
();
i_height
=
frame
.
IntegerHeight
();
FrameResized
(
frame
.
IntegerWidth
(),
frame
.
IntegerHeight
()
);
FrameResized
(
i_width
,
i_height
);
mode
=
SelectDrawingMode
(
v_width
,
v_height
);
if
(
mode
==
OVERLAY
)
{
overlay_restrictions
r
;
bitmap
[
1
]
->
GetOverlayRestrictions
(
&
r
);
SetSizeLimits
((
i_width
*
r
.
min_width_scale
),
i_width
*
r
.
max_width_scale
,
(
i_height
*
r
.
min_height_scale
),
i_height
*
r
.
max_height_scale
);
}
Show
();
}
...
...
@@ -153,16 +163,42 @@ VideoWindow::~VideoWindow()
delete
bitmap
[
2
];
}
bool
VideoWindow
::
QuitRequested
(
)
void
VideoWindow
::
MessageReceived
(
BMessage
*
p_message
)
{
return
true
;
switch
(
p_message
->
what
)
{
case
TOGGLE_FULL_SCREEN
:
((
BWindow
*
)
this
)
->
Zoom
();
break
;
case
RESIZE_100
:
if
(
is_zoomed
)
{
MoveTo
(
winSize
.
left
,
winSize
.
top
);
be_app
->
ShowCursor
();
}
ResizeTo
(
i_width
,
i_height
);
break
;
case
RESIZE_200
:
if
(
is_zoomed
)
{
MoveTo
(
winSize
.
left
,
winSize
.
top
);
be_app
->
ShowCursor
();
}
ResizeTo
(
i_width
*
2
,
i_height
*
2
);
break
;
case
VERT_SYNC
:
vsync
=
!
vsync
;
break
;
default:
BWindow
::
MessageReceived
(
p_message
);
break
;
}
}
void
VideoWindow
::
drawBuffer
(
int
bufferIndex
)
{
status_t
status
;
i_buffer
=
bufferIndex
;
// sync to the screen if required
if
(
vsync
)
{
...
...
@@ -183,7 +219,7 @@ void VideoWindow::drawBuffer(int bufferIndex)
&
key
,
B_FOLLOW_ALL
,
B_OVERLAY_FILTER_HORIZONTAL
|
B_OVERLAY_FILTER_VERTICAL
|
B_OVERLAY_TRANSFER_CHANNEL
);
//
view->SetViewColor(key);
view
->
SetViewColor
(
key
);
}
else
{
...
...
@@ -267,13 +303,6 @@ void VideoWindow::ScreenChanged(BRect frame, color_space mode)
{
vsync
=
true
;
}
rgb_color
key
;
view
->
SetViewOverlay
(
bitmap
[
i_buffer
],
bitmap
[
i_buffer
]
->
Bounds
()
,
view
->
Bounds
(),
&
key
,
B_FOLLOW_ALL
,
B_OVERLAY_FILTER_HORIZONTAL
|
B_OVERLAY_FILTER_VERTICAL
);
view
->
SetViewColor
(
key
);
}
void
VideoWindow
::
WindowActivated
(
bool
active
)
...
...
@@ -360,8 +389,46 @@ VLCView::~VLCView()
*****************************************************************************/
void
VLCView
::
MouseDown
(
BPoint
point
)
{
BWindow
*
win
=
Window
();
win
->
Zoom
();
BMessage
*
msg
=
Window
()
->
CurrentMessage
();
int32
clicks
=
msg
->
FindInt32
(
"clicks"
);
VideoWindow
*
vWindow
=
(
VideoWindow
*
)
Window
();
if
(
clicks
>
1
)
{
Window
()
->
Zoom
();
return
;
}
uint32
mouseButtons
;
BPoint
where
;
GetMouse
(
&
where
,
&
mouseButtons
,
true
);
// bring up pop-up menu
if
(
mouseButtons
&
B_SECONDARY_MOUSE_BUTTON
)
{
BPopUpMenu
*
menu
=
new
BPopUpMenu
(
"context menu"
);
// Toggle FullScreen
BMenuItem
*
zoomItem
=
new
BMenuItem
(
"Fullscreen"
,
new
BMessage
(
TOGGLE_FULL_SCREEN
));
zoomItem
->
SetMarked
(
vWindow
->
is_zoomed
);
menu
->
AddItem
(
zoomItem
);
// Resize to 100%
BMenuItem
*
origItem
=
new
BMenuItem
(
"100%"
,
new
BMessage
(
RESIZE_100
));
menu
->
AddItem
(
origItem
);
// Resize to 200%
BMenuItem
*
doubleItem
=
new
BMenuItem
(
"200%"
,
new
BMessage
(
RESIZE_200
));
menu
->
AddItem
(
doubleItem
);
menu
->
AddSeparatorItem
();
// // Toggle the Aspect Ratio Correction
// BMenuItem *aspectItem = new BMenuItem("Aspect Correction",
// new BMessage(ASPECT_CORRECT));
// aspectItem->SetMarked(vWindow->is_zoomed);
// menu->AddItem(aspectItem);
// Toggle vSync
BMenuItem
*
vsyncItem
=
new
BMenuItem
(
"Vertical Sync"
,
new
BMessage
(
VERT_SYNC
));
vsyncItem
->
SetMarked
(
vWindow
->
vsync
);
menu
->
AddItem
(
vsyncItem
);
menu
->
SetTargetForItems
(
this
);
ConvertToScreen
(
&
where
);
menu
->
Go
(
where
,
true
,
false
,
true
);
}
}
/*****************************************************************************
...
...
@@ -443,10 +510,6 @@ int vout_Init( vout_thread_t *p_vout )
intf_ErrMsg
(
"vout error: can't open display"
);
return
0
;
}
/* Set the buffers */
p_vout
->
p_sys
->
pp_buffer
[
0
]
=
(
u8
*
)
p_vout
->
p_sys
->
p_window
->
bitmap
[
0
]
->
Bits
();
p_vout
->
p_sys
->
pp_buffer
[
1
]
=
(
u8
*
)
p_vout
->
p_sys
->
p_window
->
bitmap
[
1
]
->
Bits
();
p_vout
->
p_sys
->
pp_buffer
[
2
]
=
(
u8
*
)
p_vout
->
p_sys
->
p_window
->
bitmap
[
2
]
->
Bits
();
p_vout
->
output
.
i_width
=
p_vout
->
render
.
i_width
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
...
...
@@ -456,6 +519,8 @@ int vout_Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_chroma
=
colspace
[
p_vout
->
p_sys
->
p_window
->
colspace_index
].
chroma
;
p_vout
->
p_sys
->
i_index
=
0
;
p_vout
->
b_direct
=
1
;
p_vout
->
output
.
i_rmask
=
0x00ff0000
;
p_vout
->
output
.
i_gmask
=
0x0000ff00
;
p_vout
->
output
.
i_bmask
=
0x000000ff
;
...
...
@@ -478,16 +543,16 @@ int vout_Init( vout_thread_t *p_vout )
{
return
0
;
}
p_pic
->
p
->
p_pixels
=
p_vout
->
p_sys
->
pp_buffer
[
0
]
;
p_pic
->
p
->
p_pixels
=
(
u8
*
)
p_vout
->
p_sys
->
p_window
->
bitmap
[
buffer_index
]
->
Bits
()
;
p_pic
->
p
->
i_lines
=
p_vout
->
p_sys
->
i_height
;
p_pic
->
p
->
i_pixel_bytes
=
colspace
[
p_vout
->
p_sys
->
p_window
->
colspace_index
].
pixel_bytes
;
p_pic
->
i_planes
=
colspace
[
p_vout
->
p_sys
->
p_window
->
colspace_index
].
planes
;
p_pic
->
p
->
i_pitch
=
p_vout
->
p_sys
->
p_window
->
bitmap
[
0
]
->
BytesPerRow
();
p_pic
->
p
->
i_pitch
=
p_vout
->
p_sys
->
p_window
->
bitmap
[
buffer_index
]
->
BytesPerRow
();
if
(
p_vout
->
p_sys
->
p_window
->
mode
==
OVERLAY
)
{
p_pic
->
p
->
i_visible_bytes
=
(
p_vout
->
p_sys
->
p_window
->
bitmap
[
0
]
->
Bounds
().
IntegerWidth
()
+
1
)
p_pic
->
p
->
i_visible_bytes
=
(
p_vout
->
p_sys
->
p_window
->
bitmap
[
buffer_index
]
->
Bounds
().
IntegerWidth
()
+
1
)
*
p_pic
->
p
->
i_pixel_bytes
;
p_pic
->
p
->
b_margin
=
1
;
p_pic
->
p
->
b_hidden
=
0
;
...
...
@@ -564,7 +629,7 @@ void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
}
/* change buffer */
p_vout
->
p_sys
->
i_index
=
++
p_vout
->
p_sys
->
i_index
%
3
;
p_pic
->
p
->
p_pixels
=
p_vout
->
p_sys
->
pp_buffer
[
p_vout
->
p_sys
->
i_index
]
;
p_pic
->
p
->
p_pixels
=
(
u8
*
)
p_vout
->
p_sys
->
p_window
->
bitmap
[
p_vout
->
p_sys
->
i_index
]
->
Bits
()
;
}
/* following functions are local */
...
...
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