@@ -0,0 +1,370 @@ | |||||
#!/usr/bin/env python3 | |||||
# -*- coding: utf-8 -*- | |||||
# ... | |||||
# Copyright (C) 2010-2012 Filipe Coelho <falktx@gmail.com> | |||||
# | |||||
# 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 | |||||
# 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. | |||||
# | |||||
# For a full copy of the GNU General Public License see the COPYING file | |||||
# Imports (Global) | |||||
from subprocess import getoutput | |||||
from PyQt4.QtCore import QSettings | |||||
from PyQt4.QtGui import QApplication, QMainWindow | |||||
# Imports (Custom Stuff) | |||||
import ui_cadence | |||||
import systray | |||||
from shared_jack import * | |||||
from shared_settings import * | |||||
try: | |||||
import dbus | |||||
from dbus.mainloop.qt import DBusQtMainLoop | |||||
haveDBus = True | |||||
except: | |||||
haveDBus = False | |||||
# --------------------------------------------------------------------- | |||||
def get_architecture(): | |||||
# FIXME - more checks | |||||
if sys.int_info[1] == 4: | |||||
return "64-bit" | |||||
return "32-bit" | |||||
def get_linux_distro(): | |||||
distro = "" | |||||
if os.path.exists("/etc/lsb-release"): | |||||
distro = getoutput(". /etc/lsb-release && echo $DISTRIB_DESCRIPTION") | |||||
else: | |||||
distro = os.uname()[0] | |||||
return distro | |||||
def get_linux_kernel(): | |||||
return os.uname()[2] | |||||
def get_windows_information(): | |||||
major = sys.getwindowsversion()[0] | |||||
minor = sys.getwindowsversion()[1] | |||||
servp = sys.getwindowsversion()[4] | |||||
os = "Windows" | |||||
version = servp | |||||
if major == 4 and minor == 0: | |||||
os = "Windows 95" | |||||
version = "RTM" | |||||
elif major == 4 and minor == 10: | |||||
os = "Windows 98" | |||||
version = "Second Edition" | |||||
elif major == 5 and minor == 0: | |||||
os = "Windows 2000" | |||||
elif major == 5 and minor == 1: | |||||
os = "Windows XP" | |||||
elif major == 5 and minor == 2: | |||||
os = "Windows Server 2003" | |||||
elif major == 6 and minor == 0: | |||||
os = "Windows Vista" | |||||
elif major == 6 and minor == 1: | |||||
os = "Windows 7" | |||||
elif major == 6 and minor == 2: | |||||
os = "Windows 8" | |||||
return (os, version) | |||||
# --------------------------------------------------------------------- | |||||
# Main Window | |||||
class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
def __init__(self, parent=None): | |||||
QMainWindow.__init__(self, parent) | |||||
self.setupUi(self) | |||||
self.settings = QSettings("Cadence", "Cadence") | |||||
self.loadSettings(True) | |||||
self.m_timer120 = None | |||||
# ------------------------------------------------------------- | |||||
# System Information | |||||
if WINDOWS: | |||||
info = get_windows_information() | |||||
self.label_info_os.setText(info[0]) | |||||
self.label_info_version.setText(info[1]) | |||||
elif MACOS: | |||||
self.label_info_os.setText("Mac OS") | |||||
self.label_info_version.setText("Unknown") | |||||
elif LINUX: | |||||
self.label_info_os.setText(get_linux_distro()) | |||||
self.label_info_version.setText(get_linux_kernel()) | |||||
else: | |||||
self.label_info_os.setText("Unknown") | |||||
self.label_info_version.setText("Unknown") | |||||
self.label_info_arch.setText(get_architecture()) | |||||
# ------------------------------------------------------------- | |||||
# Set-up icons | |||||
self.act_quit.setIcon(getIcon("application-exit")) | |||||
#self.act_jack_start.setIcon(getIcon("media-playback-start")) | |||||
#self.act_jack_stop.setIcon(getIcon("media-playback-stop")) | |||||
#self.act_jack_clear_xruns.setIcon(getIcon("edit-clear")) | |||||
#self.act_jack_configure.setIcon(getIcon("configure")) | |||||
#self.act_a2j_start.setIcon(getIcon("media-playback-start")) | |||||
#self.act_a2j_stop.setIcon(getIcon("media-playback-stop")) | |||||
#self.act_pulse_start.setIcon(getIcon("media-playback-start")) | |||||
#self.act_pulse_stop.setIcon(getIcon("media-playback-stop")) | |||||
# ------------------------------------------------------------- | |||||
# Set-up systray | |||||
self.systray = systray.GlobalSysTray(self, "Cadence", "cadence") | |||||
self.systray.setToolTip("Cadence") | |||||
self.systray.show() | |||||
# ------------------------------------------------------------- | |||||
# Set-up connections | |||||
self.connect(self.b_jack_start, SIGNAL("clicked()"), SLOT("slot_JackServerStart()")) | |||||
self.connect(self.b_jack_stop, SIGNAL("clicked()"), SLOT("slot_JackServerStop()")) | |||||
self.connect(self.b_jack_restart, SIGNAL("clicked()"), SLOT("slot_JackServerForceRestart()")) | |||||
self.connect(self.b_jack_configure, SIGNAL("clicked()"), SLOT("slot_JackServerConfigure()")) | |||||
self.connect(self.act_tools_catarina, SIGNAL("triggered()"), lambda tool="catarina": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_catia, SIGNAL("triggered()"), lambda tool="catia": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_claudia, SIGNAL("triggered()"), lambda tool="claudia": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_carla, SIGNAL("triggered()"), lambda tool="carla": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_logs, SIGNAL("triggered()"), lambda tool="cadence_logs": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_meter, SIGNAL("triggered()"), lambda tool="cadence_jackmeter": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_render, SIGNAL("triggered()"), lambda tool="cadence_render": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_xycontroller, SIGNAL("triggered()"), lambda tool="cadence_xycontroller": self.func_start_tool(tool)) | |||||
self.connect(self.pic_catia, SIGNAL("clicked()"), lambda tool="catia": self.func_start_tool(tool)) | |||||
self.connect(self.pic_claudia, SIGNAL("clicked()"), lambda tool="claudia": self.func_start_tool(tool)) | |||||
self.connect(self.pic_carla, SIGNAL("clicked()"), lambda tool="carla": self.func_start_tool(tool)) | |||||
self.connect(self.pic_logs, SIGNAL("clicked()"), lambda tool="cadence_logs": self.func_start_tool(tool)) | |||||
self.connect(self.pic_render, SIGNAL("clicked()"), lambda tool="cadence_render": self.func_start_tool(tool)) | |||||
self.connect(self.pic_xycontroller, SIGNAL("clicked()"), lambda tool="cadence_xycontroller": self.func_start_tool(tool)) | |||||
self.m_timer1000 = self.startTimer(1000) | |||||
if haveDBus: | |||||
self.DBusReconnect() | |||||
DBus.bus.add_signal_receiver(self.DBusSignalReceiver, destination_keyword='dest', path_keyword='path', | |||||
member_keyword='member', interface_keyword='interface', sender_keyword='sender', ) | |||||
def DBusReconnect(self): | |||||
try: | |||||
DBus.jack = DBus.bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller") | |||||
jacksettings.initBus(DBus.bus) | |||||
except: | |||||
DBus.jack = None | |||||
try: | |||||
DBus.a2j = dbus.Interface(DBus.bus.get_object("org.gna.home.a2jmidid", "/"), "org.gna.home.a2jmidid.control") | |||||
except: | |||||
DBus.a2j = None | |||||
if DBus.jack: | |||||
if DBus.jack.IsStarted(): | |||||
self.jackStarted() | |||||
else: | |||||
self.jackStopped() | |||||
# FIXME | |||||
self.label_jack_realtime.setText("TODO") | |||||
else: | |||||
self.jackStopped() | |||||
self.label_jack_status.setText("Unavailable") | |||||
self.label_jack_realtime.setText("Unknown") | |||||
self.groupBox_jack.setEnabled(False) | |||||
self.groupBox_jack.setTitle("-- jackdbus is not available --") | |||||
self.b_jack_start.setEnabled(False) | |||||
self.b_jack_stop.setEnabled(False) | |||||
self.b_jack_restart.setEnabled(False) | |||||
self.b_jack_configure.setEnabled(False) | |||||
def DBusSignalReceiver(self, *args, **kwds): | |||||
if kwds['interface'] == "org.freedesktop.DBus" and kwds['path'] == "/org/freedesktop/DBus" and kwds['member'] == "NameOwnerChanged": | |||||
appInterface, appId, newId = args | |||||
if not newId: | |||||
# Something crashed | |||||
if appInterface == "org.gna.home.a2jmidid": | |||||
QTimer.singleShot(0, self, SLOT("slot_handleCrash_a2j()")) | |||||
elif appInterface == "org.jackaudio.service": | |||||
QTimer.singleShot(0, self, SLOT("slot_handleCrash_jack()")) | |||||
elif kwds['interface'] == "org.jackaudio.JackControl": | |||||
if kwds['member'] == "ServerStarted": | |||||
self.jackStarted() | |||||
elif kwds['member'] == "ServerStopped": | |||||
self.jackStopped() | |||||
#elif kwds['interface'] == "org.gna.home.a2jmidid.control": | |||||
#if kwds['member'] == "bridge_started": | |||||
#self.a2jStarted() | |||||
#elif kwds['member'] == "bridge_stopped": | |||||
#self.a2jStopped() | |||||
def jackStarted(self): | |||||
self.m_last_dsp_load = DBus.jack.GetLoad() | |||||
self.m_last_xruns = DBus.jack.GetXruns() | |||||
self.m_last_buffer_size = DBus.jack.GetBufferSize() | |||||
self.b_jack_start.setEnabled(False) | |||||
self.b_jack_stop.setEnabled(True) | |||||
self.label_jack_status.setText("Started") | |||||
#self.label_jack_status_ico.setPixmap("") | |||||
if (DBus.jack.IsRealtime()): | |||||
self.label_jack_realtime.setText("Yes") | |||||
#self.label_jack_realtime_ico.setPixmap("") | |||||
else: | |||||
self.label_jack_realtime.setText("No") | |||||
#self.label_jack_realtime_ico.setPixmap("") | |||||
self.label_jack_dsp.setText("%.2f%%" % self.m_last_dsp_load) | |||||
self.label_jack_xruns.setText(str(self.m_last_xruns)) | |||||
self.label_jack_bfsize.setText("%i samples" % self.m_last_buffer_size) | |||||
self.label_jack_srate.setText("%i Hz" % DBus.jack.GetSampleRate()) | |||||
self.label_jack_latency.setText("%.1f ms" % DBus.jack.GetLatency()) | |||||
self.m_timer120 = self.startTimer(120) | |||||
def jackStopped(self): | |||||
if self.m_timer120: | |||||
self.killTimer(self.m_timer120) | |||||
self.m_timer120 = None | |||||
self.m_last_dsp_load = None | |||||
self.m_last_xruns = None | |||||
self.m_last_buffer_size = None | |||||
self.b_jack_start.setEnabled(True) | |||||
self.b_jack_stop.setEnabled(False) | |||||
self.label_jack_status.setText("Stopped") | |||||
self.label_jack_dsp.setText("---") | |||||
self.label_jack_xruns.setText("---") | |||||
self.label_jack_bfsize.setText("---") | |||||
self.label_jack_srate.setText("---") | |||||
self.label_jack_latency.setText("---") | |||||
def func_start_tool(self, tool): | |||||
os.system("%s &" % tool) | |||||
@pyqtSlot() | |||||
def slot_JackServerStart(self): | |||||
try: | |||||
DBus.jack.StartServer() | |||||
except: | |||||
QMessageBox.warning(self, self.tr("Warning"), self.tr("Failed to start JACK, please check the logs for more information.")) | |||||
@pyqtSlot() | |||||
def slot_JackServerStop(self): | |||||
DBus.jack.StopServer() | |||||
@pyqtSlot() | |||||
def slot_JackServerForceRestart(self): | |||||
pass | |||||
@pyqtSlot() | |||||
def slot_JackServerConfigure(self): | |||||
jacksettings.JackSettingsW(self).exec_() | |||||
@pyqtSlot() | |||||
def slot_JackClearXruns(self): | |||||
DBus.jack.ResetXruns() | |||||
@pyqtSlot() | |||||
def slot_handleCrash_a2j(self): | |||||
pass | |||||
@pyqtSlot() | |||||
def slot_handleCrash_jack(self): | |||||
self.DBusReconnect() | |||||
def saveSettings(self): | |||||
self.settings.setValue("Geometry", self.saveGeometry()) | |||||
def loadSettings(self, geometry): | |||||
if geometry: | |||||
self.restoreGeometry(self.settings.value("Geometry", "")) | |||||
self.m_savedSettings = { | |||||
"Main/UseSystemTray": self.settings.value("Main/UseSystemTray", True, type=bool), | |||||
"Main/CloseToTray": self.settings.value("Main/CloseToTray", True, type=bool) | |||||
} | |||||
def timerEvent(self, event): | |||||
if event.timerId() == self.m_timer120: | |||||
next_dsp_load = DBus.jack.GetLoad() | |||||
next_xruns = DBus.jack.GetXruns() | |||||
if self.m_last_dsp_load != next_dsp_load: | |||||
self.m_last_dsp_load = next_dsp_load | |||||
self.label_jack_dsp.setText("%.2f%%" % self.m_last_dsp_load) | |||||
if self.m_last_xruns != next_xruns: | |||||
self.m_last_xruns = next_xruns | |||||
self.label_jack_xruns.setText(str(self.m_last_xruns)) | |||||
elif event.timerId() == self.m_timer1000: | |||||
if DBus.jack and self.m_last_buffer_size != None: | |||||
next_buffer_size = DBus.jack.GetBufferSize() | |||||
else: | |||||
next_buffer_size = None | |||||
if self.m_last_buffer_size != next_buffer_size: | |||||
self.m_last_buffer_size = next_buffer_size | |||||
self.label_jack_bfsize.setText("%i samples" % self.m_last_buffer_size) | |||||
self.label_jack_latency.setText("%.1f ms" % DBus.jack.GetLatency()) | |||||
else: | |||||
self.update() | |||||
QMainWindow.timerEvent(self, event) | |||||
def closeEvent(self, event): | |||||
self.saveSettings() | |||||
self.systray.close() | |||||
QMainWindow.closeEvent(self, event) | |||||
#--------------- main ------------------ | |||||
if __name__ == '__main__': | |||||
# App initialization | |||||
app = QApplication(sys.argv) | |||||
app.setApplicationName("Catia") | |||||
app.setApplicationVersion(VERSION) | |||||
app.setOrganizationName("Cadence") | |||||
app.setWindowIcon(QIcon(":/scalable/catia.svg")) | |||||
if haveDBus: | |||||
DBus.loop = DBusQtMainLoop(set_as_default=True) | |||||
DBus.bus = dbus.SessionBus(mainloop=DBus.loop) | |||||
# Show GUI | |||||
gui = CadenceMainW() | |||||
# Set-up custom signal handling | |||||
set_up_signals(gui) | |||||
gui.show() | |||||
# Exit properly | |||||
sys.exit(app.exec_()) |
@@ -0,0 +1,194 @@ | |||||
/* | |||||
* JACK Backend code for Carla | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 | |||||
* 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the COPYING file | |||||
*/ | |||||
#ifndef CARLA_VST_INCLUDES_H | |||||
#define CARLA_VST_INCLUDES_H | |||||
#define VST_FORCE_DEPRECATED 0 | |||||
#include "aeffectx.h" | |||||
#if VESTIGE_HEADER | |||||
#warning Using vestige header | |||||
#define effFlagsProgramChunks (1 << 5) | |||||
#define effGetParamLabel 6 | |||||
#define effGetParamDisplay 7 | |||||
#define effGetChunk 23 | |||||
#define effSetChunk 24 | |||||
#define effCanBeAutomated 26 | |||||
#define effGetProgramNameIndexed 29 | |||||
#define effGetPlugCategory 35 | |||||
#define effSetBlockSizeAndSampleRate 43 | |||||
#define effShellGetNextPlugin 70 | |||||
#define effStartProcess 71 | |||||
#define effStopProcess 72 | |||||
#define effSetProcessPrecision 77 | |||||
#define kPlugCategSynth 2 | |||||
#define kPlugCategAnalysis 3 | |||||
#define kPlugCategMastering 4 | |||||
#define kPlugCategRoomFx 6 | |||||
#define kPlugCategRestoration 8 | |||||
#define kPlugCategShell 10 | |||||
#define kPlugCategGenerator 11 | |||||
#define kVstProcessLevelUser 1 | |||||
#define kVstProcessLevelRealtime 2 | |||||
#define kVstProcessLevelOffline 4 | |||||
#define kVstProcessPrecision32 0 | |||||
#define kVstTransportChanged 1 | |||||
#define kVstVersion 2400 | |||||
struct VstTimeInfo_R { | |||||
double samplePos, sampleRate, nanoSeconds, ppqPos, tempo, barStartPos, cycleStartPos, cycleEndPos; | |||||
int32_t timeSigNumerator, timeSigDenominator, smpteOffset, smpteFrameRate, samplesToNextClock, flags; | |||||
}; | |||||
#else | |||||
typedef VstTimeInfo VstTimeInfo_R; | |||||
#endif | |||||
typedef AEffect* (*VST_Function)(audioMasterCallback); | |||||
inline bool VstPluginCanDo(AEffect* effect, const char* feature) | |||||
{ | |||||
return (effect->dispatcher(effect, effCanDo, 0, 0, (void*)feature, 0.0f) == 1); | |||||
} | |||||
inline const char* VstOpcode2str(int32_t opcode) | |||||
{ | |||||
switch (opcode) | |||||
{ | |||||
case audioMasterAutomate: | |||||
return "audioMasterAutomate"; | |||||
case audioMasterVersion: | |||||
return "audioMasterVersion"; | |||||
case audioMasterCurrentId: | |||||
return "audioMasterCurrentId"; | |||||
case audioMasterIdle: | |||||
return "audioMasterIdle"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterPinConnected: | |||||
return "audioMasterPinConnected"; | |||||
case audioMasterWantMidi: | |||||
return "audioMasterWantMidi"; | |||||
#endif | |||||
case audioMasterGetTime: | |||||
return "audioMasterGetTime"; | |||||
case audioMasterProcessEvents: | |||||
return "audioMasterProcessEvents"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterSetTime: | |||||
return "audioMasterSetTime"; | |||||
case audioMasterTempoAt: | |||||
return "audioMasterTempoAt"; | |||||
case audioMasterGetNumAutomatableParameters: | |||||
return "audioMasterGetNumAutomatableParameters"; | |||||
case audioMasterGetParameterQuantization: | |||||
return "audioMasterGetParameterQuantization"; | |||||
#endif | |||||
case audioMasterIOChanged: | |||||
return "audioMasterIOChanged"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterNeedIdle: | |||||
return "audioMasterNeedIdle"; | |||||
#endif | |||||
case audioMasterSizeWindow: | |||||
return "audioMasterSizeWindow"; | |||||
case audioMasterGetSampleRate: | |||||
return "audioMasterGetSampleRate"; | |||||
case audioMasterGetBlockSize: | |||||
return "audioMasterGetBlockSize"; | |||||
case audioMasterGetInputLatency: | |||||
return "audioMasterGetInputLatency"; | |||||
case audioMasterGetOutputLatency: | |||||
return "audioMasterGetOutputLatency"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterGetPreviousPlug: | |||||
return "audioMasterGetPreviousPlug"; | |||||
case audioMasterGetNextPlug: | |||||
return "audioMasterGetNextPlug"; | |||||
case audioMasterWillReplaceOrAccumulate: | |||||
return "audioMasterWillReplaceOrAccumulate"; | |||||
#endif | |||||
case audioMasterGetCurrentProcessLevel: | |||||
return "audioMasterGetCurrentProcessLevel"; | |||||
case audioMasterGetAutomationState: | |||||
return "audioMasterGetAutomationState"; | |||||
case audioMasterOfflineStart: | |||||
return "audioMasterOfflineStart"; | |||||
case audioMasterOfflineRead: | |||||
return "audioMasterOfflineRead"; | |||||
case audioMasterOfflineWrite: | |||||
return "audioMasterOfflineWrite"; | |||||
case audioMasterOfflineGetCurrentPass: | |||||
return "audioMasterOfflineGetCurrentPass"; | |||||
case audioMasterOfflineGetCurrentMetaPass: | |||||
return "audioMasterOfflineGetCurrentMetaPass"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterSetOutputSampleRate: | |||||
return "audioMasterSetOutputSampleRate"; | |||||
#ifdef VESTIGE_HEADER | |||||
case audioMasterGetSpeakerArrangement: | |||||
#else | |||||
case audioMasterGetOutputSpeakerArrangement: | |||||
#endif | |||||
return "audioMasterGetOutputSpeakerArrangement"; | |||||
#endif | |||||
case audioMasterGetVendorString: | |||||
return "audioMasterGetVendorString"; | |||||
case audioMasterGetProductString: | |||||
return "audioMasterGetProductString"; | |||||
case audioMasterGetVendorVersion: | |||||
return "audioMasterGetVendorVersion"; | |||||
case audioMasterVendorSpecific: | |||||
return "audioMasterVendorSpecific"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterSetIcon: | |||||
return "audioMasterSetIcon"; | |||||
#endif | |||||
case audioMasterCanDo: | |||||
return "audioMasterCanDo"; | |||||
case audioMasterGetLanguage: | |||||
return "audioMasterGetLanguage"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterOpenWindow: | |||||
return "audioMasterOpenWindow"; | |||||
case audioMasterCloseWindow: | |||||
return "audioMasterCloseWindow"; | |||||
#endif | |||||
case audioMasterGetDirectory: | |||||
return "audioMasterGetDirectory"; | |||||
case audioMasterUpdateDisplay: | |||||
return "audioMasterUpdateDisplay"; | |||||
case audioMasterBeginEdit: | |||||
return "audioMasterBeginEdit"; | |||||
case audioMasterEndEdit: | |||||
return "audioMasterEndEdit"; | |||||
case audioMasterOpenFileSelector: | |||||
return "audioMasterOpenFileSelector"; | |||||
case audioMasterCloseFileSelector: | |||||
return "audioMasterCloseFileSelector"; | |||||
#if ! VST_FORCE_DEPRECATED | |||||
case audioMasterEditFile: | |||||
return "audioMasterEditFile"; | |||||
case audioMasterGetChunkFile: | |||||
return "audioMasterGetChunkFile"; | |||||
case audioMasterGetInputSpeakerArrangement: | |||||
return "audioMasterGetInputSpeakerArrangement"; | |||||
#endif | |||||
default: | |||||
return "unknown"; | |||||
} | |||||
} | |||||
#endif // CARLA_VST_INCLUDES_H |
@@ -0,0 +1,28 @@ | |||||
#ifndef _LILV_CONFIG_H_ | |||||
#define _LILV_CONFIG_H_ | |||||
#define LILV_VERSION "0.14.2" | |||||
#define LILV_NEW_LV2 1 | |||||
#define HAVE_LV2 1 | |||||
#define HAVE_SERD 1 | |||||
#define HAVE_SORD 1 | |||||
#define HAVE_SRATOM 1 | |||||
#define HAVE_FILENO 1 | |||||
#ifndef _WIN32 | |||||
#define HAVE_FLOCK 1 | |||||
#endif | |||||
#ifdef _WIN32 | |||||
#define LILV_PATH_SEP ";" | |||||
#define LILV_DIR_SEP "\\" | |||||
#define LILV_DEFAULT_LV2_PATH "%APPDATA%\\LV2;%COMMONPROGRAMFILES%\\LV2" | |||||
#else | |||||
#define LILV_PATH_SEP ":" | |||||
#define LILV_DIR_SEP "/" | |||||
#define LILV_DEFAULT_LV2_PATH "~/.lv2:/usr/lib/lv2:/usr/local/lib/lv2" | |||||
#endif | |||||
#endif /* _LILV_CONFIG_H_ */ |
@@ -0,0 +1,15 @@ | |||||
#ifndef _SERD_CONFIG_H_ | |||||
#define _SERD_CONFIG_H_ | |||||
#define SERD_VERSION "0.14.0" | |||||
#define HAVE_FMAX 1 | |||||
#define HAVE_FILENO 1 | |||||
#ifndef _WIN32 | |||||
#define HAVE_POSIX_MEMALIGN 1 | |||||
#define HAVE_POSIX_FADVISE 1 | |||||
#endif | |||||
#endif /* _SERD_CONFIG_H_ */ |
@@ -0,0 +1,10 @@ | |||||
#ifndef _SORD_CONFIG_H_ | |||||
#define _SORD_CONFIG_H_ | |||||
#define SORD_VERSION "0.8.0" | |||||
#define HAVE_SERD 1 | |||||
#define HAVE_PCRE 1 | |||||
#endif /* _SORD_CONFIG_H_ */ |
@@ -0,0 +1,11 @@ | |||||
#ifndef _SRATOM_CONFIG_H_ | |||||
#define _SRATOM_CONFIG_H_ | |||||
#define SRATOM_VERSION "0.2.0" | |||||
#define HAVE_LV2 1 | |||||
#define HAVE_SERD 1 | |||||
#define HAVE_SORD 1 | |||||
#endif /* _SRATOM_CONFIG_H_ */ |
@@ -0,0 +1,90 @@ | |||||
diff -U 3 -H -d -r -N -- lilv-0.14.2.old/lilv/lilv.h lilv-0.14.2/lilv/lilv.h | |||||
--- lilv-0.14.2.old/lilv/lilv.h 2012-05-31 00:01:08.000000000 +0100 | |||||
+++ lilv-0.14.2/lilv/lilv.h 2012-04-29 20:48:18.000000000 +0100 | |||||
@@ -1693,6 +1693,25 @@ | |||||
lilv_ui_get_binary_uri(const LilvUI* ui); | |||||
/** | |||||
+ Custom calls | |||||
+*/ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_supported_features(const LilvUI* ui); | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_required_features(const LilvUI* ui); | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_optional_features(const LilvUI* ui); | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_extension_data(const LilvUI* ui); | |||||
+ | |||||
+/** | |||||
@} | |||||
@} | |||||
*/ | |||||
diff -U 3 -H -d -r -N -- lilv-0.14.2.old/src/ui.c lilv-0.14.2/src/ui.c | |||||
--- lilv-0.14.2.old/src/ui.c 2012-03-27 04:41:41.000000000 +0100 | |||||
+++ lilv-0.14.2/src/ui.c 2012-04-29 20:58:07.000000000 +0100 | |||||
@@ -128,3 +128,57 @@ | |||||
assert(ui->binary_uri); | |||||
return ui->binary_uri; | |||||
} | |||||
+ | |||||
+static LilvNodes* | |||||
+lilv_ui_get_value_internal(const LilvUI* ui, | |||||
+ const SordNode* predicate) | |||||
+{ | |||||
+ return lilv_world_query_values_internal( | |||||
+ ui->world, ui->uri->val.uri_val, predicate, NULL); | |||||
+} | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_supported_features(const LilvUI* ui) | |||||
+{ | |||||
+ LilvNodes* optional = lilv_ui_get_optional_features(ui); | |||||
+ LilvNodes* required = lilv_ui_get_required_features(ui); | |||||
+ LilvNodes* result = lilv_nodes_new(); | |||||
+ | |||||
+ LILV_FOREACH(nodes, i, optional) | |||||
+ zix_tree_insert((ZixTree*)result, | |||||
+ lilv_node_duplicate(lilv_nodes_get(optional, i)), | |||||
+ NULL); | |||||
+ LILV_FOREACH(nodes, i, required) | |||||
+ zix_tree_insert((ZixTree*)result, | |||||
+ lilv_node_duplicate(lilv_nodes_get(required, i)), | |||||
+ NULL); | |||||
+ | |||||
+ lilv_nodes_free(optional); | |||||
+ lilv_nodes_free(required); | |||||
+ | |||||
+ return result; | |||||
+} | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_required_features(const LilvUI* ui) | |||||
+{ | |||||
+ return lilv_ui_get_value_internal( | |||||
+ ui, ui->world->uris.lv2_requiredFeature); | |||||
+} | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_optional_features(const LilvUI* ui) | |||||
+{ | |||||
+ return lilv_ui_get_value_internal( | |||||
+ ui, ui->world->uris.lv2_optionalFeature); | |||||
+} | |||||
+ | |||||
+LILV_API | |||||
+LilvNodes* | |||||
+lilv_ui_get_extension_data(const LilvUI* ui) | |||||
+{ | |||||
+ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_extensionData); | |||||
+} |
@@ -0,0 +1,75 @@ | |||||
diff -U 3 -H -d -r -N -- sord-0.8.0.old/src/zix/tree.c sord-0.8.0/src/zix/tree.c | |||||
--- sord-0.8.0.old/src/zix/tree.c 2012-04-17 18:01:39.000000000 +0100 | |||||
+++ sord-0.8.0/src/zix/tree.c 2012-05-31 00:09:18.000000000 +0100 | |||||
@@ -29,6 +29,7 @@ | |||||
ZixTreeNode* root; | |||||
ZixComparator cmp; | |||||
void* cmp_data; | |||||
+ size_t size; | |||||
bool allow_duplicates; | |||||
}; | |||||
@@ -51,6 +52,7 @@ | |||||
t->root = NULL; | |||||
t->cmp = cmp; | |||||
t->cmp_data = cmp_data; | |||||
+ t->size = 0; | |||||
t->allow_duplicates = allow_duplicates; | |||||
return t; | |||||
} | |||||
@@ -74,6 +76,12 @@ | |||||
free(t); | |||||
} | |||||
+size_t | |||||
+zix_tree_size(ZixTree* t) | |||||
+{ | |||||
+ return t->size; | |||||
+} | |||||
+ | |||||
static void | |||||
rotate(ZixTreeNode* p, ZixTreeNode* q) | |||||
{ | |||||
@@ -343,6 +351,8 @@ | |||||
} | |||||
} | |||||
+ ++t->size; | |||||
+ | |||||
return ZIX_STATUS_SUCCESS; | |||||
} | |||||
@@ -358,6 +368,8 @@ | |||||
if ((n == t->root) && !n->left && !n->right) { | |||||
t->root = NULL; | |||||
free(n); | |||||
+ --t->size; | |||||
+ assert(t->size == 0); | |||||
return ZIX_STATUS_SUCCESS; | |||||
} | |||||
@@ -481,6 +493,8 @@ | |||||
free(n); | |||||
+ --t->size; | |||||
+ | |||||
return ZIX_STATUS_SUCCESS; | |||||
} | |||||
diff -U 3 -H -d -r -N -- sord-0.8.0.old/src/zix/tree.h sord-0.8.0/src/zix/tree.h | |||||
--- sord-0.8.0.old/src/zix/tree.h 2012-04-17 18:01:39.000000000 +0100 | |||||
+++ sord-0.8.0/src/zix/tree.h 2012-05-31 00:09:25.000000000 +0100 | |||||
@@ -53,6 +53,12 @@ | |||||
zix_tree_free(ZixTree* t); | |||||
/** | |||||
+ Return the number of elements in @a t. | |||||
+*/ | |||||
+size_t | |||||
+zix_tree_size(ZixTree* t); | |||||
+ | |||||
+/** | |||||
Insert the element @a e into @a t and point @a ti at the new element. | |||||
*/ | |||||
ZixStatus |
@@ -0,0 +1,279 @@ | |||||
/* | |||||
Copyright 2007-2011 David Robillard <http://drobilla.net> | |||||
Permission to use, copy, modify, and/or distribute this software for any | |||||
purpose with or without fee is hereby granted, provided that the above | |||||
copyright notice and this permission notice appear in all copies. | |||||
THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||||
*/ | |||||
#ifndef LILV_LILVMM_HPP | |||||
#define LILV_LILVMM_HPP | |||||
#include "lilv/lilv.h" | |||||
namespace Lilv { | |||||
static inline const char* | |||||
uri_to_path(const char* uri) { | |||||
return lilv_uri_to_path(uri); | |||||
} | |||||
#define LILV_WRAP0(RT, prefix, name) \ | |||||
inline RT name() { return lilv_ ## prefix ## _ ## name (me); } | |||||
#define LILV_WRAP0_VOID(prefix, name) \ | |||||
inline void name() { lilv_ ## prefix ## _ ## name(me); } | |||||
#define LILV_WRAP1(RT, prefix, name, T1, a1) \ | |||||
inline RT name(T1 a1) { return lilv_ ## prefix ## _ ## name (me, a1); } | |||||
#define LILV_WRAP1_VOID(prefix, name, T1, a1) \ | |||||
inline void name(T1 a1) { lilv_ ## prefix ## _ ## name(me, a1); } | |||||
#define LILV_WRAP2(RT, prefix, name, T1, a1, T2, a2) \ | |||||
inline RT name(T1 a1, T2 a2) { \ | |||||
return lilv_ ## prefix ## _ ## name(me, a1, a2); \ | |||||
} | |||||
#define LILV_WRAP2_VOID(prefix, name, T1, a1, T2, a2) \ | |||||
inline void name(T1 a1, T2 a2) { lilv_ ## prefix ## _ ## name(me, a1, a2); } | |||||
#ifndef SWIG | |||||
#define LILV_WRAP_CONVERSION(CT) \ | |||||
inline operator CT*() const { return me; } | |||||
#else | |||||
#define LILV_WRAP_CONVERSION(CT) | |||||
#endif | |||||
struct Node { | |||||
inline Node(const LilvNode* node) : me(lilv_node_duplicate(node)) {} | |||||
inline Node(const Node& copy) : me(lilv_node_duplicate(copy.me)) {} | |||||
inline ~Node() { lilv_node_free(me); } | |||||
inline bool equals(const Node& other) const { | |||||
return lilv_node_equals(me, other.me); | |||||
} | |||||
inline bool operator==(const Node& other) const { return equals(other); } | |||||
LILV_WRAP_CONVERSION(LilvNode); | |||||
LILV_WRAP0(char*, node, get_turtle_token); | |||||
LILV_WRAP0(bool, node, is_uri); | |||||
LILV_WRAP0(const char*, node, as_uri); | |||||
LILV_WRAP0(bool, node, is_blank); | |||||
LILV_WRAP0(const char*, node, as_blank); | |||||
LILV_WRAP0(bool, node, is_literal); | |||||
LILV_WRAP0(bool, node, is_string); | |||||
LILV_WRAP0(const char*, node, as_string); | |||||
LILV_WRAP0(bool, node, is_float); | |||||
LILV_WRAP0(float, node, as_float); | |||||
LILV_WRAP0(bool, node, is_int); | |||||
LILV_WRAP0(int, node, as_int); | |||||
LILV_WRAP0(bool, node, is_bool); | |||||
LILV_WRAP0(bool, node, as_bool); | |||||
LilvNode* me; | |||||
}; | |||||
struct ScalePoint { | |||||
inline ScalePoint(const LilvScalePoint* c_obj) : me(c_obj) {} | |||||
LILV_WRAP_CONVERSION(const LilvScalePoint); | |||||
LILV_WRAP0(const LilvNode*, scale_point, get_label); | |||||
LILV_WRAP0(const LilvNode*, scale_point, get_value); | |||||
const LilvScalePoint* me; | |||||
}; | |||||
struct PluginClass { | |||||
inline PluginClass(const LilvPluginClass* c_obj) : me(c_obj) {} | |||||
LILV_WRAP_CONVERSION(const LilvPluginClass); | |||||
LILV_WRAP0(Node, plugin_class, get_parent_uri); | |||||
LILV_WRAP0(Node, plugin_class, get_uri); | |||||
LILV_WRAP0(Node, plugin_class, get_label); | |||||
LILV_WRAP0(LilvPluginClasses*, plugin_class, get_children); | |||||
const LilvPluginClass* me; | |||||
}; | |||||
#define LILV_WRAP_COLL(CT, ET, prefix) \ | |||||
inline CT(const Lilv ## CT* c_obj) : me(c_obj) {} \ | |||||
LILV_WRAP_CONVERSION(const Lilv ## CT); \ | |||||
LILV_WRAP0(unsigned, prefix, size); \ | |||||
LILV_WRAP1(const ET, prefix, get, LilvIter*, i); \ | |||||
LILV_WRAP0(LilvIter*, prefix, begin); \ | |||||
LILV_WRAP1(LilvIter*, prefix, next, LilvIter*, i); \ | |||||
LILV_WRAP1(bool, prefix, is_end, LilvIter*, i); \ | |||||
const Lilv ## CT* me; \ | |||||
struct PluginClasses { | |||||
LILV_WRAP_COLL(PluginClasses, PluginClass, plugin_classes); | |||||
LILV_WRAP1(const PluginClass, plugin_classes, | |||||
get_by_uri, const LilvNode*, uri); | |||||
}; | |||||
struct ScalePoints { | |||||
LILV_WRAP_COLL(ScalePoints, ScalePoint, scale_points); | |||||
}; | |||||
struct Nodes { | |||||
LILV_WRAP_COLL(Nodes, Node, nodes); | |||||
LILV_WRAP1(bool, nodes, contains, const Node, node); | |||||
}; | |||||
struct Port { | |||||
inline Port(const LilvPlugin* p, const LilvPort* c_obj) | |||||
: parent(p), me(c_obj) | |||||
{} | |||||
LILV_WRAP_CONVERSION(const LilvPort); | |||||
#define LILV_PORT_WRAP0(RT, name) \ | |||||
inline RT name () { return lilv_port_ ## name (parent, me); } | |||||
#define LILV_PORT_WRAP1(RT, name, T1, a1) \ | |||||
inline RT name (T1 a1) { return lilv_port_ ## name (parent, me, a1); } | |||||
LILV_PORT_WRAP1(LilvNodes*, get_value, LilvNode*, predicate); | |||||
LILV_PORT_WRAP0(LilvNodes*, get_properties) | |||||
LILV_PORT_WRAP1(bool, has_property, LilvNode*, property_uri); | |||||
LILV_PORT_WRAP1(bool, supports_event, LilvNode*, event_uri); | |||||
LILV_PORT_WRAP0(const LilvNode*, get_symbol); | |||||
LILV_PORT_WRAP0(LilvNode*, get_name); | |||||
LILV_PORT_WRAP0(const LilvNodes*, get_classes); | |||||
LILV_PORT_WRAP1(bool, is_a, LilvNode*, port_class); | |||||
LILV_PORT_WRAP0(LilvScalePoints*, get_scale_points); | |||||
// TODO: get_range (output parameters) | |||||
const LilvPlugin* parent; | |||||
const LilvPort* me; | |||||
}; | |||||
struct Plugin { | |||||
inline Plugin(const LilvPlugin* c_obj) : me(c_obj) {} | |||||
LILV_WRAP_CONVERSION(const LilvPlugin); | |||||
LILV_WRAP0(bool, plugin, verify); | |||||
LILV_WRAP0(Node, plugin, get_uri); | |||||
LILV_WRAP0(Node, plugin, get_bundle_uri); | |||||
LILV_WRAP0(Nodes, plugin, get_data_uris); | |||||
LILV_WRAP0(Node, plugin, get_library_uri); | |||||
LILV_WRAP0(Node, plugin, get_name); | |||||
LILV_WRAP0(PluginClass, plugin, get_class); | |||||
LILV_WRAP1(Nodes, plugin, get_value, Node, pred); | |||||
LILV_WRAP1(bool, plugin, has_feature, Node, feature_uri); | |||||
LILV_WRAP0(Nodes, plugin, get_supported_features); | |||||
LILV_WRAP0(Nodes, plugin, get_required_features); | |||||
LILV_WRAP0(Nodes, plugin, get_optional_features); | |||||
LILV_WRAP0(unsigned, plugin, get_num_ports); | |||||
LILV_WRAP0(bool, plugin, has_latency); | |||||
LILV_WRAP0(unsigned, plugin, get_latency_port_index); | |||||
LILV_WRAP0(Node, plugin, get_author_name); | |||||
LILV_WRAP0(Node, plugin, get_author_email); | |||||
LILV_WRAP0(Node, plugin, get_author_homepage); | |||||
LILV_WRAP0(bool, plugin, is_replaced); | |||||
inline Port get_port_by_index(unsigned index) { | |||||
return Port(me, lilv_plugin_get_port_by_index(me, index)); | |||||
} | |||||
inline Port get_port_by_symbol(LilvNode* symbol) { | |||||
return Port(me, lilv_plugin_get_port_by_symbol(me, symbol)); | |||||
} | |||||
inline void get_port_ranges_float(float* min_values, | |||||
float* max_values, | |||||
float* def_values) { | |||||
return lilv_plugin_get_port_ranges_float( | |||||
me, min_values, max_values, def_values); | |||||
} | |||||
inline unsigned get_num_ports_of_class(LilvNode* class_1, | |||||
LilvNode* class_2) { | |||||
// TODO: varargs | |||||
return lilv_plugin_get_num_ports_of_class(me, class_1, class_2, NULL); | |||||
} | |||||
const LilvPlugin* me; | |||||
}; | |||||
struct Plugins { | |||||
LILV_WRAP_COLL(Plugins, Plugin, plugins); | |||||
LILV_WRAP1(const Plugin, plugins, get_by_uri, const LilvNode*, uri); | |||||
}; | |||||
struct Instance { | |||||
inline Instance(Plugin plugin, double sample_rate) { | |||||
// TODO: features | |||||
me = lilv_plugin_instantiate(plugin, sample_rate, NULL); | |||||
} | |||||
LILV_WRAP_CONVERSION(LilvInstance); | |||||
LILV_WRAP2_VOID(instance, connect_port, | |||||
unsigned, port_index, | |||||
void*, data_location); | |||||
LILV_WRAP0_VOID(instance, activate); | |||||
LILV_WRAP1_VOID(instance, run, unsigned, sample_count); | |||||
LILV_WRAP0_VOID(instance, deactivate); | |||||
// TODO: get_extension_data | |||||
inline const LV2_Descriptor* get_descriptor() { | |||||
return lilv_instance_get_descriptor(me); | |||||
} | |||||
LilvInstance* me; | |||||
}; | |||||
struct World { | |||||
inline World() : me(lilv_world_new()) {} | |||||
inline ~World() { lilv_world_free(me); } | |||||
inline LilvNode* new_uri(const char* uri) { | |||||
return lilv_new_uri(me, uri); | |||||
} | |||||
inline LilvNode* new_string(const char* str) { | |||||
return lilv_new_string(me, str); | |||||
} | |||||
inline LilvNode* new_int(int val) { | |||||
return lilv_new_int(me, val); | |||||
} | |||||
inline LilvNode* new_float(float val) { | |||||
return lilv_new_float(me, val); | |||||
} | |||||
inline LilvNode* new_bool(bool val) { | |||||
return lilv_new_bool(me, val); | |||||
} | |||||
inline Nodes find_nodes(const LilvNode* subject, | |||||
const LilvNode* predicate, | |||||
const LilvNode* object) { | |||||
return lilv_world_find_nodes(me, subject, predicate, object); | |||||
} | |||||
LILV_WRAP2_VOID(world, set_option, const char*, uri, LilvNode*, value); | |||||
LILV_WRAP0_VOID(world, load_all); | |||||
LILV_WRAP1_VOID(world, load_bundle, LilvNode*, bundle_uri); | |||||
LILV_WRAP0(const LilvPluginClass*, world, get_plugin_class); | |||||
LILV_WRAP0(const LilvPluginClasses*, world, get_plugin_classes); | |||||
LILV_WRAP0(const Plugins, world, get_all_plugins); | |||||
LilvWorld* me; | |||||
}; | |||||
} /* namespace Lilv */ | |||||
#endif /* LILV_LILVMM_HPP */ |
@@ -0,0 +1,30 @@ | |||||
/* | |||||
* Carla static lilv code | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 | |||||
* 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the COPYING file | |||||
*/ | |||||
#include "lilv-0.14.2/src/collections.c" | |||||
#include "lilv-0.14.2/src/instance.c" | |||||
#include "lilv-0.14.2/src/lib.c" | |||||
#include "lilv-0.14.2/src/node.c" | |||||
#include "lilv-0.14.2/src/plugin.c" | |||||
#include "lilv-0.14.2/src/pluginclass.c" | |||||
#include "lilv-0.14.2/src/port.c" | |||||
#include "lilv-0.14.2/src/query.c" | |||||
#include "lilv-0.14.2/src/scalepoint.c" | |||||
#include "lilv-0.14.2/src/state.c" | |||||
#include "lilv-0.14.2/src/ui.c" | |||||
#include "lilv-0.14.2/src/util.c" | |||||
#include "lilv-0.14.2/src/world.c" |
@@ -0,0 +1,23 @@ | |||||
/* | |||||
* Carla static lilv code | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 | |||||
* 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the COPYING file | |||||
*/ | |||||
#include "serd-0.14.0/src/env.c" | |||||
#include "serd-0.14.0/src/node.c" | |||||
#include "serd-0.14.0/src/reader.c" | |||||
#include "serd-0.14.0/src/string.c" | |||||
#include "serd-0.14.0/src/uri.c" | |||||
#include "serd-0.14.0/src/writer.c" |
@@ -0,0 +1,21 @@ | |||||
/* | |||||
* Carla static lilv code | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 | |||||
* 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the COPYING file | |||||
*/ | |||||
#include "sord-0.8.0/src/sord.c" | |||||
#include "sord-0.8.0/src/syntax.c" | |||||
#include "sord-0.8.0/src/zix/hash.c" | |||||
#include "sord-0.8.0/src/zix/tree.c" |
@@ -0,0 +1,18 @@ | |||||
/* | |||||
* Carla static lilv code | |||||
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com> | |||||
* | |||||
* 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 | |||||
* 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. | |||||
* | |||||
* For a full copy of the GNU General Public License see the COPYING file | |||||
*/ | |||||
#include "sratom-0.2.0/src/sratom.c" |
@@ -0,0 +1,366 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="256" | |||||
height="256" | |||||
id="svg5941" | |||||
version="1.1" | |||||
inkscape:version="0.48.2 r9819" | |||||
sodipodi:docname="New document 3"> | |||||
<defs | |||||
id="defs5943"> | |||||
<radialGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6575" | |||||
id="radialGradient5153" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.67582587,0.40698367,-0.38440308,0.63832915,-61.525913,111.29541)" | |||||
cx="-239.0038" | |||||
cy="41.500549" | |||||
fx="-239.0038" | |||||
fy="41.500549" | |||||
r="91.43708" /> | |||||
<linearGradient | |||||
id="linearGradient6575"> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6577" /> | |||||
<stop | |||||
style="stop-color:#cccccc;stop-opacity:0;" | |||||
offset="1" | |||||
id="stop6579" /> | |||||
</linearGradient> | |||||
<filter | |||||
color-interpolation-filters="sRGB" | |||||
inkscape:collect="always" | |||||
id="filter6591" | |||||
x="-0.11399984" | |||||
width="1.2279997" | |||||
y="-0.12666686" | |||||
height="1.2533337"> | |||||
<feGaussianBlur | |||||
inkscape:collect="always" | |||||
stdDeviation="6.5691603" | |||||
id="feGaussianBlur6593" /> | |||||
</filter> | |||||
<filter | |||||
color-interpolation-filters="sRGB" | |||||
inkscape:collect="always" | |||||
id="filter6576-9" | |||||
x="-0.10272374" | |||||
width="1.2054476" | |||||
y="-0.10272374" | |||||
height="1.2054476"> | |||||
<feGaussianBlur | |||||
inkscape:collect="always" | |||||
stdDeviation="6.8910506" | |||||
id="feGaussianBlur6578-3" /> | |||||
</filter> | |||||
<filter | |||||
color-interpolation-filters="sRGB" | |||||
inkscape:collect="always" | |||||
id="filter8786-7"> | |||||
<feGaussianBlur | |||||
inkscape:collect="always" | |||||
stdDeviation="8.96" | |||||
id="feGaussianBlur8788-9" /> | |||||
</filter> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient4657-5" | |||||
id="linearGradient5149" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
x1="241.21584" | |||||
y1="795.42145" | |||||
x2="-21.002575" | |||||
y2="516.61938" /> | |||||
<linearGradient | |||||
id="linearGradient4657-5"> | |||||
<stop | |||||
style="stop-color:#000000;stop-opacity:1" | |||||
offset="0" | |||||
id="stop4659-2" /> | |||||
<stop | |||||
id="stop4661-0" | |||||
offset="0.29307336" | |||||
style="stop-color:#500000;stop-opacity:1" /> | |||||
<stop | |||||
id="stop4663-83" | |||||
offset="0.80562556" | |||||
style="stop-color:#a00000;stop-opacity:1" /> | |||||
<stop | |||||
style="stop-color:#d40000;stop-opacity:1" | |||||
offset="1" | |||||
id="stop4665-5" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3902-6" | |||||
id="linearGradient5151" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
x1="320.00772" | |||||
y1="662.08124" | |||||
x2="-128.07874" | |||||
y2="629.75647" /> | |||||
<linearGradient | |||||
id="linearGradient3902-6"> | |||||
<stop | |||||
style="stop-color:#783c00;stop-opacity:1" | |||||
offset="0" | |||||
id="stop3904-5" /> | |||||
<stop | |||||
id="stop3936-63" | |||||
offset="0.07563529" | |||||
style="stop-color:#d4a41c;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3934-0" | |||||
offset="0.14044002" | |||||
style="stop-color:#743800;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3932-2" | |||||
offset="0.20430526" | |||||
style="stop-color:#fcf87c;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3930-0" | |||||
offset="0.26901498" | |||||
style="stop-color:#a86c00;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3928-74" | |||||
offset="0.3417097" | |||||
style="stop-color:#9c6000;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3926-73" | |||||
offset="0.41261438" | |||||
style="stop-color:#fcfc80;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3924-01" | |||||
offset="0.48499879" | |||||
style="stop-color:#8c5000;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3922-6" | |||||
offset="0.54586536" | |||||
style="stop-color:#fcfc80;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3920-7" | |||||
offset="0.62692177" | |||||
style="stop-color:#d09c14;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3918-5" | |||||
offset="0.68774176" | |||||
style="stop-color:#804400;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3916-7" | |||||
offset="0.75042593" | |||||
style="stop-color:#d0a014;stop-opacity:0.9372549;" /> | |||||
<stop | |||||
id="stop3914-8" | |||||
offset="0.81777459" | |||||
style="stop-color:#743800;stop-opacity:1" /> | |||||
<stop | |||||
id="stop3912-8" | |||||
offset="0.87812954" | |||||
style="stop-color:#d0a014;stop-opacity:0.74901961;" /> | |||||
<stop | |||||
id="stop3910-90" | |||||
offset="0.94099933" | |||||
style="stop-color:#743800;stop-opacity:1" /> | |||||
<stop | |||||
style="stop-color:#fcfc80;stop-opacity:1" | |||||
offset="1" | |||||
id="stop3906-7" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
y2="516.61938" | |||||
x2="-21.002575" | |||||
y1="795.42145" | |||||
x1="241.21584" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
gradientUnits="userSpaceOnUse" | |||||
id="linearGradient5937" | |||||
xlink:href="#linearGradient4657-5" | |||||
inkscape:collect="always" /> | |||||
<linearGradient | |||||
y2="629.75647" | |||||
x2="-128.07874" | |||||
y1="662.08124" | |||||
x1="320.00772" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
gradientUnits="userSpaceOnUse" | |||||
id="linearGradient5939" | |||||
xlink:href="#linearGradient3902-6" | |||||
inkscape:collect="always" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient4657-5" | |||||
id="linearGradient6038" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
x1="241.21584" | |||||
y1="795.42145" | |||||
x2="-21.002575" | |||||
y2="516.61938" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3902-6" | |||||
id="linearGradient6040" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
x1="320.00772" | |||||
y1="662.08124" | |||||
x2="-128.07874" | |||||
y2="629.75647" /> | |||||
<radialGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6575" | |||||
id="radialGradient6042" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.67582587,0.40698367,-0.38440308,0.63832915,-61.525913,111.29541)" | |||||
cx="-239.0038" | |||||
cy="41.500549" | |||||
fx="-239.0038" | |||||
fy="41.500549" | |||||
r="91.43708" /> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="0.35" | |||||
inkscape:cx="310.79967" | |||||
inkscape:cy="-304.00001" | |||||
inkscape:document-units="px" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
fit-margin-top="0" | |||||
fit-margin-left="0" | |||||
fit-margin-right="0" | |||||
fit-margin-bottom="0" | |||||
inkscape:window-width="1366" | |||||
inkscape:window-height="721" | |||||
inkscape:window-x="-3" | |||||
inkscape:window-y="-3" | |||||
inkscape:window-maximized="1" /> | |||||
<metadata | |||||
id="metadata5946"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title></dc:title> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(122.28571,-212.93361)"> | |||||
<g | |||||
transform="translate(-59.695445,-318.36742)" | |||||
style="display:inline" | |||||
id="g8790-31" | |||||
inkscape:export-filename="/home/pj/Documents/svg/path10192-9.png" | |||||
inkscape:export-xdpi="89.989967" | |||||
inkscape:export-ydpi="89.989967"> | |||||
<rect | |||||
transform="matrix(0.83385449,0,0,0.83385449,-10.399092,130.80653)" | |||||
ry="32" | |||||
rx="32" | |||||
y="505.79703" | |||||
x="-37.086269" | |||||
height="256" | |||||
width="256" | |||||
id="rect3756-4-1-0-03" | |||||
style="opacity:0.93280634;fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:8;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;filter:url(#filter8786-7)" /> | |||||
<rect | |||||
ry="26.683344" | |||||
rx="26.683344" | |||||
y="552.56763" | |||||
x="-41.323643" | |||||
height="213.46675" | |||||
width="213.46675" | |||||
id="rect3756-4-1-6" | |||||
style="fill:url(#linearGradient6038);fill-opacity:1;stroke:url(#linearGradient6040);stroke-width:6.67083597;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> | |||||
</g> | |||||
<path | |||||
sodipodi:type="star" | |||||
style="opacity:0.89723319;color:#000000;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84774309;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter6576-9);enable-background:accumulate" | |||||
id="path3700-1" | |||||
sodipodi:sides="3" | |||||
sodipodi:cx="-240" | |||||
sodipodi:cy="40" | |||||
sodipodi:r1="75.471848" | |||||
sodipodi:r2="27.030819" | |||||
sodipodi:arg1="0.55859932" | |||||
sodipodi:arg2="1.6057969" | |||||
inkscape:flatsided="false" | |||||
inkscape:rounded="-0.89" | |||||
inkscape:randomized="0" | |||||
d="m -176,79.999999 c 31.24129,-49.986066 -123.85575,-15.048454 -64.9459,-12.985735 58.90985,2.062719 -93.36367,-43.637425 -65.69511,8.411361 27.66855,52.048785 74.96021,-99.737998 43.71892,-49.751931 -31.24129,49.986066 84.47295,-59.036597 25.56311,-61.099318 -58.90985,-2.062721 48.89553,114.786453 21.22697,62.737666 -27.66856,-52.048784 8.89072,102.674018 40.13201,52.687957 z" | |||||
transform="matrix(-0.6115226,-1.0087133,1.0087133,-0.6115226,-180.97942,134.91538)" | |||||
inkscape:transform-center-x="0.42025502" | |||||
inkscape:transform-center-y="-15.612021" | |||||
inkscape:export-filename="/home/pj/Documents/svg/path10192-9.png" | |||||
inkscape:export-xdpi="89.989967" | |||||
inkscape:export-ydpi="89.989967" /> | |||||
<path | |||||
sodipodi:type="star" | |||||
style="color:#000000;fill:#385680;fill-opacity:1;fill-rule:nonzero;stroke:#677b94;stroke-width:2.24143267;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |||||
id="path3700" | |||||
sodipodi:sides="3" | |||||
sodipodi:cx="-240" | |||||
sodipodi:cy="40" | |||||
sodipodi:r1="75.471848" | |||||
sodipodi:r2="27.030819" | |||||
sodipodi:arg1="0.55859932" | |||||
sodipodi:arg2="1.6057969" | |||||
inkscape:flatsided="false" | |||||
inkscape:rounded="-0.89" | |||||
inkscape:randomized="0" | |||||
d="m -176,79.999999 c 31.24129,-49.986066 -123.85575,-15.048454 -64.9459,-12.985735 58.90985,2.062719 -93.36367,-43.637425 -65.69511,8.411361 27.66855,52.048785 74.96021,-99.737998 43.71892,-49.751931 -31.24129,49.986066 84.47295,-59.036597 25.56311,-61.099318 -58.90985,-2.062721 48.89553,114.786453 21.22697,62.737666 -27.66856,-52.048784 8.89072,102.674018 40.13201,52.687957 z" | |||||
transform="matrix(-0.6115226,-1.0087133,1.0087133,-0.6115226,-180.97942,134.91538)" | |||||
inkscape:transform-center-x="0.42025502" | |||||
inkscape:transform-center-y="-15.612021" | |||||
inkscape:export-filename="/home/pj/Documents/svg/path10192-9.png" | |||||
inkscape:export-xdpi="89.989967" | |||||
inkscape:export-ydpi="89.989967" /> | |||||
<path | |||||
sodipodi:type="star" | |||||
style="opacity:0.12999998;color:#000000;fill:url(#radialGradient6042);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.24143267;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter6591);enable-background:accumulate" | |||||
id="path3700-120" | |||||
sodipodi:sides="3" | |||||
sodipodi:cx="-240" | |||||
sodipodi:cy="40" | |||||
sodipodi:r1="75.471848" | |||||
sodipodi:r2="27.030819" | |||||
sodipodi:arg1="0.55859932" | |||||
sodipodi:arg2="1.6057969" | |||||
inkscape:flatsided="false" | |||||
inkscape:rounded="-0.89" | |||||
inkscape:randomized="0" | |||||
d="m -176,79.999999 c 31.24129,-49.986066 -123.85575,-15.048454 -64.9459,-12.985735 58.90985,2.062719 -93.36367,-43.637425 -65.69511,8.411361 27.66855,52.048785 74.96021,-99.737998 43.71892,-49.751931 -31.24129,49.986066 84.47295,-59.036597 25.56311,-61.099318 -58.90985,-2.062721 48.89553,114.786453 21.22697,62.737666 -27.66856,-52.048784 8.89072,102.674018 40.13201,52.687957 z" | |||||
transform="matrix(-0.6115226,-1.0087133,1.0087133,-0.6115226,-180.97942,134.91538)" | |||||
inkscape:transform-center-x="0.42025502" | |||||
inkscape:transform-center-y="-15.612021" | |||||
inkscape:export-filename="/home/pj/Documents/svg/path10192-9.png" | |||||
inkscape:export-xdpi="89.989967" | |||||
inkscape:export-ydpi="89.989967" /> | |||||
</g> | |||||
</svg> |
@@ -0,0 +1,845 @@ | |||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||||
<!-- Created with Inkscape (http://www.inkscape.org/) --> | |||||
<svg | |||||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||||
xmlns:cc="http://creativecommons.org/ns#" | |||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||||
xmlns:svg="http://www.w3.org/2000/svg" | |||||
xmlns="http://www.w3.org/2000/svg" | |||||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||||
width="256" | |||||
height="256" | |||||
id="svg7563" | |||||
version="1.1" | |||||
inkscape:version="0.48.2 r9819" | |||||
sodipodi:docname="carla-control.svg"> | |||||
<defs | |||||
id="defs7565"> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-3-8-7-3-7-8" | |||||
id="linearGradient4914" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="10.874059" | |||||
y1="218.95074" | |||||
x2="-19.337217" | |||||
y2="186.92368" /> | |||||
<linearGradient | |||||
id="linearGradient6174-3-8-7-3-7-8"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-1-8-6-0-6-8" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-8-8-4-9-31-9" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-3-8-7-03-6" | |||||
id="linearGradient4912" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="10.874059" | |||||
y1="218.95074" | |||||
x2="-19.337217" | |||||
y2="186.92368" /> | |||||
<linearGradient | |||||
id="linearGradient6174-3-8-7-03-6"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-1-8-6-04-0" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-8-8-4-4-4" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-3-8-9-3" | |||||
id="linearGradient4910" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="10.874059" | |||||
y1="218.95074" | |||||
x2="-19.337217" | |||||
y2="186.92368" /> | |||||
<linearGradient | |||||
id="linearGradient6174-3-8-9-3"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-1-8-8-3" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-8-8-48-3" /> | |||||
</linearGradient> | |||||
<radialGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-29-7" | |||||
id="radialGradient4906" | |||||
gradientUnits="userSpaceOnUse" | |||||
cx="-2.1428571" | |||||
cy="203.07646" | |||||
fx="-2.1428571" | |||||
fy="203.07646" | |||||
r="22.184671" /> | |||||
<linearGradient | |||||
id="linearGradient6174-29-7"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-3-5" /> | |||||
<stop | |||||
id="stop8118-9-3" | |||||
offset="0.06451613" | |||||
style="stop-color:#636363;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop8116-0-8" | |||||
offset="0.28928199" | |||||
style="stop-color:#797979;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop8114-8-8" | |||||
offset="0.58732504" | |||||
style="stop-color:#a6a6a6;stop-opacity:1;" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-850-3" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6182-63-8" | |||||
id="linearGradient4908" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="-19.337217" | |||||
y1="186.92368" | |||||
x2="10.874059" | |||||
y2="218.95074" /> | |||||
<linearGradient | |||||
id="linearGradient6182-63-8"> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6184-856-9" /> | |||||
<stop | |||||
style="stop-color:#3b3b3b;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6186-11-6" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6164-63-1" | |||||
id="linearGradient4904" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="-26.607141" | |||||
y1="171.6479" | |||||
x2="43.750004" | |||||
y2="251.6479" /> | |||||
<linearGradient | |||||
id="linearGradient6164-63-1"> | |||||
<stop | |||||
style="stop-color:#919191;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6166-94-8" /> | |||||
<stop | |||||
style="stop-color:#f0f0f0;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6168-8-5" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6187-8-7" | |||||
id="linearGradient5018" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="translate(-318.57139,-494.85713)" | |||||
x1="375.71429" | |||||
y1="946.64789" | |||||
x2="331.42856" | |||||
y2="839.50507" /> | |||||
<linearGradient | |||||
id="linearGradient6187-8-7"> | |||||
<stop | |||||
style="stop-color:#1a1a1a;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6189-7-89" /> | |||||
<stop | |||||
style="stop-color:#202020;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6191-2-1" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-3-8-7-3-0" | |||||
id="linearGradient4900" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="10.874059" | |||||
y1="218.95074" | |||||
x2="-19.337217" | |||||
y2="186.92368" /> | |||||
<linearGradient | |||||
id="linearGradient6174-3-8-7-3-0"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-1-8-6-0-3" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-8-8-4-9-0" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-3-8-7-9" | |||||
id="linearGradient4898" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="10.874059" | |||||
y1="218.95074" | |||||
x2="-19.337217" | |||||
y2="186.92368" /> | |||||
<linearGradient | |||||
id="linearGradient6174-3-8-7-9"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-1-8-6-8" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-8-8-4-48" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-3-8-6" | |||||
id="linearGradient4896" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="10.874059" | |||||
y1="218.95074" | |||||
x2="-19.337217" | |||||
y2="186.92368" /> | |||||
<linearGradient | |||||
id="linearGradient6174-3-8-6"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-1-8-1" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-8-8-1" /> | |||||
</linearGradient> | |||||
<radialGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6174-9" | |||||
id="radialGradient4892" | |||||
gradientUnits="userSpaceOnUse" | |||||
cx="-2.1428571" | |||||
cy="203.07646" | |||||
fx="-2.1428571" | |||||
fy="203.07646" | |||||
r="22.184671" /> | |||||
<linearGradient | |||||
id="linearGradient6174-9"> | |||||
<stop | |||||
style="stop-color:#4d4d4d;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6176-0" /> | |||||
<stop | |||||
id="stop8118-8" | |||||
offset="0.06451613" | |||||
style="stop-color:#636363;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop8116-8" | |||||
offset="0.28928199" | |||||
style="stop-color:#797979;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop8114-5" | |||||
offset="0.58732504" | |||||
style="stop-color:#a6a6a6;stop-opacity:1;" /> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6178-0" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6182-6" | |||||
id="linearGradient4894" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="-19.337217" | |||||
y1="186.92368" | |||||
x2="10.874059" | |||||
y2="218.95074" /> | |||||
<linearGradient | |||||
id="linearGradient6182-6"> | |||||
<stop | |||||
style="stop-color:#ffffff;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6184-3" /> | |||||
<stop | |||||
style="stop-color:#3b3b3b;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6186-8" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6164-1" | |||||
id="linearGradient5147" | |||||
gradientUnits="userSpaceOnUse" | |||||
x1="-26.607141" | |||||
y1="171.6479" | |||||
x2="43.750004" | |||||
y2="251.6479" /> | |||||
<linearGradient | |||||
id="linearGradient6164-1"> | |||||
<stop | |||||
style="stop-color:#919191;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6166-2" /> | |||||
<stop | |||||
style="stop-color:#f0f0f0;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6168-9" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient6187-8-2" | |||||
id="linearGradient5041" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="translate(-318.57139,-494.85713)" | |||||
x1="375.71429" | |||||
y1="946.64789" | |||||
x2="331.42856" | |||||
y2="839.50507" /> | |||||
<linearGradient | |||||
id="linearGradient6187-8-2"> | |||||
<stop | |||||
style="stop-color:#1a1a1a;stop-opacity:1;" | |||||
offset="0" | |||||
id="stop6189-7-8" /> | |||||
<stop | |||||
style="stop-color:#202020;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop6191-2-3" /> | |||||
</linearGradient> | |||||
<filter | |||||
color-interpolation-filters="sRGB" | |||||
inkscape:collect="always" | |||||
id="filter6576-0" | |||||
x="-0.10272374" | |||||
width="1.2054476" | |||||
y="-0.10272374" | |||||
height="1.2054476"> | |||||
<feGaussianBlur | |||||
inkscape:collect="always" | |||||
stdDeviation="6.8910506" | |||||
id="feGaussianBlur6578-6" /> | |||||
</filter> | |||||
<filter | |||||
color-interpolation-filters="sRGB" | |||||
inkscape:collect="always" | |||||
id="filter8786-1-1"> | |||||
<feGaussianBlur | |||||
inkscape:collect="always" | |||||
stdDeviation="8.96" | |||||
id="feGaussianBlur8788-3-4" /> | |||||
</filter> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient4657-7-2" | |||||
id="linearGradient4884" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
x1="241.21584" | |||||
y1="795.42145" | |||||
x2="-21.002575" | |||||
y2="516.61938" /> | |||||
<linearGradient | |||||
id="linearGradient4657-7-2"> | |||||
<stop | |||||
style="stop-color:#282212;stop-opacity:0.62280703;" | |||||
offset="0" | |||||
id="stop4659-6-0" /> | |||||
<stop | |||||
id="stop4661-39-6" | |||||
offset="0.29307336" | |||||
style="stop-color:#2d2a23;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop4663-1-8" | |||||
offset="0.80562556" | |||||
style="stop-color:#4e5e42;stop-opacity:1;" /> | |||||
<stop | |||||
style="stop-color:#676d67;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop4665-0-9" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3902-1-6" | |||||
id="linearGradient4886" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,-12.083733,130.8065)" | |||||
x1="320.00772" | |||||
y1="662.08124" | |||||
x2="-128.07874" | |||||
y2="629.75647" /> | |||||
<linearGradient | |||||
id="linearGradient3902-1-6"> | |||||
<stop | |||||
style="stop-color:#141414;stop-opacity:0.87719297;" | |||||
offset="0" | |||||
id="stop3904-18-6" /> | |||||
<stop | |||||
id="stop3936-6-4" | |||||
offset="0.07563529" | |||||
style="stop-color:#000000;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3934-4-9" | |||||
offset="0.14044002" | |||||
style="stop-color:#262422;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3932-3-5" | |||||
offset="0.20430526" | |||||
style="stop-color:#5f5f59;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3930-4-0" | |||||
offset="0.26901498" | |||||
style="stop-color:#211f1e;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3928-7-4" | |||||
offset="0.3417097" | |||||
style="stop-color:#3c3b38;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3926-7-8" | |||||
offset="0.41261438" | |||||
style="stop-color:#6c6c66;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3924-0-7" | |||||
offset="0.48499879" | |||||
style="stop-color:#4c4740;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3922-7-1" | |||||
offset="0.54586536" | |||||
style="stop-color:#696965;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3920-45-7" | |||||
offset="0.62692177" | |||||
style="stop-color:#727272;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3918-3-2" | |||||
offset="0.68774176" | |||||
style="stop-color:#42403e;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3916-0-7" | |||||
offset="0.75042593" | |||||
style="stop-color:#3a3a3a;stop-opacity:0.93725491;" /> | |||||
<stop | |||||
id="stop3914-7-2" | |||||
offset="0.81777459" | |||||
style="stop-color:#1a140e;stop-opacity:1;" /> | |||||
<stop | |||||
id="stop3912-2-2" | |||||
offset="0.87812954" | |||||
style="stop-color:#000000;stop-opacity:0.74901962;" /> | |||||
<stop | |||||
id="stop3910-9-6" | |||||
offset="0.94099933" | |||||
style="stop-color:#000000;stop-opacity:1;" /> | |||||
<stop | |||||
style="stop-color:#000000;stop-opacity:1;" | |||||
offset="1" | |||||
id="stop3906-9-1" /> | |||||
</linearGradient> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient4657-7-2" | |||||
id="linearGradient3131" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,313.93511,-98.98949)" | |||||
x1="241.21584" | |||||
y1="795.42145" | |||||
x2="-21.002575" | |||||
y2="516.61938" /> | |||||
<linearGradient | |||||
inkscape:collect="always" | |||||
xlink:href="#linearGradient3902-1-6" | |||||
id="linearGradient3133" | |||||
gradientUnits="userSpaceOnUse" | |||||
gradientTransform="matrix(0.83385449,0,0,0.83385449,313.93511,-98.98949)" | |||||
x1="320.00772" | |||||
y1="662.08124" | |||||
x2="-128.07874" | |||||
y2="629.75647" /> | |||||
</defs> | |||||
<sodipodi:namedview | |||||
id="base" | |||||
pagecolor="#ffffff" | |||||
bordercolor="#666666" | |||||
borderopacity="1.0" | |||||
inkscape:pageopacity="0.0" | |||||
inkscape:pageshadow="2" | |||||
inkscape:zoom="1.979899" | |||||
inkscape:cx="123.91535" | |||||
inkscape:cy="125.96023" | |||||
inkscape:document-units="px" | |||||
inkscape:current-layer="layer1" | |||||
showgrid="false" | |||||
fit-margin-top="0" | |||||
fit-margin-left="0" | |||||
fit-margin-right="0" | |||||
fit-margin-bottom="0" | |||||
inkscape:window-width="1028" | |||||
inkscape:window-height="660" | |||||
inkscape:window-x="332" | |||||
inkscape:window-y="0" | |||||
inkscape:window-maximized="0" /> | |||||
<metadata | |||||
id="metadata7568"> | |||||
<rdf:RDF> | |||||
<cc:Work | |||||
rdf:about=""> | |||||
<dc:format>image/svg+xml</dc:format> | |||||
<dc:type | |||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||||
<dc:title></dc:title> | |||||
</cc:Work> | |||||
</rdf:RDF> | |||||
</metadata> | |||||
<g | |||||
inkscape:label="Layer 1" | |||||
inkscape:groupmode="layer" | |||||
id="layer1" | |||||
transform="translate(-263.42857,-301.50504)"> | |||||
<rect | |||||
style="opacity:0.93280634;fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:8;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;filter:url(#filter8786-1-1)" | |||||
id="rect3756-4-1-0-0-5" | |||||
width="256" | |||||
height="256" | |||||
x="-37.086269" | |||||
y="505.79703" | |||||
rx="32" | |||||
ry="32" | |||||
transform="matrix(0.83385449,0,0,0.83385449,315.61975,-98.98946)" /> | |||||
<rect | |||||
style="fill:url(#linearGradient3131);fill-opacity:1.0;stroke:url(#linearGradient3133);stroke-width:6.67083596999999973;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="rect3756-4-1-2-9" | |||||
width="213.46675" | |||||
height="213.46675" | |||||
x="284.69519" | |||||
y="322.77164" | |||||
rx="26.683344" | |||||
ry="26.683344" /> | |||||
<rect | |||||
style="opacity:0.89723319000000001;color:#000000;fill:#af9191;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter6576-0);enable-background:accumulate" | |||||
id="rect6570-4" | |||||
width="161" | |||||
height="161" | |||||
x="308.26733" | |||||
y="345.81552" | |||||
inkscape:export-filename="/home/pj/Documents/svg/path10192-9.png" | |||||
inkscape:export-xdpi="89.989967" | |||||
inkscape:export-ydpi="89.989967" /> | |||||
<rect | |||||
style="color:#000000;fill:url(#linearGradient5041);fill-opacity:1.0;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:3.71435570999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |||||
id="rect3534-2" | |||||
width="160.31299" | |||||
height="79.151245" | |||||
x="308.61084" | |||||
y="346.66428" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="opacity:0.5;fill:#ff0000;stroke:url(#linearGradient5147);stroke-width:4.71404982;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="path6162-2" | |||||
sodipodi:cx="-4.2857141" | |||||
sodipodi:cy="198.79076" | |||||
sodipodi:rx="35.714287" | |||||
sodipodi:ry="35" | |||||
d="m 31.428573,198.79076 c 0,19.32996 -15.989831,35 -35.7142871,35 -19.7244559,0 -35.7142869,-15.67004 -35.7142869,-35 0,-19.32997 15.989831,-35 35.7142869,-35 19.7244561,0 35.7142871,15.67003 35.7142871,35 z" | |||||
transform="matrix(0.47724548,0,0,0.48698502,335.16334,289.43179)" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:url(#radialGradient4892);fill-opacity:1;stroke:url(#linearGradient4894);stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="path6172-4" | |||||
sodipodi:cx="-2.1428571" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:ry="20.714285" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
transform="matrix(0.63497502,0,0,0.64793348,334.47874,254.65988)" /> | |||||
<rect | |||||
style="opacity:0.66000001;color:#000000;fill:#4b4b4b;fill-opacity:1;fill-rule:nonzero;stroke:#949494;stroke-width:0.63269919;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |||||
id="rect3534-6-7" | |||||
width="51.698875" | |||||
height="62.038593" | |||||
x="357.92554" | |||||
y="354.54916" /> | |||||
<text | |||||
xml:space="preserve" | |||||
style="font-size:16.68160248px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" | |||||
x="366.28452" | |||||
y="383.95786" | |||||
id="text4618-7" | |||||
sodipodi:linespacing="125%"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan4620-5" | |||||
x="366.28452" | |||||
y="383.95786">OSC</tspan></text> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:url(#linearGradient4896);fill-opacity:1;stroke:#2a2a2a;stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="path6172-3-9-4" | |||||
sodipodi:cx="-2.1428571" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:ry="20.714285" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
transform="matrix(0.34133826,0,0,0.34830423,368.00834,328.43419)" /> | |||||
<rect | |||||
style="opacity:0.66000001;fill:#4b4b4b;fill-opacity:1;stroke:#949494;stroke-width:0.63269919;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="rect3534-6-4-8" | |||||
width="46.528988" | |||||
height="61.944588" | |||||
x="414.79419" | |||||
y="354.64645" /> | |||||
<rect | |||||
style="fill:#000000;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-1" | |||||
width="41.3591" | |||||
height="26.326447" | |||||
x="417.37915" | |||||
y="357.74368" /> | |||||
<rect | |||||
style="fill:#000000;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-4-2" | |||||
width="41.3591" | |||||
height="26.326456" | |||||
x="417.37915" | |||||
y="387.16739" /> | |||||
<rect | |||||
style="fill:#00ff00;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-89" | |||||
width="21.972023" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="357.74368" /> | |||||
<rect | |||||
style="fill:#00ff00;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-8-3" | |||||
width="27.141911" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="371.68124" /> | |||||
<rect | |||||
style="fill:#00ffd0;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-86-6" | |||||
width="14.217191" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="387.16739" /> | |||||
<rect | |||||
style="fill:#00ffd0;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-8-8-8" | |||||
width="37.481686" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="401.10489" /> | |||||
<g | |||||
style="display:inline" | |||||
id="g8185-0" | |||||
transform="translate(263.42854,-494.85714)"> | |||||
<path | |||||
transform="matrix(0.34133826,0,0,0.34830423,121.07781,823.29132)" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
sodipodi:ry="20.714285" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:cx="-2.1428571" | |||||
id="path6172-3-9-3-21" | |||||
style="fill:url(#linearGradient4898);fill-opacity:1;stroke:#2a2a2a;stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | |||||
sodipodi:type="arc" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path8165-0" | |||||
d="m 120.34637,888.07647 0,4.64285" | |||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||||
</g> | |||||
<g | |||||
style="display:inline" | |||||
id="g8273-5" | |||||
transform="translate(263.42854,-494.85714)"> | |||||
<path | |||||
transform="matrix(0.34133826,0,0,0.34830423,137.57584,823.29132)" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
sodipodi:ry="20.714285" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:cx="-2.1428571" | |||||
id="path6172-3-9-3-2-1" | |||||
style="fill:url(#linearGradient4900);fill-opacity:1;stroke:#2a2a2a;stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | |||||
sodipodi:type="arc" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path8165-9-10" | |||||
d="m 142.2413,891.52509 -4.21321,1.95061" | |||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||||
</g> | |||||
<path | |||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" | |||||
d="m 362.05344,396.32314 4.0778,2.21981" | |||||
id="path8165-9-4-85" | |||||
inkscape:connector-curvature="0" /> | |||||
<rect | |||||
style="color:#000000;fill:url(#linearGradient5018);fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:3.71435571;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |||||
id="rect3534-5-6" | |||||
width="160.31299" | |||||
height="79.151245" | |||||
x="308.61084" | |||||
y="426.81552" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="opacity:0.50000006;fill:#ff0000;stroke:url(#linearGradient4904);stroke-width:4.71404982;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="path6162-9-4" | |||||
sodipodi:cx="-4.2857141" | |||||
sodipodi:cy="198.79076" | |||||
sodipodi:rx="35.714287" | |||||
sodipodi:ry="35" | |||||
d="m 31.428573,198.79076 c 0,19.32996 -15.989831,35 -35.7142871,35 -19.7244559,0 -35.7142869,-15.67004 -35.7142869,-35 0,-19.32997 15.989831,-35 35.7142869,-35 19.7244561,0 35.7142871,15.67003 35.7142871,35 z" | |||||
transform="matrix(0.47724548,0,0,0.48698502,335.16334,369.58303)" /> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:url(#radialGradient4906);fill-opacity:1;stroke:url(#linearGradient4908);stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="path6172-6-6" | |||||
sodipodi:cx="-2.1428571" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:ry="20.714285" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
transform="matrix(0.63497502,0,0,0.64793348,334.47874,334.81112)" /> | |||||
<rect | |||||
style="opacity:0.66000001;color:#000000;fill:#4b4b4b;fill-opacity:1;fill-rule:nonzero;stroke:#949494;stroke-width:0.63269919;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |||||
id="rect3534-6-2-2" | |||||
width="51.698875" | |||||
height="62.038593" | |||||
x="357.92554" | |||||
y="434.70041" /> | |||||
<text | |||||
xml:space="preserve" | |||||
style="font-size:16.68160248px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Sans" | |||||
x="366.28452" | |||||
y="464.1091" | |||||
id="text4618-1-5" | |||||
sodipodi:linespacing="125%"><tspan | |||||
sodipodi:role="line" | |||||
id="tspan4620-7-8" | |||||
x="366.28452" | |||||
y="464.1091">OSC</tspan></text> | |||||
<path | |||||
sodipodi:type="arc" | |||||
style="fill:url(#linearGradient4910);fill-opacity:1;stroke:#2a2a2a;stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" | |||||
id="path6172-3-9-8-6" | |||||
sodipodi:cx="-2.1428571" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:ry="20.714285" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
transform="matrix(0.34133826,0,0,0.34830423,368.00834,408.58542)" /> | |||||
<rect | |||||
style="opacity:0.66000001;color:#000000;fill:#4b4b4b;fill-opacity:1;fill-rule:nonzero;stroke:#949494;stroke-width:0.63269919;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |||||
id="rect3534-6-4-5-2" | |||||
width="46.528988" | |||||
height="61.944588" | |||||
x="414.79419" | |||||
y="434.7977" /> | |||||
<rect | |||||
style="fill:#000000;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-7-8" | |||||
width="41.3591" | |||||
height="26.326447" | |||||
x="417.37915" | |||||
y="437.89493" /> | |||||
<rect | |||||
style="fill:#000000;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-4-4-4" | |||||
width="41.3591" | |||||
height="26.326456" | |||||
x="417.37915" | |||||
y="467.31863" /> | |||||
<rect | |||||
style="fill:#00ff00;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-1-7" | |||||
width="21.972023" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="437.89493" /> | |||||
<rect | |||||
style="fill:#00ff00;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-8-85-2" | |||||
width="27.141911" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="451.83249" /> | |||||
<rect | |||||
style="fill:#00ffd0;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-86-9-4" | |||||
width="14.217191" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="467.31863" /> | |||||
<rect | |||||
style="fill:#00ffd0;fill-opacity:1;stroke:none;display:inline" | |||||
id="rect3534-6-4-4-9-8-8-7-0" | |||||
width="37.481686" | |||||
height="12.388914" | |||||
x="417.37915" | |||||
y="481.25613" /> | |||||
<g | |||||
style="display:inline" | |||||
id="g8185-5-6" | |||||
transform="translate(263.42854,-414.7059)"> | |||||
<path | |||||
transform="matrix(0.34133826,0,0,0.34830423,121.07781,823.29132)" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
sodipodi:ry="20.714285" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:cx="-2.1428571" | |||||
id="path6172-3-9-3-3-2" | |||||
style="fill:url(#linearGradient4912);fill-opacity:1;stroke:#2a2a2a;stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | |||||
sodipodi:type="arc" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path8165-8-9" | |||||
d="m 120.34637,888.07647 0,4.64285" | |||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||||
</g> | |||||
<g | |||||
style="display:inline" | |||||
id="g8273-8-9" | |||||
transform="translate(263.42854,-414.7059)"> | |||||
<path | |||||
transform="matrix(0.34133826,0,0,0.34830423,137.57584,823.29132)" | |||||
d="m 18.571428,203.07646 c 0,11.44019 -9.2741014,20.71429 -20.7142851,20.71429 -11.4401839,0 -20.7142849,-9.2741 -20.7142849,-20.71429 0,-11.44018 9.274101,-20.71428 20.7142849,-20.71428 11.4401837,0 20.7142851,9.2741 20.7142851,20.71428 z" | |||||
sodipodi:ry="20.714285" | |||||
sodipodi:rx="20.714285" | |||||
sodipodi:cy="203.07646" | |||||
sodipodi:cx="-2.1428571" | |||||
id="path6172-3-9-3-2-3-0" | |||||
style="fill:url(#linearGradient4914);fill-opacity:1;stroke:#2a2a2a;stroke-width:2.94077349;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" | |||||
sodipodi:type="arc" /> | |||||
<path | |||||
inkscape:connector-curvature="0" | |||||
id="path8165-9-1-8" | |||||
d="m 142.2413,891.52509 -4.21321,1.95061" | |||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> | |||||
</g> | |||||
<path | |||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" | |||||
d="m 362.05344,476.47437 4.0778,2.21981" | |||||
id="path8165-9-4-8-1" | |||||
inkscape:connector-curvature="0" /> | |||||
</g> | |||||
</svg> |