@@ -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 | |||