From 11e380634bd594f5635f2f8e89a6e8c075ec1222 Mon Sep 17 00:00:00 2001 From: oneumyvakin Date: Thu, 25 Jan 2018 00:43:24 +0700 Subject: [PATCH] Port changes 'fixing styling issues w/ the stack bar chart.' from commit a0ea0129036c613675742b96f051df3a1a08821f (#66) --- _examples/bar_chart/main.go | 7 +++++++ _examples/bar_chart/output.png | Bin 16476 -> 19152 bytes bar_chart.go | 37 +++++++++++++++++++++++++++++---- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/_examples/bar_chart/main.go b/_examples/bar_chart/main.go index 6afc886..6b8db61 100644 --- a/_examples/bar_chart/main.go +++ b/_examples/bar_chart/main.go @@ -11,6 +11,13 @@ import ( func drawChart(res http.ResponseWriter, req *http.Request) { sbc := chart.BarChart{ + Title: "Test Bar Chart", + TitleStyle: chart.StyleShow(), + Background: chart.Style{ + Padding: chart.Box{ + Top: 40, + }, + }, Height: 512, BarWidth: 60, XAxis: chart.Style{ diff --git a/_examples/bar_chart/output.png b/_examples/bar_chart/output.png index 59c6c890246854df3e13817f5f14ac2b4c8ac0cb..321a3414e6355cb11c52ec6c30ba7e89147b2c49 100644 GIT binary patch literal 19152 zcmeIa2{e{(-!6PN3q?hWB8?)Hu`-pUA{jD8Xfl(`Q-+EtNfScIlsT1|P$6YVZeuc3 z$UM*E{Tp1q#;d!N0YckjLS_wBWI>%Sg7ab5Ryo#$^je#dc~?kJr(v4)nFmP8`0 zIdxJ-g+yA8zb+-wEX9|{DR%})B)Py-GDlS%p7k|5sxoOTOb*MZM%}!-ly)7H{iWr1 zWDdMsCc8u<@=lh=(@iDHk57Nx^@xl0G?VbhILmsO^S4j#zejfdtJYbOXx+O*Gw`%iDO9Gw2m}|~ewGbmA)+PAxBkW8w?D$G@r)(u2 zhO})5@o1zYvNXgO_j`=Q7t&@<>K6fN>X$1X)GwcCh&zxTtlQwiKwKEB7@qGko5A>@ zy1Kf!_;_pK64IgV_OKR?Ch99v5Jy7~LRe*Kbgo=`Os5*4**%CdaC zTVc!At>eN8JQ^>f@#n=0EiEk()4C*u5Rv}I^hBkN8#ZiUVcFv`H8)zhnnZfeg2%M7 zpBd{;DOi}<>(kuaJkCzCvbOI05~^KWC1T#Ve8r0C*;xv|m(4&^_Jaox#>U2I`}3S9 z!z5jtqGWv+0&guLsrng`Nbk0t4wsy-6*zFWPZESCwrZ?tR!t(i%onWCM6}s&z~~F zYyG=C+ot;wq;;MJ~6 zHB>Y-?38jQvGD7j&#{S5>+kFoH7I}jyCS6Zt)q2in8fSXuNgQb%Rhf!O-EN49*g(YxiyjTAFRx!IR2e18je)N`*KA-N}DJdF~ ze89ekA}i@PF|x99o9E`_oOyQewPLtr)Cs?h($5ZB{wfa=Ov#_=376PJdRM&-tCRXY z-BjcH^*MhYjeEYn+UX{>@n>T>kKNw1d9xaqm|b7P{jFkTGI?ZVBv{Cp{6@b_IZF1> zp+l!m96NT*$Hym~Vf%>_C&I-Y$)7(PkF{mC%F9n{E2*dmSpPoFDU;_kE;&C|Eo@r%Ox#g`pWmYJ_L?

a_y($LV)LT_(x9~SABBIxhmo zd7|%-Rr^Uz&8KPmPS8YD8A;Ce33lg+KJsGV2otmC+r8VMrzZZ!jT_S5gt1 ze1TOiZeOao_U=7(>eRywJ;x6Jk^ZwUP9L)T<&n{W)sdpirTY8Vwo(=*u?Hu8x&2Kj z3-e@&2XEhs8*9@jBWt=lUY^h1ZvHelIH2HJUBm0kZu8?BoF3B3!w*wa4J-Nd^2No( zv>O%9oLLyi9h5~d|McQ8F=dy$e$bd4%_e%)NL%IXS%f~Th*{Q!_e<^V?c)#d@W`|F zH0Rp4{rdG%H;>!nReHLDoE&+9M%o+ca4Hvjx&!eqh#Dg9g8(s+nnT)IU%YrxMdi`h z-r1Wg=stY-5Pb}{e_}ux@2wwf&drR9YKu7L6JK&e|6y~BI|D>!&(Fh?sGWH=^pLe|jszL$!YLDTYz1i=>2t)lza>vQcwX$_!F@V8X~%sw zN_!U-6}io|ahyAM4yCJicCdgyxuD*4Ldt%iiBBhohV$mFTT;{Qk9VB7AE%m-m6e5M z=^!4ZW$DfpBq^x^lp(2(llgNa^4-Z|K|w*CmEnPs3HCNN=hKWH+Lx zXSUjPeLYGuTwkzYTmJMwAfJv3w?DQknUUnd=*uR$(EeBvF>hpGU|?>p(_Nds&kk1A*JsAX zbs?GV+_{7Lo_I}5R5X)8a_U`0g+f#nvgpD)_a(V@{g0L&>8(pPEPtw8ZMpQFj~AMU zaE9ZkfpJ@fXe+{k{3s+$!uexSQCw{g-rKV6<7!TJDc5~lc`5Ou?VlgV?7v`PL0NUe zYUsy%T3%UMSx!#QWUX{^hLKRPep$eLYwOhR-Q+$!a;Ak|xBdyTz&!0ne%-m;vIlsB z7+=GwqaS_QVqIuIl$Iu7zlZ=x6FFsK)|l3PmzgIzHZ6U1(T5L_SRwM8NR)Rq8qyk8 zp($j2y5jL=B<|yAh{4K7hb~R+q`<$yPVL!&i)r<6SC^ zot$QFtzr-m6!e$tz+a+2BB`4NGp{z!*r!}IGuvmbI{x5@a9Ux&+qsc471CGP7qa@% zdQ(VCbX*Q8*CdsAY*@_A5r#7-Sw*jw_i>P1SBd^xjM>dOnT4`O=Ys)`<`h*BXTO?nd7G*jv zBje%Waq_Y4s#U8H_v?1ZIygI1-t(9gZ0!G4?Bh11nj^%jU}V%K+IoFQ#e$BGju-uA zflEc+NKVN~(P1T~+)Ab8nm{2Wo0m zV^oma-RiGS;r=?mm%}7~Q^$BC7MvCswpFf2UPv2O!D*8lRZ*Agao1awUw{NHV(S75G zGB{8cs89Cd=&hCHgb=h(;1=Qddua~y1I@X!WhW~eMXokEAZMi(rY>K*_R1zr48_h2;;a+U4p@L%A)2CeK z%U7;6F{EHOfEGx?b$QPA#yhyV9(vb_F*w?&32p|XzteEtr&KG;Z7~uxg1+@ zadG2EyzEIf)R#)}S5KZi2^F)K``#GqkX|`uQeZ0|96H$Wx-E!*r!lf8#3FyMIsdsg zGP83ppWNTRV@FJQBO3UmOK3qN`C@B<8wJ&YY&RXdA|YbF*x<^Q8XJ1jko2Y1jHH?d zFAi6SuCEbq-@Zk27(-{^cboP}NwLt*2WBTlqjwKW$%FmoPO&SqyAjFd>PlBJ$ts~ z-sWmRB=ux1EW^O3hdUZK&lTO-kgiB4o`*IgU+|!zp#k_MP|x)n`q0l0o{jEfPd3cd z>pE97HO+l~ya)Zf)s5nUKACINjr*Rh9wxn`yG7j-;Imh+UY$!dKp+J?c`~OW>s(V= zIhbCryFvPCNQm2btwvjkA3qgQ+Uu>G;S07yu7?#bVwzoYv_AOSwxtG0_lNz zgT@78qk!jeV(!&OG`_8^k{uQi&w3;uW!ZeHEhv= zTO}NZE+9FXX;-e@vWbaljNXtPmAhbJJf$pIs|);LT>YXVOhSA1=5=(2aMzh` zVvi?Y|B&@%UBfQ!fb~MT<)!prKr0e7D8FWJAE@gcuT;}FXt-m?4y3=LV&#t?Kd|^S zv$KIxGt-^n{90+BN=i=T=v=sZm3`BuDHPpPJX31i{u6cY1+Q6J-tqR{bja!o@I!iG zMp{}Qq7?~jP!SyCQf%l8bo5dy-J~w*9MXtvOyuZf0mWtbSFy@_bVgO~+UjRL^OLQV zGQEZE^L>>=xhvdR?p2+A8L^zCx(m<5!&6pUn;sk#BOB#7HFWXl(Hn`0rsIarLqCpU ztFg^I*VXE*l{GaTC<`tuEG*_Sj`??ed@NetetUJXuyeNIs;ulsK#s7BTa_I>Jv}om zTJ5Z?$db$?(ufSAf<(IF@%=fz{Cgu9mY*2GDk<6q#NWh2fVO(;QvxlFTi!axv|gA( z0;Z)2+1pQ!wDv!J_AE)2J3SXY-rmY8;p;>GrOR*;eeuH`CnSM9MtFJDlZHk{xLd6{ zO8sNx1H*u9lGTB;{4iu-CCL%!(;JzXjCg0s3JP1GKa< zuj)h?;2wMT?rpt3S|QJ$$Fy-{hU@&yyLU&}*g|d!ELpN-*-H8c+~(%yw){tlN5^9z z(>xe~`QN;H6_>V6OiWBz*cJ!^&|-r$J-hf+W~-}@pPyTsuV{2WMjT9bNx#>p?;{nx zXs(`QG)eMtiMsvUV1|7K?q+fW4GcvLeW@Qa5$@W9-XlG%m(m}vSFrF>CpRq@*&!$( z04)BP5w+`>);2t3-CM^|JQ~uvOE)rLg?n@Qeo|4ap=(pbn$5&h7VzxY5d|#t?#41l zM@Li+liGw@Dav$Z!d?FJS&W-Ee~VS*FwT3xL_*Q}-PM(a3eSvX)yb`^s7RJh(HdpE zX4aV3cyKmwO4PKcJ}Ex`1hIt2G*ncq23sT$GMq(^cFBt%Vvt_VC4g+0{}FY zG5Y)a*Epbm?^XzY8Wgl^&mO-mhpcMilsVkyEIsdE$3#vdUEnG&FOU9K!1&8owBfD2{182CCcio2}CCF-Gd< zIbntxo0!l|Gpg$QmWl{-o$d$(UjTBUN7s}3Y@6<8wm9`-&;rJ)tf&|t9$rmP4=RC0 z`Wb(eD!076ykh9#T^>`}_iBhVHLMJ~fB(Lq;g=@ds+d?f+6{np5QG0i`2@0`9kkI`M^9NNFvdWKrR4BG_0IlR1+*lDeWFs75?3SOa>PU8BGRU3hpc~Z5qH>s@Sp=Z`V{lpj*bq6F!5=i zEopD0P99}p7IVp4H;U`EYu7wWkx_%+GgG8@P`7*kzEx$awl*dAw}QiXy_^S zGRL-e>9S>8w{CTt>E2_maP{iIDvs+v+S;PNhmzboFBey|&9F=RuEDHQ^FgaM3Xd_x zkDLOA3JVLv)+ML?`0@UhZExMy{TJLBBi$$qDC+VjPjT zBnQd-T;v`!{(VfdB_i;Oa4c$YSwt&xcK}2Bq4harc z*X*KT#sC5ZNs~85mM3mD6{X%JuFGafk@j{jK6HSAZ>}OHB!3llWrzb$=6mPPxvXm! z(c}^mg7#nhfKvHFA>@S;SB=RymJCI$jHRzBTM!+Siz|*i@OC8=9%nzzu3fwIT&ML@ z1Zto3H|I`bP}a$@Sxrl8QWIB&)xxxregYF0W>N4h*a9_Ud$3Eyn_Mgl;59ZjwzIRt z>@z(*O{ES@g@Uo2f&ALpR{E(16#@Kud>&|_;R5=l0RF(l+qX6&fzdsQT3xG_MO1sz zrseYTWvG9_!NI>fI+&T5PEIbz_)u1lsq@*hEvCH`@uG%T7msnu*x6-dY}>y5LtWhj z>PTD<_n%__;k$lxKgd1gVp)B?#tgeVR>3F7%2v{Y$KkVkk)r>lWzuEm^9o>AW_4%IM2>7r$TU#J_wwxcZiQ8{evC-FQ@QdTJ^tr;ihLuc??&Q*QZ_u2V+Uh>JH>SEmMJkQB5ZI4>$H z>iLUO*~zf=@J^3SB4$tX^5(xr91~_$h}nCSdeNo_$RKW}yLUG1Q9rw3>sA-!ZKV{Y z>C>l^-y0&1t>P@gc!bvg3+2Ix&R^4SI?_qchHH=bhDtb#fKdaK#Dm2r?3R#l`SwO1 z`1GZZkNmWqn;QkZ3(ubSq zPTLPU86^hbwE5|Q%g;hX6P;GNixHQ&A8mM}FAw@MG*sv0$&;?G`Ha6nHnRE}VBs2r zH|#mH<*-d0hGnqH(lqH>F5^A5V4(?a6$1|%CHfC&TY_VJznZ#NXbKjasmH6oX5(pgBR zJUSbD#=kWbO%^X~q_3}55#&fsI3>ESFAKI9x7DO(_fVIAWbxUrcu@b}|NhMR=TE$F z4fH%e=yL3*iHV%NJh)}Oh}T(J2RS(-FghjZ{&{C`<$DeuJjl(RK#l_SgHy|xBXq+|Hqh|C4&9wpXJw^@=Q{ZM1$-qFRnOM~MsWv~5!H^+z za_w|d4HRT$Z(p@vyyOVz^$&%G5)u-L+(Tny=X34Mrz;nBL2*&%Vj3)< z2xgSre}=k@^q4C&z~R3*`uVXIrXGD*S0r6S(e6fyhjb(SVu?9KdyMIBindJLBXXrIrF-U z%N~W`ogUuz?wvk!X6>3a$uFEip5=pNMdqQ|FJOf~e*DPJ&Yq+Hr-e07k9Gno#;9^9 z#v5ak92~NwBc^`&@Pj{lYtyaLFZjO0k_xEyAAI@prQw%nRRdqZIwz|Kx{Vt`wJK#f zxuEhQF7Bk$W}}$J##*y9hkqeOPB_(#x_R69sp0ZpQq&eN{2!3w{*4PSMGjK4dx`?O z8w5~AMFr}1vNPbbC@*iabd? z6x0kt>sqmT_3G+a#gwmQ)z#Lha?;+Y69XV=AX%aQ`D@uw`!D7RRqlfM3GG#@ywLqO zGBYa#3Ft$}VP1L!NR+^a{a3B5MhwGUe)snBczEBvOUuBJf=5Gj!aSXr^QS1$fH;5u z{yjjKm7U#2X`62HF2D@T0)!$|r+MyNc2<^=eSOlo%jV`=85y^EfDAbI=E`T&l)O45 zjLBcTaWgcu*?ZlN=zgR$0`st#SYY_P#x+!Y)HUDDf*(J8kfx~uuM(S0Yq5k_So%+3 z-T-+;ZMu{^rIl+ByM6{l0~LImfkQWHbTNaLZEs%Hg=&h)M|jCL9v)NN5L^floA6<& z#j?6>Vq#+O?dX>eo^;R}+!m%gv10048#iyB1_H$pUN<(kSYo!F2c&}niS!Au13k9S zLn&T0#~+G@va<5PzyKkQcB?H;FZ*fC8`DlHDpG!jSfC;J+`Sta6_xk)?Rg!Yn9AA5 zj~_#jiz!8JH#ME_-%uzlP2E-cn-3pWp^za_av=6tTaSYMy2mOkci1NXo=Uusu&`RZ zDtZN^p;Hh*!vD4?B^&Ou=g*s&n3zCoFb@~C2-8YNEs~}I@qhe2IO2$HC0TmWvU1Y|Mt!140%NwgBo8zvre$G3w`8w%ulo1ktf!_h}k> zdM4@U*jS>afI0;D-?(ujVk}hHG+X)a0Z-6n!OQG`ZkQ>y7-WCa1Y^RNFJB1ugB(*9 zBxndd<$V4Ns5ls3^sWzkhJ=J5G$70y82rY!!Kb5S1AfoX&28DT1=FtwwRY#x%DWR= zdFz6qq3ER|8e=hD-hKot?v1qDr+3-F;6?K1^75tvw*pVk!Tk>ii=ey)G28ie>t`M-O!_PEmAnZuD`D@O&Ayun}mB|7ke?= zscHPAQbzB#r5RTPm(GJO|NP|(A2;{i`}ZeCMyzaY{dI?fFmti8YNhDrVFG-qoq2|) z3cN5x3y>?bGc&ZDkg~S0u+&400acC^JJm@~Llbw6nVKyZ7_r_4U!G-SOkP2^5v(zo z@XMfs$PuIZPvm0aY%c}d1Nzfu+h>V@*%HNWVZ)ko_-eH^Tc4j4}GT(alrSB+> zk9odZyRyd*DvQ(E{)~E*wu7MWelT!SKjMEUt8$=f5}&z$U+Sbmk28(%#<>Jv`DF_V ztAQN(x!KPA`g=@P{fXNtY zf-o@;7*<=4{D%obKuj!`92Ll~hrar9jFAIuFNt*f7peksIPd!O8^#X^Q>aA~ICTuFw5!XN=_xv4PvT}1vK7IsAFP{s} z7n~moM29Id6CDYBG=IO7g98oceGVzUexw`*w%_3G)8D-L#~pqUMEzKIHAopz0Riq- zT_gllm1(>$SX}ZwJ(`E%;rt$ONKB8E@z3HX(PvD)lplMCm2|&&>hx)P1_nIcEWov` z-&zjIxx|!wR&j?{w{8_eMDb+A!?Q>y=@m$#HKPjEhCd_rfVAlWG%i2MnNP*VyY}r% z`cOi7giL`9NP*#qS33j67klY~lpbu#KD!X~V|H>7stEMS>tj_X(9k>nfuQl}n6^dD z8m>)`bRZv-6UrMKXHa`SS5$;bxw(QL3lTQ8!ypZDOWtD1dg(Y-ZeQ8Qfq|efc*b^7 zpJyefsHi;%E0j4rcD-bMFXro?Ki6&EyjUo>g~JY7UV_d7V6U#Ojunc*R@mC=V62-^ zJ$m%$w{PD%w9^({Tt~C;F8$v#JsA_#lgT0zgRQNFg>Bb2$EX;am~eYEKomTB^gUJ# z>)H0>hf-AHA~AC7$H0K=@A4oys?#D_orj6y=w*n}(=Jzqz>GbNDN9!1aZPTF2rl#( zQVOiYI)$iqvUC!)3q4pztxo?Vrn3LF7e4KBrY`G38ORF^9^j4jx|K1OgJBrqUAuOz zFRSo+>79G_@c7G_JA+URefEsoX0dhr%lv#C7RJ71%lZ5cBrLnI$rHw3w-_Y3xVXM% ztXjUjJWL{2`p@{r2tE+FfKABgm1UbOgag=?Qnb=bfhsPIsK;nM@%x)(`)}u<20BtrM;g&-v*%0DT62jW`lyy3%A#ZK19p)(!^+=@^<9z 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 literal 16476 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 z

~?kRBbssN0Q|MRIJ$^kAH`>h!KPuVxrd$Lk7hL^8igO=TCfdYudd-8<|MGEP#@ ze{Gi8_gj2x@p^sy(RS_MFS@!xqN?geao}-({9~pb9b-@Mqt31_iG5S(jy&AlnYe

cOi$ocfYQ2tyWsBSZa9`Af($uv z;_FLZ@{tVtu^%`#fO$$pk}Ib>1~~w+kakPpf*&1?NNYniqaI>_>9h}G8*ne?)uqsk za%=`ja&i?2@uGr)-Fx>QH>#5+*P^Q6s03WYh#|NuaB2!92t`Rnqf2XX#t&l-pjfyh z`+9pFkV#n7yB;2E*$(Gdy0UrSo)M9BnCPX9qv4oRO^K$$W3v4gSFoe}b0 zZS*-idbrvUu&~^h78g6fpJYt&hDk;)bj$ymnSqd3*V?KjXbw50rpF40CeYCU#BsVS z#Oi~%fx&*;>!KutYacp3CQn1zW3o6*VA`As$z&R4ZdvLmV-f9K#BtIX0gh1W|M8

l{i5K%~&;_tp>@UR>06q#Ger|p~{MD=2 zeTSgpxdIO&5TKEQFra$j?jXE8*}%UeVhdR1$v0=Qw486J%)aE*LeTmN&tHiDChl*&1QZ&70M_T((?g#4)Nk%@!Et&J>NZ zIn2?Wc5zuqYjq*l8sfZC$g^kT?^pBIWX9wHJc93nr3wZQQqGAvOvEBd7~dBa71h;E zKH$xz@F8qEEaw#cFVS_r#Educiz7 zdQhPNJ-#(JqhT&xx|A4qc>|6;7}mT72n8(2o@#MKk$K0dS=P}nqGyQV8y0^6sYj6u zoo7?U!f31?7IUnDHRh_M`0|R1^{ZAL`6gxH6mc>UA;G^DzBrg$D8<&o!krO|t0<=5 znB3zylw*sjB%)P4%O-y2;A1;`dw-%qeL`@J3(my!tX1Sm+N1)+apR0;q9nCf6>H$K$bT6x>SNoZjSyit0P@NuFF z+{!d(g4nF;jM#>4aQa7}sR*oGV5k&Nzn*9n{|M6F1rsQcGqm(^0HC$wJK32a*j>g1 z1c$|3F!4sx;eA#tTUKMM_7Tt#60j?N3|OC;kpaqb0g$0mM-t?#K@%zE8ciBSZ95Lcd@o00?J0{P*B+8lLaDlLZvOV!0U;qF zN^LSdJFJI*9>oDC0fVY*FrxyfOpK2sccS<{Qu-3CY@nowhJA#&NB}gSprARF#~Pvf zdSLjk6rbkxvciX(l@t`-B9cc(EtckoN1SDWaZ6J(!B)xMH_!Q;Hz4CX2$ZuiC<#3K z_rou*t{(SAf8kcx83FAAiuD^DMmg=Gz9@2NIyRn6r>iH*&B2@kHn=NR=dm&2pCMjc!QY)h+l1w6^ILrAS9sNWXhRA z{2VLjLxgO`BQp-4>0R7ITl-aw2(kf_FJj*9Dz&KU9?E$IJP%d}3iANcO5?4zM~$Yc z>Ss|0@1Pd%jhKAFd`DIY|I*prz36q;hu6TRXP&QpDEf~i6jk(M4WAMMWa&nus=sCnu#rjPn#m?Fr@d4^mIxkNG$s#`L4 z4n;Q`zIxZ$1N!55q8yyMf+MCK$KGOIzxMR<;>QGMc1#bF%QzQIIu#3zANl`qBJ@!u=DwYci z3nOfyp>H}!8poM1yu=K!ZdDW-5zHpF1qGdp^LdL?X?eHAhj6Y&4V#EIiCoDAltmFs zP)m~?;(ZGEe!ckFemFQUr<;Xgycig$h6yfWqPMRB#%h?OQR66%P07gKs>lbg?lZOn zvTZ(PV~jbcot+)RF(P^&9f4hnp{Gb>$;;;m$rRH3-Swne<(P?qC?XkIaSeSD2VEB1 zuZold_dk>D;%K>dK!!J?Vylg%g$1}QDjLqUu2{oX2}d`~k~RIY$;r*g5qu`ET6~t{4e3moBBFgCvY_0_Qih{@5T& z5So0kbXnU5yf$T~)8f!~(A3lvym|3saj_xfRm1@>2hK`%!7(#~L&KXL{7}0!+W{LKI68f$%>quK()+FID&ar+JHq7aJ03cBwN9b+^?wEx`d$EW-cN fKQ3Z}78mQ2KAZ|71BuJc>J(nPM<<|cJ(aAZk diff --git a/bar_chart.go b/bar_chart.go index d6a8f7b..0c24d92 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -126,7 +126,7 @@ func (bc BarChart) Render(rp RendererProvider, w io.Writer) error { canvasBox = bc.getAdjustedCanvasBox(r, canvasBox, yr, yt) yr = bc.setRangeDomains(canvasBox, yr) } - + bc.drawCanvas(r, canvasBox) bc.drawBars(r, canvasBox, yr) bc.drawXAxis(r, canvasBox) bc.drawYAxis(r, canvasBox, yr, yt) @@ -139,6 +139,10 @@ func (bc BarChart) Render(rp RendererProvider, w io.Writer) error { return r.Save(w) } +func (bc BarChart) drawCanvas(r Renderer, canvasBox Box) { + Draw.Box(r, canvasBox, bc.getCanvasStyle()) +} + func (bc BarChart) getRanges() Range { var yrange Range if bc.YAxis.Range != nil && !bc.YAxis.Range.IsZero() { @@ -280,7 +284,32 @@ func (bc BarChart) drawYAxis(r Renderer, canvasBox Box, yr Range, ticks []Tick) func (bc BarChart) drawTitle(r Renderer) { if len(bc.Title) > 0 && bc.TitleStyle.Show { - Draw.TextWithin(r, bc.Title, bc.box(), bc.styleDefaultsTitle()) + r.SetFont(bc.TitleStyle.GetFont(bc.GetFont())) + r.SetFontColor(bc.TitleStyle.GetFontColor(bc.GetColorPalette().TextColor())) + titleFontSize := bc.TitleStyle.GetFontSize(bc.getTitleFontSize()) + r.SetFontSize(titleFontSize) + + textBox := r.MeasureText(bc.Title) + + textWidth := textBox.Width() + textHeight := textBox.Height() + + titleX := (bc.GetWidth() >> 1) - (textWidth >> 1) + titleY := bc.TitleStyle.Padding.GetTop(DefaultTitleTop) + textHeight + + r.Text(bc.Title, titleX, titleY) + } +} + +func (bc BarChart) getCanvasStyle() Style { + return bc.Canvas.InheritFrom(bc.styleDefaultsCanvas()) +} + +func (bc BarChart) styleDefaultsCanvas() Style { + return Style{ + FillColor: bc.GetColorPalette().CanvasColor(), + StrokeColor: bc.GetColorPalette().CanvasStrokeColor(), + StrokeWidth: DefaultCanvasStrokeWidth, } } @@ -397,8 +426,8 @@ func (bc BarChart) box() Box { dpb := bc.Background.Padding.GetBottom(50) return Box{ - Top: 20, - Left: 20, + Top: bc.Background.Padding.GetTop(20), + Left: bc.Background.Padding.GetLeft(20), Right: bc.GetWidth() - dpr, Bottom: bc.GetHeight() - dpb, }