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