-
Notifications
You must be signed in to change notification settings - Fork 570
Color Picker
Robert J. Lemmens edited this page Jan 5, 2022
·
4 revisions
The Color Picker is useful for selecting colors and all other coloring needs. You can create one with nk_color_picker(...)
:
struct nk_colorf my_color = {0.8f, 0.3f, 0.2f, 1.0f};
my_color = nk_color_picker(ctx, my_color, NK_RGBA);
It takes an nk_colorf
and nk_color_format
as parameter (the display color) and returns an nk_colorf
with the newly selected color.
Heres an example of a window with a color picker that changes the color of some text:
static void scratchpad(struct nk_context *ctx, struct media *media) {
static struct nk_colorf my_color = {0.8f, 0.3f, 0.2f, 1.0f};
static const char my_text[] = "What a nice color! Or is it colour...?";
nk_style_set_font(ctx, &media->font_20->handle);
nk_begin(ctx, "Nuklear Color Picker example", nk_rect(50,50, 255, 340), NK_WINDOW_TITLE | NK_WINDOW_MOVABLE);
nk_layout_row_dynamic(ctx, 200, 1);
my_color = nk_color_picker(ctx, my_color, NK_RGBA); /// Our color picker, returns the newly selected color which we can then use elsewhere
nk_layout_row_dynamic(ctx, 20, 1);
nk_text_colored(ctx, my_text, strlen(my_text), NK_TEXT_LEFT, nk_rgb_cf(my_color)); /// nk_text_colored takes an rgb color instead of rgba so we have to do some magic (nk_rgb_cf)
nk_end(ctx);
}
And viola!
The colorpicker takes an nk_colorf
(0-1, float) for coloring. Some components, like the text in the example above, need an nk_color
which is in a different format (0-255, byte). nk_rgb_cf(...)
will take an nk_colorf and return a corresponding nk_color for you.