From 86a4a3704a714543c235b743c5fd399825e9f5d7 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 20 Jan 2014 20:34:48 +0900 Subject: [PATCH] rage - initial import of working code --- .arcconfig | 4 + .gitignore | 48 + AUTHORS | 1 + COPYING | 25 + ChangeLog | 0 INSTALL | 11 + Makefile.am | 34 + NEWS | 0 README | 24 + TODO | 19 + autogen.sh | 16 + configure.ac | 80 ++ data/Makefile.am | 3 + data/desktop/Makefile.am | 6 + data/desktop/rage.desktop | 11 + data/icons/Makefile.am | 6 + data/icons/rage.png | Bin 0 -> 57485 bytes data/themes/Makefile.am | 28 + data/themes/default.edc | 1075 +++++++++++++++++ data/themes/images/Makefile.am | 29 + data/themes/images/glow_exclam.png | Bin 0 -> 2185 bytes .../horizontal_separated_bar_small_glow.png | Bin 0 -> 309 bytes data/themes/images/icon_arrow_right.png | Bin 0 -> 2015 bytes data/themes/images/icon_eject.png | Bin 0 -> 2542 bytes data/themes/images/icon_forward.png | Bin 0 -> 2850 bytes data/themes/images/icon_mute.png | Bin 0 -> 4369 bytes data/themes/images/icon_next.png | Bin 0 -> 3232 bytes data/themes/images/icon_next2.png | Bin 0 -> 7594 bytes data/themes/images/icon_pause.png | Bin 0 -> 2168 bytes data/themes/images/icon_pause2.png | Bin 0 -> 6680 bytes data/themes/images/icon_play.png | Bin 0 -> 2134 bytes data/themes/images/icon_play2.png | Bin 0 -> 7009 bytes data/themes/images/icon_prev.png | Bin 0 -> 3212 bytes data/themes/images/icon_prev2.png | Bin 0 -> 7659 bytes data/themes/images/icon_refresh.png | Bin 0 -> 6452 bytes data/themes/images/icon_rewind.png | Bin 0 -> 2837 bytes data/themes/images/icon_spanner.png | Bin 0 -> 3959 bytes data/themes/images/icon_spanner2.png | Bin 0 -> 8969 bytes data/themes/images/icon_stop.png | Bin 0 -> 1821 bytes data/themes/images/icon_volume.png | Bin 0 -> 5142 bytes data/themes/images/icon_volume2.png | Bin 0 -> 8787 bytes data/themes/images/pm_fill.png | Bin 0 -> 254 bytes data/themes/images/pm_overlay.png | Bin 0 -> 8673 bytes data/themes/images/pm_shadow.png | Bin 0 -> 4010 bytes data/themes/images/pos_indicator.png | Bin 0 -> 931 bytes data/themes/images/pos_indicator_big.png | Bin 0 -> 1669 bytes data/themes/images/vgrad_shadow_bi.png | Bin 0 -> 1647 bytes m4/ac_attribute.m4 | 47 + m4/efl_beta.m4 | 5 + m4/efl_binary.m4 | 71 ++ m4/efl_eo.m4 | 6 + pkgbuild/PKGBUILD.in | 33 + rage.spec.in | 48 + src/Makefile.am | 2 + src/bin/Makefile.am | 14 + src/bin/main.c | 1013 ++++++++++++++++ src/bin/main.h | 6 + src/bin/video.c | 828 +++++++++++++ src/bin/video.h | 47 + 59 files changed, 3540 insertions(+) create mode 100644 .arcconfig create mode 100644 .gitignore create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100644 TODO create mode 100755 autogen.sh create mode 100644 configure.ac create mode 100644 data/Makefile.am create mode 100644 data/desktop/Makefile.am create mode 100644 data/desktop/rage.desktop create mode 100644 data/icons/Makefile.am create mode 100644 data/icons/rage.png create mode 100644 data/themes/Makefile.am create mode 100644 data/themes/default.edc create mode 100644 data/themes/images/Makefile.am create mode 100644 data/themes/images/glow_exclam.png create mode 100644 data/themes/images/horizontal_separated_bar_small_glow.png create mode 100644 data/themes/images/icon_arrow_right.png create mode 100644 data/themes/images/icon_eject.png create mode 100644 data/themes/images/icon_forward.png create mode 100644 data/themes/images/icon_mute.png create mode 100644 data/themes/images/icon_next.png create mode 100644 data/themes/images/icon_next2.png create mode 100644 data/themes/images/icon_pause.png create mode 100644 data/themes/images/icon_pause2.png create mode 100644 data/themes/images/icon_play.png create mode 100644 data/themes/images/icon_play2.png create mode 100644 data/themes/images/icon_prev.png create mode 100644 data/themes/images/icon_prev2.png create mode 100644 data/themes/images/icon_refresh.png create mode 100644 data/themes/images/icon_rewind.png create mode 100644 data/themes/images/icon_spanner.png create mode 100644 data/themes/images/icon_spanner2.png create mode 100644 data/themes/images/icon_stop.png create mode 100644 data/themes/images/icon_volume.png create mode 100644 data/themes/images/icon_volume2.png create mode 100644 data/themes/images/pm_fill.png create mode 100644 data/themes/images/pm_overlay.png create mode 100644 data/themes/images/pm_shadow.png create mode 100644 data/themes/images/pos_indicator.png create mode 100644 data/themes/images/pos_indicator_big.png create mode 100644 data/themes/images/vgrad_shadow_bi.png create mode 100644 m4/ac_attribute.m4 create mode 100644 m4/efl_beta.m4 create mode 100644 m4/efl_binary.m4 create mode 100644 m4/efl_eo.m4 create mode 100644 pkgbuild/PKGBUILD.in create mode 100644 rage.spec.in create mode 100644 src/Makefile.am create mode 100644 src/bin/Makefile.am create mode 100644 src/bin/main.c create mode 100644 src/bin/main.h create mode 100644 src/bin/video.c create mode 100644 src/bin/video.h diff --git a/.arcconfig b/.arcconfig new file mode 100644 index 0000000..6a4b158 --- /dev/null +++ b/.arcconfig @@ -0,0 +1,4 @@ +{ + "project_id" : "rage", + "conduit_uri" : "https://phab.enlightenment.org/" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fac1da2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,48 @@ +*~ +*.o +*.swo +*.swp +/Makefile +/Makefile.in +/aclocal.m4 +/compile +/config.log +/config.status +/configure +/depcomp +/install-sh +/ltmain.sh +/missing +/stamp-h1 +/rage_config.h +/rage_config.h.in +/rage.spec +/autom4te.cache/ +/data/Makefile +/data/Makefile.in +/data/desktop/Makefile +/data/desktop/Makefile.in +/data/icons/Makefile +/data/icons/Makefile.in +/data/images/Makefile +/data/images/Makefile.in +/data/themes/Makefile +/data/themes/Makefile.in +/data/themes/default.edj +/data/themes/images/Makefile +/data/themes/images/Makefile.in +/m4/libtool.m4 +/m4/ltoptions.m4 +/m4/ltsugar.m4 +/m4/ltversion.m4 +/m4/lt~obsolete.m4 +/src/Makefile +/src/Makefile.in +/src/bin/.deps/ +/src/bin/Makefile +/src/bin/Makefile.in +/src/bin/rage +pkgbuild/PKGBUILD +pkgbuild/pkg +pkgbuild/src +pkgbuild/*.tar.xz diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..b9a9404 --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Carsten Haitzler diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..198ac3d --- /dev/null +++ b/COPYING @@ -0,0 +1,25 @@ +Copyright notice for Terminology: + +Copyright (C) 2014 Carsten Haitzler and various contributors (see AUTHORS) + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..f67815a --- /dev/null +++ b/INSTALL @@ -0,0 +1,11 @@ +COMPILING and INSTALLING: + +If you got a official release tar archive do: + ./configure + +Then to compile: + make + +To install (run this as root, or the user who handles installs): + make install + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..ccc377d --- /dev/null +++ b/Makefile.am @@ -0,0 +1,34 @@ +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = src data + +MAINTAINERCLEANFILES = \ +Makefile.in \ +$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \ +$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \ +aclocal.m4 \ +config.guess \ +rage_config.h.in \ +config.sub \ +configure \ +compile \ +depcomp \ +install-sh \ +ltconfig \ +ltmain.sh \ +missing \ +mkinstalldirs \ +stamp-h.in \ +stamp-h \ +m4/libtool.m4 \ +m4/lt~obsolete.m4 \ +m4/ltoptions.m4 \ +m4/ltsugar.m4 \ +m4/ltversion.m4 + +EXTRA_DIST = README AUTHORS COPYING autogen.sh rage.spec pkgbuild/PKGBUILD + +.PHONY: doc + +doc: + @echo "Empty doc target until we have real documentation." diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README new file mode 100644 index 0000000..6e90c53 --- /dev/null +++ b/README @@ -0,0 +1,24 @@ +Rage 0.1.0 + +****************************************************************************** + + FOR ANY ISSUES PLEASE EMAIL: + enlightenment-devel@lists.sourceforge.net + +****************************************************************************** + +Requirements: +------------- + + * elementary (>= 1.9.0) + * eina (>= 1.9.0) + * eet (>= 1.9.0) + * evas (>= 1.9.0) + * ecore (>= 1.9.0) + * edje (>= 1.9.0) + * emotion (>= 1.9.0) + * ecore-imf (>= 1.9.0) + * ecore-imf-evas (>= 1.9.0) + * ecore-input (>= 1.9.0) + * ethumb (>= 1.9.0) + diff --git a/TODO b/TODO new file mode 100644 index 0000000..12836a5 --- /dev/null +++ b/TODO @@ -0,0 +1,19 @@ +* volume status display when changed (slider/image/percentage) +* elm gesture drag to left/right for forward/rewind +* elm gesture drag up/down for prev/next +* emotion engine selection options +* timeline thumbnails on position slider +* playlist display + selection from playlist (on left?) +* right click control panel (ala terminology) +* about display/popup (from panel?) +* mouse wheel for forward/rewind and/or prev/next and/or volume up/down +* audio channel list/selection +* spu channel list/selection +* video channel list/selection +* handle non-seekable content (eg streams) +* prefer gl engine (needs wl/x11 independent preference selection) +* cmdline options +* add subtitle file cmdline +* loop all option +* show busy anim until opened cb or failure +* quality option (smooth) diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..31ccda0 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +rm -rf autom4te.cache +rm -f aclocal.m4 ltmain.sh + +touch README + +echo "Running aclocal..." ; aclocal -I m4 $ACLOCAL_FLAGS || exit 1 +echo "Running autoheader..." ; autoheader || exit 1 +echo "Running autoconf..." ; autoconf || exit 1 +echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1 +echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1 + +if [ -z "$NOCONFIGURE" ]; then + ./configure "$@" +fi diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..c1db3de --- /dev/null +++ b/configure.ac @@ -0,0 +1,80 @@ +dnl Process this file with autoconf to produce a configure script. + +# get rid of that stupid cache mechanism +rm -f config.cache + +AC_INIT([rage], [0.1.0], [enlightenment-devel@lists.sourceforge.net]) +AC_PREREQ([2.60]) +AC_CONFIG_SRCDIR([configure.ac]) +AC_CONFIG_MACRO_DIR([m4]) + +AC_CONFIG_HEADERS([rage_config.h]) + +AM_INIT_AUTOMAKE([1.6 dist-bzip2]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +AC_USE_SYSTEM_EXTENSIONS +AC_PROG_CC +AM_PROG_CC_C_O +AC_C___ATTRIBUTE__ + +efl_version="1.8.99" +AC_SUBST(efl_version) + +requirements="\ + elementary >= ${efl_version} \ + eina >= ${efl_version} \ + eet >= ${efl_version} \ + evas >= ${efl_version} \ + ecore >= ${efl_version} \ + ecore-evas >= ${efl_version} \ + ecore-file >= ${efl_version} \ + edje >= ${efl_version} \ + emotion >= ${efl_version} \ + ecore-input >= ${efl_version} \ + ecore-imf >= ${efl_version} \ + ecore-imf-evas >= ${efl_version} \ + ecore-ipc >= ${efl_version} \ + efreet >= ${efl_version} \ + ethumb_client >= ${efl_version} \ + " + +EFL_ENABLE_EO_API_SUPPORT +EFL_ENABLE_BETA_API_SUPPORT + +PKG_CHECK_MODULES([RAGE], [${requirements}]) + +EFL_WITH_BIN([edje], [edje-cc], [edje_cc]) + +AC_CONFIG_FILES([ +Makefile +rage.spec +src/Makefile +src/bin/Makefile +data/Makefile +data/desktop/Makefile +data/icons/Makefile +data/themes/Makefile +data/themes/images/Makefile +pkgbuild/PKGBUILD +]) + +AC_OUTPUT + +##################################################################### +## Info + +echo +echo +echo +echo "------------------------------------------------------------------------" +echo "$PACKAGE $VERSION" +echo "------------------------------------------------------------------------" +echo +echo "Compilation................: make (or gmake)" +echo " CPPFLAGS.................: $CPPFLAGS" +echo " CFLAGS...................: $CFLAGS" +echo " LDFLAGS..................: $LDFLAGS" +echo +echo "Installation...............: make install (as root if needed, with 'su' or 'sudo')" +echo " prefix...................: $prefix" diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 0000000..4379365 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,3 @@ +MAINTAINERCLEANFILES = Makefile.in +SUBDIRS = desktop icons themes + diff --git a/data/desktop/Makefile.am b/data/desktop/Makefile.am new file mode 100644 index 0000000..bce3b5b --- /dev/null +++ b/data/desktop/Makefile.am @@ -0,0 +1,6 @@ +MAINTAINERCLEANFILES = Makefile.in +filesdir = $(datadir)/applications +files_DATA = \ +rage.desktop + +EXTRA_DIST = $(files_DATA) diff --git a/data/desktop/rage.desktop b/data/desktop/rage.desktop new file mode 100644 index 0000000..ad0f5f7 --- /dev/null +++ b/data/desktop/rage.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +#Encoding=UTF-8 +Type=Application +Name=Rage +GenericName=Video Player +Comment=Video player +Exec=rage +Icon=rage +Categories=AudioVideo;Player; +StartupWMClass=rage +MimeType=application/mxf;application/ogg;application/ram;application/sdp;application/smil;application/smil+xml;application/vnd.ms-wpl;application/vnd.rn-realmedia;application/x-extension-m4a;application/x-extension-mp4;application/x-flac;application/x-flash-video;application/x-matroska;application/x-netshow-channel;application/x-ogg;application/x-quicktime-media-link;application/x-quicktimeplayer;application/x-shorten;application/x-smil;application/xspf+xml;audio/3gpp;audio/ac3;audio/AMR;audio/AMR-WB;audio/basic;audio/midi;audio/mp4;audio/mpeg;audio/mpegurl;audio/ogg;audio/prs.sid;audio/vnd.rn-realaudio;audio/x-aiff;audio/x-ape;audio/x-flac;audio/x-gsm;audio/x-it;audio/x-m4a;audio/x-matroska;audio/x-mod;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;audio/x-ms-wma;audio/x-musepack;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-realaudio;audio/x-pn-realaudio-plugin;audio/x-pn-wav;audio/x-pn-windows-acm;audio/x-realaudio;audio/x-real-audio;audio/x-sbc;audio/x-scpls;audio/x-speex;audio/x-tta;audio/x-wav;audio/x-wavpack;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-xm;image/vnd.rn-realpix;image/x-pict;misc/ultravox;text/google-video-pointer;text/x-google-video-pointer;video/3gpp;video/dv;video/fli;video/flv;video/mp2t;video/mp4;video/mp4v-es;video/mpeg;video/msvideo;video/ogg;video/quicktime;video/vivo;video/vnd.divx;video/vnd.rn-realvideo;video/vnd.vivo;video/webm;video/x-anim;video/x-avi;video/x-flc;video/x-fli;video/x-flic;video/x-flv;video/x-m4v;video/x-matroska;video/x-mpeg;video/x-ms-asf;video/x-ms-asx;video/x-msvideo;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvx;video/x-nsv;video/x-ogm+ogg;video/x-theora+ogg;video/x-totem-stream;x-content/video-dvd;x-content/video-vcd;x-content/video-svcd; diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am new file mode 100644 index 0000000..1f12837 --- /dev/null +++ b/data/icons/Makefile.am @@ -0,0 +1,6 @@ +MAINTAINERCLEANFILES = Makefile.in +filesdir = $(datadir)/icons +files_DATA = \ +rage.png + +EXTRA_DIST = $(files_DATA) diff --git a/data/icons/rage.png b/data/icons/rage.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c902db4c468ea4d16e9c9e9f40db089ae3ce5f GIT binary patch literal 57485 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 Hu0mjf$K!*Q literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_arrow_right.png b/data/themes/images/icon_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..28d73998b0588f8bafd458ea606cf39303c11839 GIT binary patch literal 2015 zcmV<52O#)~P)yX3Q!T0DKA=r^aWD1h_q%n^xu*-} zF^_r7V;=K(%aGYm;b+VtJ_qBd%qg8x!ySeHv zUVqa~h%ys+4Y=_(vVRlFmXZ9wFXrk$#RoU>rAPP{SeHSz5Afp#-Uu0w(W?&$#SqCV z^ysQVf~6CDoM6}b*n7*^<~H6%h&l`Fjz`GDe-Z{eBzldci1dd}e~>U3I{hNjFNUOx z*GZOA!uB>{4U~17Fu50KKEXL+C|DHb*A5F9_uPppphuTxKOEt&Oyfj6uG&g6s{^{gPx6(o$IneTK0DhhK`Ypu(RlkO2q5NUTJA36c$w z#R+r?VyhPBeb}wgtU`NAut2K9z)G&vLIo3k0{jZ+hQf*~*Kw{|!7vRBd`P;OcgN1{ z0Bp3e|8JxiB1J^CB5~+NVc^2hPdv3;_)wi+xG@sr8?IazY-Z@lePye7Z5;tj#fel&@-hkUf;U-)aL1j0s&`36fqEq z-~m#g7{X;=6I)ea_NYcnu77nX07_;gm^gsN_UlbIRL(;on7&Z&YhDBx9Zn`C=SCK)iupEAa6uej9vq9cqa0qJ>`#(cRe;12<5`9lUpdTY?XEVEYl=UL|g>A6vlR zU4W-l?9Q4Ch;Uy6M#RjqkYZ(pEtL4^+t`C09Efkdgq(LV;hbTv;oLE=Yl$i>xwF_e z`mXez212&n^ysW3Z5JLAIvx#;4+NqcpJ*WWND%^s^(lLYRKv&EgW+scs9gtmT;+iu zi1Lv;S0u0y6Z$y4G&H?Ak6v_&wW&hw6sR+*JSPR-yUIY_flLC02dY8cN@xA2_`9vZSAnhJ{@soHB0TrVVW`Lv$|4fe zN!?O>+?U;AHqv>34T;YkHbvQWXI}yni)1pPEElNuZV}&GZhEojnaG#uZ6R!^@I;JV zbM{3z$dz1-awQT6JB|A8;%(=`+EvK`h_EHjCe9O!>;TVHcNW%oaaA6Z+?8*~ScFoua4$4I`pv;!3R#%C$Qr}E-;nSybrvbD8Zv$`O8M_|X z6POf{OdeA{?-OrrW1F1(`9#+hI7@i3fj6Nz=u_Q#O58e!j(_c-Z8vbn<~+S|8Xw%L7ol3GYGx`q#AWWr8RoI2WkLpyf?-nm-% zRMq5l3_AgD<^Uz&D2`A6#Q&@o-=+Fi7 zM4W(&<1WPGo`9G9WT`nL+rrs|?!aqRfk(y4u!Qp*w1=x;rbHJiIVn9qr9AjtVB@GT z&=q*CTX=A@Mx%XPA|3?`N>!Vg>HW+Le*X}-FM2t0+Y4U;(SeumL@tO8XS4Aw|G}--_@%0*DhG%3eZV1oEn+2t`wd?+`qg zzj)^ot$|Y8cnfSa!k*>z7G{u;7m>_!4uOMEGBM|%GO|fZzOY2Gx7|&6Ek8u$_~dIe z#&3O(m@QM;GpaO@PlP literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_eject.png b/data/themes/images/icon_eject.png new file mode 100644 index 0000000000000000000000000000000000000000..10c7c49df5cf6b8a8151da5914ab5a59eeeb3a88 GIT binary patch literal 2542 zcmV*P)p6^brgw^fihYAVZ=IONRSbGjh)kCxL|lt~tt4HHQ-?``9@7{q5 z6)IGyP@zJF3Kc3;s8FFog$lESEM7<^*mp%Mwn)*2g(Geoxd;5Ed;a47q=VhN2i&!V zB62YlXeI!iE^coP+1tbY@M|P%kK$|euz%jf*4EIqJ*?Y7N72upL|F*(wvo;TvIG9w zF1}X7_X571j^gX(Si2++hs5W%h#L^QI~aGdd6O6xfxInnhhO9U3c=S&vxGEF3B3Ux zAgvR#oH7w|KOjGRhHPyTA8ezT%~gpqck(uIJRuZH(iiFh>Qd4ug*pWZ00~7f1{TOl z7&MJR;wX5R^1(xNo=TKOATLWu$!MsjB{}UVv`uI^E4{7#G`Z}cps=ORZm$QlLt zyh#j;K%O4Zj5U@*&Wd_g%~%!V6BB+puD44j{9YaVE+;7h&L1GzGBlpR)+Xh=(plz7 zUN5KSQW_50F|vyBrU`2(cQAf25$PXs+!tdH;osh~uh7$+terBPml9l)9W}6VAOb}|Y=?vygVps_B?3A=)rJYsWi6U)W zP)=XZoy4$E6dtc(JYL7uAv9JUZgWDGh z=PG96a`CAQZi^5#@>?8vgd#xETA|GL(Z^tHV;D9~9B$h9I~&Ns5LXZQqEDKaG|bU* z&<5@R?|<)$@hXq+hxdUy4%+5umB47c*_Z?Co!X@ zkxxYU;3BnLSZHPXOqPq!^MOV(Z~QtyGAIdB$KPrrdpii*=UVvLE09eXwvd=1X$_}_ zGskDZhZhc4XBA|xF1#0nXcG#)7$2JBGc{aV!^I34wvdSlp7L~}ksyWr;WDJzkaxht>#)m(}_}m?ikM1r?BmEF+?_k zM~ntair}5#Q3MBOS7+#oVd5|oB9VwAH%BJMkqh*!pl6QfG$@)Gv9^lwaNdrznRL3i zogI9AosdUrA<}Ru4WQ|Sx*9bg5hJL>c}2{<9w%HBiw<*¬6T6NYLGfWGErr6-dk z^7szL2E=X$ou;9lT7lgiYzuUENUV8^(t|l-BPT~ld?1v9cZPEjQHSuF+&L3)5fhK8 zpuvb%QaYo^QgZR+Y81m7<*gmGdj*|nm|DMvt#z^9KKj;>;>#7R>4;7!27P>*;Cw(d zM>L(y8jLG3pI}mAMTyp%#8#a$s}X7Jt zZ~lc1N_3@#3`!h1#B_EGSTO}!nC?Tfg+3c#^@zUx1L8Ls`lD5}yK_=vrc&YbQ@L?7 zy|;!8R*`3a#T5;ttRrP@MA|ILJ0bCC^qXaE6id+<#Wq+S#d_LAFThl8Zxh*lgm118 z@)n_$NLezR%O*-8PAeN8bD%#Cn8tbIR7v5Y?Pc)BLzaH%Avr47{L^Z0lHix zKHf*!enpF7Y61;9UF3_eac@8;92RXI-b*wA%V_C0?RKnIW}3dXP`j)4%bIn!O^!szi;?k z4dzpY_jZupIxhA2Xe3Uki(|>+`KU#%%&~f<(kL&HrcY>@Qjd_N4&Tdh{NwVWUA_+- zTS0~5yx>hqB~m}P7=D%3{bh1^(h(A%q+v?x1z#wxcs{nZM!ulThQRF+O~rGh5fC+; z6MU5MmfX{6-piLMU$X*VbXrGG>IhEoYPd!~xB@@#;?QVBapdM1Oz!EMZS^?wdl&q^ z7!b(Bkw+sY4o$9&jn%u@3>#@!+rT(Nzs-nVC=><~IecLo+8JAYmTin(&;=k63yyFM zFp6A>Z#2f%);z|*-5%B~iQX{;`UVG+UX7etz?gRZ*6U`reJr1Y;o3 z&jUv|`b}f-^oaatHz`N!B9}8)r<%%jcd)HZB2Orq;|Y3h6c*?MiREKEOA(8+z9$89 zqa9kRo-$rwXWe>_*nK#iGd=aH+_5LP`v|{W!-p0j5qx%tuQhOSh-jG4EoH96d<`3B zXk&?37_mH}JQxyhy+^!?drGF=P;qjTbY}y3ypKB=;szz|MhhvPk2?L>n-77$J?it4 zYuM8xtRB$i+L<+xyT=a9+z33QL{5p^+Zo^IyS^AVbhp16rRmxRc0$~!+DzTzU*R7d zlW6DX%L{`O(k4x>3Kc3;s8FFog$flaRH#s)LWLRPzu8{6Go9PmGXMYp07*qoM6N<$ Eg7$i@r~m)} literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_forward.png b/data/themes/images/icon_forward.png new file mode 100644 index 0000000000000000000000000000000000000000..155984a0c714c4c0e8f04a400af262308cb8201a GIT binary patch literal 2850 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 S4-`@W0000*Fsgg?S;{S7RA25)BcG7Na9 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 literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_pause.png b/data/themes/images/icon_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..b5dbfee5a30451c40d3c4fed7feea23a81258dfc GIT binary patch literal 2168 zcmV-;2#5EHP)k0 zMErNLvm+JHOidW7@%_8uWW9wS&$mz9H)lBShU46Sd3r}beX$(@cs`iLvw>Sz{2juN z$d6}mb%D&kL-_ml(eJ;5*oT=33b zBk!-#4-NXVCafYlDF|&stwPeO&pS+TZSg8#t4Nv@*ncYQ@DQ6^_a3-9Ms9D>KegzW z*!j?qUe?%OkFoP-g1B3N?lOiqs|Z&Mit>OWv=mxVG?Ah-)Iy)PCcIOuE{N6=Q$_3! ziIZz=R$&117F`{qRSrAVSi1U`T4RJ34_TG1Pj;`Td8s#geY!h`dY7bPNsMIJz zfdZt6nGz+?N}`oWs}(KKO^P1iDxyGXEtMBkPq7n}rV2Da3*D*G-9bFVcIkz?9Yo$C zS0Eo=p{q#os-|3YOhd_369?iI03%p7A)dkKwq#s!JZ4~akPu^c6C&%dWmZEK`L&;P-W(i&h z97*EP12s0}twc#QD7Wt11ffVBS_ZU>M1WE$QpYp|4$YZ;)(+f+jz9@*!pZ||(qi*d z?Ccmh-mTnb^O+umX7Wy*(_GVn{y7_+fH8O7rKv@N<*m01A z8AF9XosoUIZHbu((MlrS@LNeO#(^bfYj1zdjtiv345z6IR>>(R1>MO3@#+E@=9N3~ zLfvH-I6p<2YotwRp#)1*DolcKD8rB?cNYi0+!g_aBXOp|he0P$1*aBgs&FLo1Uoyk-?P(7Cx#Xu;H+usRpgly6Dx{U(3k~X|OuwK+Q*&xhR6q%oo~X>J`2ssh znOdZ#qilsRHMG6n{e^?>Y5-ZQ``CM6>1YyyC`E9p`;NWuH+O0Rr34BUf(k(b1%c9? z`l)t;Q;AX}A(W1$66vP<3UJWs65-Ea4U!BE1u9PAy(c|9^Bng`(t|Tc#~&2}GW6O0 zh@B0~QoNrhCPS_1_pUDciT-}yOgI8x_T7>@D(e&Vgs$72;Gpj4=me`ciWB594;GI{daCbmb8{Z2e0p`?8G6 zxt{>f#vS<3Ts#fmYmB~WW#XGDh_Klwj;JC9P$*IiX;nlV86W$QodKqVQ5n`{+Uq{> zNmt%JN{?=sy4+R1=U|%(-=ziFI`$qrTm9hR#TK9M&in5R@PAMlU zW`G%BRtA^>W`G%BRtA^>W`G%BRtA^>W`G&st~GvY=4?G#yIZO@tjrhPJUYKi4+|sZ z5j*1t?qdCx7Wm!+JRhY)JwOPwy*6L>?0D#)G)0uDR6E^CwE@~PEK+D4O-(t zu@o^EqOe|T%EQajHho$&|0P6o65g+wesGb}c9dA>LQD}0is{gVC#U%N#qL1v2H_9o`8Roa9DKLc3MuhtjNod`O!AYH9p~K7N zo_iql;Z{q(_xVmvLZrw?~nCZi2yze+!Ls0vFFZl8p}At|@O zN?W=ZNL9e-i=Uk1^FGotUK;Xh2)AmC z=z&#)O50J8U^@f}I<5I8*sy_aQjLNQ6^kv&3p#g}kJ=f64Jm0pRCK3GoVVD?Yn-#) z#mVg$VBd_-FYvS1*!ycZt@=Q}@&J=LF(^$}5TqfbP0XZIkP0JNM~nrrEr>^vRO$c_ z^rpb7L@GMEr`Sm|x{nLu>8IhYJ8Zr?9E;dondX4&-9gMD|GyO?8<1zf)d@2H*Zq0U z{)V4i4baw2?d>Noo%l6&-j3&evfmTwt^QE%Ksw;xtRo~p^SYAr@f>Y)eSCNK>Wl3> u^J`D?i+8fJva+(Wva+(Wva+)N-}GOLfH|Q7#(`V_0000Le)fCdpPubr1H61bd;PoeboIymzxkop`LC-~U+&&}@@!wy-#o{EKY!!%w|c@( zD)B>pSB?Vj0pI{Wn*lcm?dp^LzgvG@Uq8G1*EZkWEm!wb?(Wp{^3;E_|M~gXyVr9t zzj%JDo!dYj0iwJY>ka^J4%+%_WCCjr&aZ&g`43~_;tK!MT_8W-2Xq4SU?BITx*tgS zLEt?@KAQvgyPay@1zI{se)_81k8f%_KP&gm1%3>0+wc6fyq>=Q&4+lrD))DRdH!ph zFLywGQ9k$g1yPPt+ZlKh>$a*|!JB}aK>M^Z?CL9&pTW4OV7@_kvTHhjg?xMfjDR67w-h|C;*QDZ_c{M$OPQSBRal8CWfU&0W2@e z=ea{ZoWQ%TZ9lGWyoPkMFIzmp=br>9A)ZBWnKU57%4bG^I28Ovwd;bFwr5eox;xxw3?V6lSR z{2BlD0`D7akBwjB4}y4)J(LI8cMo`zhn>Kivu+ODN(r_`dPA*277daN1+a+Z3Q`}+ zvyF(hIIH_yZUI)CBH=n$=C!z{avv32jku2ZS~2bMg^}k#&e`~WAnpK+?~L^h0k5*| z=6k}U4hbKj`U-6g?M_gO$gn0X2c(ZkHnhn|4B!DtBN7bvjAR2nz1t&OLdf8PXGPi; zmyDBPG(0G_9Pp@kb3yJBy1Btrk;O+?`#o~G!B2ik<^%ZnPw02wVEh#N*Z9>Z2+xZ; zfA$P{E6ni;M3)Ifc_;g7sB)LuPT;Nnf(}+#*C=7kXbgm8=%{GSXdDT-MNN^sM%xAA z0kKp?N{B?<6CzfnXsawkl~8AY6RXO`0^+d3LyxK9VZc&DP62BSi;AU8ZUQz=Y*cLV zbFBH(J`?9QaWBNVhlO&8>K+2#A`(s;WUYkohByW^wx}9031JAtMMAAXv!U*2R0Ksx zQxsg(R{}ncn$Vx2-Vo)6u<6iKA*_wYB2kUd8x2Bi zA|e}tIT{@C5s?;H7p7&wli(Wh$>C^+CqaTBVJK=$4?ch>?v5*1jO3i~-be^z3S>`& zMZFj+DPk0j4d%4(XVKvK~+%)MZs^7?6^iO8{Rlh06VGS ziUA2mM??|JXt+UWaR*c}F)UqS9vNd{U4xQBU|0@>&Kc<#2Z6SS9#Tm75@0Mqe)<%7 zQO9O(5BI{k&+)k}jEAsqavFS7W)$Nukvt-2Z_p+Znn#4yK#)Z6MC%KhXtW8MR_R8i zO_?S)w2c!@2xi16hza6?(_Nqk+ zwtz_)XQTY1E{J3l2nxX)1P22V$4oH^jKLU0*u=_RqURAInL0%;mrb;OITF&nKY4Nh<)s6qfY zA&D`#vvy@A&UJ)k2GNWppo@4I$m#V&P6%JSrqe6 zbU_GELg50Q!4QgBAJr-Y1r=yAG%B`cg2~!{1W+W3a;OBBKN6p^}L(cNLnI~J}K;5^r#6EuL(&AtcmRz zQ6a7peSi~HPTV;|xIp;eAOAD|@sPE?-~LzrC$On(%4H5msI2S$@jvk&4r%A#{{#OW zFn5v&V>SkX)I`=AhZb;xpwYyv{W*N+kYxQh!p1i<a(pHfurymK!8r*M;7H2cKReFK+|)PYA!+y{C71 z-)ZM;S{xl-*M=XLwYxE+eLz$QNeNn1ECh;ycc+&?C&CHJ3C`)E9T(@+ol}Gb!byEB z+&Psa+QB&`a3acyD7`zqG&BKPX$cyMNeL>1)=QskUHX_8$nd&O9=_Sf zfYZ4g-VVwFr_aS{^MRJ353B5@OXGqRyJV7lHh^RWjA-d2?u~{unC%bi(L-tu)*J%z?0Tcp4 zCw^o*PA5VOv?z@TQ8U2=)kM&U=7@SgvLPn}x~ePIlNzUM+PiN|zuMt}# zIU@Zzl2>SU)XIz^WFur~ve38@L})~4w;edV=Mjhktw2*BEfDKxhhFXU`%-1fUP2*4 zoleHmhrB8#DaYE!+TY=Ii3uMj`aH&YU~@aQh_#3fNXlp%5OXwx<^~lZL_vcPsvV5( z1S_%T!5#Oat_|h;O$~P<D}fG=U;xlL@&&^GJwZ`jT>4_&sfr)ZT-| z@7`V~(7WQlN#{4!kmkNTp947}p316n+@QhGkWkUWLNlU6m>45Pt-}!v3^>6{h#jEb zJE4Z%hkD^4PC$z+?gVpUhGtuiY)F0P*s9JP({sA0@Ai+L#q#n#nRWjLiowP zQ@tx8>fVl}bA(T4nFFic&RG|V8e1y+8g1p6)usBnaj zI}ajqTnN?#uqSfZb=D#`(@Jb#IgzUX#q7&8gHSC1AWS4YT!jne1fMa^5fQ{V zj>$rqHA&ew5%UUURbQ-bXocFZyzA@cz@Le{$K|Oy4=WD=2?D9uE4*}GWnzIGqj$Rm zlgatWw1VzOu@A2*X2l_G2RH(`%3d`^s?0@&4-fnAR^j_HL?`v#do#cUBvzP$Y}M~r zyES1bQuaD3m8YloYs+QFV%QBlq3$(L{kzq-)bC#3hsir_;0OJ!FV3d(o(pI(Fzv2v z?U&3qtB!Lbg@tTg$Buo+wo|kLo!QZeX)yqHYjSvNsp8}JW#C;`Uhj{Tr+3awcicPH z_)nhLw}WszlYQ$r%Dq2qlIHBo>%)Ib`4O&aOLi^Z&Z?8+Y}d@86pwkwXNNHGt%1~g zWc~qHEb?>w z$TlV)?o9KV`~NiJQ`+$DzW!hUzhB>KY?i+)p{$prTm!9=0pL=?FJ@uPaWe>+vd5+X zuFg*0Vly<-GvB?@XGu`y(}N`-tLF7oWUv#kVoAAFV3W z0Juwiv3)wCE!nkIgYY67MOM+0P%>q~PMWnBqRhy1A13b=#z-t9DY6@6j*_!vZXtq69S{M}g*pY?P#<0Z)%G}f54M5JVRtTrb@f^` z#a6+n36TPBR+(qG`<^vCY%#$r1HC@#{gI0aK4UIs>I|Wf!DYC`eOnZPimT3 zi%)7SaW-;V?4K3YwMpIT$lEba#ARnkWj-Ai+~vI-i8)(`Qe><$lZpyYPDI-sNv1x( zH-KLO?PENg-`Z5JhIY(&5-gXDC)bvY750_H(aOH#oyc|_wVDBA2Eb9)z^XHIOiQAX zVYtL1a|-zA_*f6@u$rmxYY69f`xyV~eE^JCI4@>lOg)dL4Zg{B)TT2URee=4kuu^! zx#vg**6)--kn)&7te+jszDW)hEZ6UAEESo$!Y^i$1%_ZvQuOc!Q605 zm|1zKU}St43NhBX9vQo=eg1aV+Vfdifjs~}e^{vLAhVv}p`Mu3Tuun-1|;DsSg!W3 z=Cx!Bka-Kj;mk3twlRNL1@&-KU_O&UA$uT;6yQ`ahH``=2&Q#8KXkZO`*+tN@V(@s z&+#n-x0#n;?oM}ikL&T#8V_9oAr9d@%amnxSjRI$ z7TPW1Ci88QU)}6 zX3P{B$3PAv78-Jr(w7)8P5AYI$Kf6<>M8g6nUM#>n5`#1Ef4L>nTqul9u`;-OcSPF z*cV_7&L~QDXY`WmJg_}3cv#1Q*7F?VhGtBb0G^PF-BJgoIzmY#{eh{ z7#oBQyZpd})vTGrr@{jzy>~zuqzp*1K=zCg$tGA_;nL%3_(riX;w*rdW!PiH`Cq^% z2Lkxy89o(**ldvQF}^s(F8>8N`vrFWEqX3^Xt88uOEp+-7(*fnjHYZjh_%1J8y~&<#f4Q&wlN$57)G25}p}aXc8rg*813AOs#wfztjkRS~4map_ z5_kv$uSK}VSs`3g?`66_q8)c`EU|Jc1L9-J*7t#Ii4=`&P9CK6N&C{ruqx_%r~Uh4 z=YbDeOn7mHKdEXQeualO_^QV{A*XACEl6QS3TF(O39G~=7;9B-a5{umj!Cc-uCO}O z-p`S4QN|f%B)LzAqx)-A-%& z&4D@6=fB4JBWx&Y9CIn)u-M?Mj6KR|QgZL8b)+GaVkWi9MoP+Wt5PymarC$Uh5shX znL7(F`OZzv%!FODSDm8mEt)3yKYKkz?bO8J718v|Jz-Q0!mtP`$QYie@ zHS$To(h6yxVEGM_T5?-b$FeD@85s#gjCB@NoNF(crb@s=S;O3jm7`u-lF>!VG$p$- zifujipyjyNWcAdc0ai5$y~Sv>WUrQm3`pV(uB<{}nVqFLZ!8y+V6Y;w(S|V^$&`eV z+YU=-8v5G7ue|yc^vVusqFh2 z?>?^Oqi%cOV@_+%y)lpBt83(=C7u@e>KEkvSHuF+I(cbG-!bME*<3SrEvr=W+bh%`TDvFzzVi8h6&hF$OWUCC6!t^j@!D2Kfh?KlPaWFBmH*7FQfpvCn zOjtK?ZDD)db<|T*Z;Z=CK5_CUV8abI{DK@_;LQ^M>f^$`zPsQ1&KACJt+LHdE$tn7 zt;hXeeMd+?M;6}`8YQf6N>=`T2d+_isRyoI%UO>sG?G!#t^Fc^dzp4+uLrJu2H^a_ zwJ0Ii;v&LB01J{E_HZm|uWbl#f#@L^bMFV5CPsCdthCKQ)IhLu`ciNtCpaw6UigdWrTEPBx_^yt zK+d0HSARy+6MPx4vjkj1+ap6PAj%5gT;Sb?oD9>z7`2=iaiLMKHnL`Og-~)e9XvbM zB;1?bMAHozAw?wAjMEUdDI~7NOk|hB!sw(Vq?Ac9Fl;(f_oft`@JMc*JYJH=L|z80 zUE$4N@bjnGW%az<*zegLbq4pna7}5v?M!a5@ahw!dxgIMKEA+dFh*DcizU)SYI_)B zsUmb%LWD*dveZ*TYQ(T$oi>D;HD6NUS_n6Yv}N&YY|Co$blgBY+*>5%k{s>>A}6>P z)|Y(~!D3I&YdjYRGmhgx_il@M#S#JY^-j%2G^ zc;|Fic&B+et6tRY$9)g6?^d$J4=??6meKwUok~9qYeMdkca?tfbgMR6t)n$B{UiZ* zz4dqVZH0SEKZP~k_T;Jb(|U<5LuKBNSNiD=0B?C@IK24SaEA7;(D7FBv1GI2W7URv zJ)a@ddQDdyN8BIzsm9in1mtZ^F{v9uV=jxl>r{%5wLMuAzPZ5~#nvBU?Gn4(;3prD zn-B2Y;K4l=+#aYS_;0uT-R-mKYyM4^zk3+KBS2h_=uh4t{1%QXz*r~i^8$=l!`-Ps zZxvt!xc(azU_1=K<3M~@3DBv~?7Rf%2b8j)0I8M$&1>Z9_OjrHQuCv3#@sFedOl@Q zy@6P_A>#)Bo`2O6pzjajoQ-oJr^>x^FaaKQv!w3ZMQEv~<>&F%yeQ+XBD4UPw~NqT z;8R84zi|=T_W%+8UIzJI03QJH?}fPkUJCyIW-0i0sPln9-Uf3EXkqZ3*Z)KR8NmT; iyanX%`Ty&`!}ve9UR)Igsx~?R0000w9z-)vdJQV?Od3^3qc+jP!Ix2;C*Au_(ae9y*1Z1+0W>S3J@@GizpY+FFertofn_79P7PS8hJ(7_n>{rPy#X%tmVGrX|uie5UmY}be||4Q8OV1;#6_9XnJoS@L9k&A~F@y z#N*Q)vICFrH3_Y5xk2iS^P3)eEo8Tbo57nn8X=;YId(xM0Rbk;mW6I|1IoxCi_J z;csFLCF9JDfxsYk3>QJhBho&k&XI8y--U1kLaT#yjxlc9YZpiAI{jb&b7ay)5|3&| z6g)K*8VVP4_buA{8t@a0pDBD7;Z2k)9^NpaC7y4@j!P1;=fkv*j7RL0rH|BgFH9aH zI|0q=s5qiv)KPX;I|Z2^uNwRa$w^4$BU5Er8<(NVNzd0ud0KQO8y~ zR$CxBJ@Gce4}cHM$`A5|0UovIe8L3r0dwbK+zxrXBiA|3>^%8%s3h`u_j6VfUNcv(tUux0pa6Ygd!k*Jq|1qq;XS8}>5jA7V$Bk=_hOs@`o1qLgDvj{Kb1>AhPN50+C{- z*lC^6dVuw==R=jPy|__a81vFVK1av8cuIt;20uplxhn7B*w>6*gbP`qZcXAiA?hEZ zy}RfLDErqmb`*J50{gG>&l%dwBw zwYSEB&kB9cwcg@{&%)98wh6x!_>~6U%MA4~vbglR$+un}fUl{d(mbg=!<8#D;j>dF z{7VDB3Bn(P@+cC5q?p^oc(hLH^pXHNAZ+$5n?aR%n3L1HC-7Sn{tP^H#@GT07f6#w z_;`fX|BJQS7)Kb#+wQ=pgc?gmw0Rg4rXKq$MD#Uf7%3AQkft@VOAiRU?-M$AXT4vU z1L@}hx6m$a<=@TcAWtxEi{leBP7zL>avD5mk}?oum<7gBAl=LG{X_h<-eSerwmI-T zaCtLb45ZCC5#x>tpQ+>2@>I@y2Ej1^hN&=)9Fu55qE|>y!MD0t=Rv;ae7sEnp9F3p zmCHYNB7u)kJ{6;HLZ85yR|Z}f)|8<)#*s2fJjq!^b}%42?c!SyK88@lf_?N#yDM86 zB3~4otbmgooO0%j0m?ASr?b2=aVZIxNaYcJ@*jM1h;P3|D6-n&)jCkl89j>tXAARy z#>DBgRAjtIc97!F283@xXk9M8RAgg-8ex`!NS>6hy3n2x!@UG>k85li1X_f4GY5B+ zgF7y+G^8*GdJm$Q*>Yd?#1ZaQfa_tMySd}$(>R6J)f56y9Md8;%aeiU3=7H(t`LB( zjxhp>FoYlwf=%PH)s}1d`?Hj5DI6&wxXl1|!Cjl?l2XScU^s#qegAyTqnq%tkzJ%8+& zH`x=6I|!eZ8C)TK;7AFL3Bi<19TN+TWMy)E)`ShdP`GWvUq$E}oRt~edH@ADhTZEJ z_X+)k5Fm3x;-@vxXClk1XD~1E4aQK6GmL@La)aBvgel9iMr!nqy*)$TAf8MBzi#={5%oc+0mr zm@#$}#;KGa-1-yQvu$4QqueJ-1MzI5O{6q}Q3qlboH)#91R#}&L_7(Qx(10KlPzs) zXc1bygmBU3ls>NOU!gIYNq zx48osUAXRM!xB5L7=T4?cP%Nn4FN7gJZdAo7SjLx$s4Y@3)=*)0D#L7f%CWgPjlz_ zw*M{r{e)NZqZ3==wwDNSb(U|tTvn-4rAn15RjO2}Ql(0jDpi{6e}A5r54aaG!~g&Q M07*qoM6N<$f)n`iXaE2J literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_play2.png b/data/themes/images/icon_play2.png new file mode 100644 index 0000000000000000000000000000000000000000..879887832734754f99454900c770ba11934004fc GIT binary patch literal 7009 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 Z_y;zVzFh{e?hyb0002ovPDHLkV1j3Oe#ig- literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_refresh.png b/data/themes/images/icon_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..c84bd059030189ffb2831e2ea260b537e55063c7 GIT binary patch literal 6452 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 O0000UNjg?LT9CJf2aXP229OQ+2=k-Fxfa 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 R3&Q{a002ovPDHLkV1j(3a5?}0 literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_spanner2.png b/data/themes/images/icon_spanner2.png new file mode 100644 index 0000000000000000000000000000000000000000..d518d5727754fcb153e1e7d90fa5e4c5941fa508 GIT binary patch literal 8969 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 LNkvXXu0mjf!((Zu literal 0 HcmV?d00001 diff --git a/data/themes/images/icon_volume.png b/data/themes/images/icon_volume.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a12d1b19c8a8a5bacd979dd32f7e1c784ea24c GIT binary patch literal 5142 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 JPDHLkV1gTeSeO6+ literal 0 HcmV?d00001 diff --git a/data/themes/images/pm_fill.png b/data/themes/images/pm_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef098f1079934e4613aa1be1eb2bd3bbb5c2f0b GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1SD0tpLGH$#^NA%Cx&(BWL^R}J3L(+Lo)8Y zy}FU}r~!}bMRiw!M~p!!|8H(;as9$=9_RSy_RQB_A0FJ0IDA*N_WpMpe;1EaXTH}) zf9c>bp8Vw9%$YMMsce0jw$1KZ;p^DY*k6V7p05gh`YtUjwD_E5dbiy7+U>Xh-dp_i y-F7+I^8Mc*?^;*3`~L2S415pBMhD_8J}_stxKF(LDsCFk4-B5JelF{r5}E)<$Z4zq literal 0 HcmV?d00001 diff --git a/data/themes/images/pm_overlay.png b/data/themes/images/pm_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..3c25c7302a1704550261564612497b0e1f297107 GIT binary patch literal 8673 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 FV1ff$swe;e literal 0 HcmV?d00001 diff --git a/data/themes/images/pos_indicator_big.png b/data/themes/images/pos_indicator_big.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8e8f2b2243c12a98cda8cc226e3d70f511b8ff GIT binary patch literal 1669 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 t4!k`FuAcy106rGLXKl~4H?x}6{sT{?qCHCH%UX literal 0 HcmV?d00001 diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4 new file mode 100644 index 0000000..23479a9 --- /dev/null +++ b/m4/ac_attribute.m4 @@ -0,0 +1,47 @@ +dnl Copyright (C) 2004-2008 Kim Woelders +dnl Copyright (C) 2008 Vincent Torri +dnl That code is public domain and can be freely used or copied. +dnl Originally snatched from somewhere... + +dnl Macro for checking if the compiler supports __attribute__ + +dnl Usage: AC_C___ATTRIBUTE__ +dnl call AC_DEFINE for HAVE___ATTRIBUTE__ and __UNUSED__ +dnl if the compiler supports __attribute__, HAVE___ATTRIBUTE__ is +dnl defined to 1 and __UNUSED__ is defined to __attribute__((unused)) +dnl otherwise, HAVE___ATTRIBUTE__ is not defined and __UNUSED__ is +dnl defined to nothing. + +AC_DEFUN([AC_C___ATTRIBUTE__], +[ + +AC_MSG_CHECKING([for __attribute__]) + +AC_CACHE_VAL([ac_cv___attribute__], + [AC_TRY_COMPILE( + [ +#include + +int func(int x); +int foo(int x __attribute__ ((unused))) +{ + exit(1); +} + ], + [], + [ac_cv___attribute__="yes"], + [ac_cv___attribute__="no"] + )]) + +AC_MSG_RESULT($ac_cv___attribute__) + +if test "x${ac_cv___attribute__}" = "xyes" ; then + AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has __attribute__]) + AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a function argument to be unused]) + else + AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be unused]) +fi + +]) + +dnl End of ac_attribute.m4 diff --git a/m4/efl_beta.m4 b/m4/efl_beta.m4 new file mode 100644 index 0000000..c804729 --- /dev/null +++ b/m4/efl_beta.m4 @@ -0,0 +1,5 @@ +dnl use: EFL_ENABLE_BETA_API_SUPPORT +AC_DEFUN([EFL_ENABLE_BETA_API_SUPPORT], +[ + AC_DEFINE([EFL_BETA_API_SUPPORT], [1], [Enable access to unstable EFL API that are still in beta]) +]) diff --git a/m4/efl_binary.m4 b/m4/efl_binary.m4 new file mode 100644 index 0000000..c774688 --- /dev/null +++ b/m4/efl_binary.m4 @@ -0,0 +1,71 @@ +dnl Copyright (C) 2010 Vincent Torri +dnl That code is public domain and can be freely used or copied. + +dnl Macro that check if a binary is built or not + +dnl Usage: EFL_ENABLE_BIN(binary) +dnl Call AC_SUBST(BINARY_PRG) (BINARY is the uppercase of binary, - being transformed into _) +dnl Define have_binary (- is transformed into _) +dnl Define conditional BUILD_BINARY (BINARY is the uppercase of binary, - being transformed into _) + +AC_DEFUN([EFL_ENABLE_BIN], +[ + +m4_pushdef([UP], m4_translit([[$1]], [-a-z], [_A-Z]))dnl +m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl + +have_[]m4_defn([DOWN])="yes" + +dnl configure option + +AC_ARG_ENABLE([$1], + [AC_HELP_STRING([--disable-$1], [disable building of ]DOWN)], + [ + if test "x${enableval}" = "xyes" ; then + have_[]m4_defn([DOWN])="yes" + else + have_[]m4_defn([DOWN])="no" + fi + ]) + +AC_MSG_CHECKING([whether to build ]DOWN[ binary]) +AC_MSG_RESULT([$have_[]m4_defn([DOWN])]) + +if test "x$have_[]m4_defn([DOWN])" = "xyes"; then + UP[]_PRG=DOWN[${EXEEXT}] +fi + +AC_SUBST(UP[]_PRG) + +AM_CONDITIONAL(BUILD_[]UP, test "x$have_[]m4_defn([DOWN])" = "xyes") + +AS_IF([test "x$have_[]m4_defn([DOWN])" = "xyes"], [$2], [$3]) + +]) + + +dnl Macro that check if a binary is built or not + +dnl Usage: EFL_WITH_BIN(package, binary, default_value) +dnl Call AC_SUBST(_binary) (_binary is the lowercase of binary, - being transformed into _ by default, or the value set by the user) + +AC_DEFUN([EFL_WITH_BIN], +[ + +m4_pushdef([DOWN], m4_translit([[$2]], [-A-Z], [_a-z]))dnl + +dnl configure option + +AC_ARG_WITH([$2], + [AC_HELP_STRING([--with-$2=PATH], [specify a specific path to ]DOWN[ @<:@default=$3@:>@])], + [_efl_with_binary=${withval}], + [_efl_with_binary=$(pkg-config --variable=prefix $1)/bin/$3]) + +DOWN=${_efl_with_binary} +AC_MSG_NOTICE(DOWN[ set to ${_efl_with_binary}]) + +with_binary_[]m4_defn([DOWN])=${_efl_with_binary} + +AC_SUBST(DOWN) + +]) diff --git a/m4/efl_eo.m4 b/m4/efl_eo.m4 new file mode 100644 index 0000000..864baf5 --- /dev/null +++ b/m4/efl_eo.m4 @@ -0,0 +1,6 @@ +dnl use: EFL_ENABLE_EO_API_SUPPORT +AC_DEFUN([EFL_ENABLE_EO_API_SUPPORT], +[ + AC_DEFINE([EFL_EO_API_SUPPORT], [1], [Enable access to unstable EFL Eo API]) +]) + diff --git a/pkgbuild/PKGBUILD.in b/pkgbuild/PKGBUILD.in new file mode 100644 index 0000000..f749e57 --- /dev/null +++ b/pkgbuild/PKGBUILD.in @@ -0,0 +1,33 @@ +# Maintainer: Enlightenment Developers +pkgname=rage +pkgver=@VERSION@ +pkgrel=1 +pkgdesc="Video player for Enlightenment - GIT development snapshot" +arch=('i686' 'x86_64' 'arm') +url="http://www.enlightenment.org" +license=('BSD') +depends=('elementary' 'efl') +options=('!libtool' 'debug') +build() { + cd "../.." + export CFLAGS="$CFLAGS -fvisibility=hidden -fomit-frame-pointer" + [[ -e Makefile ]] && make clean distclean + ./configure --prefix=/usr + make +} + +#check() { +# cd "../.." +# make -k check +#} + +package() { + cd "../.." + make -j1 DESTDIR="$pkgdir/" install + install -Dm644 README "$pkgdir/usr/share/$pkgname/README" + install -Dm644 NEWS "$pkgdir/usr/share/$pkgname/NEWS" + install -Dm644 ChangeLog "$pkgdir/usr/share/$pkgname/ChangeLog" + install -Dm644 AUTHORS "$pkgdir/usr/share/$pkgname/AUTHORS" + install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING" + ln -s ../licenses/$pkgname/COPYING "$pkgdir/usr/share/$pkgname/COPYING" +} diff --git a/rage.spec.in b/rage.spec.in new file mode 100644 index 0000000..e0a6166 --- /dev/null +++ b/rage.spec.in @@ -0,0 +1,48 @@ +%define _missing_doc_files_terminate_build 0 +%{!?_rel:%{expand:%%global _rel 0.enl%{?dist}}} + +Summary: EFL Video Player +Name: @PACKAGE@ +Version: @VERSION@ +Release: %{_rel} +License: BSD +Group: Applications/System +URL: http://www.enlightenment.org/ +Source: http://download.enlightenment.org/releases/%{name}-%{version}.tar.gz +Packager: %{?_packager:%{_packager}}%{!?_packager:Michael Jennings } +Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:The Enlightenment Project (http://www.enlightenment.org/)} +Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}} +BuildRequires: elementary-devel, emotion-devel +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +EFL Video Player + + +%prep +%setup -q + + +%build +%{configure} --prefix=%{_prefix} +%{__make} %{?_smp_mflags} %{?mflags} + + +%install +%{__make} %{?mflags_install} DESTDIR=$RPM_BUILD_ROOT install + + +%clean +test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT + + +%files +%defattr(-, root, root) +%doc AUTHORS COPYING README +%{_bindir}/%{name} +%{_datadir}/applications/%{name}.desktop +%{_datadir}/%{name}/ +%{_datadir}/icons/%{name}.png + + +%changelog diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..ccfbf1a --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,2 @@ +MAINTAINERCLEANFILES = Makefile.in +SUBDIRS = bin diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am new file mode 100644 index 0000000..71200f9 --- /dev/null +++ b/src/bin/Makefile.am @@ -0,0 +1,14 @@ +AUTOMAKE_OPTIONS = subdir-objects +MAINTAINERCLEANFILES = Makefile.in + +bin_PROGRAMS = rage + +rage_CPPFLAGS = -I. \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" -DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" @RAGE_CFLAGS@ + +rage_LDADD = @RAGE_LIBS@ + +rage_SOURCES = \ +main.c main.h \ +video.c video.h diff --git a/src/bin/main.c b/src/bin/main.c new file mode 100644 index 0000000..a718c5c --- /dev/null +++ b/src/bin/main.c @@ -0,0 +1,1013 @@ +#include +#include "main.h" +#include "video.h" + +typedef struct _Inf Inf; + +struct _Inf +{ + Evas_Object *vid, *lay, *event; + Eina_List *file_list, *file_cur; + Ecore_Job *next_job; + Ecore_Timer *show_timeout; + double last_action; + double jump; + int zoom_mode; + Eina_Bool sized : 1; + Eina_Bool last_action_rwind : 1; + Eina_Bool playing : 1; +}; + +static void win_video_next(Evas_Object *win); +static void win_video_insert(Evas_Object *win, const char *file); +static Eina_Bool win_video_have_next(Evas_Object *win); +static Eina_Bool win_video_have_prev(Evas_Object *win); +static void win_video_prev(Evas_Object *win); + +static void +_cb_fullscreen(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(obj, "inf"); + elm_layout_signal_emit(inf->lay, "state,win,fullscreen", "rage"); +} + +static void +_cb_unfullscreen(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(obj, "inf"); + elm_layout_signal_emit(inf->lay, "state,win,normal", "rage"); +} + +static void +_cb_drag_enter(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED) +{ + printf("dnd enter\n"); +} + +static void +_cb_drag_leave(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED) +{ + printf("dnd leave\n"); +} + +static void +_cb_drag_pos(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED, Evas_Coord x, Evas_Coord y, Elm_Xdnd_Action action) +{ + printf("dnd at %i %i act:%i\n", x, y, action); +} + +static Eina_Bool +_cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev) +{ + Evas_Object *win = data; + Eina_Bool inserted = EINA_FALSE; + + if (!ev->data) return EINA_TRUE; + if (strchr(ev->data, '\n')) + { + char *p, *p2, *p3, *tb; + + tb = malloc(strlen(ev->data) + 1); + if (tb) + { + for (p = ev->data; p;) + { + p2 = strchr(p, '\n'); + p3 = strchr(p, '\r'); + if (p2 && p3) + { + if (p3 < p2) p2 = p3; + } + else if (!p2) p3 = p2; + if (p2) + { + strncpy(tb, p, p2 - p); + tb[p2 - p] = 0; + p = p2; + while ((*p) && (isspace(*p))) p++; + if (strlen(tb) > 0) + { + win_video_insert(win, tb); + inserted = EINA_TRUE; + } + } + else + { + strcpy(tb, p); + if (strlen(tb) > 0) + { + win_video_insert(win, tb); + inserted = EINA_TRUE; + } + break; + } + } + free(tb); + } + } + else + { + win_video_insert(win, ev->data); + inserted = EINA_TRUE; + } + if (inserted) win_video_next(win); + return EINA_TRUE; +} + +static void +_cb_win_del(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *ev EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(obj, "inf"); + const char *f; + + if (inf->next_job) ecore_job_del(inf->next_job); + if (inf->show_timeout) ecore_timer_del(inf->show_timeout); + EINA_LIST_FREE(inf->file_list, f) eina_stringshare_del(f); + free(inf); + evas_object_data_del(obj, "inf"); +} + +static void +win_do_play(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + + video_play_set(inf->vid, EINA_TRUE); + elm_layout_signal_emit(inf->lay, "action,play", "rage"); +} + +static void +win_do_pause(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + + video_play_set(inf->vid, EINA_FALSE); + elm_layout_signal_emit(inf->lay, "action,pause", "rage"); +} + +static void +win_do_play_pause(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + + video_play_set(inf->vid, !video_play_get(inf->vid)); + if (video_play_get(inf->vid)) + elm_layout_signal_emit(inf->lay, "action,play", "rage"); + else + elm_layout_signal_emit(inf->lay, "action,pause", "rage"); +} + +static void +win_do_prev(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + + if (video_spu_button_count(inf->vid) > 0) + video_event_send(inf->vid, EMOTION_EVENT_PREV); + else + { + // if we have chapters - send prev event to jump chapters + if (video_chapter_count(inf->vid) > 0) + video_event_send(inf->vid, EMOTION_EVENT_PREV); + else + { + double pos = video_position_get(inf->vid); + + if ((pos < 5.0) && win_video_have_prev(win)) win_video_prev(win); + else video_position_set(inf->vid, 0.0); + elm_layout_signal_emit(inf->lay, "action,prev", "rage"); + } + } +} + +static void +win_do_next(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + + if (video_spu_button_count(inf->vid) > 0) + video_event_send(inf->vid, EMOTION_EVENT_NEXT); + else + { + // if we have chapters - send next event to jump chapters + if (video_chapter_count(inf->vid) > 0) + video_event_send(inf->vid, EMOTION_EVENT_NEXT); + else + { + if (!win_video_have_next(win)) + { + double pos = video_position_get(inf->vid); + double len = video_length_get(inf->vid); + + if ((len - pos) > 5.0) + { + video_position_set(inf->vid, len - 5.0); + elm_layout_signal_emit(inf->lay, "action,next", "rage"); + } + } + else + { + win_video_next(win); + elm_layout_signal_emit(inf->lay, "action,next", "rage"); + } + } + } +} + +static void +_cb_drag(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(data, "inf"); + double pos = 0.0; + + edje_object_part_drag_value_get(elm_layout_edje_get(inf->lay), + "rage.dragable.pos", &pos, NULL); + video_position_set(inf->vid, pos * video_length_get(inf->vid)); +} + +static void +_cb_pos_prev(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) +{ + win_do_prev(data); +} + +static void +_cb_pos_next(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) +{ + win_do_next(data); +} + +static void +_cb_pos_play(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) +{ + win_do_play(data); +} + +static void +_cb_pos_pause(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) +{ + win_do_pause(data); +} + +static void +_cb_options(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) +{ +// win_do_options(data); +} + +static Evas_Object * +win_add(void) +{ + Evas_Object *win, *o; + char buf[4096]; + Evas_Coord sz; + Inf *inf = calloc(1, sizeof(Inf)); + + win = elm_win_add(NULL, "Rage", ELM_WIN_BASIC); + elm_win_title_set(win, "Rage"); + elm_win_autodel_set(win, EINA_TRUE); + + evas_object_data_set(win, "inf", inf); + evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cb_win_del, NULL); + + evas_object_smart_callback_add(win, "fullscreen", _cb_fullscreen, NULL); + evas_object_smart_callback_add(win, "unfullscreen", _cb_unfullscreen, NULL); + evas_object_smart_callback_add(win, "normal", _cb_unfullscreen, NULL); + + o = evas_object_image_add(evas_object_evas_get(win)); + snprintf(buf, sizeof(buf), "%s/images/rage.png", elm_app_data_dir_get()); + evas_object_image_file_set(o, buf, NULL); + elm_win_icon_object_set(win, o); + + o = elm_layout_add(win); + snprintf(buf, sizeof(buf), "%s/themes/default.edj", elm_app_data_dir_get()); + elm_layout_file_set(o, buf, "rage/core"); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, o); + evas_object_show(o); + inf->lay = o; + + elm_layout_signal_callback_add(o, "drag", "rage.dragable.pos", + _cb_drag, win); + elm_layout_signal_callback_add(o, "pos,action,prev", "rage", + _cb_pos_prev, win); + elm_layout_signal_callback_add(o, "pos,action,next", "rage", + _cb_pos_next, win); + elm_layout_signal_callback_add(o, "pos,action,play", "rage", + _cb_pos_play, win); + elm_layout_signal_callback_add(o, "pos,action,pause", "rage", + _cb_pos_pause, win); + elm_layout_signal_callback_add(o, "pos,action,options", "rage", + _cb_options, win); + + sz = 0; + elm_coords_finger_size_adjust(1, &sz, 1, &sz); + +#define FINGER_SIZE(_nam) \ + o = evas_object_rectangle_add(evas_object_evas_get(win)); \ + evas_object_color_set(o, 0, 0, 0, 0); \ + evas_object_pass_events_set(o, EINA_TRUE); \ + evas_object_size_hint_min_set(o, sz, sz); \ + elm_object_part_content_set(inf->lay, _nam, o) + + FINGER_SIZE("rage.pos.swallow"); + FINGER_SIZE("rage.vol.swallow"); + FINGER_SIZE("rage.options.swallow"); + FINGER_SIZE("rage.pos.prev.swallow"); + FINGER_SIZE("rage.pos.play.swallow"); + FINGER_SIZE("rage.pos.next.swallow"); + + o = evas_object_rectangle_add(evas_object_evas_get(win)); + elm_win_resize_object_add(win, o); + evas_object_color_set(o, 0, 0, 0, 0); + evas_object_repeat_events_set(o, EINA_TRUE); + evas_object_show(o); + inf->event = o; + + elm_drop_target_add(o, ELM_SEL_FORMAT_TEXT | ELM_SEL_FORMAT_IMAGE, + _cb_drag_enter, win, + _cb_drag_leave, win, + _cb_drag_pos, win, + _cb_drop, win); + return win; +} + +static void +win_title_update(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + const char *file; + + if (!inf->file_cur) + { + elm_win_title_set(win, "Rage"); + return; + } + file = inf->file_cur->data; + if (!file) + { + elm_win_title_set(win, "Rage"); + return; + } + if (video_title_get(inf->vid)) + elm_win_title_set(win, video_title_get(inf->vid)); + else + elm_win_title_set(win, ecore_file_file_get(file)); +} + +static void +win_show(Evas_Object *win, int w, int h) +{ + Inf *inf = evas_object_data_get(win, "inf"); + if (!inf->sized) + { + inf->sized = EINA_TRUE; + evas_object_resize(win, w, h); + if (inf->show_timeout) + { + ecore_timer_del(inf->show_timeout); + inf->show_timeout = NULL; + } + evas_object_show(win); + } + if (!video_has_video_get(inf->vid)) + elm_layout_signal_emit(inf->lay, "state,novideo", "rage"); + else + elm_layout_signal_emit(inf->lay, "state,video", "rage"); + if (!video_has_audio_get(inf->vid)) + elm_layout_signal_emit(inf->lay, "state,noaudio", "rage"); + else + elm_layout_signal_emit(inf->lay, "state,audio", "rage"); +} + +static void +win_aspect_adjust(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + int w = 1, h = 1; + + video_ratio_size_get(inf->vid, &w, &h); + if (inf->zoom_mode == 1) + evas_object_size_hint_aspect_set(inf->vid, EVAS_ASPECT_CONTROL_NEITHER, w, h); + else + evas_object_size_hint_aspect_set(inf->vid, EVAS_ASPECT_CONTROL_BOTH, w, h); + if (((w > 1) && (h > 1)) || + ((!video_has_video_get(inf->vid)) && (video_has_audio_get(inf->vid)))) + { + if ((!video_has_video_get(inf->vid)) && (video_has_audio_get(inf->vid))) + w = h = 160; + win_show(win, w, h); + } +} + +static void +_time_print(double t, double max, int size, char *buf, Eina_Bool subsec) +{ + double tsf; + long long tl; + int ts, tm, th; + + tl = t; + ts = tl % 60; + tm = (tl / 60) % 60; + th = (tl / (60 * 60)); + tsf = fmod(t, 60.0); + if (subsec) + { + if (tsf < 10.0) + { + if (max >= (60 * 60)) + snprintf(buf, size, "%i:%02i:0%1.02f", th, tm, tsf); + else if (max >= 60) + snprintf(buf, size, "%i:0%1.02f", tm, tsf); + else + snprintf(buf, size, "%1.02f", tsf); + } + else + { + if (max >= (60 * 60)) + snprintf(buf, size, "%i:%02i:%2.02f", th, tm, tsf); + else if (max >= 60) + snprintf(buf, size, "%i:%2.02f", tm, tsf); + else + snprintf(buf, size, "%2.02f", tsf); + } + } + else + { + if (max >= (60 * 60)) + snprintf(buf, size, "%i:%02i:%02i", th, tm, ts); + else if (max >= 60) + snprintf(buf, size, "%i:%02i", tm, ts); + else + snprintf(buf, size, "%i", ts); + } +} + +static void +win_frame_decode(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + char buf[256]; + double p; + + _time_print(video_position_get(inf->vid), video_length_get(inf->vid), + sizeof(buf), buf, EINA_TRUE); + elm_object_part_text_set(inf->lay, "rage.pos", buf); + _time_print(video_length_get(inf->vid), video_length_get(inf->vid), + sizeof(buf), buf, EINA_FALSE); + elm_object_part_text_set(inf->lay, "rage.length", buf); + elm_layout_signal_emit(inf->lay, "action,frame", "rage"); + if (video_length_get(inf->vid) > 0.0) + p = video_position_get(inf->vid) / video_length_get(inf->vid); + else p = 0.0; + edje_object_part_drag_value_set(elm_layout_edje_get(inf->lay), + "rage.dragable.pos", p, 0.0); +} + +static void +_cb_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + win_aspect_adjust(data); + win_title_update(data); +} + +static void +_cb_decode(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + win_frame_decode(data); +} + +static void +win_video_next(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + Eina_List *l; + const char *file; + + if (!inf->file_list) return; + if (!inf->file_cur) l = inf->file_list; + else l = inf->file_cur->next; + if (!l) + { + elm_exit(); + return; + } + file = l->data; + inf->file_cur = l; + video_position_set(inf->vid, 0.0); + video_play_set(inf->vid, EINA_FALSE); + video_file_set(inf->vid, file); + video_position_set(inf->vid, 0.0); + video_play_set(inf->vid, EINA_TRUE); + elm_layout_signal_emit(inf->lay, "action,newvid", "rage"); + win_aspect_adjust(win); + win_title_update(win); +} + +static void +win_video_prev(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + Eina_List *l; + const char *file; + + if (!inf->file_list) return; + if (!inf->file_cur) l = eina_list_last(inf->file_list); + else l = inf->file_cur->prev; + if (!l) return; + file = l->data; + inf->file_cur = l; + video_position_set(inf->vid, 0.0); + video_play_set(inf->vid, EINA_FALSE); + video_file_set(inf->vid, file); + video_position_set(inf->vid, 0.0); + video_play_set(inf->vid, EINA_TRUE); + elm_layout_signal_emit(inf->lay, "action,newvid", "rage"); + win_aspect_adjust(win); + win_title_update(win); +} + +static Eina_Bool +win_video_have_next(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + Eina_List *l; + + if (!inf->file_list) return EINA_FALSE; + if (!inf->file_cur) return EINA_FALSE; + else l = inf->file_cur->next; + if (!l) return EINA_FALSE; + return EINA_TRUE; +} + +static Eina_Bool +win_video_have_prev(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + Eina_List *l; + + if (!inf->file_list) return EINA_FALSE; + if (!inf->file_cur) return EINA_FALSE; + else l = inf->file_cur->prev; + if (!l) return EINA_FALSE; + return EINA_TRUE; +} + +static void +win_video_insert(Evas_Object *win, const char *file) +{ + Inf *inf = evas_object_data_get(win, "inf"); + + inf->file_list = eina_list_append_relative_list + (inf->file_list, eina_stringshare_add(file), inf->file_cur); + evas_object_data_set(win, "file_list", inf->file_list); +} + +static void +_cb_key_down(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) +{ + Evas_Event_Key_Down *ev = event_info; + Evas_Object *win = data; + Inf *inf = evas_object_data_get(win, "inf"); + + printf("%s | %s\n", ev->key, ev->keyname); + if ((!strcmp(ev->key, "Left")) || + (!strcmp(ev->key, "bracketleft"))) + { + if ((video_spu_button_count(inf->vid) > 0) && + (!strcmp(ev->key, "Left"))) + video_event_send(inf->vid, EMOTION_EVENT_LEFT); + else + { + double pos = video_position_get(inf->vid); + + if (!inf->last_action_rwind) + { + double t = ecore_time_get(); + if ((t - inf->last_action) < 1.0) inf->jump *= 1.2; + else inf->jump = -5.0; + inf->last_action = t; + } + else inf->jump = -5.0; + if (inf->jump < -300.0) inf->jump = -300.0; + inf->last_action_rwind = EINA_FALSE; + pos += inf->jump; + if (pos < 0.0) pos = 0.0; + video_position_set(inf->vid, pos); + elm_layout_signal_emit(inf->lay, "action,rewind", "rage"); + } + } + else if ((!strcmp(ev->key, "Right")) || + (!strcmp(ev->key, "bracketright"))) + { + double pos = video_position_get(inf->vid); + double len = video_length_get(inf->vid); + + if ((video_spu_button_count(inf->vid) > 0) && + (!strcmp(ev->key, "Right"))) + video_event_send(inf->vid, EMOTION_EVENT_RIGHT); + else + { + if (inf->last_action_rwind) + { + double t = ecore_time_get(); + if ((t - inf->last_action) < 1.0) inf->jump *= 1.2; + else inf->jump = 5.0; + inf->last_action = t; + } + else inf->jump = 5.0; + if (inf->jump > 300.0) inf->jump = 300.0; + inf->last_action_rwind = EINA_TRUE; + pos += inf->jump; + if (pos < (len - 1.0)) video_position_set(inf->vid, pos); + elm_layout_signal_emit(inf->lay, "action,forward", "rage"); + } + } + else if ((!strcmp(ev->key, "Up")) || + (!strcmp(ev->key, "plus")) || + (!strcmp(ev->key, "equal"))) + { + if ((video_spu_button_count(inf->vid) > 0) && + (!strcmp(ev->key, "Up"))) + video_event_send(inf->vid, EMOTION_EVENT_UP); + else + { + double vol = video_volume_get(inf->vid) + 0.05; + if (vol > 1.0) vol = 1.0; + video_volume_set(inf->vid, vol); + elm_layout_signal_emit(inf->lay, "action,volume_up", "rage"); + } + } + else if ((!strcmp(ev->key, "Down")) || + (!strcmp(ev->key, "minus"))) + { + if ((video_spu_button_count(inf->vid) > 0) && + (!strcmp(ev->key, "Down"))) + video_event_send(inf->vid, EMOTION_EVENT_DOWN); + else + { + double vol = video_volume_get(inf->vid) - 0.05; + if (vol < 0.0) vol = 0.0; + video_volume_set(inf->vid, vol); + elm_layout_signal_emit(inf->lay, "action,volume_down", "rage"); + } + } + else if ((!strcmp(ev->key, "space")) || + (!strcmp(ev->keyname, "p")) || + (!strcmp(ev->key, "XF86AudioPlay"))) + { + printf("ch: %i/%i [%s]\n", video_chapter_get(inf->vid), video_chapter_count(inf->vid), video_chapter_name_get(inf->vid, video_chapter_get(inf->vid))); + printf("ti: %s\n", video_title_get(inf->vid)); + printf("au: %i/%i [%s]\n", video_audio_channel_get(inf->vid), video_audio_channel_count(inf->vid), video_audio_channel_name_get(inf->vid, video_audio_channel_get(inf->vid))); + printf("vi: %i/%i [%s]\n", video_video_channel_get(inf->vid), video_video_channel_count(inf->vid), video_video_channel_name_get(inf->vid, video_video_channel_get(inf->vid))); + printf("sp: %i/%i [%s]\n", video_spu_channel_get(inf->vid), video_spu_channel_count(inf->vid), video_spu_channel_name_get(inf->vid, video_spu_channel_get(inf->vid))); + + win_do_play_pause(win); + } + else if ((!strcmp(ev->keyname, "s")) || + (!strcmp(ev->key, "XF86AudioStop"))) + { + video_stop(inf->vid); + elm_layout_signal_emit(inf->lay, "action,stop", "rage"); + } + else if ((!strcmp(ev->key, "Prior")) || + (!strcmp(ev->key, "XF86AudioPrev"))) + { + win_do_prev(win); + } + else if ((!strcmp(ev->key, "Next")) || + (!strcmp(ev->key, "XF86AudioNext"))) + { + win_do_next(win); + } + else if ((!strcmp(ev->keyname, "m")) || + (!strcmp(ev->key, "XF86AudioMute"))) + { + video_mute_set(inf->vid, !video_mute_get(inf->vid)); + if (video_mute_get(inf->vid)) + elm_layout_signal_emit(inf->lay, "action,mute", "rage"); + else + elm_layout_signal_emit(inf->lay, "action,unmute", "rage"); + } + else if (!strcmp(ev->keyname, "l")) + { + video_loop_set(inf->vid, !video_loop_get(inf->vid)); + if (video_loop_get(inf->vid)) + elm_layout_signal_emit(inf->lay, "action,loop", "rage"); + else + elm_layout_signal_emit(inf->lay, "action,sequential", "rage"); + } + else if ((!strcmp(ev->keyname, "q")) || + (!strcmp(ev->key, "Escape"))) + { + elm_exit(); + } + else if ((!strcmp(ev->keyname, "f")) || + (!strcmp(ev->key, "F11"))) + { + elm_win_fullscreen_set(win, !elm_win_fullscreen_get(win)); + } + else if (!strcmp(ev->keyname, "n")) + { + int w, h; + + video_ratio_size_get(inf->vid, &w, &h); + if ((w > 1) && (h > 1)) evas_object_resize(win, w, h); + } + else if (!strcmp(ev->keyname, "z")) + { + if (inf->zoom_mode == 0) inf->zoom_mode = 1; + else inf->zoom_mode = 0; + win_aspect_adjust(win); + if (inf->zoom_mode == 1) + elm_layout_signal_emit(inf->lay, "action,zoom_fill", "rage"); + else + elm_layout_signal_emit(inf->lay, "action,zoom_fit", "rage"); + } + else if (!strcmp(ev->keyname, "e")) + { + video_eject(inf->vid); + elm_layout_signal_emit(inf->lay, "action,eject", "rage"); + } + else if ((!strcmp(ev->key, "Return")) || + (!strcmp(ev->key, "KP_Enter"))) + { + video_event_send(inf->vid, EMOTION_EVENT_SELECT); + } + else if ((!strcmp(ev->key, "comman")) || + (!strcmp(ev->key, "less"))) + { + video_event_send(inf->vid, EMOTION_EVENT_ANGLE_PREV); + } + else if ((!strcmp(ev->key, "period")) || + (!strcmp(ev->key, "greater"))) + { + video_event_send(inf->vid, EMOTION_EVENT_ANGLE_NEXT); + } + else if (!strcmp(ev->key, "Tab")) + { + video_event_send(inf->vid, EMOTION_EVENT_FORCE); + } + else if (!strcmp(ev->key, "0")) + { + video_event_send(inf->vid, EMOTION_EVENT_0); + } + else if (!strcmp(ev->key, "1")) + { + video_event_send(inf->vid, EMOTION_EVENT_1); + } + else if (!strcmp(ev->key, "2")) + { + video_event_send(inf->vid, EMOTION_EVENT_2); + } + else if (!strcmp(ev->key, "3")) + { + video_event_send(inf->vid, EMOTION_EVENT_3); + } + else if (!strcmp(ev->key, "4")) + { + video_event_send(inf->vid, EMOTION_EVENT_4); + } + else if (!strcmp(ev->key, "5")) + { + video_event_send(inf->vid, EMOTION_EVENT_5); + } + else if (!strcmp(ev->key, "6")) + { + video_event_send(inf->vid, EMOTION_EVENT_6); + } + else if (!strcmp(ev->key, "7")) + { + video_event_send(inf->vid, EMOTION_EVENT_7); + } + else if (!strcmp(ev->key, "8")) + { + video_event_send(inf->vid, EMOTION_EVENT_8); + } + else if (!strcmp(ev->key, "9")) + { + video_event_send(inf->vid, EMOTION_EVENT_9); + } + else if ((!strcmp(ev->key, "grave")) || + (!strcmp(ev->key, "asciitilde"))) + { + video_event_send(inf->vid, EMOTION_EVENT_10); + } + else if (!strcmp(ev->key, "F1")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU1); + } + else if (!strcmp(ev->key, "F2")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU2); + } + else if (!strcmp(ev->key, "F3")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU3); + } + else if (!strcmp(ev->key, "F4")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU4); + } + else if (!strcmp(ev->key, "F5")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU5); + } + else if (!strcmp(ev->key, "F6")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU6); + } + else if (!strcmp(ev->key, "F7")) + { + video_event_send(inf->vid, EMOTION_EVENT_MENU7); + } +} + +static void +_cb_stop_next(void *data) +{ + Inf *inf = evas_object_data_get(data, "inf"); + inf->next_job = NULL; + win_video_next(data); +} + +static void +_cb_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(data, "inf"); + printf("stop\n"); + if (win_video_have_next(data)) + { + if (inf->next_job) ecore_job_del(inf->next_job); + inf->next_job = ecore_job_add(_cb_stop_next, data); + } + else elm_exit(); +} + +static void +_cb_opened(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("opened\n"); + win_aspect_adjust(data); + win_frame_decode(data); + win_title_update(data); +} + +static void +_cb_length(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("len\n"); + win_frame_decode(data); + win_title_update(data); +} + +static void +_cb_title(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("title\n"); + win_title_update(data); +} + +static void +_cb_audio(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("audio\n"); + win_title_update(data); +} + +static void +_cb_channels(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("channels\n"); + win_title_update(data); +} + +static void +_cb_play_start(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(data, "inf"); + printf("play start\n"); + win_aspect_adjust(data); + win_frame_decode(data); + win_title_update(data); + inf->playing = EINA_TRUE; +} + +static void +_cb_play_finish(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Inf *inf = evas_object_data_get(data, "inf"); + printf("play finish\n"); + if (!inf->playing) win_show(data, 160, 160); + inf->playing = EINA_FALSE; +} + +static void +_cb_button_num(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("button num\n"); + win_title_update(data); +} + +static void +_cb_button(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + printf("button\n"); + win_title_update(data); +} + +static void +win_video_init(Evas_Object *win) +{ + Inf *inf = evas_object_data_get(win, "inf"); + Evas_Object *o; + + o = video_add(win); + video_fill_set(o, EINA_TRUE); + inf->vid = o; + evas_object_smart_callback_add(o, "frame_resize", _cb_resize, win); + evas_object_smart_callback_add(o, "frame_decode", _cb_decode, win); + evas_object_smart_callback_add(o, "stop", _cb_stop, win); + evas_object_smart_callback_add(o, "opened", _cb_opened, win); + evas_object_smart_callback_add(o, "length", _cb_length, win); + evas_object_smart_callback_add(o, "title", _cb_title, win); + evas_object_smart_callback_add(o, "audio", _cb_audio, win); + evas_object_smart_callback_add(o, "channels", _cb_channels, win); + evas_object_smart_callback_add(o, "play_start", _cb_play_start, win); + evas_object_smart_callback_add(o, "play_finish", _cb_play_finish, win); + evas_object_smart_callback_add(o, "button_num", _cb_button_num, win); + evas_object_smart_callback_add(o, "button", _cb_button, win); + elm_object_part_content_set(inf->lay, "rage.content", o); + evas_object_show(o); + + evas_object_event_callback_add(win, EVAS_CALLBACK_KEY_DOWN, _cb_key_down, win); +} + +static void +win_video_file_list_set(Evas_Object *win, Eina_List *list) +{ + Inf *inf = evas_object_data_get(win, "inf"); + Eina_List *l, *list2 = NULL; + const char *f; + + EINA_LIST_FOREACH(list, l, f) + { + list2 = eina_list_append(list2, eina_stringshare_add(f)); + } + inf->file_list = list2; + win_video_next(win); +} + +static Eina_Bool +_cb_show_timeout(void *data) +{ + Evas_Object *win = data; + Inf *inf = evas_object_data_get(win, "inf"); + + inf->show_timeout = NULL; + evas_object_show(win); + return EINA_FALSE; +} + +EAPI_MAIN int +elm_main(int argc, char **argv) +{ + Evas_Object *win; + char buf[4096]; + const char *f; + Eina_List *list = NULL; + int i; + Inf *inf; + + if (argc <= 1) goto end; + for (i = 1; i < argc; i++) + { + list = eina_list_append(list, eina_stringshare_add(argv[i])); + } + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR); + elm_app_compile_data_dir_set(PACKAGE_DATA_DIR); + elm_app_info_set(elm_main, "rage", "themes/default.edj"); + + snprintf(buf, sizeof(buf), "%s/themes/default.edj", elm_app_data_dir_get()); + elm_theme_overlay_add(NULL, buf); + + win = win_add(); + evas_object_resize(win, 320, 200); + + win_video_init(win); + win_video_file_list_set(win, list); + EINA_LIST_FREE(list, f) eina_stringshare_del(f); + + inf = evas_object_data_get(win, "inf"); + inf->show_timeout = ecore_timer_add(10.0, _cb_show_timeout, win); + + elm_run(); + +end: + elm_shutdown(); + return 0; +} +ELM_MAIN() diff --git a/src/bin/main.h b/src/bin/main.h new file mode 100644 index 0000000..1fb99b9 --- /dev/null +++ b/src/bin/main.h @@ -0,0 +1,6 @@ +#ifndef _MAIN_H__ +#define _MAIN_H__ 1 + +#include "rage_config.h" + +#endif diff --git a/src/bin/video.c b/src/bin/video.c new file mode 100644 index 0000000..a96411c --- /dev/null +++ b/src/bin/video.c @@ -0,0 +1,828 @@ +#include +#include +#include "video.h" +#include "rage_config.h" + +typedef struct _Video Video; + +struct _Video +{ + Evas_Object_Smart_Clipped_Data __clipped_data; + Evas_Object *clip, *o_vid, *o_event; + Ecore_Timer *smooth_timer; + Ecore_Job *restart_job; + const char *file; + int w, h; + int iw, ih, piw, pih; + int resizes; + struct { + Evas_Coord x, y; + Eina_Bool down : 1; + } down; + Eina_Bool nosmooth : 1; + Eina_Bool loop : 1; + Eina_Bool fill : 1; +}; + +static Evas_Smart *_smart = NULL; +static Evas_Smart_Class _parent_sc = EVAS_SMART_CLASS_INIT_NULL; + +static void _ob_resize(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h); + +static void +_cb_vid_frame(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + Evas_Coord ox, oy, ow, oh; +// double len, pos; + + if (!sd) return; + evas_object_geometry_get(data, &ox, &oy, &ow, &oh); + evas_object_show(sd->o_vid); + evas_object_show(sd->clip); + _ob_resize(data, ox, oy, ow, oh); +// len = emotion_object_play_length_get(sd->o_vid); +// pos = emotion_object_position_get(sd->o_vid); + evas_object_smart_callback_call(data, "frame_decode", NULL); +} + +static void +_cb_vid_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + Evas_Coord ox, oy, ow, oh; + + if (!sd) return; + evas_object_geometry_get(data, &ox, &oy, &ow, &oh); + _ob_resize(data, ox, oy, ow, oh); +} + +static void +_cb_vid_len_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; +} + +static void +_cb_restart(void *data) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + sd->restart_job = NULL; + emotion_object_position_set(sd->o_vid, 0.0); + emotion_object_play_set(sd->o_vid, EINA_TRUE); +} + +static void +_cb_vid_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + if (sd->restart_job) ecore_job_del(sd->restart_job); + if (sd->loop) + { + sd->restart_job = ecore_job_add(_cb_restart, data); + evas_object_smart_callback_call(data, "loop", NULL); + } + else + { + sd->restart_job = NULL; + evas_object_smart_callback_call(data, "stop", NULL); + } +} + +static void +_cb_vid_progress(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "frame_decode", NULL); +// DBG("progress: '%s' '%3.3f", +// emotion_object_progress_info_get(sd->o_vid), +// emotion_object_progress_status_get(sd->o_vid)); +} + +static void +_cb_vid_ref(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "frame_decode", NULL); +// DBG("ref: '%s' num '%i'", +// emotion_object_ref_file_get(sd->o_vid), +// emotion_object_ref_num_get(sd->o_vid)); +} + +static void +_cb_open_done(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "opened", NULL); +} + +static void +_cb_position_update(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "frame_decode", NULL); +} + +static void +_cb_length_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "length", NULL); +} + +static void +_cb_title_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "title", NULL); +} + +static void +_cb_audio_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "audio", NULL); +} + +static void +_cb_channels_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "channels", NULL); +} + +static void +_cb_play_start(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "play_start", NULL); +} + +static void +_cb_play_finish(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "play_finish", NULL); +} + +static void +_cb_button_num_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "button_num", NULL); +} + +static void +_cb_button_change(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + evas_object_smart_callback_call(data, "button", NULL); +} + +static void +_ob_resize(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + + emotion_object_size_get(sd->o_vid, &(sd->iw), &(sd->ih)); + if (!sd->fill) + { + if ((w <= 0) || (h <= 0) || (sd->iw <= 0) || (sd->ih <= 0)) + { + w = 1; + h = 1; + } + else + { + int iw = 1, ih = 1; + double ratio; + + ratio = emotion_object_ratio_get(sd->o_vid); + if (ratio > 0.0) sd->iw = (sd->ih * ratio); + else ratio = (double)sd->iw / (double)sd->ih; + + iw = w; + ih = ((double)w + 1.0) / ratio; + if (ih > h) + { + ih = h; + iw = h * ratio; + if (iw > w) iw = w; + } + x += ((w - iw) / 2); + y += ((h - ih) / 2); + w = iw; + h = ih; + } + } + evas_object_move(sd->o_vid, x, y); + evas_object_resize(sd->o_vid, w, h); + if ((sd->piw != sd->iw) || (sd->pih != sd->ih)) + { + sd->piw = sd->iw; + sd->pih = sd->ih; + evas_object_smart_callback_call(obj, "frame_resize", NULL); + } +} + +static void _smart_calculate(Evas_Object *obj); + +static void +_smart_add(Evas_Object *obj) +{ + Video *sd; + Evas_Object *o; + + sd = calloc(1, sizeof(Video)); + EINA_SAFETY_ON_NULL_RETURN(sd); + evas_object_smart_data_set(obj, sd); + + _parent_sc.add(obj); + + o = evas_object_rectangle_add(evas_object_evas_get(obj)); + evas_object_smart_member_add(o, obj); + sd->clip = o; + evas_object_color_set(o, 255, 255, 255, 255); +} + +static void +_smart_del(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (sd->file) eina_stringshare_del(sd->file); + if (sd->clip) evas_object_del(sd->clip); + if (sd->o_vid) evas_object_del(sd->o_vid); + if (sd->o_event) evas_object_del(sd->o_event); + if (sd->smooth_timer) sd->smooth_timer = ecore_timer_del(sd->smooth_timer); + if (sd->restart_job) ecore_job_del(sd->restart_job); + + _parent_sc.del(obj); +} + +static void +_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) +{ + Video *sd = evas_object_smart_data_get(obj); + Evas_Coord ox, oy, ow, oh; + if (!sd) return; + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); + if ((ow == w) && (oh == h)) return; + evas_object_smart_changed(obj); + evas_object_resize(sd->clip, ow, oh); +} + +static Eina_Bool +_unsmooth_timeout(void *data) +{ + Video *sd = evas_object_smart_data_get(data); + Evas_Coord ox, oy, ow, oh; + + if (!sd) return EINA_FALSE; + evas_object_geometry_get(data, &ox, &oy, &ow, &oh); + sd->smooth_timer = NULL; + sd->nosmooth = EINA_FALSE; + emotion_object_smooth_scale_set(sd->o_vid, !sd->nosmooth); + return EINA_FALSE; +} + +static void +_smooth_handler(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + double interval; + + if (!sd) return; + interval = ecore_animator_frametime_get(); + if (interval <= 0.0) interval = 1.0/60.0; + if (!sd->nosmooth) + { + if (sd->resizes >= 2) + { + sd->nosmooth = EINA_TRUE; + sd->resizes = 0; + emotion_object_smooth_scale_set(sd->o_vid, !sd->nosmooth); + if (sd->smooth_timer) + sd->smooth_timer = ecore_timer_del(sd->smooth_timer); + sd->smooth_timer = ecore_timer_add(interval * 10, + _unsmooth_timeout, obj); + } + } + else + { + if (sd->smooth_timer) + sd->smooth_timer = ecore_timer_del(sd->smooth_timer); + sd->smooth_timer = ecore_timer_add(interval * 10, + _unsmooth_timeout, obj); + } +} + +static void +_smart_calculate(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + Evas_Coord ox, oy, ow, oh; + + if (!sd) return; + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); + if ((ow != sd->w) || (oh != sd->h)) sd->resizes++; + else sd->resizes = 0; + _smooth_handler(obj); + sd->w = ow; + sd->h = oh; + _ob_resize(obj, ox, oy, ow, oh); + evas_object_move(sd->clip, ox, oy); + evas_object_resize(sd->clip, ow, oh); +} + +static void +_smart_move(Evas_Object *obj, Evas_Coord x EINA_UNUSED, Evas_Coord y EINA_UNUSED) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + evas_object_smart_changed(obj); +} + +static void +_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) +{ + Evas_Event_Mouse_Down *ev = event; + Video *sd = evas_object_smart_data_get(data); + if (!sd) return; + + if (sd->down.down) return; + if (ev->button != 1) return; + sd->down.x = ev->canvas.x; + sd->down.y = ev->canvas.y; + sd->down.down = EINA_TRUE; +} + +static void +_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) +{ + Evas_Event_Mouse_Down *ev = event; + Video *sd = evas_object_smart_data_get(data); + Evas_Coord dx, dy; + if (!sd) return; + + if (!sd->down.down) return; + sd->down.down = EINA_FALSE; + dx = abs(ev->canvas.x - sd->down.x); + dy = abs(ev->canvas.y - sd->down.y); + if ((dx <= elm_config_finger_size_get()) && + (dy <= elm_config_finger_size_get())) + evas_object_smart_callback_call(data, "clicked", NULL); +} + +static void +_smart_init(void) +{ + static Evas_Smart_Class sc; + + evas_object_smart_clipped_smart_set(&_parent_sc); + sc = _parent_sc; + sc.name = "video"; + sc.version = EVAS_SMART_CLASS_VERSION; + sc.add = _smart_add; + sc.del = _smart_del; + sc.resize = _smart_resize; + sc.move = _smart_move; + sc.calculate = _smart_calculate; + _smart = evas_smart_class_new(&sc); +} + +Evas_Object * +video_add(Evas_Object *parent) +{ + Evas *e; + Evas_Object *obj, *o; + Video *sd; + char *modules[] = + { + NULL, + "gstreamer", + "xine", + "vlc", + "gstreamer1" + }; + char *mod = NULL; + + EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); + e = evas_object_evas_get(parent); + if (!e) return NULL; + + if (!_smart) _smart_init(); + obj = evas_object_smart_add(e, _smart); + sd = evas_object_smart_data_get(obj); + if (!sd) return obj; + + emotion_init(); + o = sd->o_vid = emotion_object_add(evas_object_evas_get(obj)); + emotion_object_keep_aspect_set(o, EMOTION_ASPECT_KEEP_NONE); + mod = modules[4]; + if (!emotion_object_init(o, mod)) + { + evas_object_del(sd->o_vid); + sd->o_vid = NULL; + return obj; + } + evas_object_smart_callback_add(o, "frame_decode", _cb_vid_frame, obj); + evas_object_smart_callback_add(o, "frame_resize", _cb_vid_resize, obj); + evas_object_smart_callback_add(o, "length_change", _cb_vid_len_change, obj); + evas_object_smart_callback_add(o, "decode_stop", _cb_vid_stop, obj); + evas_object_smart_callback_add(o, "progress_change", _cb_vid_progress, obj); + evas_object_smart_callback_add(o, "ref_change", _cb_vid_ref, obj); + evas_object_smart_callback_add(o, "open_done", _cb_open_done, obj); + evas_object_smart_callback_add(o, "position_update", _cb_position_update, obj); + evas_object_smart_callback_add(o, "length_change", _cb_length_change, obj); + evas_object_smart_callback_add(o, "title_change", _cb_title_change, obj); + evas_object_smart_callback_add(o, "audio_level_change", _cb_audio_change, obj); + evas_object_smart_callback_add(o, "channels_change", _cb_channels_change, obj); + evas_object_smart_callback_add(o, "playback_started", _cb_play_start, obj); + evas_object_smart_callback_add(o, "playback_finished", _cb_play_finish, obj); + evas_object_smart_callback_add(o, "button_num_change", _cb_button_num_change, obj); + evas_object_smart_callback_add(o, "button_change", _cb_button_change, obj); + evas_object_smart_member_add(o, obj); + evas_object_clip_set(o, sd->clip); + evas_object_raise(sd->o_event); + + sd->o_event = evas_object_rectangle_add(e); + evas_object_color_set(sd->o_event, 0, 0, 0, 0); + evas_object_repeat_events_set(sd->o_event, EINA_TRUE); + evas_object_smart_member_add(sd->o_event, obj); + evas_object_clip_set(sd->o_event, sd->clip); + evas_object_show(sd->o_event); + evas_object_event_callback_add(sd->o_event, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, obj); + evas_object_event_callback_add(sd->o_event, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, obj); + return obj; +} + +void +video_file_set(Evas_Object *obj, const char *file) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + evas_object_hide(sd->o_vid); + evas_object_hide(sd->clip); + eina_stringshare_replace(&(sd->file), file); + emotion_object_file_set(sd->o_vid, sd->file); + video_position_set(obj, 0.0); +} + +void +video_mute_set(Evas_Object *obj, Eina_Bool mute) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_audio_mute_set(sd->o_vid, mute); +} + +Eina_Bool +video_mute_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return EINA_FALSE; + return emotion_object_audio_mute_get(sd->o_vid); +} + +void +video_play_set(Evas_Object *obj, Eina_Bool play) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_play_set(sd->o_vid, play); +} + +Eina_Bool +video_play_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return EINA_FALSE; + return emotion_object_play_get(sd->o_vid); +} + +void +video_loop_set(Evas_Object *obj, Eina_Bool loop) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->loop = loop; +} + +Eina_Bool +video_loop_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return EINA_FALSE; + return sd->loop; +} + +void +video_fill_set(Evas_Object *obj, Eina_Bool fill) +{ + Evas_Coord ox, oy, ow, oh; + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->fill = fill; + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); + _ob_resize(obj, ox, oy, ow, oh); +} + +Eina_Bool +video_fill_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return EINA_FALSE; + return sd->fill; +} + +void +video_stop(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + evas_object_hide(sd->o_vid); + evas_object_hide(sd->clip); + emotion_object_play_set(sd->o_vid, EINA_FALSE); + emotion_object_position_set(sd->o_vid, 0.0); +} + +void +video_position_set(Evas_Object *obj, double pos) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_position_set(sd->o_vid, pos); +} + +double +video_position_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0.0; + return emotion_object_position_get(sd->o_vid); +} + +double +video_length_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0.0; + return emotion_object_play_length_get(sd->o_vid); +} + +void +video_ratio_size_get(Evas_Object *obj, int *w, int *h) +{ + Video *sd = evas_object_smart_data_get(obj); + *w = 1; + *h = 1; + if (!sd) return; + emotion_object_size_get(sd->o_vid, &(sd->iw), &(sd->ih)); + if ((sd->iw <= 0) || (sd->ih <= 0)) + { + *w = 1; + *h = 1; + } + else + { + double ratio; + + ratio = emotion_object_ratio_get(sd->o_vid); + if (ratio > 0.0) sd->iw = (sd->ih * ratio) + 0.5; + else ratio = (double)sd->iw / (double)sd->ih; + *w = sd->iw; + *h = sd->ih; + } +} + +void +video_eject(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_eject(sd->o_vid); +} + +int +video_chapter_count(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_chapter_count(sd->o_vid); +} + +void +video_chapter_set(Evas_Object *obj, int chapter) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_chapter_set(sd->o_vid, chapter); +} + +int +video_chapter_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_chapter_get(sd->o_vid); +} + +const char * +video_chapter_name_get(Evas_Object *obj, int chapter) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + return emotion_object_chapter_name_get(obj, chapter); +} + +void +video_volume_set(Evas_Object *obj, double vol) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_audio_volume_set(sd->o_vid, vol); +} + +double +video_volume_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0.0; + return emotion_object_audio_volume_get(sd->o_vid); +} + +Eina_Bool +video_has_video_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return EINA_FALSE; + return emotion_object_video_handled_get(sd->o_vid); +} + +Eina_Bool +video_has_audio_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return EINA_FALSE; + return emotion_object_audio_handled_get(sd->o_vid); +} + +const char * +video_title_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + return emotion_object_title_get(obj); +} + +int +video_audio_channel_count(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_audio_channel_count(sd->o_vid); +} + +void +video_audio_channel_set(Evas_Object *obj, int chan) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_audio_channel_set(sd->o_vid, chan); +} + +int +video_audio_channel_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_audio_channel_get(sd->o_vid); +} + +const char * +video_audio_channel_name_get(Evas_Object *obj, int chan) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + return emotion_object_audio_channel_name_get(obj, chan); +} + +int +video_video_channel_count(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_video_channel_count(sd->o_vid); +} + +void +video_video_channel_set(Evas_Object *obj, int chan) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_video_channel_set(sd->o_vid, chan); +} + +int +video_video_channel_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_video_channel_get(sd->o_vid); +} + +const char * +video_video_channel_name_get(Evas_Object *obj, int chan) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + return emotion_object_video_channel_name_get(obj, chan); +} + +int +video_spu_channel_count(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_spu_channel_count(sd->o_vid); +} + +void +video_spu_channel_set(Evas_Object *obj, int chan) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_spu_channel_set(sd->o_vid, chan); +} + +int +video_spu_channel_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_spu_channel_get(sd->o_vid); +} + +const char * +video_spu_channel_name_get(Evas_Object *obj, int chan) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + return emotion_object_spu_channel_name_get(obj, chan); +} + +int +video_spu_button_count(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_spu_button_count_get(sd->o_vid); +} + +int +video_spu_button_get(Evas_Object *obj) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return emotion_object_spu_button_get(sd->o_vid); +} + +void +video_event_send(Evas_Object *obj, Emotion_Event ev) +{ + Video *sd = evas_object_smart_data_get(obj); + if (!sd) return; + emotion_object_event_simple_send(sd->o_vid, ev); +} + + +// emotion_object_seekable_get +// emotion_object_play_speed_set +// emotion_object_play_speed_get +// emotion_object_meta_info_get +// emotion_object_buffer_size_get +// emotion_object_video_mute_set +// emotion_object_video_mute_get +// emotion_object_video_subtitle_file_set +// emotion_object_spu_mute_set +// emotion_object_spu_mute_get +// emotion_object_progress_info_get +// emotion_object_progress_status_get +// emotion_object_ref_file_get diff --git a/src/bin/video.h b/src/bin/video.h new file mode 100644 index 0000000..ed5aaa1 --- /dev/null +++ b/src/bin/video.h @@ -0,0 +1,47 @@ +#ifndef _VIDEO_H__ +#define _VIDEO_H__ 1 + +#include + +Evas_Object *video_add(Evas_Object *parent); +void video_file_set(Evas_Object *obj, const char *file); +void video_mute_set(Evas_Object *obj, Eina_Bool mute); +Eina_Bool video_mute_get(Evas_Object *obj); +void video_play_set(Evas_Object *obj, Eina_Bool play); +Eina_Bool video_play_get(Evas_Object *obj); +void video_loop_set(Evas_Object *obj, Eina_Bool loop); +Eina_Bool video_loop_get(Evas_Object *obj); +void video_fill_set(Evas_Object *obj, Eina_Bool fill); +Eina_Bool video_fill_get(Evas_Object *obj); +void video_position_set(Evas_Object *obj, double pos); +double video_position_get(Evas_Object *obj); +double video_length_get(Evas_Object *obj); +void video_stop(Evas_Object *obj); +void video_ratio_size_get(Evas_Object *obj, int *w, int *h); +void video_eject(Evas_Object *obj); +int video_chapter_count(Evas_Object *obj); +void video_chapter_set(Evas_Object *obj, int chapter); +int video_chapter_get(Evas_Object *obj); +const char * video_chapter_name_get(Evas_Object *obj, int chapter); +void video_volume_set(Evas_Object *obj, double vol); +double video_volume_get(Evas_Object *obj); +Eina_Bool video_has_video_get(Evas_Object *obj); +Eina_Bool video_has_audio_get(Evas_Object *obj); +const char *video_title_get(Evas_Object *obj); +int video_audio_channel_count(Evas_Object *obj); +void video_audio_channel_set(Evas_Object *obj, int chan); +int video_audio_channel_get(Evas_Object *obj); +const char *video_audio_channel_name_get(Evas_Object *obj, int chan); +int video_video_channel_count(Evas_Object *obj); +void video_video_channel_set(Evas_Object *obj, int chan); +int video_video_channel_get(Evas_Object *obj); +const char *video_video_channel_name_get(Evas_Object *obj, int chan); +int video_spu_channel_count(Evas_Object *obj); +void video_spu_channel_set(Evas_Object *obj, int chan); +int video_spu_channel_get(Evas_Object *obj); +const char *video_spu_channel_name_get(Evas_Object *obj, int chan); +int video_spu_button_count(Evas_Object *obj); +int video_spu_button_get(Evas_Object *obj); +void video_event_send(Evas_Object *obj, Emotion_Event ev); + +#endif