Merge branch 'master' into cairocanvas
[ardour.git] / libs / ardour / ardour / ardour.h
index 09c6bd88563c55504a82b999dfac32ca12823a5c..9b1351a3fce114bf5d0a7f0209ac5b7fe31869c1 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 1999 Paul Davis 
+    Copyright (C) 1999-2009 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
 #ifndef __ardour_ardour_h__
 #define __ardour_ardour_h__
 
-#include <limits.h>
+#include <map>
 #include <string>
+#include <vector>
+
+#include <limits.h>
 #include <signal.h>
 
-#include <pbd/error.h>
-#include <pbd/failed_constructor.h>
+#include "pbd/signals.h"
+
+#include "pbd/error.h"
+#include "pbd/failed_constructor.h"
+#include "pbd/locale_guard.h"
+#include "pbd/stateful.h"
 
-#include <ardour/configuration.h>
-#include <ardour/types.h>
+#include "ardour/libardour_visibility.h"
+#include "ardour/types.h"
+#include "ardour/libardour_visibility.h"
+
+#include <jack/jack.h>
 
 namespace MIDI {
        class MachineControl;
@@ -38,50 +48,40 @@ namespace MIDI {
 namespace ARDOUR {
 
        class AudioEngine;
-       class OSC;
-
-       extern OSC* osc;
-
-       static const nframes_t max_frames = JACK_MAX_FRAMES;
 
-       int init (bool with_vst, bool try_optimization);
-       int cleanup ();
+       extern LIBARDOUR_API PBD::Signal1<void,std::string> BootMessage;
+       extern LIBARDOUR_API PBD::Signal0<void> GUIIdle;
+
+       /**
+        * @param with_vst true to enable VST Support
+        * @param try_optimization true to enable hardware optimized routines
+        * for mixing, finding peak values etc.
+        * @param localedir Directory to look for localisation files
+        *
+        * @return true if Ardour library was successfully initialized
+        */
+       LIBARDOUR_API bool init (bool with_vst, bool try_optimization, const char* localedir);
+       LIBARDOUR_API void init_post_engine ();
+       LIBARDOUR_API void cleanup ();
+       LIBARDOUR_API bool no_auto_connect ();
+       LIBARDOUR_API void make_property_quarks ();
+
+       extern LIBARDOUR_API PBD::PropertyChange bounds_change;
        
-       std::string get_ardour_revision ();
-       
-       std::string get_user_ardour_path ();
-       std::string get_system_data_path ();
-       std::string get_system_module_path ();
-
-       std::string find_config_file (std::string name);
-       std::string find_data_file (std::string name, std::string subdir = "" );
-
-       const layer_t max_layer = UCHAR_MAX;
+       extern LIBARDOUR_API const char* const ardour_config_info;
 
-       microseconds_t get_microseconds ();
+       LIBARDOUR_API void find_bindings_files (std::map<std::string,std::string>&);
 
-       Change new_change ();
+       /* these only impact bundled installations */
+       LIBARDOUR_API std::string translation_enable_path ();
+       LIBARDOUR_API bool translations_are_enabled ();
+       LIBARDOUR_API bool set_translations_enabled (bool);
 
-       extern Change StartChanged;
-       extern Change LengthChanged;
-       extern Change PositionChanged;
-       extern Change NameChanged;
-       extern Change BoundsChanged;
+       LIBARDOUR_API microseconds_t get_microseconds ();
 
-       struct LocaleGuard {
-           LocaleGuard (const char*);
-           ~LocaleGuard ();
-           const char* old;
-       };
-
-       static const double SHUTTLE_FRACT_SPEED1=0.48412291827; /* derived from A1,A2 */
+       LIBARDOUR_API void setup_fpu ();
+       LIBARDOUR_API std::vector<SyncSource> get_available_sync_options();
 }
 
-/* how do we make these be within the Ardour namespace? */
-
-extern MIDI::Port* default_mmc_port;
-extern MIDI::Port* default_mtc_port;
-extern MIDI::Port* default_midi_port;
-
 #endif /* __ardour_ardour_h__ */