BrushCue 1.2.8 is now available on the BrushCue website and in the Python package. This release adds profile-aware painter colors, corrects alpha compositing for painted content, introduces a new duotone effect, and adds a set of color-representation graph nodes.
Correct Transparency for Drawing and Compositing
Painter output now uses premultiplied alpha, so translucent fills and brushes composite correctly and preserve clean color at their edges. This also makes painted content behave consistently with the rest of BrushCue's image-processing pipeline.
Drawn paths now render with outward semicircular end caps, improving the appearance of stroked lines.
Profile-Aware Painter Colors
Solid fills and brushes now take a ProfiledColor, which keeps the color channels and their representation together. This makes it explicit whether a drawn color is encoded sRGB, linear ACEScg, OkLab, or another supported representation.
In Python, create an appropriate color with helpers such as brushcue.profiled_color_from_rgba_srgb(...), then pass it to brushcue.fill_solid(...) or brushcue.brush_solid(...). brushcue.painter_new() no longer takes a color-profile argument; colors are specified by each fill or brush instead.
Python API Updates
This release includes a few API migrations required by profile-aware colors:
brushcue.r_g_b_a_color_add_to_dictionary(...)is replaced bybrushcue.profiled_color_add_to_dictionary(...).brushcue.ok_lab_to_r_g_b(...)has been removed. Convert aProfiledColorwithbrushcue.profiled_color_to_rgb_encoded_with_in_color_profile(...)instead.- The generated Python documentation and the linear-versus-gamma blending example have been updated to use the new color workflow.
New Color Model Graph Nodes
Profile-aware colors are backed by a new ColorRepresentation graph type, which pairs a color profile with a pixel encoding. This release adds the graph nodes that build and inspect it:
ColorRepresentationSRGBcreates a Color Representation using the sRGB color profile with gamma-encoded pixel values. In Python, usebrushcue.color_representation_s_rgb(...).ColorRepresentationSRGBLinearcreates a Color Representation using the linear sRGB color profile with linear light, straight alpha pixel values. In Python, usebrushcue.color_representation_s_rgb_linear(...).ColorRepresentationACEScgcreates a Color Representation using the ACEScg color profile with linear light, straight alpha pixel values. In Python, usebrushcue.color_representation_aces_cg(...).ColorRepresentationRGBBT2020creates a Color Representation using the BT.2020 color profile with gamma-encoded pixel values. In Python, usebrushcue.color_representation_rgb_bt2020(...).ColorRepresentationOkLabAcreates a Color Representation using the OkLabA color profile with encoded pixel values. In Python, usebrushcue.color_representation_ok_lab_a(...).ColorRepresentationXYZAcreates a Color Representation using the XYZA color profile with linear light, straight alpha pixel values. In Python, usebrushcue.color_representation_xyza(...).ColorRepresentationFromColorProfileAndPixelEncodingcreates a Color Representation by pairing anyColorProfilewith aPixelEncoding. In Python, usebrushcue.color_representation_from_color_profile_and_pixel_encoding(...).ColorRepresentationProfileextracts theColorProfilefrom a Color Representation. In Python, usebrushcue.color_representation_profile(...).PixelEncodingLinear,PixelEncodingEncoded, andPixelEncodingPremultipliedAlphacreate the linear, gamma/non-linear, and premultiplied-alpha pixel encodings used above. In Python, usebrushcue.pixel_encoding_linear(...),brushcue.pixel_encoding_encoded(...), andbrushcue.pixel_encoding_premultiplied_alpha(...).CompositionColorRepresentationgets the Color Representation associated with a Composition. In Python, usebrushcue.composition_color_representation(...).
New Duotone Effect
This release also adds CompositionDuotone, which maps a composition to two colors based on a lightness threshold: pixels below the threshold become color_1, and pixels above become color_2. In Python, use brushcue.composition_duotone(...).
Want to try it out first? Give it a spin with the Duotone Effect tool.
Feedback
As always, if you have feedback or suggestions for what to add to BrushCue next, please reach out to feedback@brushcue.com.