{"id":19309673,"url":"https://github.com/jolars/qualpal","last_synced_at":"2026-01-29T12:02:41.876Z","repository":{"id":210645002,"uuid":"713100302","full_name":"jolars/qualpal","owner":"jolars","description":"Generate qualitative color palettes optimized for dinstictiveness","archived":false,"fork":false,"pushed_at":"2026-01-17T21:34:47.000Z","size":6338,"stargazers_count":21,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-18T07:59:53.147Z","etag":null,"topics":["cli","color-palette-generator","data-visualization"],"latest_commit_sha":null,"homepage":"https://jolars.github.io/qualpal/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jolars.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"jolars"}},"created_at":"2023-11-01T20:52:14.000Z","updated_at":"2026-01-17T21:34:45.000Z","dependencies_parsed_at":"2025-07-28T23:20:57.891Z","dependency_job_id":"7f2394aa-61db-4910-adec-a3a5b3bdc03f","html_url":"https://github.com/jolars/qualpal","commit_stats":null,"previous_names":["jolars/qualpal"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/jolars/qualpal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolars%2Fqualpal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolars%2Fqualpal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolars%2Fqualpal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolars%2Fqualpal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jolars","download_url":"https://codeload.github.com/jolars/qualpal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jolars%2Fqualpal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28877046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","color-palette-generator","data-visualization"],"created_at":"2024-11-10T00:20:14.463Z","updated_at":"2026-01-29T12:02:41.870Z","avatar_url":"https://github.com/jolars.png","language":"C++","funding_links":["https://github.com/sponsors/jolars"],"categories":[],"sub_categories":[],"readme":"# Qualpal \u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/jolars/qualpal/refs/heads/main/docs/images/logo.svg\" align=\"right\" width=\"139\"\u003e \u003cimg alt=\"The logo for Qualpal, which is a painting palette with five distinct colors.\" src=\"https://raw.githubusercontent.com/jolars/qualpal/refs/heads/main/docs/images/logo-dark.svg\" align=\"right\" width=\"139\"\u003e \u003c/picture\u003e\n\n[![Build Status](https://github.com/jolars/qualpal/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/jolars/qualpal/actions/workflows/build-and-test.yml)\n[![codecov](https://codecov.io/gh/jolars/qualpal/graph/badge.svg?token=p5JTFa9BUz)](https://codecov.io/gh/jolars/qualpal)\n[![Docs](https://img.shields.io/badge/docs-stable-blue.svg?logo=readthedocs)](https://jolars.github.io/qualpal/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17194762.svg)](https://doi.org/10.5281/zenodo.17194762)\n[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/qualpalr)](https://cran.r-project.org/package=qualpalr)\n[![App](https://img.shields.io/badge/🌐%20%20App-qualpal.cc-blue)](https://qualpal.cc)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.08936/status.svg)](https://doi.org/10.21105/joss.08936)\n\nA C++ library for generating qualitative color palettes with maximum perceptual\ndistinctiveness, especially for data visualization. The API uses a\nbuilder-style interface for flexible palette configuration, supporting multiple\ninput formats, color vision deficiency simulation, and perceptual color\ndifference metrics.\n\nFull documentation is available at\n[https://jolars.github.io/qualpal/](https://jolars.github.io/qualpal/).\n\nThis library is also available as\n\n- an R package called\n  [qualpalr](https://cran.r-project.org/package=qualpalr),\n- as a python package called [qualpal](https://pypi.org/project/qualpal/),\n- and as a web\n  application at [qualpal.cc](https://qualpal.cc).\n\n## Features\n\n- Automatic selection of color palettes using perceptual color difference metrics\n- Color vision deficiency simulation for accessible palette design\n- Multiple input formats: RGB values, hex strings, HSL ranges, built-in palettes\n- Fast algorithms for large color spaces\n- Builder-style C++ API for flexible palette configuration\n- Web-Based Interface for simple and interactive color palette generation\n\n## Table of Contents\n\n- [Features](#features)\n- [Motivation](#motivation)\n- [R Package](#r-package)\n- [Web App](#web-app)\n- [Quick Start](#quick-start)\n- [Installation](#installation)\n- [Usage Examples](#usage-examples)\n- [Contributing](#contributing)\n- [Versioning](#versioning)\n- [License](#license)\n\n## Motivation\n\nWhen visualizing categorical data, it is often necessary to select a set of\ndistinct colors that are easily distinguishable from each other. This is\nespecially important for accessibility, as many people have color vision\ndeficiencies (CVD) that make it difficult to distinguish certain colors.\nQualpal aims to provide a simple and effective way to generate such color\npalettes, ensuring that the selected colors are not only distinct from each\nother, but also accessible to people with CVD.\n\nThe problem with almost all standard color palettes is that they are optimized\nfor a specific number of colors. This is of course a problem by\ndesign, since a good 10-color palette has to be designed with the assumption\nthat it will be used as a whole, not that it will be used in parts. But it\nmeans that if you want to select a subset of colors from a palette, you will\nnot get the best possible result.\n\nThey are also often created by a human designer, which means that they may not\nbe optimized for perceptual distinctiveness. Qualpal, on the other hand, uses\nstate-of-the art color difference metrics and a farthest-point sampling\nalgorithm to select colors that are (approximately) maximally distinct from\neach other, while also considering color vision deficiencies.\n\n## R Package\n\nThe Qualpal library is also available as an R package called\n[qualpalr](https://cran.r-project.org/package=qualpalr). This package\nis continuously updated to match the latest features of the C++ library,\nbut may sometimes lag behind slightly. It provides a similar API for\ngenerating colors from R, making it easy to integrate Qualpal into R workflows,\n\n## Web App\n\nQualpal is also available as a web application at\n[qualpal.cc](https://qualpal.cc). The web app has slightly\nlimited functionality compared to the library and R package, but it allows\nusers to quickly generate color palettes directly in their browser.\n\n## JOSS Paper\n\nQualpal has been [published in JOSS](https://doi.org/10.21105/joss.08936).\nYou can read more about the motivation and design of qualpal in the paper.\nIf you find qualpal useful in your research, please consider citing it (either\nusing the DOI badge, the GitHub citation tool, or by referring directly\nto \u003cCITATION.cff\u003e.\n\n## Quick Start\n\n### Library Usage\n\nGenerate 5 colors from a HSL colorspace:\n\n```cpp\n#include \u003cqualpal.h\u003e\n\nusing namespace qualpal;\n\nQualpal qp;\nqp.setInputColorspace({ -170, 60 }, { 0, 0.7 }, { 0.2, 0.8 });\nauto colorspace_pal = qp.generate(5);\n```\n\n![Five colors from the HSL color space](docs/images/examples/hsl_pal.svg)\n\nGenerate colors from multiple colorspace regions (e.g., warm and cool colors only):\n\n```cpp\nqp.setInputColorspaceRegions(\n  {\n    { { 0, 60 }, { 0.5, 1.0 }, { 0.3, 0.7 } },   // Warm: reds/oranges/yellows\n    { { 180, 240 }, { 0.5, 1.0 }, { 0.3, 0.7 } } // Cool: cyans/blues\n  },\n  ColorspaceType::HSL);\nauto multi_region_pal = qp.generate(8);\n```\n\nSelect 2 colors from given RGB values:\n\n```cpp\nqp.setInputRGB({ colors::RGB(\"#ff0000\"),\n                 colors::RGB(\"#00ff00\"),\n                 colors::RGB(\"#0000ff\") });\nauto rgb_pal = qp.generate(2);\n```\n\n![Two colors from hex RGB input](docs/images/examples/hex_pal.svg)\n\nConsider color vision deficiency (CVD) when generating colors\n\n```cpp\nqp.setInputPalette(\"ColorBrewer:Set2\").setCvd({ { \"deutan\", 0.7 } });\nauto cvd_pal = qp.generate(4);\n```\n\n![Four colors from ColorBrewer Set2 palette with deuteranomaly simulation](docs/images/examples/brewer_set2_deutan.svg)\n\n### Command Line Interface (CLI)\n\nqualpal includes a powerful command line interface for palette generation and analysis.\nFor a full list of options and usage examples, run:\n\n```sh\nqualpal --help\n```\n\nThere are also man pages available for the CLI:\n\n```sh\nman qualpal\n```\n\nYou can also view the [Doxygen-generated\ndocumentation](https://jolars.github.io/qualpal/) for detailed CLI and API\nusage.\n\n#### Examples\n\nGenerate 5 colors from the HSL color space, with full hue range, medium-high\nsaturation (0.4-0.8), and medium lightness (0.3-0.7):\n\n```sh\nqualpal -n 5 -i colorspace \"0:360\" \"0.4:0.8\" \"0.3:0.7\"\n```\n\n![Five colors from the HSL color space](docs/images/examples/cli_hsl.svg)\n\nSelect from hex colors:\n\n```sh\nqualpal -n 3 \"#ff0000\" \"#00ff00\" \"#0000ff\" \"#ffff00\"\n```\n\n![Three colors from hex RGB input](docs/images/examples/cli_hex.svg)\n\nExtend existing palette (keep fixed colors provided after --extend):\n\n```{sh}\nqualpal -n 3 -i colorspace \"0:180\" \"0.3:0.6\" \"0.7:0.9\" --extend \"#ff0000\" \"#00ff00\"\n```\n\n![A fixed palette of red and green extended with one color from the HSL space](docs/images/examples/cli_hsl_extend.svg)\n\nAnalyze palette with hex input:\n\n```sh\nqualpal analyze --input hex \"#ffe402\" \"#ff5733\" \"#33ff57\" \"#3357ff\"\n```\n\n    Color Difference Matrix (ciede2000 metric):\n    Colors analyzed: 4\n    Colors:\n      Idx      Hex  MinDist\n        0  #ffe402    29.52\n        1  #ff5733    49.57\n        2  #33ff57    29.52\n        3  #3357ff    50.07\n\n    Color Difference Matrix:\n              0       1       2       3\n      0     0.00   49.57   29.52   83.87\n      1    49.57    0.00   78.05   50.07\n      2    29.52   78.05    0.00   71.78\n      3    83.87   50.07   71.78    0.00\n\n## Installation\n\n### Binary Packages (Recommended)\n\nPre-built packages and binaries are available for Linux, macOS, and Windows from [GitHub Releases](https://github.com/jolars/qualpal/releases/latest).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📦 Linux - Debian/Ubuntu (DEB packages)\u003c/b\u003e\u003c/summary\u003e\n\n#### Quick Install Script\n\n```bash\n# Automatic installation (detects your system)\ncurl -sSL https://raw.githubusercontent.com/jolars/qualpal/main/scripts/install.sh | bash\n```\n\n#### Manual Installation\n\n```bash\n# Download packages (replace VERSION with actual version, e.g., 3.3.0)\n# For x86_64/amd64:\nwget https://github.com/jolars/qualpal/releases/latest/download/libqualpal1_VERSION-1_amd64.deb\nwget https://github.com/jolars/qualpal/releases/latest/download/qualpal_VERSION-1_amd64.deb\n\n# For ARM64/aarch64:\nwget https://github.com/jolars/qualpal/releases/latest/download/libqualpal1_VERSION-1_arm64.deb\nwget https://github.com/jolars/qualpal/releases/latest/download/qualpal_VERSION-1_arm64.deb\n\n# Install\nsudo dpkg -i libqualpal1_*.deb qualpal_*.deb\n```\n\n**Development package:** `libqualpal-dev_VERSION-1_{amd64,arm64}.deb`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📦 Linux - Red Hat/Fedora/SUSE (RPM packages)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# Download packages (replace VERSION with actual version, e.g., 3.3.0)\n# For x86_64:\nwget https://github.com/jolars/qualpal/releases/latest/download/libqualpal1-VERSION-1.x86_64.rpm\nwget https://github.com/jolars/qualpal/releases/latest/download/qualpal-VERSION-1.x86_64.rpm\n\n# For ARM64/aarch64:\nwget https://github.com/jolars/qualpal/releases/latest/download/libqualpal1-VERSION-1.aarch64.rpm\nwget https://github.com/jolars/qualpal/releases/latest/download/qualpal-VERSION-1.aarch64.rpm\n\n# Install\nsudo rpm -i libqualpal1-*.rpm qualpal-*.rpm\n```\n\n**Development package:** `libqualpal-devel-VERSION-1.{x86_64,aarch64}.rpm`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🍎 macOS (Intel and Apple Silicon)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# Download for your Mac architecture (replace VERSION with actual version)\n# For Intel Macs:\nwget https://github.com/jolars/qualpal/releases/latest/download/qualpal-VERSION-Darwin-x86_64.tar.gz\ntar -xzf qualpal-VERSION-Darwin-x86_64.tar.gz\n\n# For Apple Silicon (M1/M2/M3/M4):\nwget https://github.com/jolars/qualpal/releases/latest/download/qualpal-VERSION-Darwin-arm64.tar.gz\ntar -xzf qualpal-VERSION-Darwin-arm64.tar.gz\n\n# Move to your PATH (optional)\nsudo mv qualpal-*/bin/qualpal /usr/local/bin/\n```\n\nHeaders and libraries are included in the archive for development.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🪟 Windows (x64 and ARM64)\u003c/b\u003e\u003c/summary\u003e\n\nDownload the appropriate ZIP file for your system:\n\n- [Windows x64 (MSVC)](https://github.com/jolars/qualpal/releases/latest) - Recommended for most users\n- [Windows x64 (MinGW)](https://github.com/jolars/qualpal/releases/latest) - Alternative build\n- [Windows ARM64](https://github.com/jolars/qualpal/releases/latest) - For ARM-based Windows devices\n\n**Installation:**\n\n1. Download and extract the ZIP file\n2. Add the `bin` directory to your PATH environment variable, or\n3. Run `qualpal.exe` directly from the extracted location\n\nHeaders and libraries are included in the archive for development.\n\n\u003c/details\u003e\n\n### Requirements\n\n- CMake \u003e= 3.15\n- C++17 compatible compiler (e.g., GCC, Clang, MSVC)\n- [Optional] OpenMP for parallelization\n- [Optional] help2man for CLI man page generation\n- [Optional] Catch2 for testing\n\n### From Source\n\nTo build and install qualpal from source, you need to have CMake and a C++17\ncompatible C++ compiler installed. If you want the algorithm to be\nparallelized, you also need to have support for OpenMP.\n\nTo build, clone the repository and run the following commands:\n\n```sh\ngit clone https://github.com/jolars/qualpal.git\ncd qualpal\ncmake -B build -S .\ncmake --build build --config Release\n```\n\nIf you want to include the CLI interface, make sure to pass the\n`-DBUILD_CLI=ON` option to CMake:\n\n```sh\ncmake -B build -S . -DBUILD_CLI=ON\n```\n\nThen, to install the library (and CLI, if built), use\nthe following command:\n\n```sh\nsudo cmake --install build\n```\n\nIf you prefer to install the library in a custom location, such as your home\ndirectory, you can specify the `--prefix` option:\n\n```sh\ncmake --install build --prefix \"$HOME/.local\"\n```\n\nOptionally, you can also run the CLI app directly from the build directory\nwithout installing it:\n\n```sh\n./build/qualpal --help\n```\n\n### What Gets Installed\n\nUnder your chosen prefix (e.g., `$HOME/.local` or `/usr/local`):\n\n- `bin/qualpal` - Command-line interface (when `BUILD_CLI=ON`)\n- `include/qualpal/` - C++ header files\n- `lib/libqualpal.*` (or `lib64/libqualpal.*`) - Library files\n- `lib/cmake/qualpal/` - CMake package configuration\n- `share/doc/qualpal/LICENSE` - License file\n- `share/man/man1/qualpal.1` - Manual page\n\n### Package Types\n\nThe binary packages are split into separate components:\n\n- **Runtime packages** (`libqualpal1`): Contains the shared library needed to run applications that use qualpal\n- **CLI packages** (`qualpal`): Contains the command-line interface - depends on the runtime package\n- **Development packages** (`libqualpal-dev`/`libqualpal-devel`): Contains headers, static library, and CMake files for building applications with qualpal\n\nThis separation allows you to install only what you need:\n\n- Just want the CLI? Install runtime + CLI packages\n- Developing with qualpal? Install all three packages\n- Deploying an application? Install just the runtime package\n\n### Uninstall\n\nTo uninstall qualpal, we provide a CMake uninstall target. Run the following command:\n\n```sh\ncmake --build build --target uninstall\n```\n\nUnix users can also delete the files directly by calling\n\n```sh\nxargs rm \u003c build/install_manifest.txt\n```\n\n### WebAssembly\n\nTo build the WebAssembly package for web applications, you need\nto first install [Emscripten](https://emscripten.org/docs/getting_started/downloads.html).\n\nThen, you can build the package with the following commands:\n\n```sh\nemcmake cmake -B build/wasm -S . -DBUILD_WASM=ON -DCMAKE_BUILD_TYPE=Release\nemmake make -C build/wasm qualpal_wasm\n```\n\n### CMake Integration\n\nqualpal can be easily integrated into your CMake projects. After building and\ninstalling the library, you can find it using CMake's `find_package` command.\n\n```cmake\nfind_package(qualpal REQUIRED)\ntarget_link_libraries(your_target qualpal::qualpal)\n```\n\nIf you installed qualpal in a custom location, make sure to set the\n`CMAKE_PREFIX_PATH` variable first to include the installation prefix, e.g.:\n\n```cmake\nset(CMAKE_PREFIX_PATH \"$ENV{HOME}/.local\") # Or your custom prefix\n```\n\n## Usage Examples\n\n### Basic Color Selection\n\n```cpp\n#include \u003ciostream\u003e\n#include \u003cqualpal.h\u003e\n\nusing namespace qualpal;\n\nint\nmain()\n{\n  // Start with some input colors\n  Qualpal qp;\n  qp.setInputRGB({\n    colors::RGB(\"#e41a1c\"), // Red\n    colors::RGB(\"#377eb8\"), // Blue\n    colors::RGB(\"#4daf4a\"), // Green\n    colors::RGB(\"#984ea3\"), // Purple\n    colors::RGB(\"#ff7f00\"), // Orange\n  });\n\n  // Select 3 most distinct colors\n  auto palette = qp.generate(3);\n\n  for (const auto\u0026 color : palette) {\n    std::cout \u003c\u003c color.hex() \u003c\u003c std::endl;\n  }\n\n  return 0;\n}\n```\n\n![Three colors from given RGB input](docs/images/examples/lib_hex.svg)\n\n### Color Vision Deficiency Consideration\n\nAdapt to deuteranomaly (red-green colorblindness) of severity 0.8:\n\n```cpp\nQualpal qp;\nqp.setInputRGB(colors).setCvd({ { \"deutan\", 0.8 } });\nauto accessible_palette = qp.generate(2);\n```\n\n![Two colors from given RGB input with deuteranomaly adaptation](docs/images/examples/lib_hex_deutan.svg)\n\n### HSL Color Space\n\nA soothing pastel palette, generated from a HSL color space:\n\n```cpp\nQualpal qp;\nqp.setInputColorspace({ 20, 300 }, { 0.3, 0.7 }, { 0.7, 0.9 });\nauto pastel_palette = qp.generate(5);\n```\n\n![A palette of pastels](docs/images/examples/lib_pastels.svg)\n\n### Adaptation to Background Color\n\nWhen visualizing categorical data, consider a background color to ensure contrast:\n\n```cpp\nauto pal = Qualpal{}\n             .setInputRGB({\n               colors::RGB(\"#f0f0f0\"), // Light color (which we want to avoid)\n               colors::RGB(\"#e41a1c\"), // Red\n               colors::RGB(\"#377eb8\"), // Blue\n               colors::RGB(\"#4daf4a\"), // Green\n             })\n             .setBackground(colors::RGB(\"#ffffff\"))\n             .generate(3);\n```\n\n![Three colors from given RGB input avoiding light colors on white background](docs/images/examples/lib_bg.svg)\n\n### Improving Existing Palettes\n\nQualpal can take an existing color palette and improve it by selecting a subset\nof the most distinct colors from it, as well as ordering the result.\n\nHere we design a CVD-friendly version of the `\"ColorBrewer:Set2\"` palette\nfor a black background, selecting 3 colors.\n\n```cpp\nauto pal = Qualpal{}\n             .setInputPalette(\"ColorBrewer:Set2\")\n             .setBackground(colors::RGB(\"#000000\"))\n             .setCvd({ { \"tritan\", 0.2 }, { \"deutan\", 0.5 } })\n             .generate(3);\n```\n\n![Three colors from ColorBrewer Set2 palette with tritanomaly and deuteranomaly simulation on black background](docs/images/examples/lib_cvd.svg)\n\n### Palette Extension Example\n\nExtend an existing palette by adding more distinct colors to it:\n\n```cpp\nstd::vector\u003ccolors::RGB\u003e fixed = {\n  colors::RGB(\"#e41a1c\"), // Red\n  colors::RGB(\"#377eb8\"), // Blue\n};\n\nstd::vector\u003ccolors::RGB\u003e input = {\n  colors::RGB(\"#4daf4a\"), // Green\n  colors::RGB(\"#984ea3\"), // Purple\n  colors::RGB(\"#ff7f00\"), // Orange\n  colors::RGB(\"#ffff33\"), // Yellow\n};\n\n// Extend to 6 colors, keeping the first two fixed\nauto ext_pal = Qualpal{}.setInputRGB(input).extend(fixed, 4);\n```\n\n![A fixed palette of red and blue extended with four colors from given RGB input](docs/images/examples/hex_extend.svg)\n\n## Contributing\n\nContributions are welcome! Please see the [CONTRIBUTING](CONTRIBUTING.md) file\nfor more information.\n\n## Versioning\n\nThis project follows [Semantic Versioning](https://semver.org/).\nExpect breaking changes in major releases, new features\nin minor releases, and bug fixes in patch releases.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjolars%2Fqualpal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjolars%2Fqualpal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjolars%2Fqualpal/lists"}