private initColorPaletteTextures()

in web/src/app/timeline/canvas/shared_gl_resource.ts [226:334]


  private initColorPaletteTextures() {
    // event color palette
    const [eventColorPaletteCanvas, ctx2dForEvent] =
      this.generateCanvasForTextureSource(logTypes.length * 2, 1, false);
    eventColorPaletteCanvas.style.imageRendering = 'pixelated';

    for (let i = 0; i < logTypes.length; i++) {
      ctx2dForEvent.fillStyle = logTypeColors[logTypes[i]];
      ctx2dForEvent.fillRect(i * 2 + 0, 0, 1, 1);
      ctx2dForEvent.fillStyle = logTypeDarkColors[logTypes[i]];
      ctx2dForEvent.fillRect(i * 2 + 1, 0, 1, 1);
    }

    this.logTypeColorPaletteTexture = this.glMust(this.gl.createTexture());
    this.gl.activeTexture(this.gl.TEXTURE1);
    this.gl.bindTexture(this.gl.TEXTURE_2D, this.logTypeColorPaletteTexture);
    this.gl.texImage2D(
      this.gl.TEXTURE_2D,
      0,
      this.gl.RGBA,
      this.gl.RGBA,
      this.gl.UNSIGNED_BYTE,
      eventColorPaletteCanvas,
    );
    this.gl.texParameteri(
      this.gl.TEXTURE_2D,
      this.gl.TEXTURE_MIN_FILTER,
      this.gl.NEAREST,
    );
    this.gl.texParameteri(
      this.gl.TEXTURE_2D,
      this.gl.TEXTURE_MAG_FILTER,
      this.gl.NEAREST,
    );

    // revison state color palette
    const [revisionColorPaletteCanvas, ctx2dForRevision] =
      this.generateCanvasForTextureSource(revisionStates.length * 2, 1, false);
    revisionColorPaletteCanvas.style.imageRendering = 'pixelated';

    for (let i = 0; i < revisionStates.length; i++) {
      ctx2dForRevision.fillStyle = revisionStatecolors[revisionStates[i]];
      ctx2dForRevision.fillRect(i * 2 + 0, 0, 1, 1);
      ctx2dForRevision.fillStyle = revisionStateDarkColors[revisionStates[i]];
      ctx2dForRevision.fillRect(i * 2 + 1, 0, 1, 1);
    }

    this.revisionStateColorPaletteTexture = this.glMust(
      this.gl.createTexture(),
    );
    this.gl.activeTexture(this.gl.TEXTURE2);
    this.gl.bindTexture(
      this.gl.TEXTURE_2D,
      this.revisionStateColorPaletteTexture,
    );
    this.gl.texImage2D(
      this.gl.TEXTURE_2D,
      0,
      this.gl.RGBA,
      this.gl.RGBA,
      this.gl.UNSIGNED_BYTE,
      revisionColorPaletteCanvas,
    );
    this.gl.texParameteri(
      this.gl.TEXTURE_2D,
      this.gl.TEXTURE_MIN_FILTER,
      this.gl.NEAREST,
    );
    this.gl.texParameteri(
      this.gl.TEXTURE_2D,
      this.gl.TEXTURE_MAG_FILTER,
      this.gl.NEAREST,
    );

    // log severity color palette
    const [logSeverityColorPaletteCanvas, ctx2dForLogSeverity] =
      this.generateCanvasForTextureSource(severities.length, 2, false);
    logSeverityColorPaletteCanvas.style.imageRendering = 'pixelated';
    for (let i = 0; i < severities.length; i++) {
      ctx2dForLogSeverity.fillStyle = severityColors[severities[i]];
      ctx2dForLogSeverity.fillRect(i, 0, 1, 1);
      ctx2dForLogSeverity.fillStyle = severityBorderColors[severities[i]];
      ctx2dForLogSeverity.fillRect(i, 1, 1, 1);
    }
    this.logSeverityColorPaletteTexture = this.glMust(this.gl.createTexture());
    this.gl.activeTexture(this.gl.TEXTURE3);
    this.gl.bindTexture(
      this.gl.TEXTURE_2D,
      this.logSeverityColorPaletteTexture,
    );
    this.gl.texImage2D(
      this.gl.TEXTURE_2D,
      0,
      this.gl.RGBA,
      this.gl.RGBA,
      this.gl.UNSIGNED_BYTE,
      logSeverityColorPaletteCanvas,
    );
    this.gl.texParameteri(
      this.gl.TEXTURE_2D,
      this.gl.TEXTURE_MIN_FILTER,
      this.gl.NEAREST,
    );
    this.gl.texParameteri(
      this.gl.TEXTURE_2D,
      this.gl.TEXTURE_MAG_FILTER,
      this.gl.NEAREST,
    );
  }