From 9ccfcf19d9b77fc1827eb5ad14fa6fb794102d67 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Mon, 26 Sep 2016 15:05:06 -0700 Subject: [PATCH] initial round of visual updates --- docs/static/calliope.simplified.svg | 921 ++++++++++++++++++++++++++++ docs/static/calliope.svg | 134 ++++ docs/static/microbit.docs.svg | 1 - docs/static/microbit.red.png | Bin 21078 -> 0 bytes docs/static/microbit.red.square.png | Bin 21845 -> 0 bytes docs/static/microbit.red.svg | 1 - docs/static/microbit.simplified.svg | 1 - package.json | 8 +- pxtarget.json | 35 +- sim/visuals/microbit.ts | 224 +++++-- 10 files changed, 1236 insertions(+), 89 deletions(-) create mode 100644 docs/static/calliope.simplified.svg create mode 100644 docs/static/calliope.svg delete mode 100644 docs/static/microbit.docs.svg delete mode 100644 docs/static/microbit.red.png delete mode 100644 docs/static/microbit.red.square.png delete mode 100644 docs/static/microbit.red.svg delete mode 100644 docs/static/microbit.simplified.svg diff --git a/docs/static/calliope.simplified.svg b/docs/static/calliope.simplified.svg new file mode 100644 index 00000000..0bd01f41 --- /dev/null +++ b/docs/static/calliope.simplified.svg @@ -0,0 +1,921 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/docs/static/calliope.svg b/docs/static/calliope.svg new file mode 100644 index 00000000..85447b14 --- /dev/null +++ b/docs/static/calliope.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/static/microbit.docs.svg b/docs/static/microbit.docs.svg deleted file mode 100644 index 6392907d..00000000 --- a/docs/static/microbit.docs.svg +++ /dev/null @@ -1 +0,0 @@ -(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P5, BUTTON AP6, LED Col 9P7, LED Col 8P8P9, LED Col 7P10, ANALOG IN, LED Col 3P11, BUTTON BP12, RESERVED ACCESSIBILITYP13, SPI - SCKP14, SPI - MISOP15, SPI - MOSIP16, SPI - Chip SelectP17, +3v3P18, +3v3P19, I2C - SCLP20, I2C - SDAGNDGND+3v3GNDABA+B \ No newline at end of file diff --git a/docs/static/microbit.red.png b/docs/static/microbit.red.png deleted file mode 100644 index 9b2a5efa6bfd6a0d1b5abe39a219472eabe0db88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21078 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 diff --git a/docs/static/microbit.red.square.png b/docs/static/microbit.red.square.png deleted file mode 100644 index 13b6d96c5d8cf305404892c0e2b5200aaca0dd71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21845 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,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P5, BUTTON AP6, LED Col 9P7, LED Col 8P8P9, LED Col 7P10, ANALOG IN, LED Col 3P11, BUTTON BP12, RESERVED ACCESSIBILITYP13, SPI - SCKP14, SPI - MISOP15, SPI - MOSIP16, SPI - Chip SelectP17, +3v3P18, +3v3P19, I2C - SCLP20, I2C - SDAGNDGND+3v3GNDABA+B \ No newline at end of file diff --git a/docs/static/microbit.simplified.svg b/docs/static/microbit.simplified.svg deleted file mode 100644 index 0db9abfd..00000000 --- a/docs/static/microbit.simplified.svg +++ /dev/null @@ -1 +0,0 @@ -(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P5, BUTTON AP6, LED Col 9P7, LED Col 8P8P9, LED Col 7P10, ANALOG IN, LED Col 3P11, BUTTON BP12, RESERVED ACCESSIBILITYP13, SPI - SCKP14, SPI - MISOP15, SPI - MOSIP16, SPI - Chip SelectP17, +3v3P18, +3v3P19, I2C - SCLP20, I2C - SDAGNDGND+3v3GNDAB \ No newline at end of file diff --git a/package.json b/package.json index 23d9e676..ddd9ae28 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "pxt-microbit", + "name": "pxt-calliope", "version": "0.4.18", - "description": "micro:bit target for PXT", + "description": "calliope target for PXT", "keywords": [ "JavaScript", "education", @@ -9,11 +9,11 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/Microsoft/pxt-microbit.git" + "url": "git+https://github.com/Microsoft/pxt-calliope.git" }, "author": "", "license": "MIT", - "homepage": "https://github.com/Microsoft/pxt-microbit#readme", + "homepage": "https://github.com/Microsoft/pxt-calliope#readme", "files": [ "README.md", "pxtarget.json", diff --git a/pxtarget.json b/pxtarget.json index 84a02977..8eb78afa 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -1,8 +1,8 @@ { - "id": "microbit", - "name": "code the micro:bit", - "title": "code the micro:bit - Blocks / Javascript editor", - "description": "A Blocks / JavaScript code editor for the micro:bit.", + "id": "calliope", + "name": " calliope", + "title": "calliope - Blocks / Javascript editor", + "description": "A Blocks / JavaScript code editor for the calliope.", "corepkg": "microbit", "bundleddirs": [ "libs/microbit", @@ -14,10 +14,6 @@ "workspace": false, "packages": true, "preferredPackages": [ - "Microsoft/pxt-neopixel", - "Microsoft/pxt-sonar", - "Microsoft/pxt-max6675", - "Microsoft/pxt-i2c-fram" ] }, "blocksprj": { @@ -65,7 +61,7 @@ "hasHex": true, "deployDrives": "(MICROBIT|MBED)", "driveName": "MICROBIT", - "hexMimeType": "application/x-microbit-hex" + "hexMimeType": "application/x-calliope-hex" }, "runtime": { "mathBlocks": true, @@ -89,7 +85,7 @@ "compass": true }, "boardDefinition": { - "visual": "microbit", + "visual": "calliope", "gpioPinBlocks": [ [ "P0" @@ -167,7 +163,9 @@ "onboardComponents": [ "buttonpair", "ledmatrix", - "speaker" + "speaker", + "microphone", + "rgbled" ], "useCrocClips": true, "marginWhenBreadboarding": [ @@ -193,18 +191,17 @@ "appTheme": { "accentColor": "#5C005C", "logoUrl": "https://codethemicrobit.com/about", - "logo": "./static/microbit.simplified.svg", - "docsLogo": "./static/microbit.simplified.svg", - "portraitLogo": "./static/microbit.simplified.svg", - "footerLogo": "./static/microbit.simplified.svg", + "logo": "./static/calliope.simplified.svg", + "docsLogo": "./static/calliope.simplified.svg", + "portraitLogo": "./static/calliope.simplified.svg", + "footerLogo": "./static/calliope.simplified.svg", "cardLogo": "https://az851932.vo.msecnd.net/pub/drbwxcth", "appLogo": "https://az851932.vo.msecnd.net/pub/tbhemtig", "organizationLogo": "./static/Microsoft-logo_rgb_c-gray.png", "homeUrl": "https://codethemicrobit.com/", - "embedUrl": "https://codethemicrobit.com/", "privacyUrl": "https://go.microsoft.com/fwlink/?LinkId=521839", "termsOfUseUrl": "https://go.microsoft.com/fwlink/?LinkID=206977", - "githubUrl": "https://github.com/Microsoft/pxt-microbit", + "githubUrl": "https://github.com/Microsoft/pxt-calliope", "browserSupport": [ { "name": "unsupported", @@ -323,9 +320,5 @@ "path": "/static/mb/device/usb-windows-sendto.jpg" } ] - }, - "analytics": { - "userVoiceApiKey": "WEkkIGaj1WtJnSUF59iwaA", - "userVoiceForumId": 402381 } } diff --git a/sim/visuals/microbit.ts b/sim/visuals/microbit.ts index 95f4238e..1d3958ec 100644 --- a/sim/visuals/microbit.ts +++ b/sim/visuals/microbit.ts @@ -176,8 +176,8 @@ namespace pxsim.visuals { "P20, I2C - SDA", "GND", "GND", "+3v3", "GND" ]; - const MB_WIDTH = 500; - const MB_HEIGHT = 408; + const MB_WIDTH = 340; + const MB_HEIGHT = 312; export interface IBoardTheme { accent?: string; display?: string; @@ -196,15 +196,14 @@ namespace pxsim.visuals { lightLevelOff?: string; } - export var themes: IBoardTheme[] = ["#3ADCFE", "#FFD43A", "#3AFFB3", "#FF3A54"].map(accent => { + export var themes: IBoardTheme[] = ["#3ADCFE"].map(accent => { return { accent: accent, - display: "#000", pin: "#D4AF37", pinTouched: "#FFA500", pinActive: "#FF5500", ledOn: "#ff7f7f", - ledOff: "#202020", + ledOff: "#ccc", buttonOuter: "#979797", buttonUp: "#000", buttonDown: "#FFA500", @@ -232,10 +231,6 @@ namespace pxsim.visuals { private defs: SVGDefsElement; private g: SVGGElement; - private logos: SVGElement[]; - private head: SVGGElement; private headInitialized = false; - private headText: SVGTextElement; - private display: SVGElement; private buttons: SVGElement[]; private buttonsOuter: SVGElement[]; private buttonABText: SVGTextElement; @@ -307,14 +302,12 @@ namespace pxsim.visuals { private updateTheme() { let theme = this.props.theme; - svg.fill(this.display, theme.display); svg.fills(this.leds, theme.ledOn); svg.fills(this.ledsOuter, theme.ledOff); svg.fills(this.buttonsOuter.slice(0, 2), theme.buttonOuter); svg.fills(this.buttons.slice(0, 2), theme.buttonUp); svg.fill(this.buttonsOuter[2], theme.virtualButtonOuter); svg.fill(this.buttons[2], theme.virtualButtonUp); - svg.fills(this.logos, theme.accent); if (this.shakeButton) svg.fill(this.shakeButton, theme.virtualButtonUp); this.pinGradients.forEach(lg => svg.setGradientColors(lg, theme.pin, theme.pinActive)); @@ -450,6 +443,7 @@ namespace pxsim.visuals { let yc = 75; let state = this.board; if (!state || !state.compassState.usesHeading) return; + /* if (!this.headInitialized) { let p = this.head.firstChild.nextSibling as SVGPathElement; p.setAttribute("d", "m269.9,50.134647l0,0l-39.5,0l0,0c-14.1,0.1 -24.6,10.7 -24.6,24.8c0,13.9 10.4,24.4 24.3,24.7l0,0l39.6,0c14.2,0 40.36034,-22.97069 40.36034,-24.85394c0,-1.88326 -26.06034,-24.54606 -40.16034,-24.64606m-0.2,39l0,0l-39.3,0c-7.7,-0.1 -14,-6.4 -14,-14.2c0,-7.8 6.4,-14.2 14.2,-14.2l39.1,0c7.8,0 14.2,6.4 14.2,14.2c0,7.9 -6.4,14.2 -14.2,14.2l0,0l0,0z"); @@ -470,7 +464,7 @@ namespace pxsim.visuals { if (txt != this.headText.textContent) { svg.rotateElement(this.head, xc, yc, state.compassState.heading + 180); this.headText.textContent = txt; - } + } */ } private lastFlashTime: number = 0; @@ -563,6 +557,141 @@ namespace pxsim.visuals { private buildDom() { this.element = svg.elt("svg") + this.element.innerHTML = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `; svg.hydrate(this.element, { "version": "1.0", "viewBox": `0 0 ${MB_WIDTH} ${MB_HEIGHT}`, @@ -585,41 +714,22 @@ namespace pxsim.visuals { let merge = svg.child(glow, "feMerge", {}); for (let i = 0; i < 3; ++i) svg.child(merge, "feMergeNode", { in: "glow" }) - // outline - svg.path(this.g, "sim-board", "M498,31.9C498,14.3,483.7,0,466.1,0H31.9C14.3,0,0,14.3,0,31.9v342.2C0,391.7,14.3,406,31.9,406h434.2c17.6,0,31.9-14.3,31.9-31.9V31.9z M14.3,206.7c-2.7,0-4.8-2.2-4.8-4.8c0-2.7,2.2-4.8,4.8-4.8c2.7,0,4.8,2.2,4.8,4.8C19.2,204.6,17,206.7,14.3,206.7z M486.2,206.7c-2.7,0-4.8-2.2-4.8-4.8c0-2.72.2-4.8,4.8-4.8c2.7,0,4.8,2.2,4.8,4.8C491,204.6,488.8,206.7,486.2,206.7z"); - - // script background - this.display = svg.path(this.g, "sim-display", "M333.8,310.3H165.9c-8.3,0-15-6.7-15-15V127.5c0-8.3,6.7-15,15-15h167.8c8.3,0,15,6.7,15,15v167.8C348.8,303.6,342.1,310.3,333.8,310.3z"); - - this.logos = []; - this.logos.push(svg.child(this.g, "polygon", { class: "sim-theme", points: "115,56.7 173.1,0 115,0" })); - this.logos.push(svg.path(this.g, "sim-theme", "M114.2,0H25.9C12.1,2.1,0,13.3,0,27.7v83.9L114.2,0z")); - this.logos.push(svg.child(this.g, "polygon", { class: "sim-theme", points: "173,27.9 202.5,0 173,0" })); - this.logos.push(svg.child(this.g, "polygon", { class: "sim-theme", points: "54.1,242.4 54.1,274.1 22.4,274.1" })); - this.logos.push(svg.child(this.g, "polygon", { class: "sim-theme", points: "446.2,164.6 446.2,132.8 477.9,132.8" })); - // leds this.leds = []; this.ledsOuter = []; - let left = 154, top = 113, ledoffw = 46, ledoffh = 44; + const left = 138, top = 89, ledoffw = 15, ledoffh = 14.5; + const ledw = 5; + const ledh = 10; for (let i = 0; i < 5; ++i) { let ledtop = i * ledoffh + top; for (let j = 0; j < 5; ++j) { let ledleft = j * ledoffw + left; let k = i * 5 + j; - this.ledsOuter.push(svg.child(this.g, "rect", { class: "sim-led-back", x: ledleft, y: ledtop, width: 10, height: 20, rx: 2, ry: 2 })); - this.leds.push(svg.child(this.g, "rect", { class: "sim-led", x: ledleft - 2, y: ledtop - 2, width: 14, height: 24, rx: 3, ry: 3, title: `(${j},${i})` })); + this.ledsOuter.push(svg.child(this.g, "rect", { class: "sim-led-back", x: ledleft, y: ledtop, width: ledw, height: ledh, rx: 1, ry: 1 })); + this.leds.push(svg.child(this.g, "rect", { class: "sim-led", x: ledleft - 1, y: ledtop - 1, width: ledw + 2, height: ledh + 2, rx: 2, ry: 2, title: `(${j},${i})` })); } } - // head - this.head = svg.child(this.g, "g", {class: "sim-head"}); - svg.child(this.head, "circle", { cx: 258, cy: 75, r: 100, fill: "transparent" }) - this.logos.push(svg.path(this.head, "sim-theme sim-theme-glow", "M269.9,50.2L269.9,50.2l-39.5,0v0c-14.1,0.1-24.6,10.7-24.6,24.8c0,13.9,10.4,24.4,24.3,24.7v0h39.6c14.2,0,24.8-10.6,24.8-24.7C294.5,61,284,50.3,269.9,50.2 M269.7,89.2L269.7,89.2l-39.3,0c-7.7-0.1-14-6.4-14-14.2c0-7.8,6.4-14.2,14.2-14.2h39.1c7.8,0,14.2,6.4,14.2,14.2C283.9,82.9,277.5,89.2,269.7,89.2")); - this.logos.push(svg.path(this.head, "sim-theme sim-theme-glow", "M230.6,69.7c-2.9,0-5.3,2.4-5.3,5.3c0,2.9,2.4,5.3,5.3,5.3c2.9,0,5.3-2.4,5.3-5.3C235.9,72.1,233.5,69.7,230.6,69.7")); - this.logos.push(svg.path(this.head, "sim-theme sim-theme-glow", "M269.7,80.3c2.9,0,5.3-2.4,5.3-5.3c0-2.9-2.4-5.3-5.3-5.3c-2.9,0-5.3,2.4-5.3,5.3C264.4,77.9,266.8,80.3,269.7,80.3")); - this.headText = svg.child(this.g, "text", { x: 310, y: 100, class: "sim-text" }) - // https://www.microbit.co.uk/device/pins // P0, P1, P2 this.pins = [ @@ -638,7 +748,7 @@ namespace pxsim.visuals { this.pins.push(svg.path(this.g, "sim-pin", "M359.9,317.3c-12.8,0-22.1,10.3-23.1,23.1V406H383v-65.6C383,327.7,372.7,317.3,359.9,317.3z M360,360.1c-10.7,0-19.3-8.6-19.3-19.3c0-10.7,8.6-19.3,19.3-19.3c10.7,0,19.3,8.7,19.3,19.3C379.3,351.5,370.7,360.1,360,360.1z")); this.pins.push(svg.path(this.g, "sim-pin", "M458,317.6c-13,0-23.6,10.6-23.6,23.6c0,0,0,0.1,0,0.1h0V406H469c4.3,0,8.4-1,12.6-2.7v-60.7c0-0.4,0-0.9,0-1.3C481.6,328.1,471,317.6,458,317.6z M457.8,360.9c-10.7,0-19.3-8.6-19.3-19.3c0-10.7,8.6-19.3,19.3-19.3c10.7,0,19.3,8.7,19.3,19.3C477.1,352.2,468.4,360.9,457.8,360.9z")); - this.pins.forEach((p, i) => svg.hydrate(p, {title: pinTitles[i]})); + this.pins.forEach((p, i) => svg.hydrate(p, { title: pinTitles[i] })); this.pinGradients = this.pins.map((pin, i) => { let gid = "gradient-pin-" + i @@ -652,40 +762,32 @@ namespace pxsim.visuals { this.buttonsOuter = []; this.buttons = []; const outerBtn = (left: number, top: number) => { - const btnr = 4; - const btnw = 56.2; - const btnn = 6; - const btnnm = 10 - let btng = svg.child(this.g, "g", {class: "sim-button-group"}); + const btnr = 3; + const btnw = 21.71; + const btnn = 1; + const btnnm = 1; + const btnb = 5; + let btng = svg.child(this.g, "g", { class: "sim-button-group" }); this.buttonsOuter.push(btng); svg.child(btng, "rect", { class: "sim-button-outer", x: left, y: top, rx: btnr, ry: btnr, width: btnw, height: btnw }); svg.child(btng, "circle", { class: "sim-button-nut", cx: left + btnnm, cy: top + btnnm, r: btnn }); svg.child(btng, "circle", { class: "sim-button-nut", cx: left + btnnm, cy: top + btnw - btnnm, r: btnn }); svg.child(btng, "circle", { class: "sim-button-nut", cx: left + btnw - btnnm, cy: top + btnw - btnnm, r: btnn }); svg.child(btng, "circle", { class: "sim-button-nut", cx: left + btnw - btnnm, cy: top + btnnm, r: btnn }); + + this.buttons.push(svg.child(btng, "circle", { + class: "sim-button", + cx: left + btnw / 2, + cy: top + btnw / 2, + r: btnb + })); } - outerBtn(25.9, 176.4); - this.buttons.push(svg.path(this.g, "sim-button", "M69.7,203.5c0,8.7-7,15.7-15.7,15.7s-15.7-7-15.7-15.7c0-8.7,7-15.7,15.7-15.7S69.7,194.9,69.7,203.5")); - outerBtn(418.1, 176.4); - this.buttons.push(svg.path(this.g, "sim-button", "M461.9,203.5c0,8.7-7,15.7-15.7,15.7c-8.7,0-15.7-7-15.7-15.7c0-8.7,7-15.7,15.7-15.7C454.9,187.8,461.9,194.9,461.9,203.5")); - outerBtn(417, 250); - this.buttons.push(svg.child(this.g, "circle", { class: "sim-button", cx: 446, cy: 278, r: 16.5 })); + outerBtn(83.61, 96.8); + outerBtn(236.66, 96.8); + outerBtn(108, 136); (this.buttonsOuter[2]).style.visibility = "hidden"; (this.buttons[2]).style.visibility = "hidden"; - - svg.path(this.g, "sim-label", "M35.7,376.4c0-2.8,2.1-5.1,5.5-5.1c3.3,0,5.5,2.4,5.5,5.1v4.7c0,2.8-2.2,5.1-5.5,5.1c-3.3,0-5.5-2.4-5.5-5.1V376.4zM43.3,376.4c0-1.3-0.8-2.3-2.2-2.3c-1.3,0-2.1,1.1-2.1,2.3v4.7c0,1.2,0.8,2.3,2.1,2.3c1.3,0,2.2-1.1,2.2-2.3V376.4z"); - svg.path(this.g, "sim-label", "M136.2,374.1c2.8,0,3.4-0.8,3.4-2.5h2.9v14.3h-3.4v-9.5h-3V374.1z"); - svg.path(this.g, "sim-label", "M248.6,378.5c1.7-1,3-1.7,3-3.1c0-1.1-0.7-1.6-1.6-1.6c-1,0-1.8,0.6-1.8,2.1h-3.3c0-2.6,1.8-4.6,5.1-4.6c2.6,0,4.9,1.3,4.9,4.3c0,2.4-2.3,3.9-3.8,4.7c-2,1.3-2.5,1.8-2.5,2.9h6.1v2.7h-10C244.8,381.2,246.4,379.9,248.6,378.5z"); - - svg.path(this.g, "sim-button-label", "M48.1,270.9l-0.6-1.7h-5.1l-0.6,1.7h-3.5l5.1-14.3h3.1l5.2,14.3H48.1z M45,260.7l-1.8,5.9h3.5L45,260.7z"); - svg.path(this.g, "sim-button-label", "M449.1,135.8h5.9c3.9,0,4.7,2.4,4.7,3.9c0,1.8-1.4,2.9-2.5,3.2c0.9,0,2.6,1.1,2.6,3.3c0,1.5-0.8,4-4.7,4h-6V135.8zM454.4,141.7c1.6,0,2-1,2-1.7c0-0.6-0.3-1.7-2-1.7h-2v3.4H454.4z M452.4,144.1v3.5h2.1c1.6,0,2-1,2-1.8c0-0.7-0.4-1.8-2-1.8H452.4z") - - svg.path(this.g, "sim-label", "M352.1,381.1c0,1.6,0.9,2.5,2.2,2.5c1.2,0,1.9-0.9,1.9-1.9c0-1.2-0.6-2-2.1-2h-1.3v-2.6h1.3c1.5,0,1.9-0.7,1.9-1.8c0-1.1-0.7-1.6-1.6-1.6c-1.4,0-1.8,0.8-1.8,2.1h-3.3c0-2.4,1.5-4.6,5.1-4.6c2.6,0,5,1.3,5,4c0,1.6-1,2.8-2.1,3.2c1.3,0.5,2.3,1.6,2.3,3.5c0,2.7-2.4,4.3-5.2,4.3c-3.5,0-5.5-2.1-5.5-5.1H352.1z") - svg.path(this.g, "sim-label", "M368.5,385.9h-3.1l-5.1-14.3h3.5l3.1,10.1l3.1-10.1h3.6L368.5,385.9z") - svg.path(this.g, "sim-label", "M444.4,378.3h7.4v2.5h-1.5c-0.6,3.3-3,5.5-7.1,5.5c-4.8,0-7.5-3.5-7.5-7.5c0-3.9,2.8-7.5,7.5-7.5c3.8,0,6.4,2.3,6.6,5h-3.5c-0.2-1.1-1.4-2.2-3.1-2.2c-2.7,0-4.1,2.3-4.1,4.7c0,2.5,1.4,4.7,4.4,4.7c2,0,3.2-1.2,3.4-2.7h-2.5V378.3z") - svg.path(this.g, "sim-label", "M461.4,380.9v-9.3h3.3v14.3h-3.5l-5.2-9.2v9.2h-3.3v-14.3h3.5L461.4,380.9z") - svg.path(this.g, "sim-label", "M472.7,371.6c4.8,0,7.5,3.5,7.5,7.2s-2.7,7.2-7.5,7.2h-5.3v-14.3H472.7z M470.8,374.4v8.6h1.8c2.7,0,4.2-2.1,4.2-4.3s-1.6-4.3-4.2-4.3H470.8z") } private attachEvents() {