Browse Source

Add new files

tags/v0.9.0
falkTX 13 years ago
parent
commit
c30cef8da6
30 changed files with 3410 additions and 0 deletions
  1. +370
    -0
      src/cadence.py
  2. +194
    -0
      src/carla-includes/carla_vst_includes.h
  3. +28
    -0
      src/carla-lilv/config/lilv_config.h
  4. +15
    -0
      src/carla-lilv/config/serd_config.h
  5. +10
    -0
      src/carla-lilv/config/sord_config.h
  6. +11
    -0
      src/carla-lilv/config/sratom_config.h
  7. +90
    -0
      src/carla-lilv/custom-patches/lilv_ui-features.patch
  8. +75
    -0
      src/carla-lilv/custom-patches/sord_zix-tree-size.patch
  9. +279
    -0
      src/carla-lilv/lilv-0.14.2/lilv/lilvmm.hpp
  10. +30
    -0
      src/carla-lilv/lilv.c
  11. +23
    -0
      src/carla-lilv/serd.c
  12. +21
    -0
      src/carla-lilv/sord.c
  13. +18
    -0
      src/carla-lilv/sratom.c
  14. BIN
      src/icons/128x128/cadence.png
  15. BIN
      src/icons/128x128/carla-control.png
  16. BIN
      src/icons/16x16/cadence.png
  17. BIN
      src/icons/16x16/carla-control.png
  18. BIN
      src/icons/256x256/cadence.png
  19. BIN
      src/icons/256x256/carla-control.png
  20. BIN
      src/icons/48x48/cadence.png
  21. BIN
      src/icons/48x48/carla-control.png
  22. +366
    -0
      src/icons/scalable/cadence.svg
  23. +845
    -0
      src/icons/scalable/carla-control.svg
  24. BIN
      src/icons/screens/carla.png
  25. BIN
      src/icons/screens/catia.png
  26. BIN
      src/icons/screens/claudia.png
  27. BIN
      src/icons/screens/logs.png
  28. BIN
      src/icons/screens/render.png
  29. BIN
      src/icons/screens/xy-controller.png
  30. +1035
    -0
      src/ui/cadence.ui

+ 370
- 0
src/cadence.py View File

@@ -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_())

+ 194
- 0
src/carla-includes/carla_vst_includes.h View File

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

+ 28
- 0
src/carla-lilv/config/lilv_config.h View File

@@ -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_ */

+ 15
- 0
src/carla-lilv/config/serd_config.h View File

@@ -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_ */

+ 10
- 0
src/carla-lilv/config/sord_config.h View File

@@ -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_ */

+ 11
- 0
src/carla-lilv/config/sratom_config.h View File

@@ -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_ */

+ 90
- 0
src/carla-lilv/custom-patches/lilv_ui-features.patch View File

@@ -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);
+}

+ 75
- 0
src/carla-lilv/custom-patches/sord_zix-tree-size.patch View File

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

+ 279
- 0
src/carla-lilv/lilv-0.14.2/lilv/lilvmm.hpp View File

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

+ 30
- 0
src/carla-lilv/lilv.c View File

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

+ 23
- 0
src/carla-lilv/serd.c View File

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

+ 21
- 0
src/carla-lilv/sord.c View File

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

+ 18
- 0
src/carla-lilv/sratom.c View File

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

BIN
src/icons/128x128/cadence.png View File

Before After
Width: 128  |  Height: 128  |  Size: 14KB

BIN
src/icons/128x128/carla-control.png View File

Before After
Width: 128  |  Height: 128  |  Size: 13KB

BIN
src/icons/16x16/cadence.png View File

Before After
Width: 16  |  Height: 16  |  Size: 707B

BIN
src/icons/16x16/carla-control.png View File

Before After
Width: 16  |  Height: 16  |  Size: 708B

BIN
src/icons/256x256/cadence.png View File

Before After
Width: 256  |  Height: 256  |  Size: 35KB

BIN
src/icons/256x256/carla-control.png View File

Before After
Width: 256  |  Height: 256  |  Size: 32KB

BIN
src/icons/48x48/cadence.png View File

Before After
Width: 48  |  Height: 48  |  Size: 3.3KB

BIN
src/icons/48x48/carla-control.png View File

Before After
Width: 48  |  Height: 48  |  Size: 3.3KB

+ 366
- 0
src/icons/scalable/cadence.svg View File

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

+ 845
- 0
src/icons/scalable/carla-control.svg View File

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

BIN
src/icons/screens/carla.png View File

Before After
Width: 150  |  Height: 111  |  Size: 24KB

BIN
src/icons/screens/catia.png View File

Before After
Width: 150  |  Height: 97  |  Size: 10KB

BIN
src/icons/screens/claudia.png View File

Before After
Width: 150  |  Height: 89  |  Size: 8.7KB

BIN
src/icons/screens/logs.png View File

Before After
Width: 150  |  Height: 106  |  Size: 20KB

BIN
src/icons/screens/render.png View File

Before After
Width: 150  |  Height: 102  |  Size: 8.2KB

BIN
src/icons/screens/xy-controller.png View File

Before After
Width: 150  |  Height: 121  |  Size: 8.0KB

+ 1035
- 0
src/ui/cadence.ui
File diff suppressed because it is too large
View File


Loading…
Cancel
Save