GDAL
gdalalg_raster_rgb_to_palette.h
1/******************************************************************************
2 *
3 * Project: GDAL
4 * Purpose: gdal "raster rgb-to-palette" subcommand
5 * Author: Even Rouault <even dot rouault at spatialys.com>
6 *
7 ******************************************************************************
8 * Copyright (c) 2025, Even Rouault <even dot rouault at spatialys.com>
9 *
10 * SPDX-License-Identifier: MIT
11 ****************************************************************************/
12
13#ifndef GDALALG_RASTER_RGB_TO_PALETTE_INCLUDED
14#define GDALALG_RASTER_RGB_TO_PALETTE_INCLUDED
15
16#include "gdalalg_raster_pipeline.h"
17
19
20/************************************************************************/
21/* GDALRasterRGBToPaletteAlgorithm */
22/************************************************************************/
23
24class GDALRasterRGBToPaletteAlgorithm /* non final */
25 : public GDALRasterPipelineNonNativelyStreamingAlgorithm
26{
27 public:
28 static constexpr const char *NAME = "rgb-to-palette";
29 static constexpr const char *DESCRIPTION =
30 "Convert a RGB image into a pseudo-color / paletted image.";
31 static constexpr const char *HELP_URL =
32 "/programs/gdal_raster_rgb_to_palette.html";
33
34 explicit GDALRasterRGBToPaletteAlgorithm(bool standaloneStep = false);
35
36 private:
37 bool RunStep(GDALPipelineStepRunContext &ctxt) override;
38
39 int m_colorCount = 256;
40 std::string m_colorMap{};
41 int m_dstNoData = -1;
42 bool m_noDither = false;
43 int m_bitDepth = 5;
44};
45
46/************************************************************************/
47/* GDALRasterRGBToPaletteAlgorithmStandalone */
48/************************************************************************/
49
50class GDALRasterRGBToPaletteAlgorithmStandalone final
51 : public GDALRasterRGBToPaletteAlgorithm
52{
53 public:
54 GDALRasterRGBToPaletteAlgorithmStandalone()
55 : GDALRasterRGBToPaletteAlgorithm(/* standaloneStep = */ true)
56 {
57 }
58
59 ~GDALRasterRGBToPaletteAlgorithmStandalone() override;
60};
61
63
64#endif