/images/linux-gfx.svg
SVG | 366 lines | 365 code | 0 blank | 1 comment | 2 complexity | 412522901c2c399ccda2a7ffc6e92534 MD5 | raw file
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2<!-- Created with Inkscape (http://www.inkscape.org/) --> 3<svg 4 xmlns:dc="http://purl.org/dc/elements/1.1/" 5 xmlns:cc="http://creativecommons.org/ns#" 6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 7 xmlns:svg="http://www.w3.org/2000/svg" 8 xmlns="http://www.w3.org/2000/svg" 9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 11 width="744.09448819" 12 height="1052.3622047" 13 id="svg2" 14 sodipodi:version="0.32" 15 inkscape:version="0.46" 16 inkscape:export-filename="/tmp/trunk/images/linux-gfx.png" 17 inkscape:export-xdpi="129" 18 inkscape:export-ydpi="129" 19 sodipodi:docname="linux-gfx.svg" 20 inkscape:output_extension="org.inkscape.output.svg.inkscape"> 21 <defs 22 id="defs4"> 23 <marker 24 inkscape:stockid="Arrow1Mend" 25 orient="auto" 26 refY="0.0" 27 refX="0.0" 28 id="Arrow1Mend" 29 style="overflow:visible;"> 30 <path 31 id="path3287" 32 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 " 33 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" 34 transform="scale(0.4) rotate(180) translate(10,0)" /> 35 </marker> 36 <marker 37 inkscape:stockid="Arrow1Mstart" 38 orient="auto" 39 refY="0.0" 40 refX="0.0" 41 id="Arrow1Mstart" 42 style="overflow:visible"> 43 <path 44 id="path3284" 45 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 " 46 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" 47 transform="scale(0.4) translate(10,0)" /> 48 </marker> 49 <marker 50 inkscape:stockid="Arrow1Lstart" 51 orient="auto" 52 refY="0.0" 53 refX="0.0" 54 id="Arrow1Lstart" 55 style="overflow:visible"> 56 <path 57 id="path3278" 58 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 " 59 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" 60 transform="scale(0.8) translate(12.5,0)" /> 61 </marker> 62 <marker 63 inkscape:stockid="Arrow1Lend" 64 orient="auto" 65 refY="0.0" 66 refX="0.0" 67 id="Arrow1Lend" 68 style="overflow:visible;"> 69 <path 70 id="path3281" 71 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 " 72 style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" 73 transform="scale(0.8) rotate(180) translate(12.5,0)" /> 74 </marker> 75 <inkscape:perspective 76 sodipodi:type="inkscape:persp3d" 77 inkscape:vp_x="0 : 526.18109 : 1" 78 inkscape:vp_y="0 : 1000 : 0" 79 inkscape:vp_z="744.09448 : 526.18109 : 1" 80 inkscape:persp3d-origin="372.04724 : 350.78739 : 1" 81 id="perspective10" /> 82 </defs> 83 <sodipodi:namedview 84 id="base" 85 pagecolor="#ffffff" 86 bordercolor="#666666" 87 borderopacity="1.0" 88 gridtolerance="10000" 89 guidetolerance="10" 90 objecttolerance="10" 91 inkscape:pageopacity="0.0" 92 inkscape:pageshadow="2" 93 inkscape:zoom="0.98994949" 94 inkscape:cx="368.50902" 95 inkscape:cy="609.07711" 96 inkscape:document-units="px" 97 inkscape:current-layer="layer1" 98 showgrid="false" 99 showguides="true" 100 inkscape:guide-bbox="true" 101 inkscape:window-width="1440" 102 inkscape:window-height="900" 103 inkscape:window-x="0" 104 inkscape:window-y="0" /> 105 <metadata 106 id="metadata7"> 107 <rdf:RDF> 108 <cc:Work 109 rdf:about=""> 110 <dc:format>image/svg+xml</dc:format> 111 <dc:type 112 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 113 </cc:Work> 114 </rdf:RDF> 115 </metadata> 116 <g 117 inkscape:label="Layer 1" 118 inkscape:groupmode="layer" 119 id="layer1"> 120 <text 121 xml:space="preserve" 122 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 123 x="295.46964" 124 y="637.69458" 125 id="text2383"><tspan 126 sodipodi:role="line" 127 id="tspan2385" 128 x="295.46964" 129 y="637.69458">X</tspan></text> 130 <text 131 xml:space="preserve" 132 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 133 x="285.3681" 134 y="606.37982" 135 id="text2387"><tspan 136 sodipodi:role="line" 137 id="tspan2389" 138 x="285.3681" 139 y="606.37982">GDK</tspan></text> 140 <text 141 xml:space="preserve" 142 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 143 x="255.5686" 144 y="582.13617" 145 id="text2391"><tspan 146 sodipodi:role="line" 147 id="tspan2393" 148 x="255.5686" 149 y="582.13617">GTK</tspan></text> 150 <text 151 xml:space="preserve" 152 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 153 x="312.13715" 154 y="582.13617" 155 id="text2395"><tspan 156 sodipodi:role="line" 157 id="tspan2397" 158 x="312.13715" 159 y="582.13617">Cairo Surface</tspan></text> 160 <flowRoot 161 xml:space="preserve" 162 id="flowRoot2399" 163 style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%"><flowRegion 164 id="flowRegion2401"><rect 165 id="rect2403" 166 width="231.83" 167 height="75.761406" 168 x="311.12698" 169 y="629.10828" 170 style="-inkscape-font-specification:Bitstream Vera Serif;font-family:Bitstream Vera Serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:8px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%" /></flowRegion><flowPara 171 id="flowPara2405">Everything has to end up at the X server. You can find out the structure of your 32-bit visuals by running xdpyinfo. Usually it's xRGB in registers.</flowPara></flowRoot> <flowRoot 172 xml:space="preserve" 173 id="flowRoot2407" 174 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" 175 transform="translate(41.921331,30.809652)"><flowRegion 176 id="flowRegion2409"><rect 177 id="rect2411" 178 width="106.06602" 179 height="60.104107" 180 x="145.46196" 181 y="516.98132" 182 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" /></flowRegion><flowPara 183 id="flowPara2413">Our test_shell menus etc are GTK widgets as you would expect</flowPara></flowRoot> <flowRoot 184 xml:space="preserve" 185 id="flowRoot2415" 186 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" 187 transform="translate(-7.5175689,19.192899)"><flowRegion 188 id="flowRegion2417"><rect 189 id="rect2419" 190 width="186.87825" 191 height="51.01268" 192 x="405.57623" 193 y="535.16406" 194 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" /></flowRegion><flowPara 195 id="flowPara2421">We ask GDK for a Cairo surface to render to with gdk_cairo_create. When it comes time to actually draw we create a Cairo image surface, wrapping the buffer above, and ask this surface to paint the contents of it.</flowPara></flowRoot> <text 196 xml:space="preserve" 197 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 198 x="333.60297" 199 y="534.15393" 200 id="text2423"><tspan 201 sodipodi:role="line" 202 id="tspan2425" 203 x="333.60297" 204 y="534.15393">Buffer</tspan></text> 205 <flowRoot 206 xml:space="preserve" 207 id="flowRoot2427" 208 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" 209 transform="translate(-2.5253814,38.890873)"><flowRegion 210 id="flowRegion2429"><rect 211 id="rect2431" 212 width="189.90868" 213 height="41.416229" 214 x="400.52548" 215 y="480.11078" 216 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" /></flowRegion><flowPara 217 id="flowPara2433">This is the one true pixel buffer in ARGB (registers) mode.</flowPara></flowRoot> <text 218 xml:space="preserve" 219 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 220 x="340.01019" 221 y="478.59552" 222 id="text2435"><tspan 223 sodipodi:role="line" 224 id="tspan2437" 225 x="340.01019" 226 y="478.59552">Skia</tspan></text> 227 <flowRoot 228 xml:space="preserve" 229 id="flowRoot2439" 230 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" 231 transform="translate(1.9433686,7.5761441)"><flowRegion 232 id="flowRegion2441"><rect 233 id="rect2443" 234 width="186.87825" 235 height="30.809664" 236 x="395.47473" 237 y="461.92801" 238 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" /></flowRegion><flowPara 239 id="flowPara2445">Skia draws directly into the buffer.</flowPara></flowRoot> <text 240 xml:space="preserve" 241 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 242 x="233.85033" 243 y="478.59552" 244 id="text2447"><tspan 245 sodipodi:role="line" 246 id="tspan2449" 247 x="233.85033" 248 y="478.59552">Webkit</tspan></text> 249 <flowRoot 250 xml:space="preserve" 251 id="flowRoot2451" 252 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" 253 transform="translate(-14.647211,8.5862971)"><flowRegion 254 id="flowRegion2453"><rect 255 id="rect2455" 256 width="169.70563" 257 height="53.033009" 258 x="153.03812" 259 y="447.78589" 260 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" /></flowRegion><flowPara 261 id="flowPara2457">Webkit paints using Skia, including Skia's font support</flowPara></flowRoot> <text 262 id="text2459" 263 y="359.39752" 264 x="339.98383" 265 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 266 xml:space="preserve"><tspan 267 y="359.39752" 268 x="339.98383" 269 id="tspan2461" 270 sodipodi:role="line">GTK</tspan></text> 271 <text 272 xml:space="preserve" 273 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 274 x="403.55594" 275 y="405.16028" 276 id="text2463"><tspan 277 sodipodi:role="line" 278 id="tspan2465" 279 x="403.55594" 280 y="405.16028">GdkSkia</tspan></text> 281 <flowRoot 282 xml:space="preserve" 283 id="flowRoot2467" 284 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" 285 transform="translate(-81.31728,15.152288)"><flowRegion 286 id="flowRegion2469"><rect 287 id="rect2471" 288 width="224.25388" 289 height="43.941647" 290 x="369.71582" 291 y="310.40515" 292 style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif" /></flowRegion><flowPara 293 id="flowPara2473">When it comes to rendering widgets, we use GTK to get the native look and feel.</flowPara></flowRoot> <flowRoot 294 xml:space="preserve" 295 id="flowRoot2475" 296 style="font-size:8px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Serif;-inkscape-font-specification:Bitstream Vera Serif;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%"><flowRegion 297 id="flowRegion2477"><rect 298 id="rect2479" 299 width="225.26399" 300 height="119.70309" 301 x="472.7514" 302 y="376.57013" 303 style="-inkscape-font-specification:Bitstream Vera Serif;font-family:Bitstream Vera Serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:8px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%" /></flowRegion><flowPara 304 id="flowPara2481">GTK renders to a GdkDrawable which we implement with GdkSkia. This implements the drawing operations by translating to Skia calls. However, modern GTK themes often ask the drawable for a Cairo surface. In this case we create another Cairo image surface backing onto the buffer.</flowPara></flowRoot> <text 305 xml:space="preserve" 306 style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" 307 x="204.55588" 308 y="402.83411" 309 id="text2483"><tspan 310 sodipodi:role="line" 311 id="tspan2485" 312 x="204.55588" 313 y="402.83411">Cairo Image Surface</tspan></text> 314 <path 315 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 316 d="M 426.28437,408.38993 L 352.03816,467.98893" 317 id="path2487" /> 318 <path 319 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 320 d="M 352.03816,480.61584 L 352.03816,521.52702" 321 id="path2489" /> 322 <path 323 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 324 d="M 352.03816,539.20469 L 352.03816,570.51942" 325 id="path2491" /> 326 <path 327 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 328 d="M 299.00515,608.90521 L 299.00515,628.60319" 329 id="path2493" /> 330 <path 331 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 332 d="M 353.04831,586.17678 L 313.65237,598.29861" 333 id="path2495" /> 334 <path 335 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 336 d="M 275.26657,585.16663 L 283.34779,596.27831" 337 id="path2497" /> 338 <path 339 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 340 d="M 262.13459,405.86455 L 331.33004,520.51687" 341 id="path2499" /> 342 <path 343 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Mend)" 344 d="M 279.30718,474.04985 L 334.36049,474.04985" 345 id="path2501" /> 346 <path 347 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)" 348 d="M 261.12443,391.21734 L 352.54324,363.94322 L 426.28437,391.21734" 349 id="path2503" /> 350 <path 351 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.69999999999999996;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2.79999999999999982, 0.69999999999999996;stroke-dashoffset:0;marker-end:url(#Arrow1Mend)" 352 d="M 399.01026,400.30871 L 329.81481,400.30871" 353 id="path7227" /> 354 <text 355 xml:space="preserve" 356 style="font-size:20px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Georgia;-inkscape-font-specification:Georgia;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%" 357 x="164.65486" 358 y="295.75793" 359 id="text7762" 360 sodipodi:linespacing="125%"><tspan 361 sodipodi:role="line" 362 id="tspan7764" 363 x="164.65486" 364 y="295.75793">Chromium Linux Graphics (for the moment)</tspan></text> 365 </g> 366</svg>