diff --git a/emotionxx/include/emotionxx/AudioObject.h b/emotionxx/include/emotionxx/AudioObject.h new file mode 100644 index 0000000..1a14e3f --- /dev/null +++ b/emotionxx/include/emotionxx/AudioObject.h @@ -0,0 +1,40 @@ +#ifndef EMOTIONXX_AUDIO_OBJECT_H +#define EMOTIONXX_AUDIO_OBJECT_H + +/* Project */ +#include "Object.h" + +/* EFL++ */ +#include +#include +#include + +/* STD */ +#include +using namespace std; + +namespace Emotionxx { + +class AudioObject : public Emotionxx::Object +{ +public: + AudioObject (Evasxx::Canvas &canvas, const std::string &moduleFilename); + AudioObject (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename); + AudioObject (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename); + AudioObject (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename); + ~AudioObject (); + + void setAudioVolume (double vol); + double getAudioVolume (); + void setAudioMute (bool mute); + bool getAudioMute (); + int countAudioChannel (); + string getAudioChannelName (int channel); + void setAudioChannel (int channel); + int getAudioChannel (); + +}; + +} // end namespace Emotionxx + +#endif // EMOTIONXX_AUDIO_OBJECT_H \ No newline at end of file diff --git a/emotionxx/include/emotionxx/Emotionxx.h b/emotionxx/include/emotionxx/Emotionxx.h index 5de5ada..fbc885d 100644 --- a/emotionxx/include/emotionxx/Emotionxx.h +++ b/emotionxx/include/emotionxx/Emotionxx.h @@ -8,6 +8,9 @@ */ #include "Object.h" +#include "AudioObject.h" +#include "VideoObject.h" +#include "SPUObject.h" #endif // EMOTIONXX_H diff --git a/emotionxx/include/emotionxx/Makefile.am b/emotionxx/include/emotionxx/Makefile.am index acf4857..e8ba621 100644 --- a/emotionxx/include/emotionxx/Makefile.am +++ b/emotionxx/include/emotionxx/Makefile.am @@ -1,7 +1,10 @@ libemotionxx_HEADERS = \ Object.h \ - Emotionxx.h + Emotionxx.h \ + SPUObject.h \ + VideoObject.h \ + AudioObject.h libemotionxxdir = \ $(pkgincludedir) diff --git a/emotionxx/include/emotionxx/Object.h b/emotionxx/include/emotionxx/Object.h index 3b95bd3..a453887 100644 --- a/emotionxx/include/emotionxx/Object.h +++ b/emotionxx/include/emotionxx/Object.h @@ -16,7 +16,7 @@ using namespace std; /** * C++ Wrapper for the Enlightenment Emotion Library (EMOTION) * - * @author Michael 'Mickey' Lauer + * @author Andreas Volz */ namespace Emotionxx { @@ -24,81 +24,55 @@ namespace Emotionxx { class Object : public Evasxx::Object { public: - Object( Evasxx::Canvas &canvas, const std::string &module_filename ); - Object( Evasxx::Canvas &canvas, const std::string &filename, const std::string &module_filename ); - Object( Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &module_filename ); - Object( Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &module_filename ); - ~Object(); - - /** - * Initialize video engine to either use xine or gstreamer - * - * @param module_filename name of viedo engine to be used - */ - bool engineInit (const std::string &module_filename); - void setFile (const std::string &filename); std::string getFile (); + void setPlay (bool play); bool getPlay (); + void setPosition (double sec); double getPosition (); + bool getVideoHandled (); bool getAudioHandled (); + bool getSeekable (); + double getPlayLengh (); - Eflxx::Size getSize (); - void setSmoothScale (bool smooth); - bool getSmoothScale (); - double getRatio (); - void sendSimpleEvent (Emotion_Event ev); - void setAudioVolume (double vol); - double getAudioVolume (); - void setAudioMute (bool mute); - bool getAudioMute (); - int countAudioChannel (); - string getChannelName (int channel); - void setAudioChannel (int channel); - int getAudioChannel (); - void setVideoMute (bool mute); - bool getVideoMute (); - int countVideoChannel (); - string getVideoChannelName (int channel); - void setVideoChannel (int channel); - int getVideoChannel (); - void setSPUMute (bool mute); - bool getSPUMute (); - int countSPUChannel (); - std::string getSPUChannelName (int channel); - void setSPUChannel (int channel); - int getSPUChannel (); - int countChapter (); - void setChapter (int chapter); - int getChapter (); - std::string getChapterName (int chapter); + void setPlaySpeed (double speed); double getPlaySpeed (); + void eject (); + std::string getTitle (); + string getProgressInfo (); double getProgressStatus (); + string getRefFile (); int getRefNum (); - int getSPUButtonCount (); - int getSPUButton (); + string getMetaInfo (Emotion_Meta_Info meta); void setVIS (Emotion_Vis visualization); Emotion_Vis getVIS (); bool isVISSupported (Emotion_Vis visualization); -/* +protected: + Object (Evasxx::Canvas &canvas, const std::string &moduleFilename); + Object (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename); + Object (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename); + Object (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename); + virtual ~Object (); - - - - -*/ +private: + /** + * Initialize video engine to either use xine or gstreamer + * + * @param moduleFilename name of viedo engine to be used + */ + bool engineInit (const std::string &moduleFilename); }; } // end namespace Emotionxx diff --git a/emotionxx/include/emotionxx/SPUObject.h b/emotionxx/include/emotionxx/SPUObject.h new file mode 100644 index 0000000..f246755 --- /dev/null +++ b/emotionxx/include/emotionxx/SPUObject.h @@ -0,0 +1,43 @@ +#ifndef EMOTIONXX_SPU_OBJECT_H +#define EMOTIONXX_SPU_OBJECT_H + +/* Project */ +#include "VideoObject.h" + +/* EFL++ */ +#include +#include +#include + +/* STD */ +#include +using namespace std; + +namespace Emotionxx { + +/*! + * SPU == Subtitle Processing Unit + */ +class SPUObject : public Emotionxx::VideoObject +{ +public: + SPUObject (Evasxx::Canvas &canvas, const std::string &moduleFilename); + SPUObject (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename); + SPUObject (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename); + SPUObject (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename); + ~SPUObject (); + + void setSPUMute (bool mute); + bool getSPUMute (); + int countSPUChannel (); + std::string getSPUChannelName (int channel); + void setSPUChannel (int channel); + int getSPUChannel (); + + int getSPUButtonCount (); + int getSPUButton (); +}; + +} // end namespace Emotionxx + +#endif // EMOTIONXX_SPU_OBJECT_H \ No newline at end of file diff --git a/emotionxx/include/emotionxx/VideoObject.h b/emotionxx/include/emotionxx/VideoObject.h new file mode 100644 index 0000000..b495dbe --- /dev/null +++ b/emotionxx/include/emotionxx/VideoObject.h @@ -0,0 +1,71 @@ +#ifndef EMOTIONXX_VIDEO_OBJECT_H +#define EMOTIONXX_VIDEO_OBJECT_H + +/* Project */ +#include "AudioObject.h" + +/* EFL++ */ +#include +#include +#include + +/* STD */ +#include +using namespace std; + +namespace Emotionxx { + +class VideoObject : public Emotionxx::AudioObject +{ +public: + VideoObject (Evasxx::Canvas &canvas, const std::string &moduleFilename); + VideoObject (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename); + VideoObject (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename); + VideoObject (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename); + ~VideoObject (); + + void setVideoMute (bool mute); + bool getVideoMute (); + int countVideoChannel (); + string getVideoChannelName (int channel); + void setVideoChannel (int channel); + int getVideoChannel (); + + /*! + * Sets whether to use of high-quality image scaling algorithm + * of the given video object. + * + * When enabled, a higher quality video scaling algorithm is used when + * scaling videos to sizes other than the source video. This gives + * better results but is more computationally expensive. + * + * @param smooth Whether to use smooth scale or not. + */ + void setSmoothScale (bool smooth); + + /*! + * Gets whether the high-quality image scaling algorithm + * of the given video object is used. + * + * @return Whether the smooth scale is used or not. + */ + bool getSmoothScale (); + + double getRatio (); + + Eflxx::Size getSize (); + + int countChapter (); + void setChapter (int chapter); + int getChapter (); + std::string getChapterName (int chapter); + + /*! + * Send a control event to the DVD. + */ + void sendSimpleEvent (Emotion_Event ev); +}; + +} // end namespace Emotionxx + +#endif // EMOTIONXX_VIDEO_OBJECT_H \ No newline at end of file diff --git a/emotionxx/src/AudioObject.cpp b/emotionxx/src/AudioObject.cpp new file mode 100644 index 0000000..a12c95f --- /dev/null +++ b/emotionxx/src/AudioObject.cpp @@ -0,0 +1,83 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include "../include/emotionxx/AudioObject.h" + +extern "C" { +#include +} + +#include +#include + +using namespace std; + +namespace Emotionxx { + +AudioObject::AudioObject (Evasxx::Canvas &canvas, const std::string &moduleFilename) : + Object (canvas, moduleFilename) +{ +} + +AudioObject::AudioObject (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename) : + Object (canvas, filename, moduleFilename) +{ +} + +AudioObject::AudioObject (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename) : + Object (canvas, pos, filename, moduleFilename) +{ +} + +AudioObject::AudioObject (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename) : + Object (canvas, rect, filename, moduleFilename) +{ +} + +AudioObject::~AudioObject () +{ +} + +void AudioObject::setAudioVolume (double vol) +{ + emotion_object_audio_volume_set (o, vol); +} + +double AudioObject::getAudioVolume () +{ + return emotion_object_audio_volume_get (o); +} + +void AudioObject::setAudioMute (bool mute) +{ + emotion_object_audio_mute_set (o, mute); +} + +bool AudioObject::getAudioMute () +{ + return emotion_object_audio_mute_get (o); +} + +int AudioObject::countAudioChannel () +{ + return emotion_object_audio_channel_count (o); +} + +string AudioObject::getAudioChannelName (int channel) +{ + return emotion_object_audio_channel_name_get (o, channel); +} + +void AudioObject::setAudioChannel (int channel) +{ + emotion_object_audio_channel_set (o, channel); +} + +int AudioObject::getAudioChannel () +{ + return emotion_object_audio_channel_get (o); +} + +} // end namespace Emotionxx diff --git a/emotionxx/src/Makefile.am b/emotionxx/src/Makefile.am index 9fe291a..ebdf297 100644 --- a/emotionxx/src/Makefile.am +++ b/emotionxx/src/Makefile.am @@ -16,7 +16,10 @@ lib_LTLIBRARIES = \ libemotionxx.la libemotionxx_la_SOURCES = \ - Object.cpp + Object.cpp \ + SPUObject.cpp \ + VideoObject.cpp \ + AudioObject.cpp libemotionxx_la_LIBADD = \ $(EFL_LIBS) diff --git a/emotionxx/src/Object.cpp b/emotionxx/src/Object.cpp index d457abc..e341cbe 100644 --- a/emotionxx/src/Object.cpp +++ b/emotionxx/src/Object.cpp @@ -16,37 +16,37 @@ using namespace std; namespace Emotionxx { -Object::Object( Evasxx::Canvas &canvas, const std::string &module_filename ) +Object::Object( Evasxx::Canvas &canvas, const std::string &moduleFilename ) { - o = emotion_object_add( canvas.obj() ); + o = emotion_object_add (canvas.obj ()); init(); - engineInit(module_filename); + engineInit (moduleFilename); } -Object::Object( Evasxx::Canvas &canvas, const std::string &filename, const std::string &module_filename ) +Object::Object (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename) { - o = emotion_object_add( canvas.obj() ); - init(); - engineInit(module_filename); - setFile( filename ); + o = emotion_object_add (canvas.obj ()); + init (); + engineInit (moduleFilename); + setFile (filename); } -Object::Object( Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &module_filename ) +Object::Object (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename) { - o = emotion_object_add( canvas.obj() ); - init( ); - engineInit(module_filename); - setFile( filename ); - move( pos ); + o = emotion_object_add( canvas.obj ()); + init (); + engineInit (moduleFilename); + setFile (filename); + move (pos); } -Object::Object( Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &module_filename ) +Object::Object (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename ) { - o = emotion_object_add( canvas.obj() ); + o = emotion_object_add (canvas.obj ()); - init( ); - engineInit(module_filename); - setFile( filename ); + init (); + engineInit (moduleFilename); + setFile (filename); setGeometry (rect); } @@ -54,9 +54,9 @@ Object::~Object() { } -bool Object::engineInit(const std::string &module_filename) +bool Object::engineInit (const std::string &moduleFilename) { - return emotion_object_init(o, module_filename.c_str ()); + return emotion_object_init (o, moduleFilename.c_str ()); } void Object::setFile (const std::string &filename) @@ -109,155 +109,6 @@ double Object::getPlayLengh () return emotion_object_play_length_get (o); } -Eflxx::Size Object::getSize () -{ - int iw = 0; - int ih = 0; - - emotion_object_size_get (o, &iw, &ih); - return Eflxx::Size (iw, ih); -} - -void Object::setSmoothScale (bool smooth) -{ - emotion_object_smooth_scale_set (o, smooth); -} - -bool Object::getSmoothScale () -{ - return emotion_object_smooth_scale_get (o); -} - -double Object::getRatio () -{ - return emotion_object_ratio_get (o); -} - -void Object::sendSimpleEvent (Emotion_Event ev) -{ - emotion_object_event_simple_send (o, ev); -} - -void Object::setAudioVolume (double vol) -{ - emotion_object_audio_volume_set (o, vol); -} - -double Object::getAudioVolume () -{ - return emotion_object_audio_volume_get (o); -} - -void Object::setAudioMute (bool mute) -{ - emotion_object_audio_mute_set (o, mute); -} - -bool Object::getAudioMute () -{ - return emotion_object_audio_mute_get (o); -} - -int Object::countAudioChannel () -{ - return emotion_object_audio_channel_count (o); -} - -string Object::getChannelName (int channel) -{ - return emotion_object_audio_channel_name_get (o, channel); -} - -void Object::setAudioChannel (int channel) -{ - emotion_object_audio_channel_set (o, channel); -} - -int Object::getAudioChannel () -{ - return emotion_object_audio_channel_get (o); -} - -void Object::setVideoMute (bool mute) -{ - emotion_object_video_mute_set (o, mute); -} - -bool Object::getVideoMute () -{ - return emotion_object_video_mute_get (o); -} - -int Object::countVideoChannel () -{ - return emotion_object_video_channel_count (o); -} - -string Object::getVideoChannelName (int channel) -{ - return emotion_object_video_channel_name_get (o, channel); -} - -void Object::setVideoChannel (int channel) -{ - emotion_object_video_channel_set (o, channel); -} - -int Object::getVideoChannel () -{ - return emotion_object_video_channel_get (o); -} - -void Object::setSPUMute (bool mute) -{ - emotion_object_spu_mute_set (o, mute); -} - -bool Object::getSPUMute () -{ - return emotion_object_spu_mute_get (o); -} - -int Object::countSPUChannel () -{ - return emotion_object_spu_channel_count (o); -} - -std::string Object::getSPUChannelName (int channel) -{ - return emotion_object_spu_channel_name_get (o, channel); -} - -void Object::setSPUChannel (int channel) -{ - emotion_object_spu_channel_set (o, channel); -} - -int Object::getSPUChannel () -{ - return emotion_object_spu_channel_get (o); -} - -int Object::countChapter () -{ - return emotion_object_chapter_count (o); -} - -void Object::setChapter (int chapter) -{ - emotion_object_chapter_set (o, chapter); -} - -int Object::getChapter () -{ - return emotion_object_chapter_get (o); -} - -string Object::getChapterName (int chapter) -{ - return emotion_object_chapter_name_get (o, chapter); -} - void Object::setPlaySpeed (double speed) { emotion_object_play_speed_set (o, speed); @@ -298,16 +149,6 @@ int Object::getRefNum () return emotion_object_ref_num_get (o); } -int Object::getSPUButtonCount () -{ - return emotion_object_spu_button_count_get (o); -} - -int Object::getSPUButton () -{ - return emotion_object_spu_button_get (o); -} - string Object::getMetaInfo (Emotion_Meta_Info meta) { return emotion_object_meta_info_get (o, meta); diff --git a/emotionxx/src/SPUObject.cpp b/emotionxx/src/SPUObject.cpp new file mode 100644 index 0000000..6f86037 --- /dev/null +++ b/emotionxx/src/SPUObject.cpp @@ -0,0 +1,84 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include "../include/emotionxx/SPUObject.h" + +extern "C" { +#include +} + +#include +#include + +using namespace std; + +namespace Emotionxx { + +SPUObject::SPUObject (Evasxx::Canvas &canvas, const std::string &moduleFilename) : + VideoObject (canvas, moduleFilename) +{ +} + +SPUObject::SPUObject (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename) : + VideoObject (canvas, filename, moduleFilename) +{ +} + +SPUObject::SPUObject (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename) : + VideoObject (canvas, pos, filename, moduleFilename) +{ +} + +SPUObject::SPUObject (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename) : + VideoObject (canvas, rect, filename, moduleFilename) +{ +} + +SPUObject::~SPUObject () +{ +} + +void SPUObject::setSPUMute (bool mute) +{ + emotion_object_spu_mute_set (o, mute); +} + +bool SPUObject::getSPUMute () +{ + return emotion_object_spu_mute_get (o); +} + +int SPUObject::countSPUChannel () +{ + return emotion_object_spu_channel_count (o); +} + +std::string SPUObject::getSPUChannelName (int channel) +{ + return emotion_object_spu_channel_name_get (o, channel); +} + +void SPUObject::setSPUChannel (int channel) +{ + emotion_object_spu_channel_set (o, channel); +} + +int SPUObject::getSPUChannel () +{ + return emotion_object_spu_channel_get (o); +} + +int SPUObject::getSPUButtonCount () +{ + return emotion_object_spu_button_count_get (o); +} + +int SPUObject::getSPUButton () +{ + return emotion_object_spu_button_get (o); +} + + +} // end namespace Emotionxx diff --git a/emotionxx/src/VideoObject.cpp b/emotionxx/src/VideoObject.cpp new file mode 100644 index 0000000..e3d8318 --- /dev/null +++ b/emotionxx/src/VideoObject.cpp @@ -0,0 +1,122 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include "../include/emotionxx/VideoObject.h" + +extern "C" { +#include +} + +#include +#include + +using namespace std; + +namespace Emotionxx { + +VideoObject::VideoObject (Evasxx::Canvas &canvas, const std::string &moduleFilename) : + AudioObject (canvas, moduleFilename) +{ +} + +VideoObject::VideoObject (Evasxx::Canvas &canvas, const std::string &filename, const std::string &moduleFilename) : + AudioObject (canvas, filename, moduleFilename) +{ +} + +VideoObject::VideoObject (Evasxx::Canvas &canvas, const Eflxx::Point &pos, const std::string &filename, const std::string &moduleFilename) : + AudioObject (canvas, pos, filename, moduleFilename) +{ +} + +VideoObject::VideoObject (Evasxx::Canvas &canvas, const Eflxx::Rect &rect, const std::string &filename, const std::string &moduleFilename) : + AudioObject (canvas, rect, filename, moduleFilename) +{ +} + +VideoObject::~VideoObject () +{ +} + +void VideoObject::setVideoMute (bool mute) +{ + emotion_object_video_mute_set (o, mute); +} + +bool VideoObject::getVideoMute () +{ + return emotion_object_video_mute_get (o); +} + +int VideoObject::countVideoChannel () +{ + return emotion_object_video_channel_count (o); +} + +string VideoObject::getVideoChannelName (int channel) +{ + return emotion_object_video_channel_name_get (o, channel); +} + +void VideoObject::setVideoChannel (int channel) +{ + emotion_object_video_channel_set (o, channel); +} + +int VideoObject::getVideoChannel () +{ + return emotion_object_video_channel_get (o); +} + +void VideoObject::setSmoothScale (bool smooth) +{ + emotion_object_smooth_scale_set (o, smooth); +} + +bool VideoObject::getSmoothScale () +{ + return emotion_object_smooth_scale_get (o); +} + +double VideoObject::getRatio () +{ + return emotion_object_ratio_get (o); +} + +Eflxx::Size VideoObject::getSize () +{ + int iw = 0; + int ih = 0; + + emotion_object_size_get (o, &iw, &ih); + return Eflxx::Size (iw, ih); +} + +int VideoObject::countChapter () +{ + return emotion_object_chapter_count (o); +} + +void VideoObject::setChapter (int chapter) +{ + emotion_object_chapter_set (o, chapter); +} + +int VideoObject::getChapter () +{ + return emotion_object_chapter_get (o); +} + +string VideoObject::getChapterName (int chapter) +{ + return emotion_object_chapter_name_get (o, chapter); +} + +void VideoObject::sendSimpleEvent (Emotion_Event ev) +{ + emotion_object_event_simple_send (o, ev); +} + +} // end namespace Emotionxx