|
BRL-CAD
|
Support for storing and manipulating color data. More...
Files | |
| file | color.h |
Data Structures | |
| struct | bu_color |
Macros | |
| #define | RED 0 |
| #define | GRN 1 |
| #define | BLU 2 |
| #define | ALP 3 |
| #define | BU_COLOR_INDEX_RED 0 |
| #define | BU_COLOR_INDEX_GREEN 1 |
| #define | BU_COLOR_INDEX_BLUE 2 |
| #define | BU_COLOR_INDEX_ALPHA 3 |
| #define | HUE 0 |
| #define | SAT 1 |
| #define | VAL 2 |
| #define | BU_COLOR_INDEX_HUE 0 |
| #define | BU_COLOR_INDEX_SATURATION 1 |
| #define | BU_COLOR_INDEX_VALUE 2 |
| #define | BU_COLOR_NULL ((struct bu_color *) 0) |
| #define | BU_COLOR_INIT(_c) |
| #define | BU_COLOR_NEAR_EQUAL(_c1, _c2, _tol) HNEAR_EQUAL(_c1.buc_rgb, _c2.buc_rgb, _tol) |
| #define | BU_COLOR_INIT_ZERO {{0, 0, 0, 0}} |
| #define | BU_COLOR_BLUE {{0, 0, 1, 0}} |
| #define | BU_COLOR_CYAN {{0, 1, 1, 0}} |
| #define | BU_COLOR_GREEN {{0, 1, 0, 0}} |
| #define | BU_COLOR_PURPLE {{1, 0, 1, 0}} |
| #define | BU_COLOR_RED {{1, 0, 0, 0}} |
| #define | BU_COLOR_WHITE {{1, 1, 1, 0}} |
| #define | BU_COLOR_YELLOW {{1, 1, 0, 0}} |
| #define | BU_COLOR_CPY(_dest, _src) |
Typedefs | |
| typedef struct bu_color | bu_color_t |
| typedef enum bu_color_space | bu_color_space_t |
| typedef enum bu_color_format | bu_color_format_t |
Enumerations | |
| enum | bu_color_space { BU_COLOR_SPACE_RGB = 0 , BU_COLOR_SPACE_HSL , BU_COLOR_SPACE_HSV } |
| enum | bu_color_format { BU_COLOR_FORMAT_RGB = 0 , BU_COLOR_FORMAT_RGBA , BU_COLOR_FORMAT_HEX , BU_COLOR_FORMAT_HEXA , BU_COLOR_FORMAT_HSL , BU_COLOR_FORMAT_HSLA , BU_COLOR_FORMAT_HSV , BU_COLOR_FORMAT_HSVA , BU_COLOR_FORMAT_NAME } |
| enum | bu_color_rand_t { BU_COLOR_RANDOM = 0 , BU_COLOR_RANDOM_LIGHTENED } |
Functions | |
| int | bu_color_rand (struct bu_color *c, bu_color_rand_t type) |
| void | bu_rgb_to_hsv (const unsigned char *rgb, fastf_t *hsv) |
| int | bu_hsv_to_rgb (const fastf_t *hsv, unsigned char *rgb) |
| int | bu_color_parse (const char *str, struct bu_color *color) |
| int | bu_color_format (const struct bu_color *color, bu_color_format_t format, struct bu_vls *output) |
| int | bu_color_convert (const double in[4], bu_color_space_t in_space, bu_color_space_t out_space, double out[4]) |
| int | bu_color_from_rgb_floats (struct bu_color *cp, const fastf_t *rgb) |
| int | bu_color_from_rgb_chars (struct bu_color *cp, const unsigned char *rgb) |
| int | bu_color_from_str (struct bu_color *cp, const char *str) |
| int | bu_str_to_rgb (const char *str, unsigned char *rgb) |
| int | bu_color_to_rgb_floats (const struct bu_color *cp, fastf_t *rgb) |
| int | bu_color_to_rgb_chars (const struct bu_color *cp, unsigned char *rgb) |
| int | bu_color_to_rgb_ints (const struct bu_color *cp, int *r, int *g, int *b) |
Support for storing and manipulating color data.
initializes a bu_color struct without allocating any memory.
| #define BU_COLOR_INIT_ZERO {{0, 0, 0, 0}} |
| typedef struct bu_color bu_color_t |
Color spaces supported by bu_color_convert().
Text representations supported by bu_color_format().
Color spaces supported by bu_color_convert().
| Enumerator | |
|---|---|
| BU_COLOR_SPACE_RGB | |
| BU_COLOR_SPACE_HSL | |
| BU_COLOR_SPACE_HSV | |
Text representations supported by bu_color_format().
| Enumerator | |
|---|---|
| BU_COLOR_FORMAT_RGB | |
| BU_COLOR_FORMAT_RGBA | |
| BU_COLOR_FORMAT_HEX | |
| BU_COLOR_FORMAT_HEXA | |
| BU_COLOR_FORMAT_HSL | |
| BU_COLOR_FORMAT_HSLA | |
| BU_COLOR_FORMAT_HSV | |
| BU_COLOR_FORMAT_HSVA | |
| BU_COLOR_FORMAT_NAME | |
|
extern |
Function to generate random color
Refactoring points: truly random color 3dm-g: src/libgcv/plugins/rhino/rhino_read.cpp "constrained" random BRLCADWrapper:getRandomColor(): src/conv/step/BRLCADWrapper.cpp
Convert between RGB and HSV color models
R, G, and B are in {0, 1, ..., 255},
H is in [0.0, 360.0), and S and V are in [0.0, 1.0],
If S == 0.0, H is achromatic and set to 0.0
These two routines are adapted from: pp. 592-3 of J.D. Foley, A. van Dam, S.K. Feiner, and J.F. Hughes, Computer graphics: principles and practice, 2nd ed., Addison-Wesley, Reading, MA, 1990.
Parse a human-readable color specification.
Accepted representations include the legacy BRL-CAD integer and normalized floating point RGB triplets, hexadecimal RGB and RGBA, CSS named colors, and RGB(A), HSL(A), and HSV(A) functional notation. RGB and alpha are normalized to [0.0, 1.0] in color. An omitted alpha channel is set to 1.0 (opaque).
Returns 1 on success and 0 on failure. On failure, color is unchanged.
|
extern |
Append a human-readable representation of color to output.
RGB(A) uses functional notation with 8-bit RGB channels and normalized alpha. HSL(A) and HSV(A) use hue in degrees, percentages for the other model channels, and normalized alpha. Hexadecimal output uses CSS RGBA channel order. Named output fails when color has no exact CSS name.
Returns 1 on success and 0 on failure. On failure, output is unchanged.
|
extern |
Convert a numeric color between RGB, HSL, and HSV.
RGB channels, saturation, lightness, value, and alpha use [0.0, 1.0]. Hue is expressed in degrees and is wrapped to [0.0, 360.0). Alpha is copied without conversion. All four input components must be finite.
Returns 1 on success and 0 on failure. On failure, out is unchanged.
Legacy utility functions for converting RGB storage containers. New color-space and text conversions should use bu_color_convert(), bu_color_parse(), and bu_color_format().
Compatibility parser equivalent to bu_color_parse(), except that cp's alpha channel is left unchanged.