customDraw() {
        this.state = this.inp1.value;
        var ctx = simulationArea.context;
        ctx.beginPath();
        ctx.strokeStyle = [colors["out_rect"], colors["stroke_alt"]][
            +(this.inp1.value === undefined)
        ];
        ctx.fillStyle = colors["fill"];
        ctx.lineWidth = correctWidth(3);
        const xx = this.x;
        const yy = this.y;

        rect2(
            ctx,
            -10 * this.bitWidth,
            -10,
            20 * this.bitWidth,
            20,
            xx,
            yy,
            "RIGHT"
        );
        if (
            (this.hover && !simulationArea.shiftDown) ||
            simulationArea.lastSelected === this ||
            simulationArea.multipleObjectSelections.contains(this)
        ) {
            ctx.fillStyle = colors["hover_select"];
        }

        ctx.fill();
        ctx.stroke();

        ctx.beginPath();
        ctx.font = "20px Raleway";
        ctx.fillStyle = colors["input_text"];
        ctx.textAlign = "center";
        let bin;
        if (this.state === undefined) {
            bin = "x".repeat(this.bitWidth);
        } else {
            bin = dec2bin(this.state, this.bitWidth);
        }

        for (let k = 0; k < this.bitWidth; k++) {
            fillText(
                ctx,
                bin[k],
                xx - 10 * this.bitWidth + 10 + k * 20,
                yy + 5
            );
        }
        ctx.fill();
    }
@memberof Output
function to draw element