| @@ -1,12 +1,14 @@ | |||
| VERSION := 0.5.0 | |||
| FLTK_LIBS := `fltk-config --ldflags` | |||
| JACK_LIBS := `pkg-config --libs jack` | |||
| SNDFILE_LIBS := `pkg-config --libs sndfile` | |||
| JACK_LIBS := `pkg-config --libs jack` | |||
| SNDFILE_LIBS := `pkg-config --libs sndfile` | |||
| LASH_LIBS := `pkg-config --libs lash-1.0` | |||
| LASH_CFLAGS := `pkg-config --cflags lash-1.0` | |||
| CXXFLAGS := -DVERSION=\"$(VERSION)\" -ggdb -Wextra -Wno-missing-field-initializers -O0 -fno-rtti -fno-exceptions | |||
| CXXFLAGS := $(LASH_CFLAGS) -DVERSION=\"$(VERSION)\" -ggdb -Wextra -Wno-missing-field-initializers -O0 -fno-rtti -fno-exceptions | |||
| all: makedepend FL Timeline Mixer | |||
| @@ -0,0 +1,101 @@ | |||
| /*******************************************************************************/ | |||
| /* Copyright (C) 2008 Jonathan Moore Liles */ | |||
| /* */ | |||
| /* 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; see the file COPYING. If not,write to the Free Software */ | |||
| /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||
| /*******************************************************************************/ | |||
| #include "LASH_Client.H" | |||
| #include <lash/lash.h> | |||
| #define _client (static_cast<lash_client_t*>(_void)) | |||
| #include "debug.h" | |||
| LASH_Client::LASH_Client ( ) | |||
| { | |||
| _void = NULL; | |||
| } | |||
| LASH_Client::~LASH_Client ( ) | |||
| { | |||
| /* TODO: anything? */ | |||
| } | |||
| bool | |||
| LASH_Client::init ( const char *jack_name, const char *long_name, int *argc, char ***argv ) | |||
| { | |||
| MESSAGE( "Initializing LASH" ); | |||
| if ( ! ( _void = lash_init( lash_extract_args( argc, argv ), jack_name, | |||
| LASH_Config_File, LASH_PROTOCOL( 2, 0 ) ) ) ) | |||
| return false; | |||
| /* register name */ | |||
| lash_jack_client_name( _client, jack_name ); | |||
| lash_event_t *e = lash_event_new_with_type( LASH_Client_Name ); | |||
| lash_event_set_string( e, long_name ); | |||
| lash_send_event( _client, e ); | |||
| return true; | |||
| } | |||
| /** process any queued events */ | |||
| void | |||
| LASH_Client::poll ( void ) | |||
| { | |||
| lash_event_t *e; | |||
| while ( ( e = lash_get_event( _client ) ) ) | |||
| { | |||
| const char *name = lash_event_get_string( e ); | |||
| switch ( lash_event_get_type( e ) ) | |||
| { | |||
| case LASH_Save_File: | |||
| { | |||
| MESSAGE( "LASH wants us to save \"%s\"", name ); | |||
| handle_save_file( name ); | |||
| lash_send_event( _client, lash_event_new_with_type( LASH_Save_File ) ); | |||
| break; | |||
| } | |||
| case LASH_Restore_File: | |||
| { | |||
| MESSAGE( "LASH wants us to load \"%s\"", name ); | |||
| if ( ! handle_load_file( name ) ) | |||
| /* FIXME: should we tell lash that we couldn't load the song? */; | |||
| lash_send_event( _client, lash_event_new_with_type( LASH_Restore_File ) ); | |||
| break; | |||
| } | |||
| case LASH_Quit: | |||
| MESSAGE( "LASH wants us to quit" ); | |||
| handle_quit(); | |||
| break; | |||
| default: | |||
| WARNING( "unhandled LASH event" ); | |||
| } | |||
| lash_event_destroy( e ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,49 @@ | |||
| /*******************************************************************************/ | |||
| /* Copyright (C) 2008 Jonathan Moore Liles */ | |||
| /* */ | |||
| /* 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; see the file COPYING. If not,write to the Free Software */ | |||
| /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||
| /*******************************************************************************/ | |||
| /* generic master class for interfacing with LASH... */ | |||
| #pragma once | |||
| class LASH_Client | |||
| { | |||
| /* to avoid including the lash header here... */ | |||
| void *_void; | |||
| protected: | |||
| virtual bool handle_load_file ( const char *path ) = 0; | |||
| virtual bool handle_save_file ( const char *path ) = 0; | |||
| virtual bool handle_quit ( void ) = 0; | |||
| public: | |||
| LASH_Client ( ); | |||
| virtual ~LASH_Client ( ); | |||
| bool init ( const char *jack_name, const char *full_name, int *argc, char ***argv ); | |||
| void poll ( void ); | |||
| void project_save ( void ); | |||
| void project_quit ( void ); | |||
| /* TODO: project_add, project_remove, project_dir, project_name, percentage */ | |||
| }; | |||
| @@ -3,6 +3,7 @@ | |||
| Timeline_VERSION := 0.5.0 | |||
| Timeline_SRCS= \ | |||
| Timeline/LASH_Client.C \ | |||
| Timeline/Annotation_Region.C \ | |||
| Timeline/Audio_File.C \ | |||
| Timeline/Audio_File_SF.C \ | |||
| @@ -40,7 +41,7 @@ Timeline_OBJS:=$(Timeline_SRCS:.C=.o) | |||
| $(Timeline_OBJS): Makefile | |||
| Timeline_LIBS := $(FLTK_LIBS) $(JACK_LIBS) $(SNDFILE_LIBS) | |||
| Timeline_LIBS := $(FLTK_LIBS) $(JACK_LIBS) $(SNDFILE_LIBS) $(LASH_LIBS) | |||
| Timeline/timeline: $(Timeline_OBJS) FL | |||
| $(CXX) $(CXXFLAGS) $(INCLUDES) $(Timeline_LIBS) $(Timeline_OBJS) -o $@ -LFL -lfl_widgets | |||