Browse Source

Rewrite RackRail and rename it to RailWidget. Add rail graphic revision from Pyer.

tags/v2.0.0
Andrew Belt 3 years ago
parent
commit
61d387c63b
11 changed files with 648 additions and 636 deletions
  1. +0
    -1
      include/app/RackWidget.hpp
  2. +4
    -4
      include/app/RailWidget.hpp
  3. +0
    -1
      include/app/common.hpp
  4. +3
    -0
      include/math.hpp
  5. +1
    -1
      include/rack.hpp
  6. +0
    -501
      res/ComponentLibrary/RackBusboard.svg
  7. +0
    -39
      res/ComponentLibrary/RackRails.svg
  8. +566
    -0
      res/ComponentLibrary/Rail.svg
  9. +0
    -67
      src/app/RackRail.cpp
  10. +28
    -22
      src/app/RackWidget.cpp
  11. +46
    -0
      src/app/RailWidget.cpp

+ 0
- 1
include/app/RackWidget.hpp View File

@@ -23,7 +23,6 @@ struct RackWidget : widget::OpaqueWidget {
widget::Widget* moduleContainer;
widget::Widget* cableContainer;
CableWidget* incompleteCable = NULL;
widget::FramebufferWidget* railFb;
/** The last mouse position in the RackWidget */
math::Vec mousePos;
ParamWidget* touchedParam = NULL;


include/app/RackRail.hpp → include/app/RailWidget.hpp View File

@@ -7,12 +7,12 @@ namespace rack {
namespace app {


struct RackRail : widget::TransparentWidget {
std::shared_ptr<Svg> busBoardSvg;
std::shared_ptr<Svg> railsSvg;
struct RailWidget : widget::TransparentWidget {
std::shared_ptr<Svg> svg;

RackRail();
RailWidget();
void draw(const DrawArgs& args) override;
math::Vec getTileSize();
};



+ 0
- 1
include/app/common.hpp View File

@@ -19,7 +19,6 @@ static const float RACK_GRID_WIDTH = 15;
static const float RACK_GRID_HEIGHT = 380;
static const math::Vec RACK_GRID_SIZE = math::Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT);
static const math::Vec RACK_OFFSET = RACK_GRID_SIZE.mult(math::Vec(2000, 100));
static const math::Vec BUS_BOARD_GRID_SIZE = math::Vec(RACK_GRID_WIDTH * 20, RACK_GRID_HEIGHT);


} // namespace app


+ 3
- 0
include/math.hpp View File

@@ -236,6 +236,9 @@ struct Vec {
float square() const {
return x * x + y * y;
}
float area() const {
return x * y;
}
/** Rotates counterclockwise in radians. */
Vec rotate(float angle) {
float sin = std::sin(angle);


+ 1
- 1
include/rack.hpp View File

@@ -57,7 +57,7 @@
#include <app/MultiLightWidget.hpp>
#include <app/ParamWidget.hpp>
#include <app/PortWidget.hpp>
#include <app/RackRail.hpp>
#include <app/RailWidget.hpp>
#include <app/Scene.hpp>
#include <app/RackScrollWidget.hpp>
#include <app/RackWidget.hpp>


+ 0
- 501
res/ComponentLibrary/RackBusboard.svg View File

@@ -1,501 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0"
id="svg57823" inkscape:version="0.92.4 5da689c313, 2019-01-14" sodipodi:docname="RackBusboard.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="288px" height="92.389px"
viewBox="0 0 288 92.389" enable-background="new 0 0 288 92.389" xml:space="preserve">
<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview57825" inkscape:current-layer="svg57823" inkscape:cx="224.97394" inkscape:cy="45.320028" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="882" inkscape:window-maximized="0" inkscape:window-width="1600" inkscape:window-x="0" inkscape:window-y="18" inkscape:zoom="2.2083333" objecttolerance="10" pagecolor="#ffffff" showgrid="false">
</sodipodi:namedview>
<g>
<path id="path57596_2_" inkscape:connector-curvature="0" fill="#212121" d="M0,92.389h288V0H0V92.389z"/>
<path id="path57598_2_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="14" stroke-miterlimit="10" d="
M15.04141,55.35h272.92578"/>
<path id="path57600_2_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M15.04141,24.88906h272.92578"/>
<path id="path57602_2_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M15.04141,30.98281h272.92578"/>
<path id="path57604_2_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M15.04141,37.07656h272.92578"/>
<path id="path57606_2_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M15.04141,43.1664h272.92578"/>
<path id="path57608_2_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M15.04141,67.5375h272.92578"/>
<path id="path57622_2_" inkscape:connector-curvature="0" fill="#212121" d="M97.62344,15.32266h-1.32422V8.34219h1.32422V15.32266
z"/>
<path id="path57624_2_" inkscape:connector-curvature="0" fill="#212121" d="M100.45157,12.49453h-6.98048v-1.32422h6.98048
V12.49453z"/>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="622.4679" y1="-5323.86133" x2="633.19763" y2="-5323.86133" gradientTransform="matrix(0 1 -1 0 -5226.8999 -616)">
<stop offset="0.01118" style="stop-color:#383838"/>
<stop offset="1" style="stop-color:#2B2B2B"/>
</linearGradient>
<circle fill="url(#SVGID_1_)" cx="96.96133" cy="11.83275" r="5.36487"/>
<path fill="#141414" d="M100.10107,11.20986l-1.77729-0.21294c-0.27283-0.03269-0.48788-0.24782-0.52045-0.52066l-0.21205-1.77609
c-0.00925-0.07742-0.07491-0.13571-0.15288-0.13571h-0.95412c-0.07796,0-0.14361,0.05827-0.15287,0.13567l-0.21255,1.7771
c-0.03264,0.27288-0.24779,0.48799-0.52068,0.52057l-1.77652,0.2121c-0.07742,0.00924-0.13571,0.0749-0.13571,0.15287v0.95417
c0,0.07796,0.05827,0.14361,0.13567,0.15287l1.77673,0.21252c0.27283,0.03263,0.48792,0.24771,0.52055,0.52055l0.21252,1.77668
c0.00926,0.0774,0.07491,0.13567,0.15287,0.13567h0.95418c0.07794,0,0.14359-0.05825,0.15286-0.13564l0.21289-1.77691
c0.03268-0.27279,0.24776-0.48781,0.52055-0.52044l1.77628-0.21243c0.07741-0.00926,0.13567-0.07491,0.13567-0.15287v-0.95423
C100.23672,11.28478,100.17847,11.21913,100.10107,11.20986z"/>
</g>
<g>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="691.22729" y1="-5323.86133" x2="701.95703" y2="-5323.86133" gradientTransform="matrix(0 1 -1 0 -5226.8999 -616)">
<stop offset="0.01118" style="stop-color:#383838"/>
<stop offset="1" style="stop-color:#2B2B2B"/>
</linearGradient>
<circle fill="url(#SVGID_2_)" cx="96.96133" cy="80.59219" r="5.36487"/>
<path fill="#141414" d="M100.10107,79.96929l-1.77729-0.21294c-0.27283-0.03268-0.48788-0.24782-0.52045-0.52066l-0.21205-1.77609
c-0.00925-0.07742-0.07491-0.1357-0.15288-0.1357h-0.95412c-0.07796,0-0.14361,0.05827-0.15287,0.13567l-0.21255,1.77711
c-0.03264,0.27288-0.24779,0.48798-0.52068,0.52056l-1.77652,0.2121c-0.07742,0.00924-0.13571,0.0749-0.13571,0.15287v0.95417
c0,0.07796,0.05827,0.14361,0.13567,0.15287l1.77673,0.21252c0.27283,0.03263,0.48792,0.24771,0.52055,0.52055l0.21252,1.77668
c0.00926,0.07741,0.07491,0.13567,0.15287,0.13567h0.95418c0.07794,0,0.14359-0.05825,0.15286-0.13564l0.21289-1.77691
c0.03268-0.27279,0.24776-0.48781,0.52055-0.52044l1.77628-0.21243c0.07741-0.00926,0.13567-0.07491,0.13567-0.15287v-0.95423
C100.23672,80.04421,100.17847,79.97856,100.10107,79.96929z"/>
</g>
<g>
<g>
<path id="path57670_11_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M78.23672,79.67031H58.08828V12.75625h20.14844
V79.67031z"/>
<path id="path57672_21_" inkscape:connector-curvature="0" fill="#212121" d="M75.95937,76.9125H60.36172V15.51016h15.59766
V76.9125z"/>
<path id="path57672_19_" inkscape:connector-curvature="0" fill="#212121" d="M78.23672,52.43867h-2.27734V39.98399h2.27734
V52.43867z"/>
<g>
<path id="path57674_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,25.65078H64.3539v-1.52344h1.52344
V25.65078z"/>
<path id="path57676_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57678_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,31.74453H64.3539v-1.52344h1.52344
V31.74453z"/>
<path id="path57680_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57682_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,37.83437H64.3539v-1.51953h1.52344
V37.83437z"/>
<path id="path57684_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57686_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,43.92812H64.3539v-1.52344h1.52344
V43.92812z"/>
<path id="path57688_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57690_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,50.02187H64.3539v-1.52344h1.52344
V50.02187z"/>
<path id="path57692_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57694_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,56.11172H64.3539v-1.52344h1.52344
V56.11172z"/>
<path id="path57696_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57698_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,62.20547H64.3539v-1.52344h1.52344
V62.20547z"/>
<path id="path57700_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57702_21_" inkscape:connector-curvature="0" fill="#707070" d="M65.87734,68.29531H64.3539v-1.52344h1.52344
V68.29531z"/>
<path id="path57704_21_" inkscape:connector-curvature="0" fill="#707070" d="M71.96719,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
</g>
<g>
<path id="path57674_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,27.17422H64.3539v-1.52344h1.52344
V27.17422z"/>
<path id="path57676_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57678_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,33.26797H64.3539v-1.52344h1.52344
V33.26797z"/>
<path id="path57680_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57682_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,39.35781H64.3539v-1.51953h1.52344
V39.35781z"/>
<path id="path57684_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57686_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,45.45156H64.3539v-1.52344h1.52344
V45.45156z"/>
<path id="path57688_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57690_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,51.54531H64.3539v-1.52344h1.52344
V51.54531z"/>
<path id="path57692_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57694_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,57.63515H64.3539v-1.52344h1.52344
V57.63515z"/>
<path id="path57696_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57698_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,63.7289H64.3539v-1.52344h1.52344
V63.7289z"/>
<path id="path57700_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57702_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M65.87734,69.81875H64.3539v-1.52344h1.52344
V69.81875z"/>
<path id="path57704_20_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M71.96719,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
</g>
<path id="path57706_11_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M58.56875,85.42812h19.18359"/>
<polygon fill="#1A1A1A" points="77.13554,78.25273 59.18555,78.25273 60.36172,76.9125 75.95937,76.9125 "/>
<polygon fill="#0A0A0A" points="77.13554,14.16992 59.18555,14.16992 60.36172,15.51016 75.95937,15.51016 "/>
<rect x="58.08828" y="79.67031" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="58.08828" y="80.04805" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="60.36172" y="15.51016" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="75.95937" y="39.98399" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g>
<g>
<path id="path57670_12_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M20.63711,79.67031H0.48867V12.75625h20.14844
V79.67031z"/>
<path id="path57672_23_" inkscape:connector-curvature="0" fill="#212121" d="M18.35977,76.9125H2.76211V15.51016h15.59766
V76.9125z"/>
<path id="path57672_22_" inkscape:connector-curvature="0" fill="#212121" d="M20.63711,52.43867h-2.27734V39.98399h2.27734
V52.43867z"/>
<g>
<path id="path57674_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,25.65078H6.7543v-1.52344h1.52344
V25.65078z"/>
<path id="path57676_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57678_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,31.74453H6.7543v-1.52344h1.52344
V31.74453z"/>
<path id="path57680_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57682_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,37.83437H6.7543v-1.51953h1.52344
V37.83437z"/>
<path id="path57684_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57686_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,43.92812H6.7543v-1.52344h1.52344
V43.92812z"/>
<path id="path57688_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57690_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,50.02187H6.7543v-1.52344h1.52344
V50.02187z"/>
<path id="path57692_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57694_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,56.11172H6.7543v-1.52344h1.52344
V56.11172z"/>
<path id="path57696_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57698_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,62.20547H6.7543v-1.52344h1.52344
V62.20547z"/>
<path id="path57700_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57702_23_" inkscape:connector-curvature="0" fill="#707070" d="M8.27773,68.29531H6.7543v-1.52344h1.52344
V68.29531z"/>
<path id="path57704_23_" inkscape:connector-curvature="0" fill="#707070" d="M14.36758,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
</g>
<g>
<path id="path57674_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,27.17422H6.7543v-1.52344h1.52344
V27.17422z"/>
<path id="path57676_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57678_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,33.26797H6.7543v-1.52344h1.52344
V33.26797z"/>
<path id="path57680_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57682_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,39.35781H6.7543v-1.51953h1.52344
V39.35781z"/>
<path id="path57684_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57686_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,45.45156H6.7543v-1.52344h1.52344
V45.45156z"/>
<path id="path57688_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57690_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,51.54531H6.7543v-1.52344h1.52344
V51.54531z"/>
<path id="path57692_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57694_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,57.63515H6.7543v-1.52344h1.52344
V57.63515z"/>
<path id="path57696_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57698_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,63.7289H6.7543v-1.52344h1.52344V63.7289
z"/>
<path id="path57700_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57702_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M8.27773,69.81875H6.7543v-1.52344h1.52344
V69.81875z"/>
<path id="path57704_22_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M14.36758,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
</g>
<path id="path57706_12_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M0.96914,85.42812h19.18359"/>
<polygon fill="#1A1A1A" points="19.53594,78.25273 1.58594,78.25273 2.76211,76.9125 18.35977,76.9125 "/>
<polygon fill="#0A0A0A" points="19.53594,14.16992 1.58594,14.16992 2.76211,15.51016 18.35977,15.51016 "/>
<rect x="0.48867" y="79.67031" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="0.48867" y="80.04805" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="2.76211" y="15.51016" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="18.35977" y="39.98399" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g>
<g>
<path id="path57670_10_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M135.83438,79.67031h-20.14845V12.75625h20.14845
V79.67031z"/>
<path id="path57672_17_" inkscape:connector-curvature="0" fill="#212121" d="M133.55704,76.9125h-15.59766V15.51016h15.59766
V76.9125z"/>
<path id="path57672_16_" inkscape:connector-curvature="0" fill="#212121" d="M135.83438,52.43867h-2.27734V39.98399h2.27734
V52.43867z"/>
<g>
<path id="path57674_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57676_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57678_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57680_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57682_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57684_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57686_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57688_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57690_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57692_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57694_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57696_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57698_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57700_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57702_19_" inkscape:connector-curvature="0" fill="#707070" d="M123.475,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
<path id="path57704_19_" inkscape:connector-curvature="0" fill="#707070" d="M129.56485,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
</g>
<g>
<path id="path57674_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57676_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57678_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57680_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57682_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57684_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57686_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57688_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57690_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57692_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57694_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57696_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57698_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57700_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57702_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M123.475,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
<path id="path57704_18_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M129.56485,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
</g>
<path id="path57706_10_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M116.1664,85.42812h19.1836"/>
<polygon fill="#1A1A1A" points="134.7332,78.25273 116.7832,78.25273 117.95937,76.9125 133.55704,76.9125 "/>
<polygon fill="#0A0A0A" points="134.7332,14.16992 116.7832,14.16992 117.95937,15.51016 133.55704,15.51016 "/>
<rect x="115.68594" y="79.67031" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="115.68594" y="80.04805" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="117.95937" y="15.51016" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="133.55704" y="39.98399" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g id="XMLID_9_">
<g>
<path id="path57670_8_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M193.43204,79.67031H173.2836V12.75625h20.14844
V79.67031z"/>
<path id="path57672_15_" inkscape:connector-curvature="0" fill="#212121" d="M191.15469,76.9125h-15.59766V15.51016h15.59766
V76.9125z"/>
<path id="path57672_14_" inkscape:connector-curvature="0" fill="#212121" d="M193.43204,52.43867h-2.27734V39.98399h2.27734
V52.43867z"/>
<g>
<path id="path57674_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57676_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57678_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57680_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57682_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57684_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57686_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57688_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57690_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57692_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57694_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57696_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57698_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57700_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57702_15_" inkscape:connector-curvature="0" fill="#707070" d="M181.07266,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
<path id="path57704_15_" inkscape:connector-curvature="0" fill="#707070" d="M187.16251,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
</g>
<g>
<path id="path57674_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57676_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57678_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57680_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57682_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57684_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57686_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57688_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57690_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57692_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57694_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57696_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57698_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57700_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57702_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M181.07266,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
<path id="path57704_14_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M187.16251,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
</g>
<path id="path57706_8_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M173.76407,85.42812h19.18359"/>
<polygon fill="#1A1A1A" points="192.33086,78.25273 174.38086,78.25273 175.55704,76.9125 191.15469,76.9125 "/>
<polygon fill="#0A0A0A" points="192.33086,14.16992 174.38086,14.16992 175.55704,15.51016 191.15469,15.51016 "/>
<rect x="173.2836" y="79.67031" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="173.2836" y="80.04805" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="175.55704" y="15.51016" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="191.15469" y="39.98399" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g id="XMLID_8_">
<g>
<path id="path57670_7_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M251.03165,79.67031h-20.14844V12.75625h20.14844
V79.67031z"/>
<path id="path57672_13_" inkscape:connector-curvature="0" fill="#212121" d="M248.7543,76.9125h-15.59766V15.51016h15.59766
V76.9125z"/>
<path id="path57672_12_" inkscape:connector-curvature="0" fill="#212121" d="M251.03165,52.43867h-2.27734V39.98399h2.27734
V52.43867z"/>
<g>
<path id="path57674_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57676_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,25.65078h-1.52344v-1.52344h1.52344
V25.65078z"/>
<path id="path57678_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57680_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,31.74453h-1.52344v-1.52344h1.52344
V31.74453z"/>
<path id="path57682_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57684_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,37.83437h-1.52344v-1.51953h1.52344
V37.83437z"/>
<path id="path57686_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57688_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,43.92812h-1.52344v-1.52344h1.52344
V43.92812z"/>
<path id="path57690_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57692_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,50.02187h-1.52344v-1.52344h1.52344
V50.02187z"/>
<path id="path57694_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57696_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,56.11172h-1.52344v-1.52344h1.52344
V56.11172z"/>
<path id="path57698_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57700_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,62.20547h-1.52344v-1.52344h1.52344
V62.20547z"/>
<path id="path57702_13_" inkscape:connector-curvature="0" fill="#707070" d="M238.67227,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
<path id="path57704_13_" inkscape:connector-curvature="0" fill="#707070" d="M244.76212,68.29531h-1.52344v-1.52344h1.52344
V68.29531z"/>
</g>
<g>
<path id="path57674_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57676_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,27.17422h-1.52344v-1.52344h1.52344
V27.17422z"/>
<path id="path57678_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57680_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,33.26797h-1.52344v-1.52344h1.52344
V33.26797z"/>
<path id="path57682_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57684_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,39.35781h-1.52344v-1.51953h1.52344
V39.35781z"/>
<path id="path57686_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57688_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,45.45156h-1.52344v-1.52344h1.52344
V45.45156z"/>
<path id="path57690_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57692_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,51.54531h-1.52344v-1.52344h1.52344
V51.54531z"/>
<path id="path57694_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57696_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,57.63515h-1.52344v-1.52344h1.52344
V57.63515z"/>
<path id="path57698_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57700_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,63.7289h-1.52344v-1.52344h1.52344
V63.7289z"/>
<path id="path57702_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M238.67227,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
<path id="path57704_12_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M244.76212,69.81875h-1.52344v-1.52344h1.52344
V69.81875z"/>
</g>
<path id="path57706_7_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M231.36368,85.42812h19.18359"/>
<polygon fill="#1A1A1A" points="249.93047,78.25273 231.98047,78.25273 233.15665,76.9125 248.7543,76.9125 "/>
<polygon fill="#0A0A0A" points="249.93047,14.16992 231.98047,14.16992 233.15665,15.51016 248.7543,15.51016 "/>
<rect x="230.88321" y="79.67031" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="230.88321" y="80.04805" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="233.15665" y="15.51016" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="248.7543" y="39.98399" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<rect fill="#383838" width="288" height="0.92118"/>
<rect y="91.46783" fill="#0F0F0F" width="288" height="0.92118"/>
</g>
</svg>

+ 0
- 39
res/ComponentLibrary/RackRails.svg View File

@@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0"
id="svg57823" inkscape:version="0.92.4 5da689c313, 2019-01-14" sodipodi:docname="RackBusboard.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="15px" height="380px"
viewBox="0 0 15 380" enable-background="new 0 0 15 380" xml:space="preserve">
<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview57825" inkscape:current-layer="svg57823" inkscape:cx="224.97394" inkscape:cy="45.320028" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="882" inkscape:window-maximized="0" inkscape:window-width="1600" inkscape:window-x="0" inkscape:window-y="18" inkscape:zoom="2.2083333" objecttolerance="10" pagecolor="#ffffff" showgrid="false">
</sodipodi:namedview>
<g>
<defs>
<rect id="SVGID_1_" width="15" height="380"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<g id="XMLID_7_" clip-path="url(#SVGID_2_)">
<g>
<rect fill="#DEDEDE" width="15" height="14.93071"/>
<rect y="1.65063" fill="#9D9FA2" width="15" height="13.28008"/>
<rect y="1.20045" fill="#C9C9C9" width="15" height="12.52979"/>
<rect y="2.85109" fill="#7E8082" width="15" height="9.22853"/>
<rect y="4.12659" fill="#DEDEDE" width="15" height="7.95303"/>
<rect y="3.82646" fill="#ADADAD" width="15" height="7.27779"/>
<rect y="3.82646" opacity="0.15" enable-background="new " width="15" height="1.87572"/>
</g>
<g>
<rect y="365.06927" fill="#DEDEDE" width="15" height="14.93071"/>
<rect y="366.71991" fill="#9D9FA2" width="15" height="13.28008"/>
<rect y="366.26978" fill="#C9C9C9" width="15" height="12.52979"/>
<rect y="367.92038" fill="#7E8082" width="15" height="9.22853"/>
<rect y="369.19586" fill="#DEDEDE" width="15" height="7.95303"/>
<rect y="368.89575" fill="#ADADAD" width="15" height="7.27779"/>
<rect y="368.89575" opacity="0.15" enable-background="new " width="15" height="1.87572"/>
</g>
<circle fill="#303030" cx="7.5" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="7.5" cy="372.63129" r="3.3375"/>
</g>
</g>
</svg>

+ 566
- 0
res/ComponentLibrary/Rail.svg View File

@@ -0,0 +1,566 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0"
id="svg57823" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="304px" height="380px"
viewBox="0 0 304 380" enable-background="new 0 0 304 380" xml:space="preserve">
<sodipodi:namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview57825" inkscape:current-layer="svg57823" inkscape:cx="224.97394" inkscape:cy="45.320028" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-height="882" inkscape:window-maximized="0" inkscape:window-width="1600" inkscape:window-x="0" inkscape:window-y="18" inkscape:zoom="2.2083333" objecttolerance="10" pagecolor="#ffffff" showgrid="false">
</sodipodi:namedview>
<rect x="0.00004" fill="#303030" width="304" height="380"/>
<g>
<g>
<rect x="0.00004" fill="#DEDEDE" width="304" height="14.93071"/>
<rect x="0.00004" y="1.65063" fill="#9D9FA2" width="304" height="13.28007"/>
<rect x="0.00004" y="1.20046" fill="#C9C9C9" width="304" height="12.52979"/>
<rect x="0.00004" y="2.85109" fill="#7E8082" width="304" height="9.22853"/>
<rect x="0.00004" y="4.12658" fill="#DEDEDE" width="304" height="7.95304"/>
<rect x="0.00004" y="3.82646" fill="#ADADAD" width="304" height="7.27778"/>
<rect x="0.00004" y="3.82646" opacity="0.15" width="304" height="1.87572"/>
</g>
<g>
<rect x="0.00004" y="365.06931" fill="#DEDEDE" width="304" height="14.93071"/>
<rect x="0.00004" y="366.71994" fill="#9D9FA2" width="304" height="13.28007"/>
<rect x="0.00004" y="366.26974" fill="#C9C9C9" width="304" height="12.52979"/>
<rect x="0.00004" y="367.92038" fill="#7E8082" width="304" height="9.22853"/>
<rect x="0.00004" y="369.19586" fill="#DEDEDE" width="304" height="7.95304"/>
<rect x="0.00004" y="368.89575" fill="#ADADAD" width="304" height="7.27778"/>
<rect x="0.00004" y="368.89575" opacity="0.15" width="304" height="1.87572"/>
</g>
<circle fill="#303030" cx="7.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="7.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="22.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="22.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="37.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="37.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="52.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="52.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="67.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="67.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="82.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="82.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="97.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="97.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="112.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="112.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="127.50004" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="127.50004" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="142.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="142.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="157.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="157.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="172.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="172.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="187.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="187.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="202.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="202.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="217.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="217.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="232.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="232.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="247.50005" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="247.50005" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="262.50003" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="262.50003" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="277.50003" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="277.50003" cy="372.63129" r="3.3375"/>
<circle fill="#303030" cx="292.50003" cy="7.70148" r="3.3375"/>
<circle fill="#303030" cx="292.50003" cy="372.63129" r="3.3375"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-1742.56592" y1="-7289.4585" x2="-1742.56592" y2="-7306.55859" gradientTransform="matrix(-1 0 0 -1 -1590.56592 -7274.52783)">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="0.96927" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<polygon opacity="0.28" fill="url(#SVGID_1_)" points="0.00004,14.93071 304.00003,14.93071 304.00003,32.0307 0.00004,32.0307 "/>
<g>
<path id="path57596_3_" inkscape:connector-curvature="0" fill="#212121" d="M0,234.99995h304.00003v-89.99998H0V234.99995z"/>
<g>
<path id="path57598_3_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="14" stroke-miterlimit="10" d="
M0,199.15546h303.96542"/>
<path id="path57600_3_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M0,168.69452h303.96542"/>
<path id="path57602_3_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M0,174.78827h303.96542"/>
<path id="path57604_3_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M0,180.88202h303.96542"/>
<path id="path57606_3_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M0,186.97186h303.96542"/>
<path id="path57608_3_" inkscape:connector-curvature="0" fill="none" stroke="#2E2E2E" stroke-width="2.538" stroke-miterlimit="10" d="
M0,211.34296h303.96542"/>
</g>
<g>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="657.66235" y1="6208.58496" x2="668.39209" y2="6208.58496" gradientTransform="matrix(0 1 1 0 -6103.51074 -507.38901)">
<stop offset="0.01118" style="stop-color:#383838"/>
<stop offset="1" style="stop-color:#2B2B2B"/>
</linearGradient>
<circle fill="url(#SVGID_2_)" cx="105.07423" cy="155.63821" r="5.36487"/>
<path fill="#141414" d="M108.21397,155.01532l-1.77729-0.21294c-0.27283-0.0327-0.48788-0.24782-0.52045-0.52066l-0.21205-1.77609
c-0.00925-0.07742-0.07491-0.13571-0.15288-0.13571h-0.95412c-0.07796,0-0.14361,0.05827-0.15287,0.13567l-0.21255,1.7771
c-0.03264,0.27289-0.24779,0.48799-0.52068,0.52057l-1.77652,0.21211c-0.07742,0.00923-0.13571,0.07489-0.13571,0.15286v0.95418
c0,0.07796,0.05827,0.1436,0.13567,0.15286l1.77673,0.21252c0.27283,0.03262,0.48792,0.24771,0.52055,0.52055l0.21252,1.77667
c0.00926,0.07741,0.07491,0.13567,0.15287,0.13567h0.95418c0.07794,0,0.14359-0.05824,0.15286-0.13564l0.21289-1.77692
c0.03268-0.27278,0.24776-0.48781,0.52055-0.52043l1.77628-0.21243c0.07741-0.00926,0.13567-0.07491,0.13567-0.15286v-0.95424
C108.34962,155.09024,108.29137,155.0246,108.21397,155.01532z"/>
</g>
<g>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="726.42181" y1="6208.58496" x2="737.15155" y2="6208.58496" gradientTransform="matrix(0 1 1 0 -6103.51074 -507.38901)">
<stop offset="0.01118" style="stop-color:#383838"/>
<stop offset="1" style="stop-color:#2B2B2B"/>
</linearGradient>
<circle fill="url(#SVGID_3_)" cx="105.07426" cy="224.39766" r="5.36487"/>
<path fill="#141414" d="M108.214,223.77475l-1.77729-0.21294c-0.27283-0.03267-0.48788-0.24782-0.52045-0.52066l-0.21205-1.77609
c-0.00925-0.07742-0.07491-0.1357-0.15288-0.1357h-0.95412c-0.07796,0-0.14361,0.05827-0.15287,0.13568l-0.21255,1.7771
c-0.03264,0.27289-0.24779,0.48799-0.52068,0.52057l-1.77652,0.2121c-0.07742,0.00923-0.13571,0.07489-0.13571,0.15286v0.95418
c0,0.07796,0.05827,0.1436,0.13567,0.15286l1.77673,0.21252c0.27283,0.03262,0.48792,0.24771,0.52055,0.52055l0.21252,1.77667
c0.00926,0.07741,0.07491,0.13568,0.15287,0.13568h0.95418c0.07794,0,0.14359-0.05826,0.15286-0.13565l0.21289-1.7769
c0.03268-0.2728,0.24776-0.48781,0.52055-0.52045l1.77628-0.21243c0.07741-0.00926,0.13567-0.07491,0.13567-0.15286v-0.95424
C108.34966,223.84967,108.2914,223.78403,108.214,223.77475z"/>
</g>
<g>
<g>
<path id="path57670_17_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M85.14845,223.47577H65.00001v-66.91406h20.14844
V223.47577z"/>
<path id="path57672_33_" inkscape:connector-curvature="0" fill="#212121" d="M82.8711,220.71796H67.27345v-61.40233h15.59766
C82.87111,159.31563,82.87111,220.71796,82.8711,220.71796z"/>
<path id="path57672_32_" inkscape:connector-curvature="0" fill="#212121" d="M85.14845,196.24413h-2.27734v-12.45468h2.27734
C85.14845,183.78944,85.14845,196.24413,85.14845,196.24413z"/>
<g>
<path id="path57674_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,169.45624h-1.52345v-1.52344h1.52344
C72.78906,167.9328,72.78906,169.45624,72.78907,169.45624z"/>
<path id="path57676_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57678_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,175.54999h-1.52345v-1.52344h1.52344
C72.78906,174.02655,72.78906,175.54999,72.78907,175.54999z"/>
<path id="path57680_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57682_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,181.63983h-1.52345v-1.51953h1.52344
C72.78906,180.1203,72.78906,181.63983,72.78907,181.63983z"/>
<path id="path57684_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57686_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,187.73358h-1.52345v-1.52344h1.52344
C72.78906,186.21014,72.78906,187.73358,72.78907,187.73358z"/>
<path id="path57688_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57690_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,193.82733h-1.52345v-1.52344h1.52344
C72.78906,192.30389,72.78906,193.82733,72.78907,193.82733z"/>
<path id="path57692_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57694_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,199.91718h-1.52345v-1.52344h1.52344
C72.78906,198.39374,72.78906,199.91718,72.78907,199.91718z"/>
<path id="path57696_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57698_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,206.01093h-1.52345v-1.52344h1.52344
C72.78906,204.48749,72.78906,206.01093,72.78907,206.01093z"/>
<path id="path57700_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57702_33_" inkscape:connector-curvature="0" fill="#707070" d="M72.78907,212.10077h-1.52345v-1.52344h1.52344
C72.78906,210.57733,72.78906,212.10077,72.78907,212.10077z"/>
<path id="path57704_33_" inkscape:connector-curvature="0" fill="#707070" d="M78.87892,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
</g>
<g>
<path id="path57674_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,170.97968h-1.52345v-1.52344h1.52344
C72.78906,169.45624,72.78906,170.97968,72.78907,170.97968z"/>
<path id="path57676_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57678_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,177.07343h-1.52345v-1.52344h1.52344
C72.78906,175.54999,72.78906,177.07343,72.78907,177.07343z"/>
<path id="path57680_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57682_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,183.16327h-1.52345v-1.51953h1.52344
C72.78906,181.64374,72.78906,183.16327,72.78907,183.16327z"/>
<path id="path57684_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57686_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,189.25702h-1.52345v-1.52344h1.52344
C72.78906,187.73358,72.78906,189.25702,72.78907,189.25702z"/>
<path id="path57688_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57690_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,195.35077h-1.52345v-1.52344h1.52344
C72.78906,193.82733,72.78906,195.35077,72.78907,195.35077z"/>
<path id="path57692_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57694_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,201.44061h-1.52345v-1.52344h1.52344
C72.78906,199.91718,72.78906,201.44061,72.78907,201.44061z"/>
<path id="path57696_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57698_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,207.53436h-1.52345v-1.52344h1.52344
C72.78906,206.01093,72.78906,207.53436,72.78907,207.53436z"/>
<path id="path57700_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57702_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M72.78907,213.62421h-1.52345v-1.52344h1.52344
C72.78906,212.10077,72.78906,213.62421,72.78907,213.62421z"/>
<path id="path57704_32_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M78.87892,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
</g>
<path id="path57706_17_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M65.48048,229.23358h19.18359"/>
<polygon fill="#1A1A1A" points="84.04726,222.0582 66.09728,222.0582 67.27345,220.71796 82.8711,220.71796 "/>
<polygon fill="#0A0A0A" points="84.04726,157.97539 66.09728,157.97539 67.27345,159.31563 82.8711,159.31563 "/>
<rect x="65.00001" y="223.47577" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="65.00001" y="223.85352" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="67.27345" y="159.31563" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="82.8711" y="183.78944" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g>
<g>
<path id="path57670_16_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M25.14848,223.47577H5.00004v-66.91406h20.14844
V223.47577z"/>
<path id="path57672_31_" inkscape:connector-curvature="0" fill="#212121" d="M22.87114,220.71796H7.27348v-61.40233h15.59766
V220.71796z"/>
<path id="path57672_30_" inkscape:connector-curvature="0" fill="#212121" d="M25.14848,196.24413h-2.27734v-12.45468h2.27734
V196.24413z"/>
<g>
<path id="path57674_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,169.45624h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57676_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57678_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,175.54999h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57680_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57682_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,181.63983h-1.52343v-1.51953h1.52344
v1.51953H12.7891z"/>
<path id="path57684_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57686_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,187.73358h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57688_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57690_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,193.82733h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57692_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57694_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,199.91718h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57696_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57698_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,206.01093h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57700_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57702_31_" inkscape:connector-curvature="0" fill="#707070" d="M12.7891,212.10077h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57704_31_" inkscape:connector-curvature="0" fill="#707070" d="M18.87895,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
</g>
<g>
<path id="path57674_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,170.97968h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57676_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57678_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,177.07343h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57680_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57682_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,183.16327h-1.52343v-1.51953h1.52344
v1.51953H12.7891z"/>
<path id="path57684_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57686_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,189.25702h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57688_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57690_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,195.35077h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57692_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57694_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,201.44061h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57696_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57698_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,207.53436h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57700_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57702_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M12.7891,213.62421h-1.52343v-1.52344h1.52344
v1.52344H12.7891z"/>
<path id="path57704_30_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M18.87895,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
</g>
<path id="path57706_16_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M5.48051,229.23358H24.6641"/>
<polygon fill="#1A1A1A" points="24.04731,222.0582 6.09731,222.0582 7.27348,220.71796 22.87114,220.71796 "/>
<polygon fill="#0A0A0A" points="24.04731,157.97539 6.09731,157.97539 7.27348,159.31563 22.87114,159.31563 "/>
<rect x="5.00004" y="223.47577" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="5.00004" y="223.85352" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="7.27348" y="159.31563" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="22.87114" y="183.78944" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g>
<g>
<path id="path57670_15_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M145.14847,223.47577h-20.14845v-66.91406h20.14845
V223.47577z"/>
<path id="path57672_29_" inkscape:connector-curvature="0" fill="#212121" d="M142.87112,220.71796h-15.59766v-61.40233h15.59766
V220.71796z"/>
<path id="path57672_28_" inkscape:connector-curvature="0" fill="#212121" d="M145.14847,196.24413h-2.27734v-12.45468h2.27734
V196.24413z"/>
<g>
<path id="path57674_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57676_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57678_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57680_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57682_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57684_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57686_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57688_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57690_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57692_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57694_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57696_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57698_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57700_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57702_29_" inkscape:connector-curvature="0" fill="#707070" d="M132.78909,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
<path id="path57704_29_" inkscape:connector-curvature="0" fill="#707070" d="M138.87894,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
</g>
<g>
<path id="path57674_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57676_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57678_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57680_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57682_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57684_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57686_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57688_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57690_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57692_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57694_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57696_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57698_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57700_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57702_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M132.78909,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
<path id="path57704_28_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M138.87894,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
</g>
<path id="path57706_15_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M125.48048,229.23358h19.18359"/>
<polygon fill="#1A1A1A" points="144.04729,222.0582 126.09729,222.0582 127.27346,220.71796 142.87112,220.71796 "/>
<polygon fill="#0A0A0A" points="144.04729,157.97539 126.09729,157.97539 127.27346,159.31563 142.87112,159.31563 "/>
<rect x="125.00003" y="223.47577" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="125.00003" y="223.85352" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="127.27346" y="159.31563" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="142.87112" y="183.78944" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g id="XMLID_11_">
<g>
<path id="path57670_14_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M205.14847,223.47577h-20.14844v-66.91406h20.14844
V223.47577z"/>
<path id="path57672_27_" inkscape:connector-curvature="0" fill="#212121" d="M202.87112,220.71796h-15.59766v-61.40233h15.59766
V220.71796z"/>
<path id="path57672_26_" inkscape:connector-curvature="0" fill="#212121" d="M205.14847,196.24413h-2.27734v-12.45468h2.27734
V196.24413z"/>
<g>
<path id="path57674_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57676_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57678_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57680_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57682_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57684_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57686_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57688_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57690_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57692_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57694_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57696_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57698_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57700_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57702_27_" inkscape:connector-curvature="0" fill="#707070" d="M192.78909,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
<path id="path57704_27_" inkscape:connector-curvature="0" fill="#707070" d="M198.87894,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
</g>
<g>
<path id="path57674_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57676_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57678_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57680_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57682_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57684_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57686_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57688_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57690_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57692_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57694_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57696_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57698_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57700_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57702_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M192.78909,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
<path id="path57704_26_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M198.87894,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
</g>
<path id="path57706_14_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M185.4805,229.23358h19.18359"/>
<polygon fill="#1A1A1A" points="204.04729,222.0582 186.09729,222.0582 187.27347,220.71796 202.87112,220.71796 "/>
<polygon fill="#0A0A0A" points="204.04729,157.97539 186.09729,157.97539 187.27347,159.31563 202.87112,159.31563 "/>
<rect x="185.00003" y="223.47577" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="185.00003" y="223.85352" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="187.27347" y="159.31563" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="202.87112" y="183.78944" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<g id="XMLID_10_">
<g>
<path id="path57670_13_" inkscape:connector-curvature="0" fill="#0F0F0F" d="M265.14847,223.47577h-20.14844v-66.91406h20.14844
V223.47577z"/>
<path id="path57672_25_" inkscape:connector-curvature="0" fill="#212121" d="M262.87112,220.71796h-15.59766v-61.40233h15.59766
V220.71796z"/>
<path id="path57672_24_" inkscape:connector-curvature="0" fill="#212121" d="M265.14847,196.24413h-2.27734v-12.45468h2.27734
V196.24413z"/>
<g>
<path id="path57674_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57676_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,169.45624h-1.52344v-1.52344h1.52344
V169.45624z"/>
<path id="path57678_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57680_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,175.54999h-1.52344v-1.52344h1.52344
V175.54999z"/>
<path id="path57682_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57684_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,181.63983h-1.52344v-1.51953h1.52344
V181.63983z"/>
<path id="path57686_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57688_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,187.73358h-1.52344v-1.52344h1.52344
V187.73358z"/>
<path id="path57690_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57692_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,193.82733h-1.52344v-1.52344h1.52344
V193.82733z"/>
<path id="path57694_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57696_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,199.91718h-1.52344v-1.52344h1.52344
V199.91718z"/>
<path id="path57698_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57700_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,206.01093h-1.52344v-1.52344h1.52344
V206.01093z"/>
<path id="path57702_25_" inkscape:connector-curvature="0" fill="#707070" d="M252.78909,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
<path id="path57704_25_" inkscape:connector-curvature="0" fill="#707070" d="M258.87894,212.10077h-1.52344v-1.52344h1.52344
V212.10077z"/>
</g>
<g>
<path id="path57674_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57676_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,170.97968h-1.52344v-1.52344h1.52344
V170.97968z"/>
<path id="path57678_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57680_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,177.07343h-1.52344v-1.52344h1.52344
V177.07343z"/>
<path id="path57682_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57684_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,183.16327h-1.52344v-1.51953h1.52344
V183.16327z"/>
<path id="path57686_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57688_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,189.25702h-1.52344v-1.52344h1.52344
V189.25702z"/>
<path id="path57690_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57692_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,195.35077h-1.52344v-1.52344h1.52344
V195.35077z"/>
<path id="path57694_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57696_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,201.44061h-1.52344v-1.52344h1.52344
V201.44061z"/>
<path id="path57698_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57700_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,207.53436h-1.52344v-1.52344h1.52344
V207.53436z"/>
<path id="path57702_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M252.78909,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
<path id="path57704_24_" inkscape:connector-curvature="0" fill="#1A1A1A" d="M258.87894,213.62421h-1.52344v-1.52344h1.52344
V213.62421z"/>
</g>
<path id="path57706_13_" inkscape:connector-curvature="0" fill="none" stroke="#303030" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
M245.4805,229.23358h19.18359"/>
<polygon fill="#1A1A1A" points="264.0473,222.0582 246.09729,222.0582 247.27347,220.71796 262.87112,220.71796 "/>
<polygon fill="#0A0A0A" points="264.0473,157.97539 246.09729,157.97539 247.27347,159.31563 262.87112,159.31563 "/>
<rect x="245.00003" y="223.47577" fill="#0A0A0A" width="20.14844" height="0.37773"/>
<rect x="245.00003" y="223.85352" fill="#1A1A1A" width="20.14844" height="3.00469"/>
<rect x="247.27347" y="159.31563" fill="#1A1A1A" width="15.59766" height="2.14258"/>
<rect x="262.87112" y="183.78944" fill="#1A1A1A" width="2.26953" height="1.81875"/>
</g>
</g>
<rect y="144.99997" fill="#383838" width="304.00003" height="0.89736"/>
<rect y="234.1026" fill="#0F0F0F" width="304.00003" height="0.89736"/>
<rect x="85.14845" y="164.43146" fill="#2E2E2E" width="39.85156" height="2.85"/>
</g>
</svg>

+ 0
- 67
src/app/RackRail.cpp View File

@@ -1,67 +0,0 @@
#include <app/RackRail.hpp>
#include <context.hpp>
#include <asset.hpp>
#include <svg.hpp>


namespace rack {
namespace app {


RackRail::RackRail() {
busBoardSvg = Svg::load(asset::system("res/ComponentLibrary/RackBusboard.svg"));
railsSvg = Svg::load(asset::system("res/ComponentLibrary/RackRails.svg"));
// DEBUG("%d %d %d", railsSvg->getNumShapes(), railsSvg->getNumPaths(), railsSvg->getNumPoints());
}


void RackRail::draw(const DrawArgs& args) {
// Background color
nvgBeginPath(args.vg);
nvgRect(args.vg, 0.0, 0.0, box.size.x, box.size.y);
nvgFillColor(args.vg, nvgRGB(0x30, 0x30, 0x30));
nvgFill(args.vg);

// Rails
for (float y = 0; y < box.size.y; y += RACK_GRID_HEIGHT) {
const math::Vec busBoardSize = busBoardSvg->getSize();
const float busBoardY = y + (RACK_GRID_HEIGHT - busBoardSize.y) / 2;
const NVGcolor shadowColor = nvgRGBA(0, 0, 0, 0x20);

// Bus board shadow
nvgBeginPath(args.vg);
const float busBoardShadowY = busBoardY + busBoardSize.y;
const float busBoardShadowHeight = 10;
nvgRect(args.vg, 0, busBoardShadowY, box.size.x, busBoardShadowHeight);
nvgFillPaint(args.vg, nvgLinearGradient(args.vg, 0, busBoardShadowY, 0, busBoardShadowY + busBoardShadowHeight, shadowColor, color::BLACK_TRANSPARENT));
nvgFill(args.vg);

// Bus board
for (float x = 0; x < box.size.x; x += busBoardSize.x) {
nvgSave(args.vg);
nvgTranslate(args.vg, x, busBoardY);
busBoardSvg->draw(args.vg);
nvgRestore(args.vg);
}

// Rails shadow
nvgBeginPath(args.vg);
const float railsShadowY = y + 15;
const float railsShadowHeight = 10;
nvgRect(args.vg, 0, railsShadowY, box.size.x, railsShadowHeight);
nvgFillPaint(args.vg, nvgLinearGradient(args.vg, 0, railsShadowY, 0, railsShadowY + railsShadowHeight, shadowColor, color::BLACK_TRANSPARENT));
nvgFill(args.vg);

// Rails
for (float x = 0; x < box.size.x; x += RACK_GRID_WIDTH) {
nvgSave(args.vg);
nvgTranslate(args.vg, x, y );
railsSvg->draw(args.vg);
nvgRestore(args.vg);
}
}
}


} // namespace app
} // namespace rack

+ 28
- 22
src/app/RackWidget.cpp View File

@@ -6,7 +6,7 @@

#include <app/RackWidget.hpp>
#include <widget/TransparentWidget.hpp>
#include <app/RackRail.hpp>
#include <app/RailWidget.hpp>
#include <app/Scene.hpp>
#include <app/ModuleBrowser.hpp>
#include <settings.hpp>
@@ -72,18 +72,24 @@ struct CableContainer : widget::TransparentWidget {
};


struct RackWidget::Internal {
widget::FramebufferWidget* railFb;
app::RailWidget* rail;
};


RackWidget::RackWidget() {
// railFb = new widget::FramebufferWidget;
// railFb->box.size = math::Vec();
// railFb->oversample = 1.0;
// // Don't redraw when the world offset of the rail FramebufferWidget changes its fractional value.
// railFb->dirtyOnSubpixelChange = false;
// {
// RackRail* rail = new RackRail;
// rail->box.size = math::Vec();
// railFb->addChild(rail);
// }
// addChild(railFb);
internal = new Internal;
internal->railFb = new widget::FramebufferWidget;
internal->railFb->box.size = math::Vec();
internal->railFb->oversample = 1.0;
// Don't redraw when the world offset of the rail FramebufferWidget changes its fractional value.
internal->railFb->dirtyOnSubpixelChange = false;
addChild(internal->railFb);
internal->rail = new RailWidget;
internal->railFb->addChild(internal->rail);

moduleContainer = new ModuleContainer;
addChild(moduleContainer);
@@ -94,6 +100,7 @@ RackWidget::RackWidget() {

RackWidget::~RackWidget() {
clear();
delete internal;
}

void RackWidget::step() {
@@ -106,16 +113,15 @@ void RackWidget::draw(const DrawArgs& args) {
nvgGlobalTint(args.vg, nvgRGBAf(b, b, b, 1));

// Resize and reposition the RackRail to align on the grid.
// math::Rect railBox;
// railBox.pos = args.clipBox.pos.div(BUS_BOARD_GRID_SIZE).floor().mult(BUS_BOARD_GRID_SIZE);
// railBox.size = args.clipBox.size.div(BUS_BOARD_GRID_SIZE).ceil().plus(math::Vec(1, 1)).mult(BUS_BOARD_GRID_SIZE);
// if (!railFb->box.size.equals(railBox.size)) {
// railFb->dirty = true;
// }
// railFb->box = railBox;

// RackRail* rail = railFb->getFirstDescendantOfType<RackRail>();
// rail->box.size = railFb->box.size;
math::Vec railSize = internal->rail->getTileSize();
math::Rect railBox;
railBox.pos = args.clipBox.pos.div(railSize).floor().mult(railSize);
railBox.size = args.clipBox.size.div(railSize).ceil().plus(math::Vec(1, 1)).mult(railSize);
if (!internal->railFb->box.size.equals(railBox.size)) {
internal->railFb->setDirty();
}
internal->railFb->box = railBox;
internal->rail->box.size = internal->railFb->box.size;

Widget::draw(args);
}


+ 46
- 0
src/app/RailWidget.cpp View File

@@ -0,0 +1,46 @@
#include <app/RailWidget.hpp>
#include <context.hpp>
#include <asset.hpp>
#include <svg.hpp>


namespace rack {
namespace app {


RailWidget::RailWidget() {
svg = Svg::load(asset::system("res/ComponentLibrary/Rail.svg"));
// DEBUG("%d %d %d", svg->getNumShapes(), svg->getNumPaths(), svg->getNumPoints());
}


void RailWidget::draw(const DrawArgs& args) {
if (!svg)
return;

math::Vec tileSize = getTileSize();
if (tileSize.area() == 0.f)
return;

for (float y = 0; y < box.size.y; y += tileSize.y) {
for (float x = 0; x < box.size.x; x += tileSize.x) {
nvgSave(args.vg);
nvgTranslate(args.vg, x, y);
svg->draw(args.vg);
nvgRestore(args.vg);
}
}

Widget::draw(args);
}


math::Vec RailWidget::getTileSize() {
if (!svg)
return math::Vec();
return svg->getSize().div(RACK_GRID_SIZE).round().mult(RACK_GRID_SIZE);
}


} // namespace app
} // namespace rack

Loading…
Cancel
Save