Store colors in ARGB format, allowing conversion to/from and handling as: RGBA, CMYK, HSV, and hex codes. For example, it should be possible to define a color via RGBA, modify it as an HSV, and then read it as an ARGB.
Dependencies and Tools
All of the following libraries are already linked to rA, either via rLIB or as system-wide dependencies (see the link "Guide: Building Code" below). Use them as needed, and ensure your implementation is compatible as necessary.
- Cairo: Vector drawing
- Eigen: Linear algebra library
- eventpp: Signals and callbacks
- PawLIB: Testing, Utilities
- SDL2: Rendering, hardware layer access
Break down this task into subtasks, and prioritize them. Be sure to mark all four main QTM measures (Priority, Gravity, Friction, Relativity) for each.
Initially, just focus on storing and processing the color data via the different formats, using hard-coded input data. Gradually abstract away the hard-coded values, moving towards deriving the data from RIFT.
As it becomes possible, integrate with T1248: Read from RIFT File and T1243: Render Bezier Curves from RIFT bytecode as appropriate. Define a consistent interface (functions, etc.), and employ loose coupling. Your implementation should not matter to other parts of Anari.
Keep in mind the other objectives in the spec that your design and implementation choices here will affect: 3.6, 3.7, 3.9, 3.10, and 3.14. (See Anari Spec).