[vlc-devel] commit: Add some video-filter2 effects to wxwidget extrapanel ( Jean-Paul Saman )
git version control
git at videolan.org
Wed Jun 18 12:04:13 CEST 2008
vlc | branch: master | Jean-Paul Saman <jpsaman at videolan.org> | Sun Jun 15 20:46:47 2008 +0200| [e5127326704fa04d68ae39c807e1d5e738a854dc]
Add some video-filter2 effects to wxwidget extrapanel
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e5127326704fa04d68ae39c807e1d5e738a854dc
---
modules/gui/wxwidgets/extrapanel.cpp | 90 +++++++++++++++++++++++++++++-----
1 files changed, 78 insertions(+), 12 deletions(-)
diff --git a/modules/gui/wxwidgets/extrapanel.cpp b/modules/gui/wxwidgets/extrapanel.cpp
index 2f8fefc..deb1464 100644
--- a/modules/gui/wxwidgets/extrapanel.cpp
+++ b/modules/gui/wxwidgets/extrapanel.cpp
@@ -51,7 +51,7 @@ static int IntfPreampCallback( vlc_object_t *, char const *,
static void ChangeFiltersString( intf_thread_t *, aout_instance_t *,
char *, bool );
static void ChangeVFiltersString( intf_thread_t *, char *, bool );
-
+static void ChangeVFilters2String( intf_thread_t *, char *, bool );
/* IDs for the controls and the menu commands */
enum
@@ -144,17 +144,20 @@ struct filter {
char *psz_filter;
char *psz_name;
char *psz_help;
+ bool b_vfilter2;
};
static const struct filter vfilters[] =
{
- { "clone", N_("Image clone"), N_("Creates several clones of the image") },
- { "distort", N_("Distortion"), N_("Adds distortion effects") },
- { "invert", N_("Image inversion") , N_("Inverts the colors of the image") },
- { "motionblur", N_("Blurring"), N_("Adds motion blurring to the image") },
- { "transform", N_("Transformation"), N_("Rotates or flips the image") },
- { "magnify", N_("Magnify"), N_("Magnifies part of the image") },
- { "puzzle", N_("Puzzle"), N_("Turns the image into a puzzle") },
+ { "clone", N_("Image clone"), N_("Creates several clones of the image"), false },
+ { "gradient", N_("Cartoon effect"), N_("Gradient effects (cartoon) on the image"), true },
+ { "invert", N_("Image inversion") , N_("Inverts the colors of the image"), true },
+ { "motionblur", N_("Blurring"), N_("Adds motion blurring to the image"), true },
+ { "ripple", N_("Water effect"), N_("Adds water effect to the image"), true },
+ { "wave", N_("Wave effect"), N_("Adds wave effect to the image"), true },
+ { "transform", N_("Transformation"), N_("Rotates or flips the image"), false },
+ { "magnify", N_("Magnify"), N_("Magnifies part of the image"), false },
+ { "puzzle", N_("Puzzle"), N_("Turns the image into a puzzle"), false },
{ NULL, NULL, NULL } /* Do not remove this line */
};
@@ -993,8 +996,12 @@ void ExtraPanel::OnSelectFilter(wxCommandEvent& event)
int i_filter = event.GetId() - Filter0_Event ;
if( vfilters[i_filter].psz_filter )
{
- ChangeVFiltersString( p_intf, vfilters[i_filter].psz_filter ,
- event.IsChecked() ? true : false );
+ if( vfilters[i_filter].b_vfilter2 )
+ ChangeVFilters2String( p_intf, vfilters[i_filter].psz_filter ,
+ event.IsChecked() ? true : false );
+ else
+ ChangeVFiltersString( p_intf, vfilters[i_filter].psz_filter ,
+ event.IsChecked() ? true : false );
}
}
@@ -1049,9 +1056,8 @@ void ExtraPanel::CheckAout()
}
}
-
static void ChangeVFiltersString( intf_thread_t *p_intf,
- char *psz_name, bool b_add )
+ char *psz_name, bool b_add )
{
vout_thread_t *p_vout;
char *psz_parser, *psz_string;
@@ -1111,6 +1117,66 @@ static void ChangeVFiltersString( intf_thread_t *p_intf,
free( psz_string );
}
+static void ChangeVFilters2String( intf_thread_t *p_intf,
+ char *psz_name, bool b_add )
+{
+ vout_thread_t *p_vout;
+ char *psz_parser, *psz_string;
+
+ psz_string = config_GetPsz( p_intf, "video-filter" );
+
+ if( !psz_string ) psz_string = strdup("");
+
+ psz_parser = strstr( psz_string, psz_name );
+
+ if( b_add )
+ {
+ if( !psz_parser )
+ {
+ psz_parser = psz_string;
+ asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s",
+ psz_string, psz_name );
+ free( psz_parser );
+ }
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ if( psz_parser )
+ {
+ memmove( psz_parser, psz_parser + strlen(psz_name) +
+ (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ),
+ strlen(psz_parser + strlen(psz_name)) + 1 );
+
+ /* Remove trailing : : */
+ if( *(psz_string+strlen(psz_string ) -1 ) == ':' )
+ {
+ *(psz_string+strlen(psz_string ) -1 ) = '\0';
+ }
+ }
+ else
+ {
+ free( psz_string );
+ return;
+ }
+ }
+ /* Vout is not kept, so put that in the config */
+ config_PutPsz( p_intf, "video-filter", psz_string );
+
+ /* Try to set on the fly */
+ p_vout = (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,
+ FIND_ANYWHERE );
+ if( p_vout )
+ {
+ var_SetString( p_vout, "video-filter", psz_string );
+ vlc_object_release( p_vout );
+ }
+ free( psz_string );
+}
+
static void ChangeFiltersString( intf_thread_t *p_intf,
aout_instance_t * p_aout,
More information about the vlc-devel
mailing list