emotion: test proxy of videos with -R/--reflex option.
authorbarbieri <barbieri>
Thu, 1 Sep 2011 21:45:04 +0000 (21:45 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 1 Sep 2011 21:45:04 +0000 (21:45 +0000)
Emotion explores some different paths in Evas pipeline as it changes
image pixels frequently and sometimes uses different
colorspaces. Let's change if it's all working fine using a nice proxy
effect that mirrors the playing video.

emotion_test --reflex <video.avi>

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/emotion@63071 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

data/theme.edc
src/bin/emotion_test_main.c

index 2eb4f1d..63e732d 100644 (file)
@@ -1176,5 +1176,492 @@ collections {
         }
       }
    }
+
+   group {
+      name: "video_controller/reflex";
+      parts {
+        // need swallow parts:
+        // "video_swallow"
+        // 
+        // need txt parts:
+        // "video_speed_txt"
+        // "video_progress_txt"
+        // 
+        // need dragables:
+        // "video_progress" horizontal
+        // "video_speed" vertical
+        part {
+           name: "video_swallow";
+           mouse_events: 0;
+           type: SWALLOW;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_left";
+                 relative: 1.0  0.0;
+                 offset:   -8   23;
+              }
+              rel2 {
+                 to:       "video_frame_right";
+                 relative: 0.0  1.0;
+                 offset:   7    -25;
+              }
+           }
+        }
+
+        part {
+                name: "swallow_center";
+                type: RECT;
+                description {
+                        state: "default" 0.0;
+                        visible: 0;
+                        rel1 {
+                                to: "video_swallow";
+                                relative: 0.5 1.0;
+                        }
+                        rel2 {
+                                to: "video_swallow";
+                                relative: 0.5 1.0;
+                        }
+                }
+        }
+        part {
+                name: "swallow_mirror";
+                type: PROXY;
+                mouse_events: 0;
+                description {
+                        state: "default" 0.0;
+                        source: "video_swallow";
+                        rel1 {
+                                to: "video_swallow";
+                        }
+                        rel2 {
+                                to: "video_swallow";
+                        }
+                        perspective {
+                                zplane: 0;
+                                focal: 1000;
+                        }
+                        color: 255 255 255 96;
+                        map {
+                                on: 1;
+                                smooth: 0;
+                                alpha: 1;
+                                rotation {
+                                        center: "swallow_center";
+                                        x: 100;
+                                }
+                        }
+                }
+        }
+
+        part {
+           name: "video_frame_left";
+           mouse_events: 0;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 relative: 0.0  0.0;
+                 offset:   0    0;
+              }
+              rel2 {
+                 relative: 0.0  1.0;
+                 offset:   32   -1;
+              }
+              image {
+              border: 0 0 33 33;
+                 normal: "video_frame_left.png";
+              }
+           }
+        }
+        part {
+           name: "video_frame_right";
+           mouse_events: 0;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 relative: 1.0  0.0;
+                 offset:   -32  0;
+              }
+              rel2 {
+                 relative: 1.0  1.0;
+                 offset:   -1   -1;
+              }
+              image {
+              border: 0 0 33 33;
+                 normal: "video_frame_right.png";
+              }
+           }
+        }
+        part {
+           name: "video_frame_top";
+           mouse_events: 0;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_left";
+                 relative: 1.0  0.0;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_frame_right";
+                 relative: 0.0  0.0;
+                 offset:   -1   31;
+              }
+              image {
+                 normal: "video_frame_top.png";
+              }
+           }
+        }
+        part {
+           name: "video_frame_bottom";
+           mouse_events: 0;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_left";
+                 relative: 1.0  1.0;
+                 offset:   0    -32;
+              }
+              rel2 {
+                 to:       "video_frame_right";
+                 relative: 0.0  1.0;
+                 offset:   -1   -1;
+              }
+              image {
+                 normal: "video_frame_bottom.png";
+              }
+           }
+        }
+        part {
+           name: "video_speed_txt";
+           type: TEXT;
+           mouse_events: 0;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_bottom";
+                 relative: 0.0  0.0;
+                 offset:   0    8;
+              }
+              rel2 {
+                 to:       "video_frame_bottom";
+                 relative: 1.0  1.0;
+                 offset:   -1   -13;
+              }
+              color:       0 0 0 255;
+              text {
+                 text: "Video Speed";
+                 font: "Sans";
+                 size: 6;
+                 align: 1.0 0.5;
+              };
+           }
+        }
+        part {
+           name: "video_progress_confine";
+           mouse_events: 0;
+           type:  RECT;
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   1 18;
+              align: 0.5 0.0;
+              rel1 {
+                 to:       "video_frame_left";
+                 relative: 1.0  1.0;
+                 offset:   0    -25;
+              }
+              rel2 {
+                 to:       "video_frame_right";
+                 relative: 0.0  1.0;
+                 offset:   -1   -25;
+              }
+              color: 0 0 0 0;
+           }
+        }
+        part {
+           name: "video_progress";
+           type: RECT;
+           mouse_events: 1;
+           dragable {
+               x:        1 1 0;
+              y:        0 0 0;
+              confine: "video_progress_confine";
+           }
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   34 18;
+              rel1 {
+                 to:       "video_progress_confine";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_progress_confine";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              color:       0 0 0 0;
+           }
+        }
+        part {
+           name: "video_progress_img";
+           mouse_events: 0;
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   42 26;
+              rel1 {
+                 to:       "video_progress";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_progress";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              image {
+                 normal: "h_slider.png";
+              }
+           }
+        }
+        part {
+           name: "video_speed_confine";
+           mouse_events: 0;
+           type:  RECT;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_left";
+                 relative: 1.0  0.0;
+                 offset:   0    24;
+              }
+              rel2 {
+                 to:       "video_frame_left";
+                 relative: 1.0  1.0;
+                 offset:   48   -49;
+              }
+              color: 0 0 0 0;
+           }
+        }
+        part {
+           name: "video_speed";
+           mouse_events: 1;
+           dragable {
+               x:        0 0 0;
+              y:        -1 1 0;
+              confine: "video_speed_confine";
+           }
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   24 24;
+              rel1 {
+                 to:       "video_speed_confine";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_speed_confine";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              image {
+                 normal: "knob.png";
+              }
+           }
+        }
+        part {
+           name: "video_play";
+           mouse_events: 1;
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   24 24;
+              rel1 {
+                 to:       "video_frame_bottom";
+                 relative: 0.0  0.5;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_frame_bottom";
+                 relative: 0.0  0.5;
+                 offset:   0    0;
+              }
+              image {
+                 normal: "knob.png";
+              }
+           }
+        }
+        part {
+           name: "video_pause";
+           mouse_events: 1;
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   24 24;
+              rel1 {
+                 to:       "video_frame_bottom";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_frame_bottom";
+                 relative: 0.5  0.5;
+                 offset:   0    0;
+              }
+              image {
+                 normal: "knob.png";
+              }
+           }
+        }
+        part {
+           name: "video_stop";
+           mouse_events: 1;
+           description {
+              state: "default" 0.0;
+                  fixed: 1 1;
+              min:   24 24;
+              rel1 {
+                 to:       "video_frame_bottom";
+                 relative: 1.0  0.5;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_frame_bottom";
+                 relative: 1.0  0.5;
+                 offset:   0    0;
+              }
+              image {
+                 normal: "knob.png";
+              }
+           }
+        }
+        part {
+           name: "video_mover";
+           mouse_events: 1;
+           type:  RECT;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_top";
+                 relative: 0.0  0.0;
+                 offset:   0    0;
+              }
+              rel2 {
+                 to:       "video_frame_top";
+                 relative: 1.0  1.0;
+                 offset:   -1   -1;
+              }
+              color: 255 20 20 20;
+           }
+        }
+        part {
+           name: "video_resizer";
+           mouse_events: 1;
+           type:  RECT;
+           description {
+              state: "default" 0.0;
+              rel1 {
+                 to:       "video_frame_right";
+                 relative: 0.0  1.0;
+                 offset:   0    -31;
+              }
+              rel2 {
+                 to:       "video_frame_right";
+                 relative: 1.0  1.0;
+                 offset:   -1   -1;
+              }
+              color: 20 20 255 20;
+           }
+        }
+        part {
+           name: "video_progress_txt";
+           type: TEXT;
+           mouse_events: 0;
+           effect: OUTLINE;
+           description {
+              state: "default" 0.0;
+              align: 1.0 1.0;
+              fixed: 1 1;
+              rel1 {
+                 relative: 1.0  1.0;
+                 offset:   -2    -2;
+              }
+              rel2 {
+                 relative: 1.0  1.0;
+                 offset:   -2   -2;
+              }
+              color:       255 255 255 255;
+              color2:      0 0 0 255;
+              text {
+                 text: "XX:XX:XX / XX:XX:XX";
+                 font: "Sans";
+                 size: 10;
+                 align: 1.0 1.0;
+                 min: 1 1;
+              };
+           }
+        }
+      }
+      programs {
+        // emit signals:
+        // "video_control" "play"
+        // "video_control" "pause"
+        // "video_control" "stop"
+        // "drag" "video_progress"
+        // "drag" "video_speed"
+        // 
+        // get signals:
+        // "video_state" "play"
+        // "video_state" "pause"
+        // "video_state" "stop"
+        program {
+           name: "video_play";
+           signal: "mouse,down,1";
+           source: "video_play";
+           action:     SIGNAL_EMIT "video_control" "play";
+        }
+        program {
+           name: "video_pause";
+           signal: "mouse,down,1";
+           source: "video_pause";
+           action:     SIGNAL_EMIT "video_control" "pause";
+        }
+        program {
+           name: "video_stop";
+           signal: "mouse,down,1";
+           source: "video_stop";
+           action:     SIGNAL_EMIT "video_control" "stop";
+        }
+        program {
+           name: "video_move_start";
+           signal: "mouse,down,*";
+           source: "video_mover";
+           action:     SIGNAL_EMIT "frame_move" "start";
+        }
+        program {
+           name: "video_move_stop";
+           signal: "mouse,up,*";
+           source: "video_mover";
+           action:     SIGNAL_EMIT "frame_move" "stop";
+        }
+        program {
+           name: "video_resize_start";
+           signal: "mouse,down,*";
+           source: "video_resizer";
+           action:     SIGNAL_EMIT "frame_resize" "start";
+        }
+        program {
+           name: "video_resize_stop";
+           signal: "mouse,up,*";
+           source: "video_resizer";
+           action:     SIGNAL_EMIT "frame_resize" "stop";
+        }
+      }
+   }
 #endif   
 }
