diff options
author | Carl Hetherington <carl@carlh.net> | 2009-12-07 00:41:50 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-12-07 00:41:50 +0000 |
commit | 1a447016437727452fdf00e7c762f339c796f736 (patch) | |
tree | e22576a33816b113a9a10a7cb5f46558b7c3e903 | |
parent | b9876aa1d08f83b9a9ef829e6a4dad94cf344e30 (diff) |
Fix a couple of crashes with empty matrices. Some small optimisations.
Correctly handle descenders on text when plotting labels. Minor layout
improvements. Add some drawings of what's going on in the port matrix
so that I don't keep losing them.
git-svn-id: svn://localhost/ardour2/branches/3.0@6319 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | doc/port_matrix/cairo_text.svg | 341 | ||||
-rw-r--r-- | doc/port_matrix/top_column_bundle_name.svg | 801 | ||||
-rw-r--r-- | doc/port_matrix/top_column_port_name.svg | 670 | ||||
-rw-r--r-- | gtk2_ardour/ardour3_ui_dark.rc.in | 1 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix.cc | 42 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_body.cc | 35 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_body.h | 10 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_column_labels.cc | 52 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_column_labels.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_grid.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/port_matrix_row_labels.cc | 9 |
12 files changed, 1926 insertions, 53 deletions
diff --git a/doc/port_matrix/cairo_text.svg b/doc/port_matrix/cairo_text.svg new file mode 100644 index 0000000000..d623ccc01e --- /dev/null +++ b/doc/port_matrix/cairo_text.svg @@ -0,0 +1,341 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.47pre4 r22446" + sodipodi:docname="cairo-text.svg"> + <defs + id="defs4"> + <marker + style="overflow:visible" + id="DistanceEnd" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3657"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.15;stroke-linecap:square" + d="M 0,0 L -2,0" + id="path2316" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z " + id="path2312" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 L 0,40" + id="path2314" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceStart" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.15;stroke-linecap:square" + d="M 0,0 L 2,0" + id="path2306" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 L 13,4 L 9,0 13,-4 L 0,0 z " + id="path2302" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 L 0,40" + id="path2304" /> + </g> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;"> + <path + id="path3610" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + id="path3607" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + id="path3601" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + id="path3619" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + id="path3622" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <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" /> + <inkscape:perspective + id="perspective5912" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mstart-8" + style="overflow:visible"> + <path + id="path3607-1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.5053356" + inkscape:cx="303.3357" + inkscape:cy="553.63926" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1280" + inkscape:window-height="950" + inkscape:window-x="0" + inkscape:window-y="25" + inkscape:window-maximized="1" + inkscape:object-paths="true" /> + <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" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <text + xml:space="preserve" + style="font-size:56px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="171" + y="383.36218" + id="text2816"><tspan + sodipodi:role="line" + id="tspan2818" + x="171" + y="383.36218">ABCjpq</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="147" + y="546.36218" + id="text2820"><tspan + sodipodi:role="line" + id="tspan2822" + x="147" + y="546.36218" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" + d="m 76,321.36218 0,155" + id="path2824" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="61" + y="394.36218" + id="text4046"><tspan + sodipodi:role="line" + id="tspan4048" + x="61" + y="394.36218">y</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 161,383.77138 353.81569,0" + id="path4050" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 165,341.36218 351.1443,0" + id="path4073" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 171.92252,279.65032 0,147.02663" + id="path4075" + sodipodi:nodetypes="cc" /> + <g + id="g5899" + transform="translate(-3.28813,-2.6572148)"> + <path + id="path4077" + d="m 175.21065,387.68906 c 7.0385,12.06709 19.57033,19.13349 32.41162,23.4867" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart)" /> + <text + id="text4661" + y="413.99414" + x="209.03148" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="413.99414" + x="209.03148" + id="tspan4663" + sodipodi:role="line">origin</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 158.76998,394.73507 354.48534,0" + id="path4665" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-mid:none;marker-end:url(#DistanceEnd);marker-start:url(#DistanceStart)" + d="m 397.86441,341.36218 0,42.4092" + id="path4667" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="401.62228" + y="365.6116" + id="text5053"><tspan + sodipodi:role="line" + id="tspan5055" + x="401.62228" + y="365.6116">y_bearing</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd)" + d="m 479.62728,394.73507 0,-53.37289" + id="path5466" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="484.94171" + y="370.12225" + id="text5872"><tspan + sodipodi:role="line" + id="tspan5874" + x="484.94171" + y="370.12225">height</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="-290.94196" + y="603.53894" + id="text5876" + transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"><tspan + sodipodi:role="line" + id="tspan5878" + x="-290.94196" + y="603.53894">ABCjpq</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 221.26042,632.27254 361.61216,491.9208" + id="path5880" /> + <g + transform="translate(46.04977,244.58348)" + id="g5899-8"> + <path + id="path4077-9" + d="m 175.21065,387.68906 c 7.0385,12.06709 19.57033,19.13349 32.41162,23.4867" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart)" /> + <text + id="text4661-2" + y="413.99414" + x="209.03148" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="413.99414" + x="209.03148" + id="tspan4663-9" + sodipodi:role="line">origin</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="330.15894" + y="597.97845" + id="text5941"><tspan + sodipodi:role="line" + id="tspan5943" + x="330.15894" + y="597.97845">cairo_rotate (c, - M_PI / 4);</tspan></text> + </g> +</svg> diff --git a/doc/port_matrix/top_column_bundle_name.svg b/doc/port_matrix/top_column_bundle_name.svg new file mode 100644 index 0000000000..d5669c3e8d --- /dev/null +++ b/doc/port_matrix/top_column_bundle_name.svg @@ -0,0 +1,801 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.47pre4 r22446" + sodipodi:docname="top_column_bundle_name.svg"> + <defs + id="defs4"> + <marker + style="overflow:visible" + id="DistanceEnd" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.15;stroke-linecap:square" + d="M 0,0 L -2,0" + id="path2316" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z " + id="path2312" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 L 0,40" + id="path2314" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceStart" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.15;stroke-linecap:square" + d="M 0,0 L 2,0" + id="path2306" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 L 13,4 L 9,0 13,-4 L 0,0 z " + id="path2302" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 L 0,40" + id="path2304" /> + </g> + </marker> + <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" /> + <inkscape:perspective + id="perspective4298" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4322" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-0"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-1" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-3" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-3" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-0"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-0" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-2" /> + </g> + </marker> + <inkscape:perspective + id="perspective4381" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-01"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-4" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-4" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-32" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-1"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-3" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-26" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-0" /> + </g> + </marker> + <inkscape:perspective + id="perspective5494" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-9-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-01-2"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-4-3" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-4-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-32-4" /> + </g> + </marker> + <inkscape:perspective + id="perspective5537" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-1"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-8" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-9" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-6"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-1" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-5" /> + </g> + </marker> + <inkscape:perspective + id="perspective5597" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-09"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-7" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-5" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-4"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-6" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-6" /> + </g> + </marker> + <inkscape:perspective + id="perspective5654" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5865" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-3"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-89" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-58" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-91" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-7"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-36" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-56" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-4" /> + </g> + </marker> + <inkscape:perspective + id="perspective5926" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-9"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-5" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-7" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-14"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-7" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-3" /> + </g> + </marker> + <inkscape:perspective + id="perspective3600" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-16" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-19"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-49" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-96" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-94" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-20" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-2"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-368" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-28" /> + </g> + </marker> + <inkscape:perspective + id="perspective3655" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-08" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-5"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-43" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-94" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-6" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-23" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-8"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-62" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-70" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-7" /> + </g> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.0901219" + inkscape:cx="245.59522" + inkscape:cy="493.24267" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + showguides="false" + inkscape:guide-bbox="true" + inkscape:snap-global="true" + inkscape:snap-bbox="false" + inkscape:object-paths="true" + inkscape:window-width="1280" + inkscape:window-height="1000" + inkscape:window-x="1280" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:snap-midpoints="false" + inkscape:snap-grids="false" + inkscape:snap-to-guides="true" + inkscape:snap-intersection-paths="true"> + <sodipodi:guide + orientation="0,1" + position="-139,507" + id="guide2818" /> + <sodipodi:guide + orientation="0,1" + position="-54,736" + id="guide2820" /> + <sodipodi:guide + orientation="1,0" + position="107.84461,521.24893" + id="guide2855" /> + <sodipodi:guide + orientation="1,0" + position="346.19377,502.36563" + id="guide2857" /> + <sodipodi:guide + orientation="0,1" + position="287.77314,553.84911" + id="guide4369" /> + <sodipodi:guide + orientation="1,0" + position="187.50484,410.61756" + id="guide5523" /> + <sodipodi:guide + orientation="1,0" + position="299.44648,566.15686" + id="guide5581" /> + </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" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 407.04788,247.31233 29.29042,625.07176 266.23358,624.64489 524,367.36218 407,247.26318" + id="path2822" + sodipodi:nodetypes="ccccc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="78.769989" + y="297.07095" + id="text2845"><tspan + sodipodi:role="line" + id="tspan2847" + x="78.769989" + y="297.07095">Bundle name (top)</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="125.84303" + y="541.49957" + id="text2849"><tspan + sodipodi:role="line" + id="tspan2851" + x="125.84303" + y="541.49957">ϑ</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 346.16456,545.1478 227.68908,426.67232" + id="path2853" /> + <path + style="color:#000000;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 260.29818,437.3373 73.37226,73.37227" + id="path4312" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="305.09753" + y="472.22052" + id="text4365"><tspan + sodipodi:role="line" + id="tspan4367" + x="305.09753" + y="472.22052">h</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart);color:#000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 187.98488,624.78586 0,-125.82998" + id="path4424-8" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="176.02385" + y="570.7243" + id="text5525"><tspan + sodipodi:role="line" + id="tspan5527" + x="176.02385" + y="570.7243">y</tspan></text> + <g + id="g3320" + transform="translate(-81.151712,83.200997)"> + <path + sodipodi:nodetypes="cc" + id="path2859" + d="m 107.84461,560.19866 238.34916,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd)" /> + <text + id="text4284" + y="574.17139" + x="227.0192" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="574.17139" + x="227.0192" + id="tspan4286" + sodipodi:role="line">g</tspan></text> + <path + sodipodi:nodetypes="cc" + id="path2859-5" + d="M 107.84461,612.92703 380.59819,611.2876" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd)" /> + <text + id="text5583" + y="625.0675" + x="207.78781" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + y="625.0675" + x="207.78781" + id="tspan5585" + sodipodi:role="line">x</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 272.01521,382.34589 390.51575,500.84643" + id="path5587" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="336.24664" + y="433.05533" + id="text5640"><tspan + sodipodi:role="line" + id="tspan5642" + x="336.24664" + y="433.05533">p</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 299.88553,498.86877 0,46.49341" + id="path5644" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:6.80813789px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="301.71027" + y="511.74252" + id="text2849-9"><tspan + sodipodi:role="line" + id="tspan2851-1" + x="301.71027" + y="511.74252">ϑ</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 304.9025,493.43771 -21.18965,21.18965" + id="path5908" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="312.51556" + y="508.66382" + id="text5912"><tspan + sodipodi:role="line" + id="tspan5914" + x="312.51556" + y="508.66382">d</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 369.3182,522.04398 325.0167,477.74249" + id="path5916" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="349.19827" + y="494.13678" + id="text5969"><tspan + sodipodi:role="line" + id="tspan5971" + x="349.19827" + y="494.13678">q</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="78.266083" + y="313.79965" + id="text2934"><tspan + sodipodi:role="line" + id="tspan2936" + x="78.266083" + y="313.79965">Port name (bottom)</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 109,545.36218 29.29042,625.07176" + id="path3336" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 266.23358,624.64489 147.97513,506.38644" + id="path3346" + sodipodi:nodetypes="cc" /> + <path + style="color:#000000;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 121.77859,480.20163 80.28097,-79.92214" + id="path3348" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="149.53252" + y="437.99329" + id="text3643"><tspan + sodipodi:role="line" + id="tspan3645" + x="149.53252" + y="437.99329">f</tspan></text> + </g> +</svg> diff --git a/doc/port_matrix/top_column_port_name.svg b/doc/port_matrix/top_column_port_name.svg new file mode 100644 index 0000000000..0a05f15b85 --- /dev/null +++ b/doc/port_matrix/top_column_port_name.svg @@ -0,0 +1,670 @@ +<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="744.09448819" + height="1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.47pre4 r22446" + sodipodi:docname="top_column_port_name.svg"> + <defs + id="defs4"> + <marker + style="overflow:visible" + id="DistanceEnd" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.15;stroke-linecap:square" + d="M 0,0 L -2,0" + id="path2316" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z " + id="path2312" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 L 0,40" + id="path2314" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceStart" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.15;stroke-linecap:square" + d="M 0,0 L 2,0" + id="path2306" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 L 13,4 L 9,0 13,-4 L 0,0 z " + id="path2302" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 L 0,40" + id="path2304" /> + </g> + </marker> + <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" /> + <inkscape:perspective + id="perspective4298" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective4322" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-0"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-1" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-3" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-3" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-0"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-0" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-2" /> + </g> + </marker> + <inkscape:perspective + id="perspective4381" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-01"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-4" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-4" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-32" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-1"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-3" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-26" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-0" /> + </g> + </marker> + <inkscape:perspective + id="perspective5494" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-9-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-01-2"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-4-3" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-4-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-32-4" /> + </g> + </marker> + <inkscape:perspective + id="perspective5537" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-1"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-8" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-9" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-6"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-1" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-5" /> + </g> + </marker> + <inkscape:perspective + id="perspective5597" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-09"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-7" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-5" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-4"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-6" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-6" /> + </g> + </marker> + <inkscape:perspective + id="perspective5654" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <inkscape:perspective + id="perspective5865" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-3"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-89" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-58" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-91" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-7"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-36" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-56" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-4" /> + </g> + </marker> + <inkscape:perspective + id="perspective5926" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 0.5 : 1" + sodipodi:type="inkscape:persp3d" /> + <marker + style="overflow:visible" + id="DistanceStart-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceStart"> + <g + id="g2300-9"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 2,0" + id="path2306-5" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 13,4 9,0 13,-4 0,0 z" + id="path2302-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2304-7" /> + </g> + </marker> + <marker + style="overflow:visible" + id="DistanceEnd-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="DistanceEnd"> + <g + id="g3692-14"> + <path + style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square" + d="M 0,0 -2,0" + id="path2316-7" /> + <path + style="fill:#000000;fill-rule:evenodd;stroke:none" + d="M 0,0 -13,4 -9,0 -13,-4 0,0 z" + id="path2312-1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square" + d="M 0,-4 0,40" + id="path2314-3" /> + </g> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.4398746" + inkscape:cx="254.50013" + inkscape:cy="579.45775" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + showguides="false" + inkscape:guide-bbox="true" + inkscape:snap-global="true" + inkscape:snap-bbox="false" + inkscape:object-paths="true" + inkscape:window-width="1280" + inkscape:window-height="1000" + inkscape:window-x="1280" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:snap-midpoints="false" + inkscape:snap-grids="false" + inkscape:snap-to-guides="true"> + <sodipodi:guide + orientation="0,1" + position="-139,507" + id="guide2818" /> + <sodipodi:guide + orientation="0,1" + position="-54,736" + id="guide2820" /> + <sodipodi:guide + orientation="1,0" + position="107.84461,521.24893" + id="guide2855" /> + <sodipodi:guide + orientation="1,0" + position="346.19377,502.36563" + id="guide2857" /> + <sodipodi:guide + orientation="0,1" + position="287.77314,553.84911" + id="guide4369" /> + <sodipodi:guide + orientation="1,0" + position="187.50484,410.61756" + id="guide5523" /> + <sodipodi:guide + orientation="1,0" + position="299.44648,566.15686" + id="guide5581" /> + </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" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 407.04788,247.31233 109,545.36218 l 237,0 178,-178 -117,-120.099" + id="path2822" + sodipodi:nodetypes="ccccc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="77.130562" + y="369.20581" + id="text2845"><tspan + sodipodi:role="line" + id="tspan2847" + x="77.130562" + y="369.20581">Column name (top)</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="125.84303" + y="541.49957" + id="text2849"><tspan + sodipodi:role="line" + id="tspan2851" + x="125.84303" + y="541.49957">ϑ</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 346.16456,545.1478 227.68908,426.67232" + id="path2853" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd)" + d="m 107.84461,560.19866 238.34916,0" + id="path2859" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="227.0192" + y="574.17139" + id="text4284"><tspan + sodipodi:role="line" + id="tspan4286" + x="227.0192" + y="574.17139">g</tspan></text> + <path + style="color:#000000;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 260.29818,437.3373 73.37226,73.37227" + id="path4312" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="305.09753" + y="472.22052" + id="text4365"><tspan + sodipodi:role="line" + id="tspan4367" + x="305.09753" + y="472.22052">h</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart-9)" + d="m 187.50484,498.50303 0,-29.29762" + id="path4424" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart-9)" + d="m 187.98488,545.36218 0,34.70643" + id="path4424-8" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="184.34961" + y="522.88019" + id="text5525"><tspan + sodipodi:role="line" + id="tspan5527" + x="184.34961" + y="522.88019">y</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd)" + d="m 107.84461,612.92703 191.60187,0" + id="path2859-5" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="207.78781" + y="625.0675" + id="text5583"><tspan + sodipodi:role="line" + id="tspan5585" + x="207.78781" + y="625.0675">x</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 272.01521,382.34589 390.51575,500.84643" + id="path5587" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="336.24664" + y="433.05533" + id="text5640"><tspan + sodipodi:role="line" + id="tspan5642" + x="336.24664" + y="433.05533">p</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 299.88553,498.86877 0,46.49341" + id="path5644" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:6.80813789px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="301.71027" + y="511.74252" + id="text2849-9"><tspan + sodipodi:role="line" + id="tspan2851-1" + x="301.71027" + y="511.74252">ϑ</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 304.9025,493.43771 -21.18965,21.18965" + id="path5908" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="312.51556" + y="508.66382" + id="text5912"><tspan + sodipodi:role="line" + id="tspan5914" + x="312.51556" + y="508.66382">d</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;color:#000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#DistanceStart);marker-end:url(#DistanceEnd);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 369.3182,522.04398 325.0167,477.74249" + id="path5916" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="349.19827" + y="494.13678" + id="text5969"><tspan + sodipodi:role="line" + id="tspan5971" + x="349.19827" + y="494.13678">q</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="76.626656" + y="385.11478" + id="text3316"><tspan + sodipodi:role="line" + id="tspan3318" + x="76.626656" + y="385.11478">Bundle name (bottom)</tspan></text> + </g> +</svg> diff --git a/gtk2_ardour/ardour3_ui_dark.rc.in b/gtk2_ardour/ardour3_ui_dark.rc.in index 393ce3c841..0e81e576e9 100644 --- a/gtk2_ardour/ardour3_ui_dark.rc.in +++ b/gtk2_ardour/ardour3_ui_dark.rc.in @@ -1669,3 +1669,4 @@ widget "*OddPortGroups" style:highest "odd_port_groups" widget "*EvenPortGroups" style:highest "even_port_groups" widget "*MidiListView*" style:highest "white_tree_view" widget "*ProcessorSelector*" style:highest "processor_list_display" +widget "*PortMatrixLabel*" style:highest "small_text"
\ No newline at end of file diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc index 3fe27b4fdf..58c8a099bd 100644 --- a/gtk2_ardour/port_matrix.cc +++ b/gtk2_ardour/port_matrix.cc @@ -60,33 +60,41 @@ PortMatrix::PortMatrix (Window* parent, Session* session, DataType type) _ignore_notebook_page_selected (false) { _body = new PortMatrixBody (this); + _body->DimensionsChanged.connect (mem_fun (*this, &PortMatrix::body_dimensions_changed)); - _vbox.pack_start (_vnotebook); - _vbox.pack_start (_vlabel); - _hbox.pack_start (_hnotebook); - _hbox.pack_start (_hlabel); + _vbox.pack_start (_vspacer, false, false); + _vbox.pack_start (_vnotebook, false, false); + _vbox.pack_start (_vlabel, true, true); + _hbox.pack_start (_hspacer, false, false); + _hbox.pack_start (_hnotebook, false, false); + _hbox.pack_start (_hlabel, true, true); _vnotebook.signal_switch_page().connect (mem_fun (*this, &PortMatrix::v_page_selected)); _vnotebook.property_tab_border() = 4; + _vnotebook.set_name (X_("PortMatrixLabel")); _hnotebook.signal_switch_page().connect (mem_fun (*this, &PortMatrix::h_page_selected)); _hnotebook.property_tab_border() = 4; + _hnotebook.set_name (X_("PortMatrixLabel")); for (int i = 0; i < 2; ++i) { _ports[i].set_type (type); } _vlabel.set_use_markup (); - _vlabel.set_alignment (0.5, 0); + _vlabel.set_alignment (1, 1); _vlabel.set_padding (4, 16); + _vlabel.set_name (X_("PortMatrixLabel")); _hlabel.set_use_markup (); - _hlabel.set_alignment (0, 0.5); + _hlabel.set_alignment (1, 0.5); _hlabel.set_padding (16, 4); + _hlabel.set_name (X_("PortMatrixLabel")); _body->show (); _vbox.show (); _hbox.show (); _vlabel.show (); _hlabel.show (); + _hspacer.show (); } PortMatrix::~PortMatrix () @@ -106,7 +114,6 @@ void PortMatrix::init () { select_arrangement (); - setup_notebooks (); if (!_ports[0].empty()) { _visible_ports[0] = *_ports[0].begin(); @@ -674,15 +681,15 @@ PortMatrix::setup_notebooks () } if (_hnotebook.get_n_pages() <= 1) { - _hnotebook.hide (); + _hbox.hide (); } else { - _hnotebook.show (); + _vbox.show (); } if (_vnotebook.get_n_pages() <= 1) { - _vnotebook.hide (); + _vbox.hide (); } else { - _vnotebook.show (); + _vbox.show (); } } @@ -751,3 +758,16 @@ PortMatrix::session_going_away () { _session = 0; } + +void +PortMatrix::body_dimensions_changed () +{ + _hspacer.set_size_request (_body->column_labels_border_x (), -1); + if (_arrangement == TOP_TO_RIGHT) { + _vspacer.set_size_request (-1, _body->column_labels_height ()); + _vspacer.show (); + } else { + _vspacer.hide (); + } + +} diff --git a/gtk2_ardour/port_matrix.h b/gtk2_ardour/port_matrix.h index 268c898684..f228a4101f 100644 --- a/gtk2_ardour/port_matrix.h +++ b/gtk2_ardour/port_matrix.h @@ -179,6 +179,7 @@ private: void v_page_selected (GtkNotebookPage *, guint); void h_page_selected (GtkNotebookPage *, guint); void route_processors_changed (ARDOUR::RouteProcessorChange); + void body_dimensions_changed (); void session_going_away (); Gtk::Window* _parent; @@ -196,6 +197,8 @@ private: Gtk::Label _hlabel; Gtk::VBox _vbox; Gtk::HBox _hbox; + Gtk::Label _hspacer; + Gtk::Label _vspacer; Gtk::Menu* _menu; Arrangement _arrangement; int _row_index; diff --git a/gtk2_ardour/port_matrix_body.cc b/gtk2_ardour/port_matrix_body.cc index 41faaa31ef..72da040ed7 100644 --- a/gtk2_ardour/port_matrix_body.cc +++ b/gtk2_ardour/port_matrix_body.cc @@ -34,6 +34,8 @@ PortMatrixBody::PortMatrixBody (PortMatrix* p) _alloc_height (0), _xoffset (0), _yoffset (0), + _column_labels_border_x (0), + _column_labels_height (0), _ignore_component_size_changed (false) { _column_labels = new PortMatrixColumnLabels (p, this); @@ -58,7 +60,10 @@ PortMatrixBody::~PortMatrixBody () bool PortMatrixBody::on_expose_event (GdkEventExpose* event) { - if (_matrix->visible_columns()->bundles().empty() || _matrix->visible_rows()->bundles().empty()) { + if ( + _matrix->visible_columns() == 0 || _matrix->visible_rows() == 0 || + _matrix->visible_columns()->bundles().empty() || _matrix->visible_rows()->bundles().empty() + ) { /* nothing to connect */ @@ -171,7 +176,7 @@ PortMatrixBody::compute_rectangles () { /* full sizes of components */ pair<uint32_t, uint32_t> const col = _column_labels->dimensions (); - uint32_t col_overhang = _column_labels->overhang (); + uint32_t const col_overhang = _column_labels->overhang (); pair<uint32_t, uint32_t> const row = _row_labels->dimensions (); pair<uint32_t, uint32_t> const grid = _grid->dimensions (); @@ -182,6 +187,7 @@ PortMatrixBody::compute_rectangles () if (_matrix->arrangement() == PortMatrix::TOP_TO_RIGHT) { col_rect.set_x (0); + _column_labels_border_x = col_overhang; col_rect.set_y (0); grid_rect.set_x (0); @@ -222,13 +228,17 @@ PortMatrixBody::compute_rectangles () col_rect.set_width (grid_rect.get_width () + col_overhang); col_rect.set_x (row_rect.get_width() + grid_rect.get_width() - col_rect.get_width()); + _column_labels_border_x = col_rect.get_x () >= 0 ? col_rect.get_x () : 0; col_rect.set_y (row_rect.get_height()); - } + _column_labels_height = col_rect.get_height (); + _row_labels->set_parent_rectangle (row_rect); _column_labels->set_parent_rectangle (col_rect); _grid->set_parent_rectangle (grid_rect); + + DimensionsChanged (); /* EMIT SIGNAL */ } void @@ -243,7 +253,7 @@ PortMatrixBody::setup () /* Connect to bundles so that we find out when their names change */ - PortGroup::BundleList r = _matrix->rows()->bundles (); + PortGroup::BundleList r = _matrix->visible_rows()->bundles (); for (PortGroup::BundleList::iterator i = r.begin(); i != r.end(); ++i) { _bundle_connections.push_back ( @@ -252,7 +262,7 @@ PortMatrixBody::setup () } - PortGroup::BundleList c = _matrix->columns()->bundles (); + PortGroup::BundleList c = _matrix->visible_columns()->bundles (); for (PortGroup::BundleList::iterator i = c.begin(); i != c.end(); ++i) { _bundle_connections.push_back ( i->bundle->Changed.connect (sigc::hide (sigc::mem_fun (*this, &PortMatrixBody::rebuild_and_draw_column_labels))) @@ -295,6 +305,7 @@ PortMatrixBody::alloc_scroll_height () return _grid->parent_rectangle().get_height(); } +/** Set x offset (for scrolling) */ void PortMatrixBody::set_xoffset (uint32_t xo) { @@ -302,6 +313,7 @@ PortMatrixBody::set_xoffset (uint32_t xo) queue_draw (); } +/** Set y offset (for scrolling) */ void PortMatrixBody::set_yoffset (uint32_t yo) { @@ -494,3 +506,16 @@ PortMatrixBody::max_size () const return make_pair (std::max (row.first, _column_labels->overhang()) + grid.first, col.second + grid.second); } + +/** @return x position at which the column labels meet the border of the matrix */ +uint32_t +PortMatrixBody::column_labels_border_x () const +{ + return _column_labels_border_x; +} + +uint32_t +PortMatrixBody::column_labels_height () const +{ + return _column_labels_height; +} diff --git a/gtk2_ardour/port_matrix_body.h b/gtk2_ardour/port_matrix_body.h index c8dc0cce29..0b8facda45 100644 --- a/gtk2_ardour/port_matrix_body.h +++ b/gtk2_ardour/port_matrix_body.h @@ -67,6 +67,11 @@ public: void component_size_changed (); std::pair<uint32_t, uint32_t> max_size () const; + uint32_t column_labels_border_x () const; + uint32_t column_labels_height () const; + + sigc::signal<void> DimensionsChanged; + protected: bool on_expose_event (GdkEventExpose *); void on_size_request (Gtk::Requisition *); @@ -91,11 +96,10 @@ private: uint32_t _alloc_width; ///< allocated width uint32_t _alloc_height; ///< allocated height - Gdk::Rectangle _column_labels_rect; - Gdk::Rectangle _row_labels_rect; - Gdk::Rectangle _grid_rect; uint32_t _xoffset; uint32_t _yoffset; + uint32_t _column_labels_border_x; + uint32_t _column_labels_height; std::list<PortMatrixNode> _mouseover; bool _ignore_component_size_changed; diff --git a/gtk2_ardour/port_matrix_column_labels.cc b/gtk2_ardour/port_matrix_column_labels.cc index 2aeb084b9f..c10bb01a2b 100644 --- a/gtk2_ardour/port_matrix_column_labels.cc +++ b/gtk2_ardour/port_matrix_column_labels.cc @@ -45,10 +45,6 @@ PortMatrixColumnLabels::compute_dimensions () _longest_bundle_name = 0; /* width of the longest channel name */ _longest_channel_name = 0; - /* height of highest bit of text (apart from group names) */ - _highest_text = 0; - /* width of the whole thing */ - _width = 0; /* Compute dimensions using all port groups, so that we allow for the largest and hence we can change between visible groups without the size of the labels jumping around. @@ -64,10 +60,6 @@ PortMatrixColumnLabels::compute_dimensions () _longest_bundle_name = ext.width; } - if (ext.height > _highest_text) { - _highest_text = ext.height; - } - for (uint32_t k = 0; k < j->bundle->nchannels (); ++k) { cairo_text_extents ( @@ -79,14 +71,21 @@ PortMatrixColumnLabels::compute_dimensions () if (ext.width > _longest_channel_name) { _longest_channel_name = ext.width; } - - if (ext.height > _highest_text) { - _highest_text = ext.height; - } } } + } - _width += group_size (*i) * grid_spacing (); + /* height metrics */ + cairo_text_extents_t ext; + cairo_text_extents (cr, X_("AQRjpy"), &ext); + _text_height = ext.height; + _descender_height = ext.height + ext.y_bearing; + + /* width of the whole thing */ + if (_matrix->visible_columns()) { + _width = group_size (_matrix->visible_columns()) * grid_spacing (); + } else { + _width = 0; } cairo_destroy (cr); @@ -99,7 +98,7 @@ PortMatrixColumnLabels::compute_dimensions () a += _longest_channel_name; } - _height = a * sin (angle()) + _highest_text * cos (angle()); + _height = a * sin (angle()) + _text_height * cos (angle()); _overhang = _height / tan (angle ()); _width += _overhang; } @@ -108,7 +107,7 @@ double PortMatrixColumnLabels::basic_text_x_pos (int) const { return grid_spacing() / 2 + - _highest_text / (2 * sin (angle ())); + _text_height / (2 * sin (angle ())); } void @@ -278,6 +277,8 @@ PortMatrixColumnLabels::render_bundle_name ( set_source_rgb (cr, text_colour()); + double const q = ((grid_spacing() * sin (angle())) - _text_height) / 2 + _descender_height; + if (_matrix->arrangement() == PortMatrix::TOP_TO_RIGHT) { double rl = 0; @@ -288,16 +289,16 @@ PortMatrixColumnLabels::render_bundle_name ( } cairo_move_to ( cr, - xoff + basic_text_x_pos (0) + rl * cos (angle()), - yoff + _height - rl * sin (angle()) + xoff + grid_spacing() - q * sin (angle ()) + rl * cos (angle()), + yoff + _height - q * cos (angle ()) - rl * sin (angle()) ); } else { cairo_move_to ( cr, - xoff + basic_text_x_pos (0) + name_pad() * cos (angle ()), - yoff + _height - name_pad() * sin (angle()) + xoff + grid_spacing() - q * sin (angle ()), + yoff + _height - q * cos (angle ()) ); } @@ -328,21 +329,24 @@ PortMatrixColumnLabels::render_channel_name ( set_source_rgb (cr, text_colour()); + double const q = ((grid_spacing() * sin (angle())) - _text_height) / 2 + _descender_height; + if (_matrix->arrangement() == PortMatrix::TOP_TO_RIGHT) { cairo_move_to ( cr, - xoff + basic_text_x_pos(bc.channel), - yoff + _height - name_pad() * sin (angle()) + xoff + grid_spacing() - q * sin (angle ()), + yoff + _height - q * cos (angle ()) ); + } else { double const rl = 3 * name_pad() + _longest_bundle_name; cairo_move_to ( cr, - xoff + basic_text_x_pos(bc.channel) + rl * cos (angle ()), - yoff + _height - rl * sin (angle()) + xoff + grid_spacing() - q * sin (angle ()) + rl * cos (angle ()), + yoff + _height - q * cos (angle ()) - rl * sin (angle()) ); } @@ -453,7 +457,7 @@ PortMatrixColumnLabels::motion (double x, double y) return; } - uint32_t const bh = _longest_channel_name * sin (angle ()) + _highest_text / cos (angle ()); + uint32_t const bh = _longest_channel_name * sin (angle ()) + _text_height / cos (angle ()); if ( (_matrix->arrangement() == PortMatrix::LEFT_TO_BOTTOM && y > bh) || diff --git a/gtk2_ardour/port_matrix_column_labels.h b/gtk2_ardour/port_matrix_column_labels.h index 0c725a0803..9ff59ec33b 100644 --- a/gtk2_ardour/port_matrix_column_labels.h +++ b/gtk2_ardour/port_matrix_column_labels.h @@ -64,7 +64,8 @@ private: double _longest_bundle_name; double _longest_channel_name; - double _highest_text; + double _text_height; + double _descender_height; uint32_t _overhang; }; diff --git a/gtk2_ardour/port_matrix_grid.cc b/gtk2_ardour/port_matrix_grid.cc index 5136285e48..3e5d171690 100644 --- a/gtk2_ardour/port_matrix_grid.cc +++ b/gtk2_ardour/port_matrix_grid.cc @@ -41,16 +41,16 @@ PortMatrixGrid::PortMatrixGrid (PortMatrix* m, PortMatrixBody* b) void PortMatrixGrid::compute_dimensions () { - if (_matrix->visible_columns() == 0) { - _width = 0; - } else { + if (_matrix->visible_columns()) { _width = group_size (_matrix->visible_columns()) * grid_spacing (); + } else { + _width = 0; } - if (_matrix->visible_rows() == 0) { - _height = 0; - } else { + if (_matrix->visible_rows()) { _height = group_size (_matrix->visible_rows()) * grid_spacing (); + } else { + _height = 0; } } diff --git a/gtk2_ardour/port_matrix_row_labels.cc b/gtk2_ardour/port_matrix_row_labels.cc index 6528f31d76..9878dc23dd 100644 --- a/gtk2_ardour/port_matrix_row_labels.cc +++ b/gtk2_ardour/port_matrix_row_labels.cc @@ -44,7 +44,6 @@ PortMatrixRowLabels::compute_dimensions () _longest_port_name = 0; _longest_bundle_name = 0; - _height = 0; /* Compute maximum dimensions using all port groups, so that we allow for the largest and hence we can change between visible groups without the size of the labels jumping around. @@ -71,8 +70,12 @@ PortMatrixRowLabels::compute_dimensions () } } - - _height += group_size (_matrix->visible_rows()) * grid_spacing (); + + if (_matrix->visible_rows()) { + _height = group_size (_matrix->visible_rows()) * grid_spacing (); + } else { + _height = 0; + } cairo_destroy (cr); gdk_pixmap_unref (pm); |