From 9ed217870f00b7abed9ab64e983733b5481184ab Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Fri, 18 Sep 2020 07:32:45 -0600 Subject: [PATCH] Fix example rendering --- examples/common.nim | 50 +++++++++++++++++++++++++++----------- examples/resources/fa.ttf | Bin 191832 -> 203980 bytes nanovg.nimble | 3 ++- 3 files changed, 38 insertions(+), 15 deletions(-) mode change 100755 => 100644 examples/resources/fa.ttf diff --git a/examples/common.nim b/examples/common.nim index c1eb738..3ded1b7 100644 --- a/examples/common.nim +++ b/examples/common.nim @@ -126,11 +126,12 @@ proc cpToUtf8*(code: int): string = return res -let Colors: tuple[Red, Green, Blue, Yellow, Orange, Purple, White, Grey, Black: Color] = +let Colors: tuple[Red, Green, Blue, LightBlue, Yellow, Orange, Purple, White, Grey, Black: Color] = ( Red: rgb(231, 64, 74), Green: rgb(40, 184, 115), - Blue: rgb(43, 183, 209), + Blue: rgb(29, 100, 210), + LightBlue: rgb(43, 183, 209), Yellow: rgb(243, 203, 57), Orange: rgb(255, 130, 76), Purple: rgb(97, 18, 204), @@ -150,10 +151,11 @@ proc defaultButtonStyle(fillColor: Color): StyleConfig {.inline.} = paddingTop: 5.0, paddingBottom: 5.0, iconFont: "fa", + icon: some(Icon.Bacteria), fontBlur: 0.0, font: "sans-bold", fontSize: 20.0, - fontColor: rgba(255, 255, 255, 160), + fontColor: rgb(200, 200, 200), hasFontShadow: true, fontShadowColor: rgba(0, 0, 0, 160), fontShadowXOffset: 0.0, @@ -164,16 +166,18 @@ proc defaultButtonStyle(fillColor: Color): StyleConfig {.inline.} = shadowColor: rgba(0, 0, 0, 90), shadowXOffset: 3.0, shadowYOffset: 3.0, + fillColor: fillColor, gradientStartColor: rgba(255, 255, 255, if fillColor.isBlack: 16 else: 32), gradientEndColor: rgba(0, 0, 0, if fillColor.isBlack: 16 else: 32), textAlignments: @[Alignment.Center, Alignment.Middle] ) -let DefaultButtonStyles: tuple[Red, Green, Blue, Yellow, Orange, Purple, White, Grey, Black: StyleConfig] = +let DefaultButtonStyles: tuple[Red, Green, Blue, LightBlue, Yellow, Orange, Purple, White, Grey, Black: StyleConfig] = ( Red: defaultButtonStyle(Colors.Red), Green: defaultButtonStyle(Colors.Green), Blue: defaultButtonStyle(Colors.Blue), + LightBlue: defaultButtonStyle(Colors.LightBlue), Yellow: defaultButtonStyle(Colors.Yellow), Orange: defaultButtonStyle(Colors.Orange), Purple: defaultButtonStyle(Colors.Purple), @@ -226,13 +230,17 @@ proc drawButton*(vg: Context, text: string, x, y: float, style: StyleConfig = De let textWidth = textBounds.horizontalAdvance let height = (textBounds.bounds.ymax - textBounds.bounds.ymin) + style.paddingTop + style.paddingBottom - vg.setFontSize(height * 0.5) + vg.setFontSize((style.fontSize*2) / 3) vg.setFont(style.iconFont) - let iconBounds = vg.textBounds($style.icon, 0, 0) - var iconWidth = iconBounds.horizontalAdvance - # iconWidth += height*0.15 + var iconBounds: TextBounds + var iconWidth = 0.0 + var width = style.paddingLeft + style.paddingRight + textWidth + if style.icon.isSome: + iconBounds = vg.textBounds($style.icon.get, 0, 0) + iconWidth = iconBounds.horizontalAdvance + iconWidth += height * 0.15 - let width = textWidth + iconWidth + style.paddingLeft + style.paddingRight + width += iconWidth let bg = vg.linearGradient( x, y, x, y+height, @@ -240,8 +248,6 @@ proc drawButton*(vg: Context, text: string, x, y: float, style: StyleConfig = De style.gradientEndColor ) - let color = style.fillColor - let shadowColor = style.shadowColor let lightWidth = style.highlightWidth if style.hasShadow: @@ -262,8 +268,10 @@ proc drawButton*(vg: Context, text: string, x, y: float, style: StyleConfig = De style.cornerRadiusTopLeft, style.cornerRadiusTopRight, style.cornerRadiusBottomRight, style.cornerRadiusBottomLeft ) - vg.setFillColor(style.fillColor) - vg.pathFill() + + if not isBlack(style.fillColor): + vg.setFillColor(style.fillColor) + vg.pathFill() vg.setFillPaint(bg) vg.pathFill() @@ -275,10 +283,24 @@ proc drawButton*(vg: Context, text: string, x, y: float, style: StyleConfig = De vg.pathLineTo(x+width-(style.cornerRadiusBottomLeft), y+lightWidth+1) vg.pathStroke() + if style.icon.isSome: + vg.setFontSize((style.fontSize*2) / 3) + vg.setFont(style.iconFont) + vg.textAlign(style.textAlignments) + if style.hasFontShadow: + vg.setFillColor(style.fontShadowColor) + vg.text($style.icon.get, x + width/2 - textWidth/2, y + height/2 + 1) + vg.setFillColor(style.fontColor) + vg.text($style.icon.get, x + width/2 - textWidth/2, y + height/2) + + vg.setFontSize(style.fontSize) vg.setFont(style.font) vg.textAlign(style.textAlignments) + if style.hasFontShadow: + vg.setFillColor(style.fontShadowColor) + vg.text(text, x + width/2 + iconWidth/2, y + height/2 + 1) vg.setFillColor(style.fontColor) - vg.text(text, x + width, y + height - 1) + vg.text(text, x + width/2 + iconWidth/2, y + height/2) proc drawButton*(vg: Context, preicon: Icon, text: string, x, y, w, h: float, color: Color) = diff --git a/examples/resources/fa.ttf b/examples/resources/fa.ttf old mode 100755 new mode 100644 index c6c3dd4d40e6935dbda5f4fc671956c41b768a09..7c59512f3ca5c18cae924d6897512ff5734c32b8 GIT binary patch delta 27529 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%0DSo{~X!4JKho2VE zY|W1!O85KC22Bgi2&tLEhxs%I(Km=lJe*)Kv*BSr{)~OX$R!kdPrf5h`aEjy6qh?d zo7taXM3O^8!v{kvx#U+HxY5~hS)-00i&~)iCB8Dm{6ir*j-QehKO59|Sx2YA`@eHR znZ=+FU<=|W99S|lc^9wdv&%DUcJZWJKDz{W?WF03D_NI*(;B>g7nYPH*#FK)_#^D? z{wp7?$Xxkd{v>;QaNKS_6ThfbRF=8+Q9elz7oBDKEz6(z&+qYA=AB3Rjb7S@L7r+J zNyC~H;>7p4kh6u3lcW?_k1$@0j8~KQyBu0H^X?!Y zYtWj(Bye}%vpkKswX;2!&Y#~oJkU9R{-yKdz474#o@By$JQEU2A$I;HSoC8mD#mmc zATr%mKj38%+Im*I@53I1^$sK#HwGXedj6oE_~OXmG(xQv@x>~R8YMB8?1Ph@KdEYb zFyvOdq2TyOalPJY>DshqQ&$UaNsC|1;CfMMOZ)7qw&j!B1LB@?CKmg>V_D8~Y1pwP zt$1qd=+UiHi!piNEnEu)BCanKFTw9tq2K(-r=Hp2D#&BvcYh%*RbLkkdcmZ2Loa_VkWTC zEE7(Kj^1}H!nJJHcTQKT>zrM?vag=LzOHl5VfPIs@ajqop(-3x;7TA4R{Oi}jAXuW z64TQBs6$Hjl;=MdOqj4>!a3egD4goK4L_ST097M;!h$KDeUov|bND?^2t>75KHhi< zE+dYc#)&&HBR@hA8?nR+DN|g&66{2HViqyENzb<0-rB$YKzs$e(_^FH6Y!DT1*#9V z1cyZUNy6bZp4`^!nPj~O&XGX&4|**0d`|`t*Tj&U@{{Lu4fJ{x_w_7i0DIUtBzS}v zgiOcdyg8k~?_PuN;y;=4*o<6Qp(MjEo_g^rMY)m-`)CZmI2Sf4#($Oz`za)OdJaki zNRgUz@j=Ry*5<+yE*zmGjI7zVqR8_s$jJK4ZBOubwMHnH zb<~gvJjn~R+Sa&!idz^GPrmzOgy=N;)ag=it_O9ON6=fLFVeG`FApH-{&b6HiJKrow@k?{E1A{ z5KnO`%WN3p>+<<1KAMl=wY(1ES_5x{J-3;+@K)ZoZ68l2XbYdkXTw@>GCzf%%Deeo zXnOPbe11A#KsQo(Cbf@`%UrpS7iaF?2h$&Zhw6sR5I#BSgKzEQDV9k*%fp$rXL(bc z9+S?K&X-n7tE3C0)zTVit+Y;BPqz(jewN?ORC$t|k|$>>e!#nY^lN#Uyj)&E!OWT; z@Y~b!F8LApyYg;%kNiFPQF%~)OnzK`LVi--D?cSaEq`AglK08a$j{2p$v=>vmtT-y zlz%AyNdB?>lKd0-W%;M_EAp%IYx2+J*X93^e=ffv@0Wie|580~=|#&{Y|=JuSh{M> ziVga?OP6h0v0>FxBNw=6t?%6Rm)34tmEO4Vq7~tlOV=&0UAcbE@>T23uU)%h`Ko10 z*Vta<#@?kHRt()?Tu7S1w&OSoAK(zbBBf=DpkOhEif%hdzzt1%MfrrDt{9yPE#2xn!P`$hP{{v7-bcFx_ delta 16097 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 diff --git a/nanovg.nimble b/nanovg.nimble index 358b60b..5bab257 100644 --- a/nanovg.nimble +++ b/nanovg.nimble @@ -13,7 +13,8 @@ requires "nim >= 1.0.6", "opengl >= 1.2.6", "sdl2#head", "https://github.com/jyapayne/nim-glew#head", - "https://github.com/jyapayne/nim-glfw#head" + "https://github.com/jyapayne/nim-glfw#head", + "zip#0.3.1" import os