From 8300b450e7b977a3fa0f88cfd04fe89da23389d5 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Thu, 11 Aug 2022 20:02:32 -0500 Subject: [PATCH] Created loading and saving of glyphs (#1) Co-authored-by: sigonasr2 --- readers/fonts/Font.java | 133 ++++++++++++++++++++++++++------------- readers/fonts/Glyph.java | 6 +- readers/fonts/testFont | 30 +++++++++ sigPlace.java | 12 ++-- test.png | Bin 1013 -> 1217 bytes 5 files changed, 130 insertions(+), 51 deletions(-) diff --git a/readers/fonts/Font.java b/readers/fonts/Font.java index 8833275..beba116 100644 --- a/readers/fonts/Font.java +++ b/readers/fonts/Font.java @@ -5,17 +5,40 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.List; import java.awt.Color; public class Font { - Glyph[] data = new Glyph[9]; + Glyph[] data = new Glyph[10]; final static int TRANSPARENT = new Color(0,0,0,0).getRGB(); public static Font LoadFont(String fontName) { Path f = Paths.get("readers","fonts",fontName); if (Files.exists(f)) { - //TODO Read the file. - return new Font(); + Font font = new Font(); + try { + List data = Files.readAllLines(f); + for (int i=0;iendY) { - endY=Y; - } + } + //If we got to here it means we found transparent on everything. + if (startX!=-1) { + endX=x; + //Create a Glyph out of this. + Glyph g = new Glyph(); + g.width=endX-startX; + g.height=data.getHeight(); + int[] arr = data.getRGB(startX,0,g.width,g.height,null,0,g.width); + //Find the min and max Y. + int startY=g.height; + int endY=0; + for (int X=0;XendY) { + endY=Y; } } - int index = expectedGlyphs.charAt(0)-'0'; - font.data[index]=g; - System.out.println("Glyph for number "+index+" has been saved."); - expectedGlyphs=expectedGlyphs.substring(1); } + g.height=endY-startY; + g.data = new boolean[g.width*g.height]; + for (int X=0;X>D$`)H!NzKB~c?Rme@jVN`<9N zooTYBJL07kmD)e1lX|DFCh<~1BZ;@Gl!eAp39{(^hwVCdzn8n;@Ar9r-{-mKc?wP* z4|j#{hr?hnS5gG=V`w)*GtkKaTAhBaS%$&vc_d=!nT)ul;Zud(@4MI!w?3=pP-#0z*0tDz$XKSuv_ry!rRLVETzyO}>fas)@H_ zEm&t`ZNg)v6OBC5;MX`AxiofgW(NJWg)(rniVA!xg+Nk=_*{jTGXBH2mRerKlZT2F z352yW^%uFOGTEQ1iP}Q*m)^6D0HYSb#ggQ41ysm3?G@y=)ogAaNS5iz6Jnt`*?YRg zkI{#^CaF9k?LvAsu}m)@o3F65E}^%dRI*caJ>Aix%2}(g8tuUW#y1s+jM08|Rxwk; z7>v?Tsa7m=`jlUiL(NW3NpK zUM+o8D>t;x$V-%43Ndbk(dNgT>z#amx?$3yo7;6!lp6d81#b!D?zRNrettC2N=ttJ zUvlpW`MM|^S6U^uR{0&iIhsHE%! zCRh@v*i+mzBG3-h@kA(L(~fRX_`qO1E0K+dv=uO-!wjzv*Sk(#P7n6r{4&gUAWW## z^kODTNOs4EA5Pi{B}&AEr_DRAf3WLZn*Q7G2R28ylEPh~-j1%NM2W%nz5(S%;Y8qn zaxT=M6|P1f<&YQowq7oT+$d2Fc6iY-wF17Qv|fwNmilz#qNuBZ8Ig-BQfb(QT=u;S=ARC>>b$vyUa@a}+sq$F zy`EM6yD69rw27gi>hGodyGpENr^cK+ckb8UeOeK1_Hny+@9sK0X~ojmdGqIsicG%$ ztJ~p~-+>C7FwLi5zlJWIab<49$&^Jwr!q`}G}U+<8z(j#@Nh^_Q7{k^h`7g6Vm0^n z?b~td(_7_t#BcTg`jzu*(BT{9m)pLkNAG-V;v4``DZ$Cn!@}am#H7sF__S6n=k}br zb7i&f+_|H&UgUD#c5^ecke}~9e*F08k<-+pTcg&VJ$v?H!H)g=*H532Casz~Gbm^M z@&z*tSXd!O0Nt?4)8VZ7id@fSLPGiZ`OOC%MAuJRz2NZS!%uh$^=95#^L4VAPXu%6 z?pRrG&1np;6U$1BW@>z~uRH#ue{1)x$Gg|42eS$lR90GE{?fU8xw@;%X*QPh%PMQq zm*`(|6)vc$S#wygx0Ye%<#pI@+JN)qP>f3stLt1n30cwoHw%bbUi^F_QH zW?BnquKSqtaAE$OgZ4_|ehnYjcO*qlohHL|O67otiSy_Dz$x(}(|j80Uu<67m96Ff zd8WQnpQnRI>Dn#u5ZKZg(V^d-gXtsn1XG+$f8H@9S$jyihARORh3) z&iwhSzhv6T&7U_fFE@APJ%ep$=D*_#yVmF$a)bHImz#?!ER1W-)t>JvcH7G7Vb>qa zb#`Xy=MU%exAA|#>i_@&{Lg*k8W+&Obrv`n(e_T}GeY2^Kq zQD0wQD{J1@N>Cnp!;RJkp9v*cACHfHI*GZ`kA9E^|leXH8*c6S>KC`;f2 d2VO-*|K@Id%2`lx^*u94rKhW(%Q~loCIHBd#?}A;