From ba4c34a70f6b57970fbdbf5bb65e33e7fd79fa04 Mon Sep 17 00:00:00 2001 From: David Capello Date: Thu, 23 Jul 2015 11:13:43 -0300 Subject: [PATCH] Add options to sort the palette by RGBA channels --- src/app/ui/color_bar.cpp | 13 +++++++++++++ src/doc/sort_palette.cpp | 5 +++++ src/doc/sort_palette.h | 1 + 3 files changed, 19 insertions(+) diff --git a/src/app/ui/color_bar.cpp b/src/app/ui/color_bar.cpp index a67a059b0..27ca869dd 100644 --- a/src/app/ui/color_bar.cpp +++ b/src/app/ui/color_bar.cpp @@ -348,6 +348,10 @@ void ColorBar::onPaletteButtonClick() sat("Sort by Saturation"), bri("Sort by Brightness"), lum("Sort by Luminance"), + red("Sort by Red"), + grn("Sort by Green"), + blu("Sort by Blue"), + alp("Sort by Alpha"), asc("Ascending"), des("Descending"); menu.addChild(&rev); @@ -358,6 +362,11 @@ void ColorBar::onPaletteButtonClick() menu.addChild(&bri); menu.addChild(&lum); menu.addChild(new ui::MenuSeparator); + menu.addChild(&red); + menu.addChild(&grn); + menu.addChild(&blu); + menu.addChild(&alp); + menu.addChild(new ui::MenuSeparator); menu.addChild(&asc); menu.addChild(&des); @@ -370,6 +379,10 @@ void ColorBar::onPaletteButtonClick() sat.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::SATURATION)); bri.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::VALUE)); lum.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::LUMA)); + red.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::RED)); + grn.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::GREEN)); + blu.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::BLUE)); + alp.Click.connect(Bind(&ColorBar::onSortBy, this, SortPaletteBy::ALPHA)); asc.Click.connect(Bind(&ColorBar::setAscending, this, true)); des.Click.connect(Bind(&ColorBar::setAscending, this, false)); diff --git a/src/doc/sort_palette.cpp b/src/doc/sort_palette.cpp index 6039eedb9..b4c529295 100644 --- a/src/doc/sort_palette.cpp +++ b/src/doc/sort_palette.cpp @@ -61,6 +61,11 @@ struct PalEntryWithIndexPredicate { value2 = rgba_getb(c2); break; + case SortPaletteBy::ALPHA: + value1 = rgba_geta(c1); + value2 = rgba_geta(c2); + break; + case SortPaletteBy::HUE: case SortPaletteBy::SATURATION: case SortPaletteBy::VALUE: { diff --git a/src/doc/sort_palette.h b/src/doc/sort_palette.h index fce22f25f..73fdec73c 100644 --- a/src/doc/sort_palette.h +++ b/src/doc/sort_palette.h @@ -17,6 +17,7 @@ namespace doc { RED, GREEN, BLUE, + ALPHA, HUE, SATURATION, VALUE,