ngx-chiptan
Version:
Angular component to renders chiptan flicker code.
1 lines • 15.2 kB
Source Map (JSON)
{"version":3,"file":"ngx-chiptan.mjs","sources":["../../../projects/ngx-chiptan/src/lib/flicker.ts","../../../projects/ngx-chiptan/src/lib/ngx-chiptan.component.ts","../../../projects/ngx-chiptan/src/lib/ngx-chiptan.module.ts","../../../projects/ngx-chiptan/src/public-api.ts","../../../projects/ngx-chiptan/src/ngx-chiptan.ts"],"sourcesContent":["\r\n/*\r\nCopyright (c) 2010–2012\r\n Lars-Dominik Braun <lars@6xq.net>\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE.\r\n*/\r\n\r\nexport function flickerCode(newcode) {\r\n let code = newcode.toUpperCase().replace(/[^a-fA-F0-9]/g, '');\r\n\r\n const toHex = (n, minlen) => {\r\n let s = n.toString(16).toUpperCase();\r\n while (s.length < minlen) {\r\n s = '0' + s;\r\n }\r\n\r\n return s;\r\n }\r\n\r\n const quersumme = (n) => {\r\n let q = 0;\r\n while (n != 0) {\r\n q += n % 10;\r\n n = Math.floor(n / 10);\r\n }\r\n\r\n return q;\r\n }\r\n\r\n const getPayload = () => {\r\n let i = 0;\r\n let payload = '';\r\n\r\n let len = parseInt(code.slice(0, 2), 16);\r\n i += 2;\r\n while (i < code.length - 2) {\r\n i += 1;\r\n len = parseInt(code.slice(i, i + 1), 16);\r\n i += 1;\r\n payload += code.slice(i, i+ len * 2);\r\n i += len * 2;\r\n }\r\n\r\n return payload;\r\n }\r\n\r\n const checksum = () => {\r\n const len = code.length / 2 - 1;\r\n code = toHex(len, 2) + code.substr(2);\r\n\r\n const luhndata = getPayload();\r\n let luhnsum = 0;\r\n for (let i = 0; i < luhndata.length; i += 2) {\r\n luhnsum += (1 * parseInt(luhndata[i], 16)) + quersumme(2 * parseInt(luhndata[i + 1], 16));\r\n }\r\n luhnsum = (10 - (luhnsum % 10)) % 10;\r\n code = code.substr(0, code.length - 2) + toHex(luhnsum, 1) + code.substr(code.length - 1);\r\n\r\n let xorsum = 0;\r\n for (let i = 0; i < code.length - 2; i++) {\r\n xorsum ^= parseInt(code[i], 16);\r\n }\r\n\r\n code = code.substr(0, code.length-1) + toHex(xorsum, 1);\r\n }\r\n\r\n this.getCode = () => code;\r\n\r\n checksum();\r\n}\r\n\r\nexport function flickerCanvas(width, height, bgColor, barColor) {\r\n let code, halfbyteid, clock, bitarray, canvas, ctx;\r\n\r\n this.reset = () => {\r\n halfbyteid = 0;\r\n clock = 1;\r\n };\r\n\r\n const setup = () => {\r\n const bits = new Object();\r\n bits['0'] = [0, 0, 0, 0, 0];\r\n bits['1'] = [0, 1, 0, 0, 0];\r\n bits['2'] = [0, 0, 1, 0, 0];\r\n bits['3'] = [0, 1, 1, 0, 0];\r\n bits['4'] = [0, 0, 0, 1, 0];\r\n bits['5'] = [0, 1, 0, 1, 0];\r\n bits['6'] = [0, 0, 1, 1, 0];\r\n bits['7'] = [0, 1, 1, 1, 0];\r\n bits['8'] = [0, 0, 0, 0, 1];\r\n bits['9'] = [0, 1, 0, 0, 1];\r\n bits['A'] = [0, 0, 1, 0, 1];\r\n bits['B'] = [0, 1, 1, 0, 1];\r\n bits['C'] = [0, 0, 0, 1, 1];\r\n bits['D'] = [0, 1, 0, 1, 1];\r\n bits['E'] = [0, 0, 1, 1, 1];\r\n bits['F'] = [0, 1, 1, 1, 1];\r\n\r\n code = '0FFF' + code;\r\n\r\n bitarray = [];\r\n for (let i = 0; i < code.length; i += 2) {\r\n bitarray[i] = bits[code[i+1]];\r\n bitarray[i+1] = bits[code[i]];\r\n }\r\n };\r\n\r\n const createCanvas = (width, height, bgColor, barColor) => {\r\n canvas = document.createElement('canvas');\r\n canvas.width = width;\r\n canvas.height = height;\r\n if (canvas.getContext) {\r\n ctx = canvas.getContext('2d');\r\n }\r\n\r\n ctx.fillStyle = bgColor;\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n this.step = () => {\r\n const margin = 7;\r\n const barwidth = canvas.width / 5;\r\n\r\n bitarray[halfbyteid][0] = clock;\r\n\r\n for (let i = 0; i < 5; i++) {\r\n if (bitarray[halfbyteid][i] == 1) {\r\n ctx.fillStyle = barColor;\r\n } else {\r\n ctx.fillStyle = bgColor;\r\n }\r\n ctx.fillRect(i * barwidth + margin, margin, barwidth - 2 * margin, canvas.height - 2 * margin);\r\n }\r\n\r\n clock--;\r\n if (clock < 0) {\r\n clock = 1;\r\n\r\n halfbyteid++;\r\n if (halfbyteid >= bitarray.length) {\r\n halfbyteid = 0;\r\n }\r\n\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n this.getCanvas = () => canvas;\r\n\r\n this.setCode = newcode => {\r\n code = newcode.getCode();\r\n setup();\r\n this.reset();\r\n }\r\n\r\n createCanvas(width, height, bgColor, barColor);\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { flickerCanvas, flickerCode } from './flicker';\n\n@Component({\n selector: 'ngx-chiptan',\n template: `\n <div id='flickercontainer'>\n </div>\n `,\n})\nexport class NgxChiptanComponent implements OnInit {\n\n @Input()\n code: string | undefined;\n\n @Input()\n width: string;\n\n @Input()\n height: string;\n\n @Input()\n bgColor: string;\n\n @Input()\n barColor: string;\n\n private state: any;\n private interval: any;\n\n ngOnInit() {\n if (!this.code) { return; }\n\n this.state = {\n canvas: new flickerCanvas(this.width, this.height, this.bgColor, this.barColor),\n code: new flickerCode(this.code),\n };\n\n const { canvas, code } = this.state;\n\n document\n .getElementById('flickercontainer')\n .appendChild(canvas.getCanvas());\n\n canvas.setCode(code);\n\n this.startFlicker();\n }\n\n startFlicker() {\n this.interval = setInterval(this.step.bind(this), 50);\n }\n\n stopFlicker() {\n clearInterval(this.interval);\n }\n\n step() {\n this.state.canvas.step();\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { NgxChiptanComponent } from './ngx-chiptan.component';\r\n\r\n@NgModule({\r\n declarations: [NgxChiptanComponent],\r\n exports: [NgxChiptanComponent]\r\n})\r\nexport class NgxChiptanModule { }\r\n","/*\r\n * Public API Surface of ngx-chiptan\r\n */\r\n\r\nexport * from './lib/ngx-chiptan.component';\r\nexport * from './lib/ngx-chiptan.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}