Merge pull request #150 from kirchsth/feature/149_LegendColor

#149  Calculate missing legend colors based on brightness
pull/170/head
Ben Peachey 5 years ago committed by GitHub
commit 8618a7df3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -12,8 +12,9 @@
!global $LEGEND_FONT_COLOR = "#FFFFFF"
!global $LEGEND_TITLE_COLOR = "#000000"
!global $LEGEND_UNDEFINED_BG_COLOR = "#D5CFEE"
!global $LEGEND_UNDEFINED_FONT_COLOR = "#8B77E4"
' %darken(darkkhaki,50), #khaki
!global $LEGEND_DARK_COLOR = "#66622E"
!global $LEGEND_LIGHT_COLOR = "#khaki"
' Labels
' ##################################
@ -202,7 +203,7 @@ $tagSkin
!endprocedure
' arrow colors cannot start with # (legend background has to start with #)
!function ColorNoHash($c)
!function $colorWithoutHash($c)
!if (%substr($c, 0, 1) == "#")
!$c = %substr($c,1)
!endif
@ -213,39 +214,95 @@ $tagSkin
!$elementSkin = "skinparam arrow<<" + $tagStereo + ">> {" + %newline()
!$elementSkin = $elementSkin + " Color "
!if ($lineColor!="")
!$elementSkin = $elementSkin + ColorNoHash($lineColor)
!$elementSkin = $elementSkin + $colorWithoutHash($lineColor)
!endif
!if ($textColor!="")
!$elementSkin = $elementSkin + ";text:" + ColorNoHash($textColor)
!$elementSkin = $elementSkin + ";text:" + $colorWithoutHash($textColor)
!endif
!$elementSkin = $elementSkin + %newline()
!$elementSkin = $elementSkin + "}" + %newline()
$elementSkin
!endprocedure
!function $tagLegendEntry($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing, $shape)
!$tagEntry = "|"
!if ($bgColor!="")
!$bg = $bgColor
' %is_dark() requires PlantUML version >=1.2021.6
!if (%function_exists("%is_dark"))
!$PlantUMLSupportsDynamicLegendColor = %true()
!else
!$PlantUMLSupportsDynamicLegendColor = %false()
!log "dynamic undefined legend colors" requires PlantUML version >= 1.2021.6, therefore only static assigned colors are used
!endif
!unquoted function $contrastLegend($color)
!if (%is_dark($color))
!$value = $LEGEND_LIGHT_COLOR
!else
!$bg = $LEGEND_UNDEFINED_BG_COLOR
!$value = $LEGEND_DARK_COLOR
!endif
' named colors have to start with # too
!if (%substr($bg, 0, 1) != "#")
!$bg = "#" + $bg
!endif
!$tagEntry = $tagEntry + "<" + $bg +">"
' <U+25AF> ..white rectangle
!if ($borderColor!="")
!$tagEntry = $tagEntry + "<color:"+$borderColor+"> <U+25AF></color> "
!return $value
!endfunction
!unquoted function $flatLegend($color)
!if (%is_dark($color))
!$value = $LEGEND_DARK_COLOR
!else
!$tagEntry = $tagEntry + "<color:"+$bg+"> <U+25AF></color> "
!$value = $LEGEND_LIGHT_COLOR
!endif
!if ($fontColor!="")
!$tagEntry = $tagEntry + "<color:"+$fontColor+">"
!return $value
!endfunction
' legend background has to start with #
!function $colorWithHash($c)
!if (%substr($c, 0, 1) != "#")
!$c = "#" + $c
!endif
!return $c
!endfunction
!function $tagLegendEntry($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing, $shape)
!$bg = $bgColor
!$fo = $fontColor
!$bo = $borderColor
!if ($fo == "")
!if ($bg != "")
!if ($PlantUMLSupportsDynamicLegendColor)
!$fo = $contrastLegend($bg)
!else
!$fo = $LEGEND_DARK_COLOR
!endif
!else
!if ($bo == "")
!$fo = $LEGEND_DARK_COLOR
!$bg = $LEGEND_LIGHT_COLOR
!else
!if ($PlantUMLSupportsDynamicLegendColor)
!$fo = $flatLegend($bo)
!$bg = $contrastLegend($bo)
!else
!$fo = $LEGEND_DARK_COLOR
!$bg = $LEGEND_LIGHT_COLOR
!endif
!endif
!endif
!else
!$tagEntry = $tagEntry + "<color:"+$LEGEND_UNDEFINED_FONT_COLOR+">"
!if ($bg == "")
!if ($PlantUMLSupportsDynamicLegendColor)
!$bg = $contrastLegend($fo)
!else
!$bg = $LEGEND_LIGHT_COLOR
!endif
!endif
!endif
!if ($bo == "")
!$bo = $bg
!endif
!$tagEntry = "|"
!$tagEntry = $tagEntry + "<" + $colorWithHash($bg) +">"
' <U+25AF> ..white rectangle
!$tagEntry = $tagEntry + "<color:"+$bo+"> <U+25AF></color> "
!$tagEntry = $tagEntry + "<color:"+$fo+">"
!$tagEntry = $tagEntry + " " + $tagStereo + " "
!if ($shadowing == "true")
!$tagEntry = $tagEntry + $LEGEND_SHADOW_TEXT
@ -275,18 +332,28 @@ $elementSkin
!endfunction
!function $tagRelLegendEntry($tagStereo, $textColor, $lineColor)
!$tagEntry = "|"
' <U+2500> ..white line
!if ($lineColor!="")
!$tagEntry = $tagEntry + "<color:"+$lineColor+"> <U+2500></color> "
!else
!$tagEntry = $tagEntry + " <U+2500> "
!$tc = $textColor
!$lc = $lineColor
!if ($tc=="")
!if ($PlantUMLSupportsDynamicLegendColor)
!$tc = $flatLegend($ARROW_COLOR)
!else
!$tc = $LEGEND_DARK_COLOR
!endif
!endif
!if ($textColor!="")
!$tagEntry = $tagEntry + "<color:"+$textColor+">"
!else
!$tagEntry = $tagEntry + "<color:"+$LEGEND_UNDEFINED_FONT_COLOR+">"
!if ($lc=="")
!if ($PlantUMLSupportsDynamicLegendColor)
!$lc = $flatLegend($ARROW_COLOR)
!else
!$lc = $LEGEND_DARK_COLOR
!endif
!endif
!$tagEntry = "|"
' <U+2500> ..white line
!$tagEntry = $tagEntry + "<color:"+$lc+"> <U+2500></color> "
!$tagEntry = $tagEntry + "<color:"+$tc+">"
!$tagEntry = $tagEntry + " " + $tagStereo + " "
!if ($textColor == "")
!$tagEntry = $tagEntry + $LEGEND_NO_FONT_TEXT

Loading…
Cancel
Save