cutlass
cutlass copied to clipboard
[QST] Unify The Color for Latex and SVG Print
What is your question?
With the release of Cutlass 3.6, the print_latex
function now allows users to specify colors using a template parameter. However, the print_svg
function's color is still hardcoded. To enhance its usability, we should extend the color parameterization feature to print_svg
.
We'll first examine how print_latex
handles color. It uses the TikzColorFn
class as the template parameter for print_latex
, which provides a color string for LaTeX TikZ format (e.g., {rgb,255:red,175;green,175;blue,255}
) through the TikzColor_TV
structure's operator() function.
I propose two approaches:
- Define
SvgColorFn
andSvgColor_TV
similar toTikzColorFn
andTikzColor_TV
, returning SVG-compatible color strings (e.g.,rgb(255,175,175)
). Pros: Easy to code; can be implemented by copying and modifying existing code. Cons: Color definitions would be duplicated for LaTeX and SVG. - Create a unified
ColorFn
andColorTV
that return RGB values (int values, not color strings specific to TikZ or SVG). Theprint_latex/svg
functions would then construct the color strings for LaTeX and SVG. Pros: A unified color representation (RGB tuple with int type), making it easier for future users. Cons: More complex coding required:- Change
TikzColor_TV
toColor_TV
. - Convert
TikzColor_TV
's color strings to pure RGB tuples. - Modify the
operator()
function to return RGB values(eg.void operator(int tid, int vid, int &r, int &g, int &b)
). - Have
print_latex
andprint_svg
construct their own color strings. - Rename the template parameter from
TikzColorFn
toColorFn
. - Unify
TikzColorWhite
andTikzColorBWx8
to RGB tuple representations.
- Change
I advocate for the second approach. What are your thoughts?
Reference: https://github.com/NVIDIA/cutlass/pull/1733