From a884163de1f1ce13cb61b9c61b5c8a10c78d4a4c Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Thu, 15 Oct 2026 14:01:26 +0200 Subject: [PATCH 1/3] [asimage] fix bug in rainbow palette selection Target array has only 12 elements, but rainbow palette has only 10 points These 10 points should be copied from offset 1, first and last point will be overwritten (cherry picked from commit acc307780ad6ab50f1cd2b75e2c79245e4c1c7d1) --- graf2d/asimage/src/TASPaletteEditor.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/graf2d/asimage/src/TASPaletteEditor.cxx b/graf2d/asimage/src/TASPaletteEditor.cxx index 0ea09d1d6ce67..9ec49092ab65a 100644 --- a/graf2d/asimage/src/TASPaletteEditor.cxx +++ b/graf2d/asimage/src/TASPaletteEditor.cxx @@ -60,15 +60,15 @@ static const char *gFileTypes[] = { nullptr, nullptr }; -static UShort_t gRedRainbow[12] = { +static UShort_t gRedRainbow[10] = { 0x0000, 0x7000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0x7000, 0x8000, 0xffff }; -static UShort_t gGreenRainbow[12] = { +static UShort_t gGreenRainbow[10] = { 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x8000, 0xffff }; -static UShort_t gBlueRainbow[12] = { +static UShort_t gBlueRainbow[10] = { 0x0000, 0x7000, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0xffff }; @@ -686,9 +686,9 @@ void TASPaletteEditor::NewPalette(Long_t id) switch (id) { case 0: // rainbow - memcpy(newPalette->fColorRed + 1, gRedRainbow, 12 * sizeof(UShort_t)); - memcpy(newPalette->fColorGreen + 1, gGreenRainbow, 12 * sizeof(UShort_t)); - memcpy(newPalette->fColorBlue + 1, gBlueRainbow, 12 * sizeof(UShort_t)); + memcpy(newPalette->fColorRed + 1, gRedRainbow, 10 * sizeof(UShort_t)); + memcpy(newPalette->fColorGreen + 1, gGreenRainbow, 10 * sizeof(UShort_t)); + memcpy(newPalette->fColorBlue + 1, gBlueRainbow, 10 * sizeof(UShort_t)); break; case 1: // gray From 7a5d9d2e0c5772eff7bd7814d5686db1a9eaafab Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Fri, 16 Oct 2026 17:11:48 +0200 Subject: [PATCH 2/3] [asimage] provide size constant for rainbow palette Use it in assign methods Co-authored-by: ferdymercury (cherry picked from commit d30dd71437354db029af616bde97c1feb1f9b4df) --- graf2d/asimage/src/TASPaletteEditor.cxx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/graf2d/asimage/src/TASPaletteEditor.cxx b/graf2d/asimage/src/TASPaletteEditor.cxx index 9ec49092ab65a..1f8d1e44e9043 100644 --- a/graf2d/asimage/src/TASPaletteEditor.cxx +++ b/graf2d/asimage/src/TASPaletteEditor.cxx @@ -60,15 +60,17 @@ static const char *gFileTypes[] = { nullptr, nullptr }; -static UShort_t gRedRainbow[10] = { +constexpr size_t kNRainbowElems = 10; + +static UShort_t gRedRainbow[kNRainbowElems] = { 0x0000, 0x7000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0x7000, 0x8000, 0xffff }; -static UShort_t gGreenRainbow[10] = { +static UShort_t gGreenRainbow[kNRainbowElems] = { 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x8000, 0xffff }; -static UShort_t gBlueRainbow[10] = { +static UShort_t gBlueRainbow[kNRainbowElems] = { 0x0000, 0x7000, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0xa000, 0xffff }; @@ -686,9 +688,9 @@ void TASPaletteEditor::NewPalette(Long_t id) switch (id) { case 0: // rainbow - memcpy(newPalette->fColorRed + 1, gRedRainbow, 10 * sizeof(UShort_t)); - memcpy(newPalette->fColorGreen + 1, gGreenRainbow, 10 * sizeof(UShort_t)); - memcpy(newPalette->fColorBlue + 1, gBlueRainbow, 10 * sizeof(UShort_t)); + memcpy(newPalette->fColorRed + 1, gRedRainbow, kNRainbowElems * sizeof(UShort_t)); + memcpy(newPalette->fColorGreen + 1, gGreenRainbow, kNRainbowElems * sizeof(UShort_t)); + memcpy(newPalette->fColorBlue + 1, gBlueRainbow, kNRainbowElems * sizeof(UShort_t)); break; case 1: // gray From 5f675b71f0b44f59d98691db9e8d4672eb7c47b4 Mon Sep 17 00:00:00 2001 From: Sergey Linev Date: Mon, 19 Oct 2026 11:06:18 +0200 Subject: [PATCH 3/3] [asimage] use new constant in NewPalette New kNRainbowElems constant specify number of elements in array, palette should reserve 2 more points (cherry picked from commit 40115033408f723674c022cd10e7685f11f865ae) --- graf2d/asimage/src/TASPaletteEditor.cxx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/graf2d/asimage/src/TASPaletteEditor.cxx b/graf2d/asimage/src/TASPaletteEditor.cxx index 1f8d1e44e9043..51aa45e0ca874 100644 --- a/graf2d/asimage/src/TASPaletteEditor.cxx +++ b/graf2d/asimage/src/TASPaletteEditor.cxx @@ -673,13 +673,11 @@ void TASPaletteEditor::NewPalette(Long_t id) if (id == 5) // empty entry return; - TImagePalette *newPalette; - Double_t delta = fPalette->fPoints[fPalette->fNumPoints-2] - fPalette->fPoints[1]; - UInt_t numPt; - numPt = id == 0 ? 12 : 13; - newPalette = new TImagePalette(numPt); + UInt_t numPt = id == 0 ? kNRainbowElems + 2 : 13; + TImagePalette *newPalette = new TImagePalette(numPt); + Int_t pt; for (pt = 1; pt < Int_t(numPt - 1); pt++) { newPalette->fPoints[pt] = fPalette->fPoints[1] + (pt - 1) * delta / (numPt - 3);