Fossil: Notes About Branch tooltip-copyhash

Fossil SCM

TODO:

  • ☑️ Trim the length of the copied hashes to the limit defined by the hash-digits setting.
  • ☑️ Also apply the same limit to the link text for hashes?
  • ☑️ Reevaluate the position of the "Copy Hash" icon on the tooltip.
  • Refresh my trigonometry skills, and calculate the outline of the icon more accurately. See comment below.

Copy text to clipboard using Javascript:

Uncompressed source code for the "Copy Hash" icon:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14">
<path
  style="fill: black; opacity:0"
  d="M 14 14 H 0 V 0 h 14 v 14 z" />
<path
  style="fill:rgb(240,240,240)"
  d="M 1 0 h 6.6 l 2 2 h 1 l 3.4 3.4 v 8.6 h -10 v -2 h -3 z" />
<path
  style="fill:rgb(64,64,64)"
  d="M 2 1 h 5 l 3 3 v 7 h -8 z" />
<path
  style="fill:rgb(248,248,248)"
  d="M 3 2 h 3.6 l 2.4 2.4 v 5.6 h -6 z" />
<path
  style="fill:rgb(80,128,208)"
  d="M 4 5 h 4 v 1 h -4 z m 0 2 h 4 v 1 h -4 z" />
<path
  style="fill:rgb(64,64,64)"
  d="M 5 3 h 5 l 3 3 v 7 h -8 z" />
<path
  style="fill:rgb(248,248,248)"
  d="M 10 4.4 v 1.6 h 1.6 z m -4 -0.6 h 3 v 3 h -3 z m 0 3 h 6 v 5.4 h -6 z" />
<path
  style="fill:rgb(80,128,208)"
  d="M 7 8 h 4 v 1 h -4 z m 0 2 h 4 v 1 h -4 z" />
</svg>

Following are example and source code for the icon with the outline calculated more accurately, i.e. narrower on the sloping side. Yet it turns out the original variant (drawn by eye) looks better at small sizes of 14 to ≈28 (device) pixels on dark backgrounds, due to the resulting softer anti-aliasing on the sloping side.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14">
<path
  style="fill: black; opacity:0"
  d="M 14 14 H 0 V 0 h 14 v 14 z" />
<path
  style="fill:rgb(240,240,240)"
  d="M 1 0 h 6.42 l 2 2 h 1 l 3.58 3.58 v 8.42 h -10 v -2 h -3 z" />
<path
  style="fill:rgb(64,64,64)"
  d="M 2 1 h 5 l 3 3 v 7 h -8 z" />
<path
  style="fill:rgb(248,248,248)"
  d="M 3 2 h 3.6 l 2.4 2.4 v 5.6 h -6 z" />
<path
  style="fill:rgb(80,128,208)"
  d="M 4 5 h 4 v 1 h -4 z m 0 2 h 4 v 1 h -4 z" />
<path
  style="fill:rgb(64,64,64)"
  d="M 5 3 h 5 l 3 3 v 7 h -8 z" />
<path
  style="fill:rgb(248,248,248)"
  d="M 10 4.4 v 1.6 h 1.6 z m -4 -0.6 h 3 v 3 h -3 z m 0 3 h 6 v 5.4 h -6 z" />
<path
  style="fill:rgb(80,128,208)"
  d="M 7 8 h 4 v 1 h -4 z m 0 2 h 4 v 1 h -4 z" />
</svg>