merge generating icons from SVG source
This commit is contained in:
parent
7a6b987a50
commit
f2c9e67fbc
11 changed files with 1233 additions and 33 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -2,10 +2,11 @@
|
||||||
*~
|
*~
|
||||||
*.tar.*
|
*.tar.*
|
||||||
.[^.]*
|
.[^.]*
|
||||||
|
*.o
|
||||||
*.os
|
*.os
|
||||||
*.gch
|
*.gch
|
||||||
,valgrind.log*
|
,valgrind.log*
|
||||||
admin/scons/*.pyc
|
*.pyc
|
||||||
optcache
|
optcache
|
||||||
Makefile.in
|
Makefile.in
|
||||||
build/*
|
build/*
|
||||||
|
|
@ -13,5 +14,8 @@ bin/*
|
||||||
autom4te.cache/*
|
autom4te.cache/*
|
||||||
scripts/*
|
scripts/*
|
||||||
configure
|
configure
|
||||||
|
config.log
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
semantic.cache
|
semantic.cache
|
||||||
|
wiki/backups/*
|
||||||
|
doc/devel/draw/*.png
|
||||||
|
|
|
||||||
28
SConstruct
28
SConstruct
|
|
@ -37,6 +37,7 @@ BINDIR = 'bin'
|
||||||
TESTDIR = 'tests'
|
TESTDIR = 'tests'
|
||||||
ICONDIR = 'icons'
|
ICONDIR = 'icons'
|
||||||
VERSION = '0.1+pre.01'
|
VERSION = '0.1+pre.01'
|
||||||
|
SVGRENDERER = 'admin/render-icon'
|
||||||
#-----------------------------------Configuration
|
#-----------------------------------Configuration
|
||||||
|
|
||||||
# NOTE: scons -h for help.
|
# NOTE: scons -h for help.
|
||||||
|
|
@ -68,7 +69,7 @@ def setupBasicEnvironment():
|
||||||
, CCFLAGS='-Wall ' # -fdiagnostics-show-option
|
, CCFLAGS='-Wall ' # -fdiagnostics-show-option
|
||||||
)
|
)
|
||||||
|
|
||||||
RegisterPrecompiledHeader_Builder(env)
|
RegisterIcon_Builder(env,SVGRENDERER)
|
||||||
handleNoBugSwitches(env)
|
handleNoBugSwitches(env)
|
||||||
|
|
||||||
env.Append(CPPDEFINES = '_GNU_SOURCE')
|
env.Append(CPPDEFINES = '_GNU_SOURCE')
|
||||||
|
|
@ -226,6 +227,10 @@ def configurePlatform(env):
|
||||||
print 'Unable to configure GTK--, exiting.'
|
print 'Unable to configure GTK--, exiting.'
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
||||||
|
if not conf.CheckPkgConfig('glibmm-2.4', '2.16'):
|
||||||
|
print 'Unable to configure Lib glib--, exiting.'
|
||||||
|
Exit(1)
|
||||||
|
|
||||||
if not conf.CheckPkgConfig('cairomm-1.0', 0.6):
|
if not conf.CheckPkgConfig('cairomm-1.0', 0.6):
|
||||||
print 'Unable to configure Cairo--, exiting.'
|
print 'Unable to configure Cairo--, exiting.'
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
@ -234,6 +239,10 @@ def configurePlatform(env):
|
||||||
print 'Unable to configure the GNOME DevTool Library, exiting.'
|
print 'Unable to configure the GNOME DevTool Library, exiting.'
|
||||||
Exit(1)
|
Exit(1)
|
||||||
|
|
||||||
|
if not conf.CheckPkgConfig('librsvg-2.0', '2.18.1'):
|
||||||
|
print 'Need rsvg Library for rendering icons.'
|
||||||
|
Exit(1)
|
||||||
|
|
||||||
if not conf.CheckPkgConfig('xv'): Exit(1)
|
if not conf.CheckPkgConfig('xv'): Exit(1)
|
||||||
# if not conf.CheckPkgConfig('xext'): Exit(1)
|
# if not conf.CheckPkgConfig('xext'): Exit(1)
|
||||||
# if not conf.CheckPkgConfig('sm'): Exit(1)
|
# if not conf.CheckPkgConfig('sm'): Exit(1)
|
||||||
|
|
@ -281,26 +290,29 @@ def defineBuildTargets(env, artifacts):
|
||||||
+ env.StaticLibrary('$BINDIR/lumi.la', objlib)
|
+ env.StaticLibrary('$BINDIR/lumi.la', objlib)
|
||||||
)
|
)
|
||||||
|
|
||||||
# use PCH to speed up building
|
|
||||||
precomp = ( env.PrecompiledHeader('$SRCDIR/pre')
|
|
||||||
)
|
|
||||||
env.Depends(objproc, precomp)
|
|
||||||
env.Depends(objlib, precomp)
|
|
||||||
|
|
||||||
artifacts['lumiera'] = env.Program('$BINDIR/lumiera', ['$SRCDIR/main.cpp']+ core )
|
artifacts['lumiera'] = env.Program('$BINDIR/lumiera', ['$SRCDIR/main.cpp']+ core )
|
||||||
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', objplug)
|
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', objplug)
|
||||||
|
|
||||||
# the Lumiera GTK GUI
|
# the Lumiera GTK GUI
|
||||||
envgtk = env.Clone().mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','xv','xext','sm'])
|
envgtk = env.Clone().mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','librsvg-2.0','xv','xext','sm'])
|
||||||
objgui = srcSubtree(envgtk,'$SRCDIR/gui')
|
objgui = srcSubtree(envgtk,'$SRCDIR/gui')
|
||||||
|
|
||||||
|
# render and install Icons
|
||||||
|
vector_icon_dir = env.subst('$ICONDIR/svg')
|
||||||
|
prerendered_icon_dir = env.subst('$ICONDIR/prerendered')
|
||||||
|
artifacts['icons'] = ( [env.IconRender(f) for f in scanSubtree(vector_icon_dir, ['*.svg'])]
|
||||||
|
+ [env.IconCopy(f) for f in scanSubtree(prerendered_icon_dir, ['*.png'])]
|
||||||
|
)
|
||||||
|
|
||||||
artifacts['lumigui'] = ( envgtk.Program('$BINDIR/lumigui', objgui + core)
|
artifacts['lumigui'] = ( envgtk.Program('$BINDIR/lumigui', objgui + core)
|
||||||
+ env.Install('$BINDIR', env.Glob('$ICONDIR/*.png'))
|
|
||||||
+ env.Install('$BINDIR', env.Glob('$SRCDIR/gui/*.rc'))
|
+ env.Install('$BINDIR', env.Glob('$SRCDIR/gui/*.rc'))
|
||||||
|
+ artifacts['icons']
|
||||||
)
|
)
|
||||||
|
|
||||||
# call subdir SConscript(s) for independent components
|
# call subdir SConscript(s) for independent components
|
||||||
SConscript(dirs=[SRCDIR+'/tool'], exports='env artifacts core')
|
SConscript(dirs=[SRCDIR+'/tool'], exports='env artifacts core')
|
||||||
|
SConscript(dirs=['admin'], exports='env envgtk artifacts core')
|
||||||
SConscript(dirs=[TESTDIR], exports='env artifacts core')
|
SConscript(dirs=[TESTDIR], exports='env artifacts core')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
17
admin/SConscript
Normal file
17
admin/SConscript
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# -*- python -*-
|
||||||
|
##
|
||||||
|
## SConscript - SCons buildscript for helper tools (called by SConstruct)
|
||||||
|
##
|
||||||
|
|
||||||
|
Import('env','envgtk','artifacts','core')
|
||||||
|
|
||||||
|
vgsuppr = env.Program('#$BINDIR/vgsuppression',['vgsuppression.c']+core)
|
||||||
|
rsvg = envgtk.Program('#$BINDIR/rsvg-convert','rsvg-convert.c')
|
||||||
|
|
||||||
|
artifacts['tools'] += [ vgsuppr ## for supressing false valgrind alarms
|
||||||
|
+ rsvg ## for rendering SVG icons (uses librsvg)
|
||||||
|
]
|
||||||
|
|
||||||
|
# Rendering the SVG Icons depends on rsvg-convert
|
||||||
|
env.Depends(artifacts['icons'], rsvg)
|
||||||
|
|
||||||
178
admin/render-icon.py
Executable file
178
admin/render-icon.py
Executable file
|
|
@ -0,0 +1,178 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# render-icons.py - Icon rendering utility script
|
||||||
|
#
|
||||||
|
# Copyright (C) Lumiera.org
|
||||||
|
# 2008, Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 2 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import getopt
|
||||||
|
from xml.dom import minidom
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
#svgDir = "svg"
|
||||||
|
#prerenderedDir = "prerendered"
|
||||||
|
inkscapePath = "/usr/bin/inkscape"
|
||||||
|
rsvgPath = "./rsvg-convert"
|
||||||
|
artworkLayerPrefix = "artwork:"
|
||||||
|
|
||||||
|
def createDirectory( name ):
|
||||||
|
if os.path.exists(name) == False:
|
||||||
|
os.mkdir(name)
|
||||||
|
|
||||||
|
def copyMergeDirectory( src, dst ):
|
||||||
|
listing = os.listdir(src)
|
||||||
|
for file_name in listing:
|
||||||
|
src_file_path = os.path.join(src, file_name)
|
||||||
|
dst_file_path = os.path.join(dst, file_name)
|
||||||
|
shutil.copyfile(src_file_path, dst_file_path)
|
||||||
|
|
||||||
|
def getDocumentSize( svg_element ):
|
||||||
|
width = float(svg_element.getAttribute("width"))
|
||||||
|
height = float(svg_element.getAttribute("height"))
|
||||||
|
return [width, height]
|
||||||
|
|
||||||
|
def findChildLayerElement( parent_element ):
|
||||||
|
for node in parent_element.childNodes:
|
||||||
|
if node.nodeType == minidom.Node.ELEMENT_NODE:
|
||||||
|
if node.tagName == "g":
|
||||||
|
if node.getAttribute("inkscape:groupmode") == "layer":
|
||||||
|
return node
|
||||||
|
return None
|
||||||
|
|
||||||
|
def parsePlateLayer( layer ):
|
||||||
|
rectangles = []
|
||||||
|
for node in layer.childNodes:
|
||||||
|
if node.nodeType == minidom.Node.ELEMENT_NODE:
|
||||||
|
if node.tagName == "rect":
|
||||||
|
x = float(node.getAttribute("x"))
|
||||||
|
y = float(node.getAttribute("y"))
|
||||||
|
width = float(node.getAttribute("width"))
|
||||||
|
height = float(node.getAttribute("height"))
|
||||||
|
rectangles.append([x, y, width, height])
|
||||||
|
return rectangles
|
||||||
|
|
||||||
|
def parseSVG( file_path ):
|
||||||
|
print "Parsing " + file_path
|
||||||
|
svgdoc = minidom.parse(file_path)
|
||||||
|
for root_node in svgdoc.childNodes:
|
||||||
|
if root_node.nodeType == minidom.Node.ELEMENT_NODE:
|
||||||
|
if root_node.tagName == "svg":
|
||||||
|
size = getDocumentSize( root_node )
|
||||||
|
layer = findChildLayerElement( root_node )
|
||||||
|
if layer != None:
|
||||||
|
layer_name = layer.getAttribute("inkscape:label")
|
||||||
|
if layer_name[:len(artworkLayerPrefix)] == artworkLayerPrefix:
|
||||||
|
artwork_name = layer_name[len(artworkLayerPrefix):]
|
||||||
|
plate = findChildLayerElement( layer )
|
||||||
|
if plate != None:
|
||||||
|
return artwork_name, size, parsePlateLayer( plate )
|
||||||
|
return None
|
||||||
|
|
||||||
|
def renderSvgInkscape(file_path, out_dir, artwork_name, rectangle, doc_size):
|
||||||
|
|
||||||
|
# Calculate the rendering rectangle
|
||||||
|
x1 = rectangle[0]
|
||||||
|
y1 = doc_size[1] - rectangle[1] - rectangle[3]
|
||||||
|
x2 = x1 + rectangle[2]
|
||||||
|
y2 = y1 + rectangle[3]
|
||||||
|
|
||||||
|
# Call Inkscape to do the render
|
||||||
|
os.spawnlp(os.P_WAIT, inkscapePath, inkscapePath,
|
||||||
|
file_path,
|
||||||
|
"-z",
|
||||||
|
"-a %g:%g:%g:%g" % (x1, y1, x2, y2),
|
||||||
|
"-w %g" % (rectangle[2]), "-h %g" % (rectangle[3]),
|
||||||
|
"--export-png=" + os.path.join(out_dir, "%gx%g/%s.png" % (rectangle[2], rectangle[3], artwork_name)))
|
||||||
|
|
||||||
|
def renderSvgRsvg(file_path, out_dir, artwork_name, rectangle, doc_size):
|
||||||
|
# Prepare a Cairo context
|
||||||
|
width = int(rectangle[2])
|
||||||
|
height = int(rectangle[3])
|
||||||
|
|
||||||
|
if not os.path.exists(rsvgPath):
|
||||||
|
print "Error: executable %s not found." % rsvgPath
|
||||||
|
|
||||||
|
os.spawnlp(os.P_WAIT, rsvgPath, rsvgPath,
|
||||||
|
"--source-rect=%g:%g:%g:%g" % (rectangle[0], rectangle[1], rectangle[2], rectangle[3]),
|
||||||
|
"--output=" + os.path.join(out_dir, "%gx%g/%s.png" % (rectangle[2], rectangle[3], artwork_name)),
|
||||||
|
file_path)
|
||||||
|
|
||||||
|
def renderSvgIcon(file_path, out_dir):
|
||||||
|
artwork_name, doc_size, rectangles = parseSVG(file_path)
|
||||||
|
for rectangle in rectangles:
|
||||||
|
renderSvgRsvg(file_path, out_dir, artwork_name, rectangle, doc_size)
|
||||||
|
|
||||||
|
def getTargetNames(file_path):
|
||||||
|
"""get a list of target names to be rendered from the given source SVG
|
||||||
|
usable to setup the build targets for SCons
|
||||||
|
"""
|
||||||
|
artwork_name, _ , rectangles = parseSVG(file_path)
|
||||||
|
return ["%gx%g/%s.png" % (rectangle[2], rectangle[3], artwork_name) for rectangle in rectangles ]
|
||||||
|
|
||||||
|
#def renderSvgIcons():
|
||||||
|
# listing = os.listdir(svgDir)
|
||||||
|
# for file_path in listing:
|
||||||
|
# [root, extension] = os.path.splitext(file_path)
|
||||||
|
# if extension.lower() == ".svg":
|
||||||
|
# renderSvgIcon(os.path.join(svgDir, file_path))
|
||||||
|
|
||||||
|
#def copyPrerenderedIcons():
|
||||||
|
# listing = os.listdir(prerenderedDir)
|
||||||
|
# for list_item in listing:
|
||||||
|
# src_dir = os.path.join(prerenderedDir, list_item)
|
||||||
|
# copyMergeDirectory(src_dir, list_item)
|
||||||
|
|
||||||
|
def printHelp():
|
||||||
|
print "render-icon.py SRCFILE.svg TARGETDIR"
|
||||||
|
print "An icon rendering utility script for lumiera"
|
||||||
|
|
||||||
|
def parseArguments(argv):
|
||||||
|
optlist, args = getopt.getopt(argv, "")
|
||||||
|
|
||||||
|
if len(args) == 2:
|
||||||
|
return args[0], args[1]
|
||||||
|
|
||||||
|
printHelp()
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
def main(argv):
|
||||||
|
in_path, out_dir = parseArguments(argv)
|
||||||
|
|
||||||
|
if in_path == None or out_dir == None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if os.path.exists(out_dir) == False:
|
||||||
|
print "Directory not found: " + out_dir
|
||||||
|
return
|
||||||
|
|
||||||
|
# Create the icons folders
|
||||||
|
createDirectory(os.path.join(out_dir, "48x48"))
|
||||||
|
createDirectory(os.path.join(out_dir, "32x32"))
|
||||||
|
createDirectory(os.path.join(out_dir, "24x24"))
|
||||||
|
createDirectory(os.path.join(out_dir, "22x22"))
|
||||||
|
createDirectory(os.path.join(out_dir, "16x16"))
|
||||||
|
|
||||||
|
renderSvgIcon(in_path, out_dir)
|
||||||
|
|
||||||
|
# Copy in prerendered icons
|
||||||
|
#copyPrerenderedIcons()
|
||||||
|
|
||||||
|
if __name__=="__main__":
|
||||||
|
main(sys.argv[1:])
|
||||||
|
|
||||||
219
admin/rsvg-convert.c
Normal file
219
admin/rsvg-convert.c
Normal file
|
|
@ -0,0 +1,219 @@
|
||||||
|
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*-
|
||||||
|
|
||||||
|
rsvg-convert.c: Command line utility for exercising rsvg with cairo.
|
||||||
|
|
||||||
|
Copyright (C) 2005 Red Hat, Inc.
|
||||||
|
Copyright (C) 2005 Dom Lachowicz <cinamod@hotmail.com>
|
||||||
|
Copyright (C) 2005 Caleb Moore <c.moore@student.unsw.edu.au>
|
||||||
|
Copyright (C) 2008 Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this program; if not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
Authors: Carl Worth <cworth@cworth.org>,
|
||||||
|
Caleb Moore <c.moore@student.unsw.edu.au>,
|
||||||
|
Dom Lachowicz <cinamod@hotmail.com>,
|
||||||
|
Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef N_
|
||||||
|
#define N_(X) X
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <librsvg-2/librsvg/rsvg.h>
|
||||||
|
#include <librsvg-2/librsvg/rsvg-cairo.h>
|
||||||
|
|
||||||
|
#ifdef CAIRO_HAS_PS_SURFACE
|
||||||
|
#include <cairo-ps.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CAIRO_HAS_PDF_SURFACE
|
||||||
|
#include <cairo-pdf.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CAIRO_HAS_SVG_SURFACE
|
||||||
|
#include <cairo-svg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _
|
||||||
|
#define _(X) X
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct RsvgSizeCallbackData {
|
||||||
|
gint width;
|
||||||
|
gint height;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RsvgSourceRectangle {
|
||||||
|
double left;
|
||||||
|
double top;
|
||||||
|
double width;
|
||||||
|
double height;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
display_error (GError * err)
|
||||||
|
{
|
||||||
|
if (err) {
|
||||||
|
g_print ("%s", err->message);
|
||||||
|
g_error_free (err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
rsvg_cairo_size_callback (int *width, int *height, gpointer data)
|
||||||
|
{
|
||||||
|
RsvgDimensionData *dimensions = data;
|
||||||
|
*width = dimensions->width;
|
||||||
|
*height = dimensions->height;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cairo_status_t
|
||||||
|
rsvg_cairo_write_func (void *closure, const unsigned char *data, unsigned int length)
|
||||||
|
{
|
||||||
|
fwrite (data, 1, length, (FILE *) closure);
|
||||||
|
return CAIRO_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
GOptionContext *g_option_context;
|
||||||
|
int width = -1;
|
||||||
|
int height = -1;
|
||||||
|
char *source_rect_string = NULL;
|
||||||
|
char *output = NULL;
|
||||||
|
GError *error = NULL;
|
||||||
|
char *filename = NULL;
|
||||||
|
|
||||||
|
char **args = NULL;
|
||||||
|
RsvgHandle *rsvg;
|
||||||
|
cairo_surface_t *surface = NULL;
|
||||||
|
cairo_t *cr = NULL;
|
||||||
|
RsvgDimensionData dimensions;
|
||||||
|
FILE *output_file = stdout;
|
||||||
|
|
||||||
|
struct RsvgSourceRectangle source_rect = {0, 0, 0, 0};
|
||||||
|
|
||||||
|
GOptionEntry options_table[] = {
|
||||||
|
{"width", 'w', 0, G_OPTION_ARG_INT, &width,
|
||||||
|
N_("width [optional; defaults to the SVG's width]"), N_("<int>")},
|
||||||
|
{"height", 'h', 0, G_OPTION_ARG_INT, &height,
|
||||||
|
N_("height [optional; defaults to the SVG's height]"), N_("<int>")},
|
||||||
|
{"source-rect", 'r', 0, G_OPTION_ARG_STRING, &source_rect_string,
|
||||||
|
N_("source rectangle [optional; defaults to rectangle of the SVG document]"), N_("left:top:width:height")},
|
||||||
|
{"output", 'o', 0, G_OPTION_ARG_STRING, &output,
|
||||||
|
N_("output filename"), NULL},
|
||||||
|
{G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &args, NULL, N_("FILE")},
|
||||||
|
{NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
g_thread_init(NULL);
|
||||||
|
|
||||||
|
g_option_context = g_option_context_new (_("- SVG Converter"));
|
||||||
|
g_option_context_add_main_entries (g_option_context, options_table, NULL);
|
||||||
|
g_option_context_set_help_enabled (g_option_context, TRUE);
|
||||||
|
if (!g_option_context_parse (g_option_context, &argc, &argv, &error)) {
|
||||||
|
display_error (error);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_option_context_free (g_option_context);
|
||||||
|
|
||||||
|
if (output != NULL) {
|
||||||
|
output_file = fopen (output, "wb");
|
||||||
|
if (!output_file) {
|
||||||
|
fprintf (stderr, _("Error saving to file: %s\n"), output);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args[0] != NULL) {
|
||||||
|
filename = args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Parse the source rect */
|
||||||
|
if(source_rect_string != NULL) {
|
||||||
|
const int n = sscanf(source_rect_string, "%lg:%lg:%lg:%lg",
|
||||||
|
&source_rect.left, &source_rect.top,
|
||||||
|
&source_rect.width, &source_rect.height);
|
||||||
|
if(n != 4 || source_rect.width <= 0.0 || source_rect.height < 0.0) {
|
||||||
|
fprintf (stderr, _("Invalid source rect: %s\n"), source_rect_string);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rsvg_init ();
|
||||||
|
|
||||||
|
rsvg = rsvg_handle_new_from_file (filename, &error);
|
||||||
|
|
||||||
|
if (!rsvg) {
|
||||||
|
fprintf (stderr, _("Error reading SVG:"));
|
||||||
|
display_error (error);
|
||||||
|
fprintf (stderr, "\n");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if the user did not specify a source rectangle, get the page size from the SVG */
|
||||||
|
if(source_rect_string == NULL) {
|
||||||
|
rsvg_handle_set_size_callback (rsvg, rsvg_cairo_size_callback, &dimensions, NULL);
|
||||||
|
source_rect.left = 0;
|
||||||
|
source_rect.top = 0;
|
||||||
|
source_rect.width = dimensions.width;
|
||||||
|
source_rect.height = dimensions.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
rsvg_handle_get_dimensions (rsvg, &dimensions);
|
||||||
|
|
||||||
|
if(width != -1 && height != -1) {
|
||||||
|
dimensions.width = width;
|
||||||
|
dimensions.height = height;
|
||||||
|
} else if(source_rect_string != NULL) {
|
||||||
|
dimensions.width = source_rect.width;
|
||||||
|
dimensions.height = source_rect.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
||||||
|
dimensions.width, dimensions.height);
|
||||||
|
|
||||||
|
cr = cairo_create (surface);
|
||||||
|
|
||||||
|
cairo_translate(cr, -source_rect.left, -source_rect.top);
|
||||||
|
|
||||||
|
if(width != -1 && height != -1 && source_rect_string != NULL) {
|
||||||
|
cairo_scale(cr, (double)dimensions.width / (double)source_rect.width,
|
||||||
|
(double)dimensions.height / (double)source_rect.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
rsvg_handle_render_cairo (rsvg, cr);
|
||||||
|
|
||||||
|
cairo_surface_write_to_png_stream (surface, rsvg_cairo_write_func, output_file);
|
||||||
|
|
||||||
|
g_object_unref (G_OBJECT (rsvg));
|
||||||
|
|
||||||
|
cairo_destroy (cr);
|
||||||
|
cairo_surface_destroy (surface);
|
||||||
|
|
||||||
|
fclose (output_file);
|
||||||
|
|
||||||
|
rsvg_term ();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -28,6 +28,8 @@ import fnmatch
|
||||||
import re
|
import re
|
||||||
import tarfile
|
import tarfile
|
||||||
|
|
||||||
|
from SCons.Action import Action
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -58,13 +60,13 @@ def srcSubtree(env,tree,isShared=False,builder=None, **args):
|
||||||
else:
|
else:
|
||||||
builder = lambda f: env.Object(f, **args)
|
builder = lambda f: env.Object(f, **args)
|
||||||
|
|
||||||
return [builder(f) for f in scanSrcSubtree(root)]
|
return [builder(f) for f in scanSubtree(root)]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SRCPATTERNS = ['*.c','*.cpp','*.cc']
|
SRCPATTERNS = ['*.c','*.cpp','*.cc']
|
||||||
|
|
||||||
def scanSrcSubtree(roots):
|
def scanSubtree(roots, patterns=SRCPATTERNS):
|
||||||
""" first expand (possible) wildcards and filter out non-dirs.
|
""" first expand (possible) wildcards and filter out non-dirs.
|
||||||
Then scan the given subtree for source filesnames
|
Then scan the given subtree for source filesnames
|
||||||
(python generator function)
|
(python generator function)
|
||||||
|
|
@ -73,7 +75,7 @@ def scanSrcSubtree(roots):
|
||||||
for (dir,_,files) in os.walk(root):
|
for (dir,_,files) in os.walk(root):
|
||||||
if dir.startswith('./'):
|
if dir.startswith('./'):
|
||||||
dir = dir[2:]
|
dir = dir[2:]
|
||||||
for p in SRCPATTERNS:
|
for p in patterns:
|
||||||
for f in fnmatch.filter(files, p):
|
for f in fnmatch.filter(files, p):
|
||||||
yield os.path.join(dir,f)
|
yield os.path.join(dir,f)
|
||||||
|
|
||||||
|
|
@ -102,22 +104,50 @@ def filterNodes(nlist, removeName=None):
|
||||||
return filter(predicate, nlist)
|
return filter(predicate, nlist)
|
||||||
|
|
||||||
|
|
||||||
def RegisterPrecompiledHeader_Builder(env):
|
|
||||||
""" Registeres an Custom Builder for generating a precompiled Header.
|
|
||||||
Note you should define a dependency to the PCH file
|
|
||||||
"""
|
|
||||||
def genCmdline(source, target, env, for_signature):
|
|
||||||
return '$CXXCOM -x c++-header %s' % source[0]
|
|
||||||
def fixSourceDependency(target, source, env):
|
|
||||||
print "precompiled header: %s --> %s" % (source[0],target[0])
|
|
||||||
return (target, source)
|
|
||||||
|
|
||||||
gchBuilder = env.Builder( generator = genCmdline
|
def getDirname(dir):
|
||||||
, emitter = fixSourceDependency
|
""" extract directory name without leading path """
|
||||||
, suffix = '.gch'
|
dir = os.path.realpath(dir)
|
||||||
, src_suffix = '.hpp'
|
if not os.path.isdir(dir):
|
||||||
)
|
dir,_ = os.path.split(dir)
|
||||||
env.Append(BUILDERS = {'PrecompiledHeader' : gchBuilder})
|
_, name = os.path.split(dir)
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def RegisterIcon_Builder(env, renderer):
|
||||||
|
""" Registeres Custom Builders for generating and installing Icons.
|
||||||
|
Additionally you need to build the tool (rsvg-convert.c)
|
||||||
|
used to generate png from the svg source using librsvg.
|
||||||
|
"""
|
||||||
|
renderer = __import__(renderer) # load python script for invoking the render
|
||||||
|
renderer.rsvgPath = env.subst("$BINDIR/rsvg-convert")
|
||||||
|
|
||||||
|
def invokeRenderer(target, source, env):
|
||||||
|
source = str(source[0])
|
||||||
|
targetdir = env.subst("$BINDIR")
|
||||||
|
renderer.main([source,targetdir])
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def createIconTargets(target,source,env):
|
||||||
|
""" parse the SVG to get the target file names """
|
||||||
|
source = str(source[0])
|
||||||
|
targetdir = os.path.basename(str(target[0]))
|
||||||
|
targetfiles = renderer.getTargetNames(source) # parse SVG
|
||||||
|
return (["$BINDIR/%s" % name for name in targetfiles], source)
|
||||||
|
|
||||||
|
def IconCopy(env, source):
|
||||||
|
"""Copy icon to corresponding icon dir. """
|
||||||
|
subdir = getDirname(source)
|
||||||
|
return env.Install("$BINDIR/%s" % subdir, source)
|
||||||
|
|
||||||
|
|
||||||
|
buildIcon = env.Builder( action = Action(invokeRenderer, "rendering Icon: $SOURCE --> $TARGETS")
|
||||||
|
, single_source = True
|
||||||
|
, emitter = createIconTargets
|
||||||
|
)
|
||||||
|
env.Append(BUILDERS = {'IconRender' : buildIcon})
|
||||||
|
env.AddMethod(IconCopy)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,12 @@ class LumieraEnvironment(Environment):
|
||||||
pattern = self.subst(pattern)
|
pattern = self.subst(pattern)
|
||||||
return glob.glob(pattern)
|
return glob.glob(pattern)
|
||||||
|
|
||||||
|
def AddMethod (self, function):
|
||||||
|
""" temporary workaround; newer versions of SCons provide this as a global function """
|
||||||
|
self.__dict__[function.__name__] = function.__get__(self)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class LumieraConfigContext(SConf):
|
class LumieraConfigContext(SConf):
|
||||||
""" Extends the SCons Configure context with some convenience methods
|
""" Extends the SCons Configure context with some convenience methods
|
||||||
|
|
|
||||||
BIN
icons/prerendered/16x16/panel-timeline.png
Normal file
BIN
icons/prerendered/16x16/panel-timeline.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 453 B |
BIN
icons/prerendered/32x32/panel-viewer.png
Normal file
BIN
icons/prerendered/32x32/panel-viewer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
732
icons/svg/tool-arrow.svg
Normal file
732
icons/svg/tool-arrow.svg
Normal file
|
|
@ -0,0 +1,732 @@
|
||||||
|
<?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="150"
|
||||||
|
height="100"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.46"
|
||||||
|
version="1.0"
|
||||||
|
sodipodi:docname="tool-arrow.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient10554">
|
||||||
|
<stop
|
||||||
|
style="stop-color:white;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop10556" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:white;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop10558" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient124">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||||
|
offset="0.0000000"
|
||||||
|
id="stop125" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:silver;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop126" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient8773">
|
||||||
|
<stop
|
||||||
|
style="stop-color:black;stop-opacity:0.3137255"
|
||||||
|
offset="0"
|
||||||
|
id="stop8775" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:black;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop8777" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient14467"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.559542,1.292457,-0.3231142,0.1398855,-29.871557,-250.82036)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient14469"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.5869533,0,0,0.8448423,-29.87156,-250.82036)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient14471"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.7041896,0,0,0.7041896,-18.406429,-249.43017)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient14473"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-137.34366,-352.57235)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient14475"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(2,0,0,0.5,-20.55174,-11.55357)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient14477"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.833516,0,0,1.199737,2.4375,-23.45032)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient14479"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient14481"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.125001,0,0,1.125001,-202.51184,-408.14432)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient14483"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.9377063,0,0,1.3497053,-220.82833,-410.36528)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient14485"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.8939146,2.0648066,-0.5162016,0.2234786,-220.82833,-410.36529)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient14487"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient14489"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-144.34366,-395.57235)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient14491"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient14493"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient14495"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient7954"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient7960"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient7963"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient7966"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient8746"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8748"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83329,-534.39539)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8750"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83329,-534.39538)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8752"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.12487,-531.76312)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8755"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8758"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8761"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8771"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-241.83322,-534.24198)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8773"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1113546,0,0,1.5996493,-241.83322,-534.24197)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8775"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.1248,-531.60971)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8778"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8781"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8784"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient8830"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8832"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8834"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8836"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-144.34366,-395.57235)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient8773"
|
||||||
|
id="radialGradient8838"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.234973,0,18.5877)"
|
||||||
|
cx="-57.850174"
|
||||||
|
cy="24.296782"
|
||||||
|
fx="-58.028885"
|
||||||
|
fy="27.01318"
|
||||||
|
r="8.087534" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8840"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0594534,2.447176,-0.611794,0.2648633,-242.02082,-534.24198)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8842"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1113546,0,0,1.5996493,-242.02082,-534.24197)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8844"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.3333333,0,0,1.3333333,-220.3124,-531.60971)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10554"
|
||||||
|
id="linearGradient8855"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(-144.34366,-395.57235)"
|
||||||
|
x1="240.9062"
|
||||||
|
y1="425.18195"
|
||||||
|
x2="248.28683"
|
||||||
|
y2="437.96558" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="radialGradient8858"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.6670334,0,0,2.399476,-491.25039,-801.09382)"
|
||||||
|
cx="307.7507"
|
||||||
|
cy="361.47824"
|
||||||
|
fx="307.7507"
|
||||||
|
fy="361.47824"
|
||||||
|
r="12.509617" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient124"
|
||||||
|
id="linearGradient8861"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.5891814,3.6707672,-0.9176918,0.3972953,-491.25038,-801.09383)"
|
||||||
|
x1="253.75711"
|
||||||
|
y1="-129.52815"
|
||||||
|
x2="252.00447"
|
||||||
|
y2="-135.47408" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.6568543"
|
||||||
|
inkscape:cx="64.614973"
|
||||||
|
inkscape:cy="46.534319"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer3"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:snap-nodes="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:window-width="1679"
|
||||||
|
inkscape:window-height="977"
|
||||||
|
inkscape:window-x="1281"
|
||||||
|
inkscape:window-y="48">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid13478"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
spacingx="0.5px"
|
||||||
|
spacingy="0.5px"
|
||||||
|
empspacing="2" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="artwork:tool-arrow"
|
||||||
|
style="display:inline">
|
||||||
|
<path
|
||||||
|
transform="matrix(0.989175,0,0,1.31555,167.22388,56.536408)"
|
||||||
|
d="M -49.76264,24.296782 A 8.087534,1.9003495 0 1 1 -65.937708,24.296782 A 8.087534,1.9003495 0 1 1 -49.76264,24.296782 z"
|
||||||
|
sodipodi:ry="1.9003495"
|
||||||
|
sodipodi:rx="8.087534"
|
||||||
|
sodipodi:cy="24.296782"
|
||||||
|
sodipodi:cx="-57.850174"
|
||||||
|
id="path8771"
|
||||||
|
style="opacity:0.7;fill:url(#radialGradient14479);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<g
|
||||||
|
style="display:inline"
|
||||||
|
id="g79"
|
||||||
|
transform="translate(-156.06247,-331.09622)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccc"
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 258.57812,401.60617 L 258.57812,417.04968 L 263.125,414.04968 L 265.90625,420.48718 L 268.1875,419.48718 L 265.46875,413.20593 L 269.56185,412.76843 L 258.57812,401.60617 z"
|
||||||
|
id="rect16" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccccc"
|
||||||
|
id="rect91"
|
||||||
|
d="M 481.01295,-78.954349 L 484.11717,-79.645589 L 484.52504,-78.954349 L 491.01295,-78.954349 L 491.01998,-77.463121 L 484.28372,-77.462474 L 483.9729,-76.666406 L 481.00254,-77.462159 L 481.01295,-78.954349 z"
|
||||||
|
style="fill:url(#linearGradient14475);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.24999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
transform="matrix(0.397295,0.917691,-0.917691,0.397295,0,0)" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient14477);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 268.45834,412.37995 L 264.03447,412.8429 L 259.08804,416.09773 L 259.07888,402.85299 L 268.45834,412.37995 z"
|
||||||
|
id="path15"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient14473);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
d="M 111.38437,80.978458 L 107.31977,81.366268 L 103.50867,84.146458 L 103.49998,72.973838 L 111.38437,80.978458 z"
|
||||||
|
id="path7947"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<g
|
||||||
|
style="display:inline"
|
||||||
|
id="g14435"
|
||||||
|
transform="translate(-22.000014,29.000022)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccc"
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 150.5,48.5 L 150.5,59.5 L 153.5,57.5 L 155.5,61.5 L 157.5,60.5 L 155.5,56.5 L 158.5,56.5 L 150.5,48.5 z"
|
||||||
|
id="path14451" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccccc"
|
||||||
|
id="path14453"
|
||||||
|
d="M 154.008,54.448252 L 155.59103,55.96514 L 155.06871,56.768088 L 156.83361,60.279957 L 155.71008,60.83563 L 154.0092,57.369925 L 153.22923,57.090442 L 153.04079,54.858996 L 154.008,54.448252 z"
|
||||||
|
style="fill:url(#linearGradient14467);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.24999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient14469);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 157.29014,55.997498 L 154.8557,55.999843 L 151.00417,58.559717 L 151.0033,49.735141 L 157.29014,55.997498 z"
|
||||||
|
id="path14455"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path14457"
|
||||||
|
d="M 156.09792,55.503506 L 154.63636,55.542223 L 151.51178,57.639513 L 151.50565,50.893522 L 156.09792,55.503506 z"
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient14471);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer4"
|
||||||
|
inkscape:label="plate#1"
|
||||||
|
style="display:none">
|
||||||
|
<rect
|
||||||
|
y="69"
|
||||||
|
x="97"
|
||||||
|
height="22"
|
||||||
|
width="22"
|
||||||
|
id="rect14465"
|
||||||
|
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
id="rect72"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
x="96"
|
||||||
|
y="68" />
|
||||||
|
<rect
|
||||||
|
y="76"
|
||||||
|
x="124"
|
||||||
|
height="16"
|
||||||
|
width="16"
|
||||||
|
id="rect14403"
|
||||||
|
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||||
|
<rect
|
||||||
|
y="60"
|
||||||
|
x="60"
|
||||||
|
height="32"
|
||||||
|
width="32"
|
||||||
|
id="rect7952"
|
||||||
|
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:0.50196078;fill-rule:evenodd;stroke:none;stroke-width:3.7750001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
id="rect14367"
|
||||||
|
width="48"
|
||||||
|
height="48"
|
||||||
|
x="8"
|
||||||
|
y="44" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
style="display:inline"
|
||||||
|
id="g8787"
|
||||||
|
transform="translate(-31,31)">
|
||||||
|
<path
|
||||||
|
transform="matrix(1.3189,0,0,1.7540667,185.96524,13.868621)"
|
||||||
|
d="M -49.76264,24.296782 A 8.087534,1.9003495 0 1 1 -65.937708,24.296782 A 8.087534,1.9003495 0 1 1 -49.76264,24.296782 z"
|
||||||
|
sodipodi:ry="1.9003495"
|
||||||
|
sodipodi:rx="8.087534"
|
||||||
|
sodipodi:cy="24.296782"
|
||||||
|
sodipodi:cx="-57.850174"
|
||||||
|
id="path7938"
|
||||||
|
style="opacity:0.7;fill:url(#radialGradient8838);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
id="path7942"
|
||||||
|
d="M 99.5,32.5 L 99.5,53.5 L 105.5,49.5 L 109.5,57.5 L 112.5,56 L 108.5,48.5 L 114.5,47.5 L 99.5,32.5 z"
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#linearGradient8840);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
d="M 106.14218,43.762567 L 108.68314,47.878279 L 108.0534,48.743512 L 111.81444,55.783603 L 109.72399,56.828242 L 105.89701,49.207272 L 104.7583,49.248655 L 104.31084,44.540282 L 106.14218,43.762567 z"
|
||||||
|
id="path7944"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path7946"
|
||||||
|
d="M 113.46659,47.173634 L 106.30247,48.357306 L 100.0002,52.575985 L 99.998595,33.713208 L 113.46659,47.173634 z"
|
||||||
|
style="fill:url(#radialGradient8842);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8844);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
d="M 112.42262,46.84474 L 106.10081,47.889164 L 100.50373,51.642958 L 100.52338,34.953163 L 112.42262,46.84474 z"
|
||||||
|
id="path7948"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
transform="matrix(1.9783517,0,0,2.6311023,150.44787,21.072802)"
|
||||||
|
d="M -49.76264,24.296782 A 8.087534,1.9003495 0 1 1 -65.937708,24.296782 A 8.087534,1.9003495 0 1 1 -49.76264,24.296782 z"
|
||||||
|
sodipodi:ry="1.9003495"
|
||||||
|
sodipodi:rx="8.087534"
|
||||||
|
sodipodi:cy="24.296782"
|
||||||
|
sodipodi:cx="-57.850174"
|
||||||
|
id="path14357"
|
||||||
|
style="opacity:0.7;fill:url(#radialGradient8830);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
id="path14359"
|
||||||
|
d="M 21.0313,49.019882 L 21.0313,79.906929 L 30.125067,73.906919 L 35.687572,86.781929 L 40.250076,84.781929 L 34.812571,72.219419 L 42.998778,71.344419 L 21.0313,49.019882 z"
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#linearGradient8861);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.24999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
d="M 30.994554,65.913749 L 35.187554,71.393389 L 34.416573,72.549189 L 39.58759,84.520119 L 35.94075,86.096749 L 30.602775,73.733639 L 29.099899,73.732579 L 28.247541,67.080319 L 30.994554,65.913749 z"
|
||||||
|
id="path14361"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
id="path14363"
|
||||||
|
d="M 41.928178,70.962049 L 32.149196,71.998439 L 21.514496,79.013179 L 21.543527,50.266617 L 41.928178,70.962049 z"
|
||||||
|
style="fill:url(#radialGradient8858);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8855);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
|
||||||
|
d="M 40.852205,70.572499 L 31.965383,71.521739 L 22.007218,78.076499 L 22.08452,51.595929 L 40.852205,70.572499 z"
|
||||||
|
id="path14365"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 29 KiB |
|
|
@ -124,6 +124,8 @@ class "GtkProgressBar" style:highest "lumiera_progressbars"
|
||||||
style "timeline_body"
|
style "timeline_body"
|
||||||
{
|
{
|
||||||
gtkmm__CustomObject_TimelineBody::background = "#7E838B"
|
gtkmm__CustomObject_TimelineBody::background = "#7E838B"
|
||||||
|
gtkmm__CustomObject_TimelineBody::selection = "#2D2D90"
|
||||||
|
gtkmm__CustomObject_TimelineBody::selection_alpha = 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
style "timeline_ruler" = "default_base"
|
style "timeline_ruler" = "default_base"
|
||||||
|
|
@ -137,16 +139,16 @@ style "timeline_ruler" = "default_base"
|
||||||
gtkmm__CustomObject_TimelineRuler::annotation_vert_margin = 0
|
gtkmm__CustomObject_TimelineRuler::annotation_vert_margin = 0
|
||||||
gtkmm__CustomObject_TimelineRuler::min_division_width = 100
|
gtkmm__CustomObject_TimelineRuler::min_division_width = 100
|
||||||
gtkmm__CustomObject_TimelineRuler::mouse_chevron_size = 5
|
gtkmm__CustomObject_TimelineRuler::mouse_chevron_size = 5
|
||||||
|
gtkmm__CustomObject_TimelineRuler::selection_chevron_size = 5
|
||||||
|
gtkmm__CustomObject_TimelineRuler::playback_arrow_colour = "#2D2D90"
|
||||||
|
gtkmm__CustomObject_TimelineRuler::playback_arrow_alpha = 0.5
|
||||||
|
gtkmm__CustomObject_TimelineRuler::playback_arrow_size = 10
|
||||||
|
gtkmm__CustomObject_TimelineRuler::playback_arrow_stem_size = 3
|
||||||
}
|
}
|
||||||
|
|
||||||
style "timeline_header_base" = "default_base"
|
style "timeline_header_base" = "default_base"
|
||||||
{
|
{
|
||||||
# fg[NORMAL] = { 0.77, 0.77, 0.72 }
|
|
||||||
# bg[NORMAL] = { 0.18, 0.19, 0.22 }
|
|
||||||
# bg[ACTIVE] = { 0.20, 0.20, 0.20 }
|
|
||||||
# bg[PRELIGHT] = { 0.20, 0.20, 0.20 }
|
|
||||||
# bg[INSENSITIVE] = { 0.20, 0.20, 0.20 }
|
|
||||||
# bg[SELECTED] = { 0.20, 0.20, 0.20 }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class "gtkmm__CustomObject_TimelineBody" style:highest "timeline_body"
|
class "gtkmm__CustomObject_TimelineBody" style:highest "timeline_body"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue