diff options
Diffstat (limited to 'gtk2_ardour/imageframe_socket_handler.h')
-rw-r--r-- | gtk2_ardour/imageframe_socket_handler.h | 703 |
1 files changed, 0 insertions, 703 deletions
diff --git a/gtk2_ardour/imageframe_socket_handler.h b/gtk2_ardour/imageframe_socket_handler.h deleted file mode 100644 index d12b8285ef..0000000000 --- a/gtk2_ardour/imageframe_socket_handler.h +++ /dev/null @@ -1,703 +0,0 @@ -/* - Copyright (C) 2003 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#ifndef __ardour_gtk_imageframe_socket_handler_h__ -#define __ardour_gtk_imageframe_socket_handler_h__ - -#include <string> -#include <list> -#include "ardour_image_compositor_socket.h" - -class TimeAxisViewItem ; -class ImageFrameView ; -class MarkerView ; -class ImageFrameTimeAxisGroup ; -class Editor ; - -/** - * ImageFrameSocketHandler defines the handler between Ardour and an Image Compositor - * As this is purely visual, we do all processing within the main gtk loop via - * message passing through a socket. - * - */ -class ImageFrameSocketHandler : public sigc::trackable -{ - public: - /** - * Constructs a new ImageFrameSocketHandler to handle communication between Ardour and the Image Compositor - * - * @param ed the PublicEditor - */ - ImageFrameSocketHandler(PublicEditor& ed) ; - - /** - * Descructor - * this will shutdown the socket if open - */ - virtual ~ImageFrameSocketHandler() ; - - /** - * Returns the instance of the ImageFrameSocketHandler - * the instance should first be created with createInstance - * - * @return the instance of the ImageFrameSocketHandler - */ - static ImageFrameSocketHandler* get_instance() ; - - /** - * call back to handle doing the processing work - * This method is added to the gdk main loop and called when there is data - * upon the socket. - * - */ - static void image_socket_callback(void *arg, int32_t fd, GdkInputCondition cond) ; - - /** - * Attempt to connect to the image compositor on the specified host and port - * - * @param hostIp the ip address of the image compositor host - * @param port the oprt number to attemp the connection on - * @return true if the connection was a succees - * false otherwise - */ - bool connect(const char * hostIp, int32_t port) ; - - /** - * Closes the connection to th Image Compositor - * - */ - void close_connection() ; - /** - * Returns true if this ImagFrameSocketHandler is currently connected to rthe image compositor - * - * @return true if connected to the image compositor - */ - bool is_connected() ; - - /** - * Sets the tag used to describe this input within gtk - * this is returned when gdk_input_add is called and is required to remove the input - * - * @param tag the gdk input tag of this input - */ - void set_gdk_input_tag(int tag) ; - - /** - * Returns the gdk input tag of this input - * - * @return the gdk input tag of this input - * @see setGdkInputTag - */ - int get_gdk_input_tag() ; - - - /** - * Returns the socket file descriptor - * - * @return the Sockt file descriptor - */ - int get_socket_descriptor() ; - - - //---------------------------------------------------------------------------------------// - // Handle Sending messages to the Image Compositor - - //---------------------------- - // ImageFrameTimeAxis Messages - - /** - * Sends a message stating that the named image frame time axis has been removed - * - * @param track_id the unique id of the removed image frame time axis - * @param src the identity of the object that initiated the change - */ - void send_imageframe_time_axis_removed(const std::string & track_id, void* src) ; - - /** - * Sends a message indicating that an ImageFrameTimeAxis has been renamed - * - * @param new_id the new name, or Id, of the track - * @param old_id the old name, or Id, of the track - * @param src the identity of the object that initiated the change - * @param time_axis the time axis that has changed - */ - void send_imageframe_time_axis_renamed(const std::string & new_id, const std::string & old_id, void* src, ImageFrameTimeAxis* time_axis) ; - - //------------------------ - // MarkerTimeAxis Messages - - /** - * Sends a message stating that the named marker time axis has been removed - * - * @param track_id the unique id of the removed image frame time axis - * @param src the identity of the object that initiated the change - */ - void send_marker_time_axis_removed(const std::string & track_id, void* src) ; - - /** - * Sends a message indicating that an MarkerTimeAxis has been renamed - * - * @param new_id the new name, or Id, of the track - * @param old_id the old name, or Id, of the track - * @param src the identity of the object that initiated the change - * @param time_axis the time axis that has changed - */ - void send_marker_time_axis_renamed(const std::string & new_id, const std::string & old_id, void* src, MarkerTimeAxis* time_axis) ; - - - //--------------------------------- - // ImageFrameTimeAxisGroup Messages - - /** - * Sends a message stating that the group has been removed - * - * @param group_id the unique id of the removed image frame time axis - * @param src the identity of the object that initiated the change - * @param group the group that has changed - */ - void send_imageframe_time_axis_group_removed(const std::string & group_id, void* src, ImageFrameTimeAxisGroup* group) ; - - /** - * Send a message indicating that an ImageFrameTimeAxisGroup has been renamed - * - * @param new_id the new name, or Id, of the group - * @param old_id the old name, or Id, of the group - * @param src the identity of the object that initiated the change - * @param group the group that has changed - */ - void send_imageframe_time_axis_group_renamed(const std::string & new_id, const std::string & old_id, void* src, ImageFrameTimeAxisGroup* group) ; - - - //--------------------------------- - // ImageFrameView Messages - - /** - * Send an Image Frame View Item position changed message - * - * @param pos the new position value - * @param src the identity of the object that initiated the change - * @param item the time axis item whos position has changed - */ - void send_imageframe_view_position_change(nframes_t pos, void* src, ImageFrameView* item) ; - - /** - * Send a Image Frame View item duration changed message - * - * @param dur the the new duration value - * @param src the identity of the object that initiated the change - * @param item the item which has had a duration change - */ - void send_imageframe_view_duration_change(nframes_t dur, void* src, ImageFrameView* item) ; - - /** - * Send a message indicating that an ImageFrameView has been renamed - * - * @param item the ImageFrameView which has been renamed - * @param src the identity of the object that initiated the change - * @param item the renamed item - */ - void send_imageframe_view_renamed(const std::string & new_id, const std::string & old_id, void* src, ImageFrameView* item) ; - - /** - * Send a message indicating that an ImageFrameView item has been removed message - * - * @param item_id the id of the item that was removed - * @param src the identity of the object that initiated the change - * @param item the removed item - */ - void send_imageframe_view_removed(const std::string & item_id, void* src, ImageFrameView* item) ; - - //--------------------------------- - // MarkerView Messages - - /** - * Send a Marker View Item position changed message - * - * @param pos the new position value - * @param src the identity of the object that initiated the change - * @param item the time axis item whos position has changed - */ - void send_marker_view_position_change(nframes_t pos, void* src, MarkerView* item) ; - - /** - * Send a Marker View item duration changed message - * - * @param dur the new duration value - * @param src the identity of the object that initiated the change - * @param item the time axis item whos position has changed - */ - void send_marker_view_duration_change(nframes_t dur, void* src, MarkerView* item) ; - - /** - * Send a message indicating that a MarkerView has been renamed - * - * @param new_id the new_id of the object - * @param old_id the old_id of the object - * @param src the identity of the object that initiated the change - * @param item the MarkerView which has been renamed - */ - void send_marker_view_renamed(const std::string & new_id, const std::string & old_id, void* src, MarkerView* item) ; - - /** - * Send a message indicating that a MarkerView item has been removed message - * - * @param item_id the id of the item that was removed - * @param src the identity of the object that initiated the change - * @param item the MarkerView which has been removed - */ - void send_marker_view_removed(const std::string & item_id, void* src, MarkerView* item) ; - - - //---------------------------------------------------------------------------------------// - // Emitted Signals - - /** Emitted if the socket connection is shutdown at the other end */ - sigc::signal<void> CompositorSocketShutdown ; - - /** Emitted as a generic error is captured from the socket connection to the animatic compositor */ - sigc::signal<void> CompositorSocketError ; - - - protected: - - - private: - /* I dont like friends :-( */ - friend class Editor; - - /** - * Create an new instance of the ImageFrameSocketHandler, if one does not already exist - * - * @param ed the Ardour PublicEditor - */ - static ImageFrameSocketHandler* create_instance(PublicEditor& ed) ; - - //---------------------------------------------------------------------------------------// - // Message breakdown ie avoid a big if...then...else - - /** - * Handle insert item requests - * - * @param msg the received message - */ - void handle_insert_message(const char* msg) ; - - /** - * Handle remove item requests - * - * @param msg the received message - */ - void handle_remove_message(const char* msg) ; - - /** - * Handle rename item requests - * - * @param msg the received message - */ - void handle_rename_message(const char* msg) ; - - /** - * Handle a request for session information - * - * @param msg the received message - */ - void handle_request_data(const char* msg) ; - - /** - * Handle the update of a particular item - * - * @param msg the received message - */ - void handle_item_update_message(const char* msg) ; - - /** - * Handle the selection of an Item - * - * @param msg the received message - */ - void handle_item_selected(const char* msg) ; - - /** - * Handle s session action message - * - * @param msg the received message - */ - void handle_session_action(const char* msg) ; - - //---------------------------------------------------------------------------------------// - // handlers for specific insert procedures - - /** - * Handle the insertion of a new ImaegFrameTimeAxis - * - * @param msg the received message - */ - void handle_insert_imageframe_time_axis(const char* msg) ; - - /** - * Handle the insertion of a new MarkerTimeAxis - * - * @param msg the received message - */ - void handle_insert_marker_time_axis(const char* msg) ; - - /** - * Handle the insertion of a time axis group (a scene) - * - * @param msg the received message - */ - void handle_insert_imageframe_group(const char* msg) ; - - /** - * Handle the insertion of a new ImageFrameItem - * - * @param msg the received message - */ - void handle_insert_imageframe_view(const char* msg) ; - - /** - * Handle the insertion of a new MarkerItem - * - * @param msg the received message - */ - void handle_insert_marker_view(const char* msg) ; - - //---------------------------------------------------------------------------------------// - // handlers for specific removal procedures - - /** - * Handle the removal of an ImageTimeAxis - * - * @param msg the received message - */ - void handle_remove_imageframe_time_axis(const char* msg) ; - - /** - * Handle the removal of an MarkerTimeAxis - * - * @param msg the received message - */ - void handle_remove_marker_time_axis(const char* msg) ; - - /** - * Handle the removal of an ImageFrameTimeAxisGroup - * - * @param msg the received message - */ - void handle_remove_imageframe_time_axis_group(const char* msg) ; - - /** - * Handle the removal of an ImageFrameItem - * - * @param msg the received message - */ - void handle_remove_imageframe_view(const char* msg) ; - - /** - * Handle the removal of an MarkerItem - * - * @param msg the received message - */ - void handle_remove_marker_view(const char* msg) ; - - //---------------------------------------------------------------------------------------// - // handlers for the specific rename procedures - - /** - * Handle the renaming of an ImageTimeAxis - * - * @param msg the received message - */ - void handle_rename_imageframe_time_axis(const char* msg) ; - - /** - * Handle the renaming of an MarkerTimeAxis - * - * @param msg the received message - */ - void handle_rename_marker_time_axis(const char* msg) ; - - /** - * Handle the renaming of an ImageFrameItem - * - * @param msg the received message - */ - void handle_rename_imageframe_time_axis_group(const char* msg) ; - - /** - * Handle the renaming of an ImageFrameItem - * - * @param msg the received message - */ - void handle_rename_imageframe_view(const char* msg) ; - - /** - * Handle the renaming of an Marker - * - * @param msg the received message - */ - void handle_rename_marker_view(const char* msg) ; - - //---------------------------------------------------------------------------------------// - // handlers for data request - - /** - * Handle a request for the sessnio naem fo the current session - * We return a failure state if no session is open - * - * @param msg the received message - */ - void handle_session_name_request(const char* msg) ; - - - //---------------------------------------------------------------------------------------// - // handlers for specific item update changes - - /** - * Handle ImageFrameView positional changes - * - * @param msg the received message - */ - void handle_imageframe_view_position_update(const char* msg) ; - - /** - * Handle ImageFrameView Duration changes - * - * @param msg the received message - */ - void handle_imageframe_view_duration_update(const char* msg) ; - - /** - * Handle ImageFrameView Position Lock Constraint changes - * - * @param msg the received message - */ - void handle_imageframe_position_lock_update(const char* msg) ; - - /** - * Handle ImageFrameView Maximum Duration changes - * - * @param msg the received message - */ - void handle_imageframe_view_max_duration_update(const char* msg) ; - - /** - * Handle image frame max duration enable constraint changes - * - * @param msg the received message - */ - void handle_imageframe_view_max_duration_enable_update(const char* msg) ; - - /** - * Handle ImageFrameView Minimum Duration changes - * - * @param msg the received message - */ - void handle_imageframe_view_min_duration_update(const char* msg) ; - - /** - * Handle image frame min duration enable constraint changes - * - * @param msg the received message - */ - void handle_imageframe_view_min_duration_enable_update(const char* msg) ; - - - /** - * Handle MarkerView position changes - * - * @param msg the received message - */ - void handle_marker_view_position_update(const char* msg) ; - - /** - * Handle MarkerView duration changes - * - * @param msg the received message - */ - void handle_marker_view_duration_update(const char* msg) ; - - /** - * Handle MarkerView Position Lock Constraint changes - * - * @param msg the received message - */ - void handle_marker_view_position_lock_update(const char* msg) ; - - /** - * Handle MarkerView maximum duration changes - * - * @param msg the received message - */ - void handle_marker_view_max_duration_update(const char* msg) ; - - /** - * Handle MarkerView minimum duration changes - * - * @param msg the received message - */ - void handle_marker_view_min_duration_update(const char* msg) ; - - - - //---------------------------------------------------------------------------------------// - // handlers for Session Actions - - /** - * Handle the opening of a named audio session - * - * @param msg the received message - */ - void handle_open_session(const char* msg) ; - - /** - * Handle the closing of a named audio session - * - * @param msg the received message - */ - void handle_closed_session(const char* msg) ; - - //---------------------------------------------------------------------------------------// - // handlers for the shutdown of the Image Compositor - - /** - * Handle the shutdown message from the image compositor - * - * @param msg the received message - */ - void handle_shutdown(const char* msg) ; - - - //---------------------------------------------------------------------------------------// - // convenince methods to break up messages - - /** - * Returns part of the received message as a std::string - * - * @param start the start character - * @param num_chars the number of characters to read - * @param the message to break apart - * @return the sub std::string of the message - */ - std::string get_message_part(int start, int32_t num_chars, const char* msg) ; - - - /** - * break up am image item description message - * we break the mesage up into the parent Image Track id and size, - * the parent group id and size, and the image id and size - * - * @param track_id - * @param track_id_size - * @param scene_id - * @param scene_id_size - * @param item_id - * @param item_id_size - */ - void decompose_imageframe_item_desc(const char* msg, int& position, std::string& track_id, int& track_id_size, std::string& scene_id, int& scene_id_size, std::string& item_id, int& item_id_size) ; - - /** - * Compose a description of the specified image frame view - * The description consists of the parent track name size and name, - * the parent group name size and name, and the item name size and name - * - * @param ifv the item to compose a description of - * @param buffer the buffer to write the description - */ - void compose_imageframe_item_desc(ImageFrameView* ifv, std::ostringstream& buffer) ; - - /** - * Compose a description of the specified marker view - * The description consists of the parent track name size and name, - * and the item name size and name - * - * @param mv the item to compose a description of - * @param buffer the buffer to write the description - */ - void compose_marker_item_desc(MarkerView* mv, std::ostringstream& buffer) ; - - - /** - * Returns the ImageFrameView from the specified description - * The errcode parameter is used to indicate the item which caused - * an error on failure of this method - * 0 = suces - * 1 = the track item was not found - * 2 = the group item was not found - * 3 = the imageframe item was not found - * - * @paran track_id the track on which the item is placed - * @param group_id the group in which the item is a member - * @param item_id the id of the item - * @param int32_t reference used for error codes on failure - * @param errmsg populated with a description of the error on failure - * @return the described item on success, 0 otherwise - */ - ImageFrameView* get_imageframe_view_from_desc(const std::string & track_id, const std::string & group_ud, const std::string & item_id, int& errcode, std::string& errmsg) ; - - //---------------------------------------------------------------------------------------// - // Convenince Message Send Methods - - /** - * Sends a message throught the socket - * - * @param msg the message to send - * @return the return value of the socket call - */ - int send_message(const std::string & msg) ; - - /** - * Reads a message from the Socket - * - * @param msg a std::string to populate with the received message - * @return the return value from the socket call - */ - int read_message(std::string& msg) ; - - /** - * Convenience method to compose and send a success messasge back to the Image Compositor - * - */ - void send_return_success() ; - - /** - * Convenience method to compose and send a failure messasge back to the Image Compositor - * - * @param msg the failure message - */ - void send_return_failure(const std::string& msg) ; - - //---------------------------------------------------------------------------------------// - // Memebr Data - - /** Our instance of the socket handler, singleton */ - static ImageFrameSocketHandler* _instance ; - - /** The Ardour PublicEditor */ - PublicEditor& thePublicEditor ; - - /** the socket file descriptor */ - int theArdourToCompositorSocket ; - - /** This stores the 'tag' returned from gdk_input_add, which is required for removing the input */ - int theGdkInputTag ; - -} ; /* class ImageFrameSocketHandler */ - -#endif /* __ardour_gtk_imageframe_socket_handler_h__ */ |