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
decd54e4
Commit
decd54e4
authored
Nov 10, 2006
by
Antoine Cellerier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add --puzzle-black-slot option to change puzzle type
parent
4d8192c7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
10 deletions
+53
-10
modules/video_filter/puzzle.c
modules/video_filter/puzzle.c
+53
-10
No files found.
modules/video_filter/puzzle.c
View file @
decd54e4
...
...
@@ -60,6 +60,8 @@ static int MouseEvent ( vlc_object_t *, char const *,
#define ROWS_LONGTEXT N_("Number of puzzle rows")
#define COLS_TEXT N_("Number of puzzle columns")
#define COLS_LONGTEXT N_("Number of puzzle columns")
#define BLACKSLOT_TEXT N_("Make one tile a black slot")
#define BLACKSLOT_LONGTEXT N_("Make one slot black. Other tiles can only be swapped with the black slot.")
vlc_module_begin
();
set_description
(
_
(
"Puzzle interactive game video filter"
)
);
...
...
@@ -72,6 +74,8 @@ vlc_module_begin();
ROWS_TEXT
,
ROWS_LONGTEXT
,
VLC_FALSE
);
add_integer_with_range
(
"puzzle-cols"
,
4
,
1
,
128
,
NULL
,
COLS_TEXT
,
COLS_LONGTEXT
,
VLC_FALSE
);
add_bool
(
"puzzle-black-slot"
,
0
,
NULL
,
BLACKSLOT_TEXT
,
BLACKSLOT_LONGTEXT
,
VLC_FALSE
);
set_callbacks
(
Create
,
Destroy
);
vlc_module_end
();
...
...
@@ -90,6 +94,8 @@ struct vout_sys_t
int
*
pi_order
;
int
i_selected
;
vlc_bool_t
b_finished
;
vlc_bool_t
b_blackslot
;
};
/*****************************************************************************
...
...
@@ -135,6 +141,24 @@ static void shuffle( vout_sys_t *p_sys )
}
p_sys
->
b_finished
=
finished
(
p_sys
);
}
while
(
p_sys
->
b_finished
==
VLC_TRUE
);
if
(
p_sys
->
b_blackslot
==
VLC_TRUE
)
{
for
(
i
=
0
;
i
<
p_sys
->
i_cols
*
p_sys
->
i_rows
;
i
++
)
{
if
(
p_sys
->
pi_order
[
i
]
==
(
p_sys
->
i_cols
-
1
)
*
p_sys
->
i_rows
+
1
)
{
p_sys
->
i_selected
=
i
;
break
;
}
}
}
else
{
p_sys
->
i_selected
=
-
1
;
}
printf
(
"selected: %d
\n
"
,
p_sys
->
i_selected
);
}
/*****************************************************************************
...
...
@@ -156,7 +180,7 @@ static int Create( vlc_object_t *p_this )
p_vout
->
p_sys
->
i_rows
=
config_GetInt
(
p_vout
,
"puzzle-rows"
);
p_vout
->
p_sys
->
i_cols
=
config_GetInt
(
p_vout
,
"puzzle-cols"
);
p_vout
->
p_sys
->
i_selected
=
-
1
;
p_vout
->
p_sys
->
b_blackslot
=
config_GetInt
(
p_vout
,
"puzzle-black-slot"
)
;
p_vout
->
p_sys
->
pi_order
=
NULL
;
shuffle
(
p_vout
->
p_sys
);
...
...
@@ -302,18 +326,33 @@ static void Render( vout_thread_t *p_vout, picture_t *p_pic )
i_row
*=
p_in
->
i_lines
/
i_rows
;
i_last_row
*=
p_in
->
i_lines
/
i_rows
;
for
(
;
i_row
<
i_last_row
;
i_row
++
,
i_orow
++
)
if
(
p_vout
->
p_sys
->
b_blackslot
==
VLC_TRUE
&&
i
==
p_vout
->
p_sys
->
i_selected
)
{
memcpy
(
p_out
->
p_pixels
+
i_row
*
i_pitch
+
i_col
*
i_pitch
/
i_cols
,
p_in
->
p_pixels
+
i_orow
*
i_pitch
+
i_ocol
*
i_pitch
/
i_cols
,
i_pitch
/
i_cols
);
uint8_t
color
=
(
i_plane
==
Y_PLANE
?
0x0
:
0x80
);
for
(
;
i_row
<
i_last_row
;
i_row
++
,
i_orow
++
)
{
memset
(
p_out
->
p_pixels
+
i_row
*
i_pitch
+
i_col
*
i_pitch
/
i_cols
,
color
,
i_pitch
/
i_cols
);
}
}
else
{
for
(
;
i_row
<
i_last_row
;
i_row
++
,
i_orow
++
)
{
memcpy
(
p_out
->
p_pixels
+
i_row
*
i_pitch
+
i_col
*
i_pitch
/
i_cols
,
p_in
->
p_pixels
+
i_orow
*
i_pitch
+
i_ocol
*
i_pitch
/
i_cols
,
i_pitch
/
i_cols
);
}
}
}
}
if
(
p_vout
->
p_sys
->
i_selected
!=
-
1
)
if
(
p_vout
->
p_sys
->
i_selected
!=
-
1
&&
p_vout
->
p_sys
->
b_blackslot
==
VLC_FALSE
)
{
plane_t
*
p_in
=
p_pic
->
p
+
Y_PLANE
;
plane_t
*
p_out
=
p_outpic
->
p
+
Y_PLANE
;
...
...
@@ -405,7 +444,8 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var,
{
p_vout
->
p_sys
->
i_selected
=
i_pos
;
}
else
if
(
p_vout
->
p_sys
->
i_selected
==
i_pos
)
else
if
(
p_vout
->
p_sys
->
i_selected
==
i_pos
&&
p_vout
->
p_sys
->
b_blackslot
==
VLC_FALSE
)
{
p_vout
->
p_sys
->
i_selected
=
-
1
;
}
...
...
@@ -418,7 +458,10 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var,
p_vout
->
p_sys
->
pi_order
[
p_vout
->
p_sys
->
i_selected
]
=
p_vout
->
p_sys
->
pi_order
[
i_pos
];
p_vout
->
p_sys
->
pi_order
[
i_pos
]
=
a
;
p_vout
->
p_sys
->
i_selected
=
-
1
;
if
(
p_vout
->
p_sys
->
b_blackslot
==
VLC_TRUE
)
p_vout
->
p_sys
->
i_selected
=
i_pos
;
else
p_vout
->
p_sys
->
i_selected
=
-
1
;
p_vout
->
p_sys
->
b_finished
=
finished
(
p_vout
->
p_sys
);
}
...
...
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