index f7902a2..e64295f 100644 (file)
@@ -15,7 +15,7 @@ static const Ecore_Getopt options = {
    "emotion_test",
    "%prog [options] <filename>",
    "1.0.0",
-   "(C) 2010 Enlightenment",
+   "(C) 2011 Enlightenment",
    "BSD\nThis is a 3 clause bsd bla bla",
    "a simple test program for emotion.",
    1,
@@ -28,6 +28,7 @@ static const Ecore_Getopt options = {
       ECORE_GETOPT_STORE_STR('b', "backend", "backend to use"),
       ECORE_GETOPT_STORE_INT('v', "vis", "visualization type"),
       ECORE_GETOPT_COUNT('v', "verbose", "be more verbose"),
+      ECORE_GETOPT_STORE_TRUE('R', "reflex", "show video reflex effect"),
       ECORE_GETOPT_VERSION('V', "version"),
       ECORE_GETOPT_COPYRIGHT('R', "copyright"),
       ECORE_GETOPT_LICENSE('L', "license"),
@@ -64,6 +65,7 @@ static int          starth     = 600;
 
 static Eina_List   *video_objs = NULL;
 static Emotion_Vis  vis        = EMOTION_VIS_NONE;
+static unsigned char reflex    = 0;
 
 static void
 main_resize(Ecore_Evas *ee)
@@ -582,7 +584,10 @@ init_video_object(const char *module_filename, const char *filename)
 
    oe = edje_object_add(evas);
    evas_object_data_set(oe, "frame_data", fd);
-   edje_object_file_set(oe, PACKAGE_DATA_DIR"/data/theme.edj", "video_controller");
+   if (reflex)
+     edje_object_file_set(oe, PACKAGE_DATA_DIR"/data/theme.edj", "video_controller/reflex");
+   else
+     edje_object_file_set(oe, PACKAGE_DATA_DIR"/data/theme.edj", "video_controller");
    edje_extern_object_min_size_set(o, w, h);
    edje_object_part_swallow(oe, "video_swallow", o);
    edje_object_size_min_calc(oe, &w, &h);
@@ -673,6 +678,7 @@ main(int argc, char **argv)
       ECORE_GETOPT_VALUE_STR(backend),
       ECORE_GETOPT_VALUE_INT(visual),
       ECORE_GETOPT_VALUE_INT(verbose),
+      ECORE_GETOPT_VALUE_BOOL(reflex),
       ECORE_GETOPT_VALUE_NONE,
       ECORE_GETOPT_VALUE_NONE,
       ECORE_GETOPT_VALUE_NONE,