Robot Monitor
// Copyright (C) 2026 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick3D.Helpers
ProceduralTextureData {
enum ColorScheme {
Grayscale,
CostmapHot,
CostmapCool,
Jet
}
property int scheme: GridPalette.Grayscale
readonly property var palettes: [// LUTs
new Uint32Array([0xffffffff, 0xfffcfcfc, 0xfff9f9f9, 0xfff7f7f7, 0xfff4f4f4, 0xfff2f2f2, 0xffefefef, 0xffededed, 0xffeaeaea, 0xffe8e8e8, 0xffe5e5e5, 0xffe2e2e2, 0xffe0e0e0, 0xffdddddd, 0xffdbdbdb, 0xffd8d8d8, 0xffd6d6d6, 0xffd3d3d3, 0xffd1d1d1, 0xffcecece, 0xffcccccc, 0xffc9c9c9, 0xffc6c6c6, 0xffc4c4c4, 0xffc1c1c1, 0xffbfbfbf, 0xffbcbcbc, 0xffbababa, 0xffb7b7b7, 0xffb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xffadadad, 0xffaaaaaa, 0xffa8a8a8, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9e9e9e, 0xff9b9b9b, 0xff999999, 0xff969696, 0xff939393, 0xff919191, 0xff8e8e8e, 0xff8c8c8c, 0xff898989, 0xff878787, 0xff848484, 0xff828282, 0xff7f7f7f, 0xff7c7c7c, 0xff7a7a7a, 0xff777777, 0xff757575, 0xff727272, 0xff707070, 0xff6d6d6d, 0xff6b6b6b, 0xff686868, 0xff666666, 0xff636363, 0xff606060, 0xff5e5e5e, 0xff5b5b5b, 0xff595959, 0xff565656, 0xff545454, 0xff515151, 0xff4f4f4f, 0xff4c4c4c, 0xff494949, 0xff474747, 0xff444444, 0xff424242, 0xff3f3f3f, 0xff3d3d3d, 0xff3a3a3a, 0xff383838, 0xff353535, 0xff323232, 0xff303030, 0xff2d2d2d, 0xff2b2b2b, 0xff282828, 0xff262626, 0xff232323, 0xff212121, 0xff1e1e1e, 0xff1c1c1c, 0xff191919, 0xff161616, 0xff141414, 0xff111111, 0xff0f0f0f, 0xff0c0c0c, 0xff0a0a0a, 0xff070707, 0xff050505, 0xff020202, 0xff000000, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080]), // Grayscale
new Uint32Array([0x00000000, 0xff000505, 0xff000a0a, 0xff000f0f, 0xff001414, 0xff001919, 0xff001e1e, 0xff002323, 0xff002828, 0xff002d2d, 0xff003333, 0xff003838, 0xff003d3d, 0xff004242, 0xff004747, 0xff004c4c, 0xff005151, 0xff005656, 0xff005b5b, 0xff006060, 0xff006666, 0xff006b6b, 0xff007070, 0xff007575, 0xff007a7a, 0xff007f7f, 0xff008484, 0xff008989, 0xff008e8e, 0xff009393, 0xff009999, 0xff009e9e, 0xff00a3a3, 0xff00a8a8, 0xff00adad, 0xff00b2b2, 0xff00b7b7, 0xff00bcbc, 0xff00c1c1, 0xff00c6c6, 0xff00cccc, 0xff00d1d1, 0xff00d6d6, 0xff00dbdb, 0xff00e0e0, 0xff00e5e5, 0xff00eaea, 0xff00efef, 0xff00f4f4, 0xff00f9f9, 0xff00ffff, 0xff00f9ff, 0xff00f4ff, 0xff00efff, 0xff00eaff, 0xff00e5ff, 0xff00e0ff, 0xff00dbff, 0xff00d6ff, 0xff00d1ff, 0xff00ccff, 0xff00c6ff, 0xff00c1ff, 0xff00bcff, 0xff00b7ff, 0xff00b2ff, 0xff00adff, 0xff00a8ff, 0xff00a3ff, 0xff009eff, 0xff0099ff, 0xff0093ff, 0xff008eff, 0xff0089ff, 0xff0084ff, 0xff007fff, 0xff007aff, 0xff0075ff, 0xff0070ff, 0xff006bff, 0xff0065ff, 0xff0060ff, 0xff005bff, 0xff0056ff, 0xff0051ff, 0xff004cff, 0xff0047ff, 0xff0042ff, 0xff003dff, 0xff0038ff, 0xff0032ff, 0xff002dff, 0xff0028ff, 0xff0023ff, 0xff001eff, 0xff0019ff, 0xff0014ff, 0xff000fff, 0xff000aff, 0xff0005ff, 0xff0000ff, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080]), // CostmapHot
new Uint32Array([0x00000000, 0xff020200, 0xff050500, 0xff070700, 0xff0a0a00, 0xff0c0c00, 0xff0f0f00, 0xff111100, 0xff141400, 0xff161600, 0xff191900, 0xff1c1c00, 0xff1e1e00, 0xff212100, 0xff232300, 0xff262600, 0xff282800, 0xff2b2b00, 0xff2d2d00, 0xff303000, 0xff333300, 0xff353500, 0xff383800, 0xff3a3a00, 0xff3d3d00, 0xff3f3f00, 0xff424200, 0xff444400, 0xff474700, 0xff494900, 0xff4c4c00, 0xff4f4f00, 0xff515100, 0xff545400, 0xff565600, 0xff595900, 0xff5b5b00, 0xff5e5e00, 0xff606000, 0xff636300, 0xff666600, 0xff686800, 0xff6b6b00, 0xff6d6d00, 0xff707000, 0xff727200, 0xff757500, 0xff777700, 0xff7a7a00, 0xff7c7c00, 0xff7f7f00, 0xff828200, 0xff848400, 0xff878700, 0xff898900, 0xff8c8c00, 0xff8e8e00, 0xff919100, 0xff939300, 0xff969600, 0xff999900, 0xff9b9b00, 0xff9e9e00, 0xffa0a000, 0xffa3a300, 0xffa5a500, 0xffa8a800, 0xffaaaa00, 0xffadad00, 0xffafaf00, 0xffb2b200, 0xffb5b500, 0xffb7b700, 0xffbaba00, 0xffbcbc00, 0xffbfbf00, 0xffc1c100, 0xffc4c400, 0xffc6c600, 0xffc9c900, 0xffcccc00, 0xffcece00, 0xffd1d100, 0xffd3d300, 0xffd6d600, 0xffd8d800, 0xffdbdb00, 0xffdddd00, 0xffe0e000, 0xffe2e200, 0xffe5e500, 0xffe8e800, 0xffeaea00, 0xffeded00, 0xffefef00, 0xfff2f200, 0xfff4f400, 0xfff7f700, 0xfff9f900, 0xfffcfc00, 0xffffff00, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080]), // CostmapCool
new Uint32Array([0xffff0000, 0xffff0a00, 0xffff1400, 0xffff1e00, 0xffff2800, 0xffff3300, 0xffff3d00, 0xffff4700, 0xffff5100, 0xffff5b00, 0xffff6600, 0xffff7000, 0xffff7a00, 0xffff8400, 0xffff8e00, 0xffff9900, 0xffffa300, 0xffffad00, 0xffffb700, 0xffffc100, 0xffffcc00, 0xffffd600, 0xffffe000, 0xffffea00, 0xfffff400, 0xffffff00, 0xfff4ff00, 0xffeaff00, 0xffe0ff00, 0xffd6ff00, 0xffccff00, 0xffc1ff00, 0xffb7ff00, 0xffadff00, 0xffa3ff00, 0xff99ff00, 0xff8eff00, 0xff84ff00, 0xff7aff00, 0xff70ff00, 0xff65ff00, 0xff5bff00, 0xff51ff00, 0xff47ff00, 0xff3dff00, 0xff32ff00, 0xff28ff00, 0xff1eff00, 0xff14ff00, 0xff0aff00, 0xff00ff00, 0xff00ff0a, 0xff00ff14, 0xff00ff1e, 0xff00ff28, 0xff00ff33, 0xff00ff3d, 0xff00ff47, 0xff00ff51, 0xff00ff5b, 0xff00ff65, 0xff00ff70, 0xff00ff7a, 0xff00ff84, 0xff00ff8e, 0xff00ff99, 0xff00ffa3, 0xff00ffad, 0xff00ffb7, 0xff00ffc1, 0xff00ffcb, 0xff00ffd6, 0xff00ffe0, 0xff00ffea, 0xff00fff4, 0xff00ffff, 0xff00f4ff, 0xff00eaff, 0xff00e0ff, 0xff00d6ff, 0xff00cbff, 0xff00c1ff, 0xff00b7ff, 0xff00adff, 0xff00a3ff, 0xff0099ff, 0xff008eff, 0xff0084ff, 0xff007aff, 0xff0070ff, 0xff0065ff, 0xff005bff, 0xff0051ff, 0xff0047ff, 0xff003dff, 0xff0033ff, 0xff0028ff, 0xff001eff, 0xff0014ff, 0xff000aff, 0xff0000ff, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080, 0xcc808080]) // Jet
]
width: 256
height: 1
format: ProceduralTextureData.RGBA8
textureData: palettes[scheme].buffer
}