[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