forked from HEL/chronos
		
	added lifeline-style
This commit is contained in:
		| @@ -13,8 +13,8 @@ | |||||||
|  |  | ||||||
| #chronos.diagram({ | #chronos.diagram({ | ||||||
|   import chronos: * |   import chronos: * | ||||||
|   _seq("User", "A", comment: "DoWork", enable-dst: true) |   _seq("User", "A", comment: "DoWork", enable-dst: true, lifeline-style: (fill: rgb("#FFBBBB"))) | ||||||
|   _seq("A", "A", comment: "Internal call", enable-dst: true) |   _seq("A", "A", comment: "Internal call", enable-dst: true, lifeline-style: (fill: rgb("#E9967A"))) | ||||||
|   _seq("A", "B", comment: [#sym.quote.angle.l createRequest #sym.quote.angle.r], enable-dst: true) |   _seq("A", "B", comment: [#sym.quote.angle.l createRequest #sym.quote.angle.r], enable-dst: true) | ||||||
|   _seq("B", "A", comment: "RequestCreated", disable-src: true, disable-dst: true, dashed: true) |   _seq("B", "A", comment: "RequestCreated", disable-src: true, disable-dst: true, dashed: true) | ||||||
|   _seq("A", "User", comment: "Done", disable-src: true) |   _seq("A", "User", comment: "Done", disable-src: true) | ||||||
| @@ -24,8 +24,8 @@ | |||||||
|   import chronos: * |   import chronos: * | ||||||
|   _seq("alice", "bob", comment: "hello", enable-dst: true) |   _seq("alice", "bob", comment: "hello", enable-dst: true) | ||||||
|   _seq("bob", "bob", comment: "self call", enable-dst: true) |   _seq("bob", "bob", comment: "self call", enable-dst: true) | ||||||
|   _seq("bill", "bob", comment: "hello from thread 2", enable-dst: true) |   _seq("bill", "bob", comment: "hello from thread 2", enable-dst: true, lifeline-style: (fill: rgb("#005500"))) | ||||||
|   _seq("bob", "george", comment: "create", enable-dst: true) |   _seq("bob", "george", comment: "create", create-dst: true) | ||||||
|   _seq("bob", "bill", comment: "done in thread 2", disable-src: true, dashed: true) |   _seq("bob", "bill", comment: "done in thread 2", disable-src: true, dashed: true) | ||||||
|   _seq("bob", "bob", comment: "rc", disable-src: true, dashed: true) |   _seq("bob", "bob", comment: "rc", disable-src: true, dashed: true) | ||||||
|   _seq("bob", "george", comment: "delete", destroy-dst: true) |   _seq("bob", "george", comment: "delete", destroy-dst: true) | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| #import "@preview/cetz:0.2.2": canvas, draw | #import "@preview/cetz:0.2.2": canvas, draw | ||||||
| #import "utils.typ": get-participants-i | #import "utils.typ": get-participants-i, get-style | ||||||
| #import "group.typ" | #import "group.typ" | ||||||
| #import "sequence.typ" | #import "sequence.typ" | ||||||
| #import "separator.typ" | #import "separator.typ" | ||||||
| @@ -209,10 +209,12 @@ | |||||||
|  |  | ||||||
|       // Draw lifeline rectangles (reverse for bottom to top) |       // Draw lifeline rectangles (reverse for bottom to top) | ||||||
|       for rect in rects.rev() { |       for rect in rects.rev() { | ||||||
|         let (cx, y0, y1) = rect |         let (cx, y0, y1, style) = rect | ||||||
|  |         let style = get-style("lifeline", style) | ||||||
|         draw.rect( |         draw.rect( | ||||||
|           (cx - LIFELINE-W / 2, y0), |           (cx - LIFELINE-W / 2, y0), | ||||||
|           (cx + LIFELINE-W / 2, y1) |           (cx + LIFELINE-W / 2, y1), | ||||||
|  |           ..style | ||||||
|         ) |         ) | ||||||
|       } |       } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,10 +10,12 @@ | |||||||
|   color: black, |   color: black, | ||||||
|   flip: false, |   flip: false, | ||||||
|   enable-dst: false, |   enable-dst: false, | ||||||
|  |   create-dst: false, | ||||||
|   disable-dst: false, |   disable-dst: false, | ||||||
|   destroy-dst: false, |   destroy-dst: false, | ||||||
|   disable-src: false, |   disable-src: false, | ||||||
|   destroy-src: false, |   destroy-src: false, | ||||||
|  |   lifeline-style: auto | ||||||
| ) = { | ) = { | ||||||
|   return (( |   return (( | ||||||
|     type: "seq", |     type: "seq", | ||||||
| @@ -25,10 +27,12 @@ | |||||||
|     color: color, |     color: color, | ||||||
|     flip: flip, |     flip: flip, | ||||||
|     enable-dst: enable-dst, |     enable-dst: enable-dst, | ||||||
|  |     create-dst: create-dst, | ||||||
|     disable-dst: disable-dst, |     disable-dst: disable-dst, | ||||||
|     destroy-dst: destroy-dst, |     destroy-dst: destroy-dst, | ||||||
|     disable-src: disable-src, |     disable-src: disable-src, | ||||||
|     destroy-src: destroy-src, |     destroy-src: destroy-src, | ||||||
|  |     lifeline-style: lifeline-style, | ||||||
|   ),) |   ),) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -45,7 +49,7 @@ | |||||||
|   if elmt.disable-src { |   if elmt.disable-src { | ||||||
|     let src-line = lifelines.at(i1) |     let src-line = lifelines.at(i1) | ||||||
|     src-line.level -= 1 |     src-line.level -= 1 | ||||||
|     src-line.lines.push(("disable", y, auto)) |     src-line.lines.push(("disable", y)) | ||||||
|     lifelines.at(i1) = src-line |     lifelines.at(i1) = src-line | ||||||
|   } |   } | ||||||
|   if elmt.destroy-src { |   if elmt.destroy-src { | ||||||
| @@ -142,7 +146,12 @@ | |||||||
|   } |   } | ||||||
|   if elmt.enable-dst { |   if elmt.enable-dst { | ||||||
|     let dst-line = lifelines.at(i2) |     let dst-line = lifelines.at(i2) | ||||||
|     dst-line.lines.push(("enable", y, auto)) |     dst-line.lines.push(("enable", y, elmt.lifeline-style)) | ||||||
|  |     lifelines.at(i2) = dst-line | ||||||
|  |   } | ||||||
|  |   if elmt.create-dst { | ||||||
|  |     let dst-line = lifelines.at(i2) | ||||||
|  |     dst-line.lines.push(("create", y)) | ||||||
|     lifelines.at(i2) = dst-line |     lifelines.at(i2) = dst-line | ||||||
|   } |   } | ||||||
|   y -= Y-SPACE |   y -= Y-SPACE | ||||||
|   | |||||||
| @@ -25,3 +25,19 @@ | |||||||
|   } |   } | ||||||
|   return (min-i, max-i) |   return (min-i, max-i) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #let get-style(base-name, mods) = { | ||||||
|  |   let style = if base-name == "lifeline" {( | ||||||
|  |     fill: white, | ||||||
|  |     stroke: black + 1pt | ||||||
|  |   )} | ||||||
|  |  | ||||||
|  |   if mods == auto { | ||||||
|  |     return style | ||||||
|  |   } | ||||||
|  |   if type(mods) == dictionary { | ||||||
|  |     return style + mods | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   panic("Invalid type for parameter mods, expected auto or dictionary, got " + str(type(mods))) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user