Opam_graph: UI: Implemented radial-gradient bg behind layer2 deps blobs

This commit is contained in:
rand00 2022-01-12 19:38:11 +01:00
parent ca489c91d2
commit dae09527d2

View file

@ -262,7 +262,12 @@ line {
stroke: bisque;
}
.layer2_deps_bg {
fill: url(#gradient_01);
}
|}
(* a_fill @@ `Color ("url(#gradient_01)", None); *)
type position = {
x : float;
@ -347,10 +352,11 @@ line {
in
let dot_radius = root_radius *. 0.2
in
let nodes =
layer2_deps |> List.mapi (fun i' layer2_dep ->
let i' = float i' +. 5.5 in
let pos_radius = sqrt i' *. 0.010 -. 0.019 in
let angle_diff = sqrt i' *. Float.two_pi *. 0.05 in
let pos_radius = sqrt i' *. 0.012 -. 0.024 in
let angle_diff = sqrt i' *. Float.two_pi *. 0.055 in
let pos_angle = i' *. angle_diff in
let pos_rel =
V2.v pos_radius pos_angle
@ -362,6 +368,16 @@ line {
let classes = [ layer2_dep.name; "layer2_dep" ] in
make_node ~pos ~radius:dot_radius ~text ~classes
)
in
let bg =
let pos =
{ x = V2.x layer2_deps_center; y = V2.y layer2_deps_center }
and radius = float (List.length layer2_deps) *. 0.003
and text = ""
and classes = [ "layer2_deps_bg" ] in
make_node ~pos ~radius ~text ~classes
in
bg :: nodes
)
|> List.flatten
@ -407,7 +423,25 @@ line {
in
let deps_svgs = make_deps layer2_deps in
let a = [ Svg.a_viewBox (0., 0., 1., 1.) ] in
Svg.svg ~a (deps_svgs @ [ root_svg ])
let svg_defs =Svg.[ defs [
radialGradient ~a:[
a_id "gradient_01";
a_cx @@ Unit.none 0.5;
a_cy @@ Unit.none 0.5;
a_r @@ Unit.none 0.5;
] [
stop ~a:[
a_offset @@ `Percentage 0.;
a_stop_color "bisque"
] [];
stop ~a:[
a_offset @@ `Percentage 100.;
a_stop_color "bisque"; a_stop_opacity 0.
] []
]
]]
in
Svg.svg ~a (svg_defs @ deps_svgs @ [ root_svg ])
let pp ppf html =
Format.fprintf ppf "%a@." (Tyxml_svg.pp ()) html