From 20b94a32f9299b1d0d512816649e578f4bc17b67 Mon Sep 17 00:00:00 2001 From: Captain4LK Date: Tue, 28 Jul 2020 20:09:59 +0200 Subject: [PATCH] Rework font system * Fonts not loaded automatically anymore, load with SLK_draw_[DRAWTYPE]_load_font(path) * Changed included font, because of unknown license/origin * Included some more fonts --- data/README.md | 14 +++++ data/fonts/cursive1.png | Bin 0 -> 1258 bytes data/fonts/cursive1.slk | Bin 0 -> 12305 bytes data/fonts/cursive2.png | Bin 0 -> 1353 bytes data/fonts/cursive2.slk | Bin 0 -> 12305 bytes data/fonts/solar.png | Bin 0 -> 983 bytes data/fonts/solar.slk | Bin 0 -> 12305 bytes data/fonts/techno.png | Bin 0 -> 1193 bytes data/fonts/techno.slk | Bin 0 -> 12305 bytes examples/efelder/data/font8x8.png | Bin 13950 -> 0 bytes examples/efelder/data/font8x8.slk | Bin 12305 -> 0 bytes examples/efelder/data/palette.pal | 20 ------ examples/efelder/gui.c | 2 +- examples/efelder/main.c | 2 + examples/performance/data/font8x8.png | Bin 13950 -> 0 bytes examples/performance/data/font8x8.slk | Bin 12305 -> 0 bytes examples/performance/data/palette.pal | 19 ------ examples/performance/main.c | 1 + examples/resize/{data => assets}/3-3-2.pal | 0 examples/resize/assets/{0.slk => image.slk} | Bin examples/resize/assets/logo.png | Bin 1751 -> 0 bytes examples/resize/data/font8x8.png | Bin 13950 -> 0 bytes examples/resize/data/font8x8.slk | Bin 12305 -> 0 bytes examples/resize/main.c | 4 +- include/SLK/SLK_functions.h | 4 ++ lib/makefile | 2 +- src/SLK_core.c | 6 -- src/SLK_draw_pal.c | 61 +++++++++++++------ src/SLK_draw_pal_i.h | 2 - src/SLK_draw_rgb.c | 64 ++++++++++++++------ src/SLK_draw_rgb_i.h | 2 - src/SLK_sprite_pal.c | 3 + src/SLK_sprite_rgb.c | 3 + 33 files changed, 121 insertions(+), 88 deletions(-) create mode 100644 data/README.md create mode 100644 data/fonts/cursive1.png create mode 100644 data/fonts/cursive1.slk create mode 100644 data/fonts/cursive2.png create mode 100644 data/fonts/cursive2.slk create mode 100644 data/fonts/solar.png create mode 100644 data/fonts/solar.slk create mode 100644 data/fonts/techno.png create mode 100644 data/fonts/techno.slk delete mode 100644 examples/efelder/data/font8x8.png delete mode 100644 examples/efelder/data/font8x8.slk delete mode 100644 examples/efelder/data/palette.pal delete mode 100644 examples/performance/data/font8x8.png delete mode 100644 examples/performance/data/font8x8.slk delete mode 100644 examples/performance/data/palette.pal rename examples/resize/{data => assets}/3-3-2.pal (100%) rename examples/resize/assets/{0.slk => image.slk} (100%) delete mode 100644 examples/resize/assets/logo.png delete mode 100644 examples/resize/data/font8x8.png delete mode 100644 examples/resize/data/font8x8.slk diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..da7f3c0 --- /dev/null +++ b/data/README.md @@ -0,0 +1,14 @@ +# Asset credits/collection + +Here is a list of all assets used by SoftLK and its examples. + +## Fonts + +Not all fonts listed here are actively used in the examples, but they can be found in the data/fonts directory and used by you. + +|File name|Image|License|Source| +|---|---|---|---| +|techno.png|![techno](fonts/techno.png)|CC0/public domain|[usr_share](https://opengameart.org/content/new-original-grafx2-font-collection) +|solar.png|![solar](fonts/solar.png)|CC0/public domain|[usr_share](https://opengameart.org/content/new-original-grafx2-font-collection) +|cursive1.png|![cursive1](fonts/cursive1.png)|CC0/public domain|[usr_share](https://opengameart.org/content/new-original-grafx2-font-collection) +|cursive2.png|![cursive2](fonts/cursive2.png)|CC0/public domain|[usr_share](https://opengameart.org/content/new-original-grafx2-font-collection) \ No newline at end of file diff --git a/data/fonts/cursive1.png b/data/fonts/cursive1.png new file mode 100644 index 0000000000000000000000000000000000000000..6f795ad0f232a35ca3167f23fda68ffba488787e GIT binary patch literal 1258 zcmVouci zWH{_z<&$42!qO_S6!joch+*_o*G}XJyS&7y-p9H}&s9d_c7DC?gp^Fri8W{O-_CQl z2S5_6Y%EJM6+M}`33U0Rzts~@eBw(&P$ei?5|Jfw>pUyNv*K)xDj(T@Ha`V5S?fF> zsMJy$K}?;jxG{EKDJ9hq*434T)TfwkWGHboi`__)h}7X3|IYmss)K>&>z(g)se+CPt=Q#HG-=6=(TRAWOuRZv)-dEW@KN{8n1z5X*^y^t|rC*YL0O^ zhzrk7T*reT`cK614&9C%Aj7wIC2E0DtJ9mW_^<1BW#~wjEN9V!*ii*^_&)K25uW1c z6e2acM<4O8=rfmA#pcXQRWF$AIO5?V`ij4LYEl07KGdJde3gtlNxO z6`qjr<*h}+%mgM9$SPbQ;lu;n2S8)3T|Z?66(2^9_t2TzTftNh1o<6U{+|XAeRqc@ z87!)jY^RH!!Aq#J{jn#tv%ic# zq90WTKJoK#MPr>>$E)z0A+Cb~)BJs@-Uc5YYo(y0!- z#t=+=bpPz1b>6$rTn=J^Qz0PJ5xutes;fpyuWX)KH`=&T6lY?j`cT!eXwJ@~M&8j| zS%a>fG=Q=b7}b%eyXw~AC_U0D_4s)-%>FXNiz*?tqc?i;|KqOW@DuZ(j7GJv9hTYA zWumN_T!)5;9ls+DMTvVcfO|4vh5s1_@GS>mU#0GvXXQtAe8xYEv1 zj(cA_lhqneb~G>j!w|$(ciYG7SchM?)j9$71<(#y`H%s4@g;LHQC;ovMfgv&lP7BG ztUgzI8=d|GgDgMzHGP0iGm7PZZ|^xC24}nJ9as~zEMbe1#f%qhD!}Q?SlOW6FFclPw9Wy=6ewvlS2RNxOA?MX%P+*|=%| z)wN=P>{>PisQeIo`7AsW$kx%-S2a5mB_)%d$iUAo?-WR11gRwyBO`-nOb5TLyz;JB zeJc7)r$>AEpFrZ*I?uRxCPpGTL?jc@qq;`;c=Xl&&=7e>7?4i1Li5N_le~M!KmXcV U5Tb}s?EnA(07*qoM6N<$f?qjsQvd(} literal 0 HcmV?d00001 diff --git a/data/fonts/cursive1.slk b/data/fonts/cursive1.slk new file mode 100644 index 0000000000000000000000000000000000000000..6cc730be4d49586330c04630750c999ea8caef23 GIT binary patch literal 12305 zcmeH_L5>wk3`9TMISp4}F&ZIY#f9ePfE9X*urssjw@^2WMqj^dM}))9tor`-%ja*O z{`>d;$K&zw*Z=Wj_xlhyIq~sBnQIU^87KSjAoHw=^txBw-yXl4%_;UvhTO5vqn|pm zDwUMhmx_uRz3x@l7sr3!4f?XU&UF73$63%2=~iuY*619qHO7=e@~)-WcVzcne(mrK zYt7w$#b52SXF)6SFBiTx_~~r^q{zFS-Kx)>+Q3iuyGI$dD-ic6+vAC5zMFl2qMSM1 zlDp66{Zi8@_j)=j?rQ4FtqA^muWS8vZ?ej--NdHG`97;VddUsgW!-Iu-096b+xfg# zOz+31@3*8cJlTolyA_v?Q;niKx+=H6L2{@3s-tu3KILgmpALSC>V-`oZEB|1#+9Ax z)pJGMtts6E0mkmR04h=i8mNJX7Bh7-H^l%2Ug{{uXn?`+4ct)m3Q%yGVQP zfFa6(?vvlTZ+7%NojcPj>+)_uiPe+2&fA?*BW>?k`R(!>-}_x z?vdTf6FF-=%lbKO`pw!Nl`+eHLcytee3{x)x(ijmsr5V{d%e)ysQcAPk}Z9&C$D)- zdp35@-Zi;dclCR#bl-U=&f)SMfz>^c!)IMCv(6snzHLo)hZ$w^Gdk;Hv!Sts88?d6O)6}6%Kz^78RpU&u~)3r5~ zv9D1N3r?S>D?)#qgn$~%o*uh_*>T_G9a;o%byJl^dzd6}ge??78#dO0*{k`kyPVPA zRpRqme0HsUJKnBqzqsz%^{zMz>Wr0BXGZsqGe!r9;`)>h)o%CB;ma1gj>2YF*HcZE zYh|wIo|Bn-n6E4=)gUv@-Qn3dy^O8s+LvnbRmB%E&&ve!c)+N>=h0Qn`OY)LuOgk! zg@9A3hw5+i4diY57P(pLoLzBNRd%KHtlqQl+Bty{?Q{0F<}O=Z={Peeh-c-Q*`FWB zUEF!?uwC!7n7$IJ%RB2r_qDg^e6QRu{pw%(xv4QYqWsX~rXAtt2D7GH5og8oPpfwQo+6#jf{V7bhVAW?`Z_H?dQeg; z;t!fC=VUYXTkWi>eAWzWv@dhtI?mgQD0A?CbBqnSZP(7jdO{)i&+J@lSNIt@$vRDwq}OC}cBt6>a>G>V?CE&! z+)e47ITs)H=yiHkK2_am$J60%kiHWrQLLZFm7QyPcq7!gUFO{n-$XkmKd{xQ^XMun z2RZA!u`{~XxN~(MQwyOtbANHgc7+hI9j`mqG<3ZJbvMXaC#FAlZ&SO=ue;Vs_@$3J pn4JBEtsX|bHuV_$}uB^Ar7{6z2c{ literal 0 HcmV?d00001 diff --git a/data/fonts/cursive2.png b/data/fonts/cursive2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b2355f24a738a035de6fdee0623297e2d8e74d GIT binary patch literal 1353 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 S?m4`xzD31(zlHbo{ONB-TY!E5 literal 0 HcmV?d00001 diff --git a/data/fonts/solar.png b/data/fonts/solar.png new file mode 100644 index 0000000000000000000000000000000000000000..e9cd8b8a3760e1aab3a0f8c68c05dd90b770a2dd GIT binary patch literal 983 zcmV;|11S87P)v&)qTK?dujzUz?{$}+YeQ?PxWf$Y4eg0?* zZG{mg#IQPgbZiLQ5rRBe^x9bH2AJJ>9oh{r^7R(q;@daSNE6k~qGMwFto)rgJuJ1> z&T`l@kUd<5LZJ}Hk~-R|;k9v(Pn6!$KTFSyk8?6f-i{>JTA!&#%WS4>jWG+jDtnGJ zu9)XldPWY|jC?e2i-C+0Y>9_xqvMPX(Hp>$F@sf^I(rj@Zvd7#V}K@4f?dR{{w#fz z4@<}Ll~~bgUJ?U61+yoVq0h$XsC}=L17vv@7NF|Svm65UYuq1zas%XUReT=QrbA1e6ajIdWjXuk5-~u^H%DD{AtaxWRCv5qe-3- zmXiJRj!e_z&&ZGTDpn)A5gGlWHvHQF%$4gg_fBvYvp0a8GaFJgL~gi@ZaXqtpz+h6 zEgvxcWBT}rKEg-h;YXpp1e5}0iHH=6(2w&Z9eO?;noZVR`CV&v_2Kzs^l>EFz2qN5 zWO;bnOA)Ex_#HFek*V`%OHd>?vI!nGfM*~Q#?s4EvT_qd76{2@ZaD9Buj)1;*$iE@ zYuW)rfOSR9h5&i`BaUJg*jk|RWQ?C#`5rV|wYlC^FL^R_vv`>}TbKuvq!tQ=cLZIF zUfl;^UQT7|a73>?BYMV9vwa1`6Zvz6{ts^hy_Xa+8MBf_OF<1Re~(^bRff*+@k+2+ zUAzQb&aq^U{=JVAvq{13w@s0^g^?4A#&#gP5gGlWHZ1-3@LhGju6c)d-hqI)C;v94+|&+Mf58a3WdVk zfU3jMoZWo@G=BQC=Ytag%RsM=U)=|Y_6tq}It;I3L;W70o$-5sXW`)nh%{27jTm`K zw64_**fPf}U#%O?>jb{y;Zrqg+gHu{sM9cKJfBbzMcR8002ovPDHLk FV1k=|+&usQ literal 0 HcmV?d00001 diff --git a/data/fonts/solar.slk b/data/fonts/solar.slk new file mode 100644 index 0000000000000000000000000000000000000000..e86b5d6b0e3ede1bbbc1c1a83725c59f98aee10c GIT binary patch literal 12305 zcmeH{QI6C=3`A#tISp6f10e)_aUpIFSf!^bJDr&!8>EF9MLTx6%H{4(dcS}D^7-3` zPal6=E|>Se|1LkzdR|WSI%`cweO@l!4SA2CnozkOP)74!O?G#!G|7__S9&|&pQYdI zN{&2Z<%w&Lc&HAm-NO;hR;43pvQ~NGbqC(}#qKwIlFgl!PFz+w>h^PqhDU7yqNoC@j{x7@ap`nR6{+pB-;r~7#8 ztM4hlsg6OukG;~7ZX2~aOY(|3TUX#SxtYI7!Pnop7epA`iXf5UC*2F+L(ck$V~9mX&$=*8D}3; z@w9qRPlu*vU;45p_=%~{I6WpWOm%x!Fg+Gp?}vB6u2wpCvpQFl(PcL(ME0Kw+%lS{ zg9*a;WlTlZ)0g_zpE=L?Jb}kM0qzd>f8LLM-v3X~)ah~0&W!25T3>%_U7c&{I-#TM zOfNig7PZ&LzRH}y3YY+%8u5O=sr&QyHP3%N?S9{_U#++A=^C2zwL5oY)^~1YX*eHc z9Vd^672a!c)QNL{^3v~GZx64Kso8O@=INa#blinly-};qXI{KS>{cg7oOym34WY3>G4p#K_ zQ76v*+0XYU&u!-2o$2RAuMgRY0k~r% zNAbnhK3lS@i;Zq74c;cO+PgMt1>A-|9YT@CN5&%|+|uVQ;+~F2u9veR`7ay+_HrUW z<@_XBrzaXw_Q1R%rhdtG&0Y`M#)`~O(;3qWBB66(f(SDvj)SjqaUHY^B>7GY+JneS~5p=^x^aM+NXATn~ ztXg=0F}7@G!HUb2dmvD!HP()wz)O8#%z092W0oMa&4U@q4? z6`BKRAI*MgytlX&pc@QR?!!k8zN`+d1?mH zFzB^&q2726+3_8r7r~h!lwZ%D|2?8@_SsYcD~73~v1i8LxrvZ+*F$?1u=gqHiUza~ z&A@qECss_tR30E}WM@sQ$%nv1TGV-hQ%gF!V4*3lQZA@E79qx_I)YZ}V6@3x^@cDTs5{;hGll@Tz zWO;yUW-d7^GnumxvET9$lDulU!+aj~Tie&cS4L!^_SBzE43UVW;gAi$BgZNkFa=GN zJcd&m&*v81K-En^IgQ9Tl?m)V0ejZjU98%)PrK8#5}Ep}QbuQeqit9ODIQ=&uE1J2 zZ>%)#tSEIfPXJND)jBe}FqVF+pZC1mxmBLSvzLzRMjP34V@-G)N3FFpO1d^ghb@uu zsJ=|Oi`sJ*OZP7aSdF93fG1lAt? zG;)F?5l%ah7R&0{NBclL04;C4NFlX*Co>XSGm#1%Z?z+pQPdX9`mKDgRMiqlX@1ZK z=q7I}A^OS*=w7)}w2k6&RB&eVtdifXVh06$1&rZG0*wlls9@>N)Z}~P(K%F4UdIA@ zS5Q^Hr<1SG<-%wNRU#@P|7us$QpR5Sen(-=G20f^J@FpG&%$r)hsq*$d}S&gUNc519{zVX~9BJ3|Tm{l$q5hlCq`px-nrz<2`)Ig- z5Hjp683mu4MhREu?#ZS)Q2P(d0Z=9}D?8IR(akiT8NpEfv(M)D09qX{g&q{>9ZB`j zKK!{hA&Z`tsA&|Qeyv?PsaZdERskCs(XhN?7(WufY5so!U3G(Y400g;00000NkvXX Hu0mjf$csNA literal 0 HcmV?d00001 diff --git a/data/fonts/techno.slk b/data/fonts/techno.slk new file mode 100644 index 0000000000000000000000000000000000000000..4ec861ecd3cdd68e39f192e807867773db0a5e88 GIT binary patch literal 12305 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 $6D;UbL75)gLA_(jHtjQs60ZLTE7E8^ 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 diff --git a/examples/efelder/data/palette.pal b/examples/efelder/data/palette.pal deleted file mode 100644 index 9bed677..0000000 --- a/examples/efelder/data/palette.pal +++ /dev/null @@ -1,20 +0,0 @@ -JASC-PAL -0100 -17 -0 0 0 -69 36 52 -20 12 28 -211 170 154 -223 239 215 -211 125 44 -219 215 93 -211 69 73 -134 77 48 -77 73 77 -48 52 109 -117 113 97 -109 195 203 -134 150 162 -109 170 44 -52 101 36 -89 125 207 diff --git a/examples/efelder/gui.c b/examples/efelder/gui.c index f95f100..1cbc0c7 100644 --- a/examples/efelder/gui.c +++ b/examples/efelder/gui.c @@ -79,7 +79,7 @@ static char text_help[GUI_HELP_LINES][36] = //only use 34 letters "You should have received a copy of", "the GNU General Public License ", "along with this program. If not, ", - ", see www.gnu.org/licenses/. ", + "see www.gnu.org/licenses/. ", "..................................", "Using this program should be ", "fairly easy, but I will try to ", diff --git a/examples/efelder/main.c b/examples/efelder/main.c index 4c9ec5d..dc402d2 100644 --- a/examples/efelder/main.c +++ b/examples/efelder/main.c @@ -72,6 +72,8 @@ int main(int argc, char *argv[]) SLK_layer_activate(5,1); SLK_layer_set_dynamic(5,1); + SLK_draw_rgb_load_font("../../data/fonts/cursive1.png"); + gui_init(); calculate(); diff --git a/examples/performance/data/font8x8.png b/examples/performance/data/font8x8.png deleted file mode 100644 index 4e3f6b83eeee4011fb443c730a6597efe07fff9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13950 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 $6D;UbL75)gLA_(jHtjQs60ZLTE7E8^ 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 diff --git a/examples/performance/data/palette.pal b/examples/performance/data/palette.pal deleted file mode 100644 index 577e1bb..0000000 --- a/examples/performance/data/palette.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -69 36 52 -20 12 28 -211 170 154 -223 239 215 -211 125 44 -219 215 93 -211 69 73 -134 77 48 -77 73 77 -48 52 109 -117 113 97 -109 195 203 -134 150 162 -109 170 44 -52 101 36 -89 125 207 diff --git a/examples/performance/main.c b/examples/performance/main.c index 00cbef1..13a5ac2 100644 --- a/examples/performance/main.c +++ b/examples/performance/main.c @@ -67,6 +67,7 @@ int main(int argc, char *argv[]) load_pal_sprites(); load_rgb_sprites(); + SLK_draw_rgb_load_font("../../data/fonts/cursive1.png"); gui_00 = SLK_rgb_sprite_load("assets/gui_00.png"); gui_01 = SLK_rgb_sprite_load("assets/gui_01.png"); SLK_RGB_sprite *gui_02 = SLK_rgb_sprite_load("assets/gui_02.png"); diff --git a/examples/resize/data/3-3-2.pal b/examples/resize/assets/3-3-2.pal similarity index 100% rename from examples/resize/data/3-3-2.pal rename to examples/resize/assets/3-3-2.pal diff --git a/examples/resize/assets/0.slk b/examples/resize/assets/image.slk similarity index 100% rename from examples/resize/assets/0.slk rename to examples/resize/assets/image.slk diff --git a/examples/resize/assets/logo.png b/examples/resize/assets/logo.png deleted file mode 100644 index c0780407ec0b269397cfa3cf6f97dc3446878a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1751 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 $6D;UbL75)gLA_(jHtjQs60ZLTE7E8^ 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 diff --git a/examples/resize/main.c b/examples/resize/main.c index f57483e..e5817dd 100644 --- a/examples/resize/main.c +++ b/examples/resize/main.c @@ -23,12 +23,12 @@ int main(int argc, char *argv[]) SLK_layer_set_scale(0,canvas_scale); SLK_draw_pal_set_clear_paxel(SLK_color_create_paxel(0,0)); SLK_draw_pal_clear(); - SLK_Pal_sprite *logo = SLK_pal_sprite_load("assets/0.slk"); + SLK_Pal_sprite *logo = SLK_pal_sprite_load("assets/image.slk"); SLK_layer_set_size(0,logo->width,logo->height); SLK_draw_pal_clear(); SLK_draw_pal_sprite(logo,0,0); SLK_pal_sprite_destroy(logo); - SLK_layer_set_palette(0,SLK_palette_load("data/3-3-2.pal")); + SLK_layer_set_palette(0,SLK_palette_load("assets/3-3-2.pal")); while(SLK_core_running()) diff --git a/include/SLK/SLK_functions.h b/include/SLK/SLK_functions.h index dfea56f..0c65861 100644 --- a/include/SLK/SLK_functions.h +++ b/include/SLK/SLK_functions.h @@ -55,6 +55,8 @@ SLK_Pal_sprite *SLK_pal_sheet_get(const SLK_Pal_sheet *sheet, int index); void SLK_draw_pal_set_target(SLK_Pal_sprite *s); SLK_Pal_sprite *SLK_draw_pal_get_target(); void SLK_draw_pal_set_clear_paxel(SLK_Paxel paxel); +void SLK_draw_pal_load_font(const char *path); +void SLK_draw_pal_set_font_sprite(SLK_Pal_sprite *font); void SLK_draw_pal_clear(); void SLK_draw_pal_paxel(int x, int y, SLK_Paxel paxel); void SLK_draw_pal_string(int x, int y, int scale, const char *text, SLK_Paxel paxel); @@ -92,6 +94,8 @@ SLK_RGB_sprite *SLK_draw_rgb_get_target(); void SLK_draw_rgb_set_target(SLK_RGB_sprite *s); void SLK_draw_rgb_set_clear_color(SLK_Color color); void SLK_draw_rgb_set_changed(int changed); +void SLK_draw_rgb_load_font(const char *path); +void SLK_draw_rgb_set_font_sprite(SLK_RGB_sprite *font); void SLK_draw_rgb_clear(); void SLK_draw_rgb_color(int x, int y, SLK_Color color); void SLK_draw_rgb_string(int x, int y, int scale, const char *text, SLK_Color color); diff --git a/lib/makefile b/lib/makefile index a26af3a..cc943da 100644 --- a/lib/makefile +++ b/lib/makefile @@ -8,7 +8,7 @@ DEPENDENCIES = SLK_core.o SLK_color.o SLK_draw_pal.o SLK_draw_rgb.o SLK_input.o backend_sdl2_gl: $(DEPENDENCIES) backend_sdl2_gl.o ar cr libSLK.a $^ -SLK_core.o: ../src/SLK_core.c ../include/SLK/SLK_types.h ../include/SLK/SLK_functions.h ../src/backend.h ../src/SLK_draw_rgb_i.h ../src/SLK_draw_pal_i.h ../src/SLK_layer_i.h +SLK_core.o: ../src/SLK_core.c ../include/SLK/SLK_types.h ../include/SLK/SLK_functions.h ../src/backend.h ../src/SLK_layer_i.h $(CC) -O3 -c $< $(CFLAGS) SLK_color.o: ../src/SLK_color.c ../include/SLK/SLK_functions.h ../include/SLK/SLK_types.h diff --git a/src/SLK_core.c b/src/SLK_core.c index 0b59c38..b334418 100644 --- a/src/SLK_core.c +++ b/src/SLK_core.c @@ -23,8 +23,6 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND #include "../include/SLK/SLK_types.h" #include "../include/SLK/SLK_functions.h" #include "backend.h" -#include "SLK_draw_rgb_i.h" -#include "SLK_draw_pal_i.h" #include "SLK_layer_i.h" //------------------------------------- @@ -118,10 +116,6 @@ void SLK_setup(int width, int height, int layer_num, const char *title, int full running = 1; SLK_core_set_fullscreen(fullscreen); - //Load font sprites. - text_sprite_pal = SLK_pal_sprite_load("data/font8x8.slk"); - text_sprite_rgb = SLK_rgb_sprite_load("data/font8x8.png"); - //Setup keymaps, or whatever you favourite backend does here. backend_input_init(); } diff --git a/src/SLK_draw_pal.c b/src/SLK_draw_pal.c index 5d7a148..67e5656 100644 --- a/src/SLK_draw_pal.c +++ b/src/SLK_draw_pal.c @@ -36,6 +36,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND //------------------------------------- //Variables +static SLK_Paxel target_pal_clear; +static SLK_Pal_sprite *text_sprite_pal; +static SLK_Pal_sprite *text_sprite_pal_default; //------------------------------------- //Function prototypes @@ -64,6 +67,29 @@ void SLK_draw_pal_set_target(SLK_Pal_sprite *s) target_pal = s; } +//Loads a new font sprite. +//Replaces the default font sprite. +void SLK_draw_pal_load_font(const char *path) +{ + SLK_pal_sprite_destroy(text_sprite_pal_default); + text_sprite_pal_default = SLK_pal_sprite_load(path); + text_sprite_pal = text_sprite_pal_default; +} + +//Sets the current font sprite from a +//sprite you have loaded in your code. +//Pass NULL to reset to default. +void SLK_draw_pal_set_font_sprite(SLK_Pal_sprite *font) +{ + if(font==NULL) + { + text_sprite_pal = text_sprite_pal_default; + return; + } + + text_sprite_pal = font; +} + //Sets the color wich the target is to be cleared to //when calling SLK_draw_pal_clear. void SLK_draw_pal_set_clear_paxel(SLK_Paxel paxel) @@ -96,34 +122,35 @@ void SLK_draw_pal_string(int x, int y, int scale, const char *text, SLK_Paxel pa int sx = 0; int sy = 0; - for(int i = 0;text[i];i++) + for (int i = 0;text[i];i++) { - if(text[i]=='\n') + if (text[i]=='\n') { sx = 0; sy+=8*scale; } else { - int ox = (text[i]-32) % 16; - int oy = (text[i]-32) / 16; + int ox = (text[i]-32)&15; + int oy = (text[i]-32)/16; - if(scale>1) - { for(int x_ = 0;x_<8;x_++) + { for(int y_ = 0;y_<8;y_++) + { if(!text_sprite_pal->data[(y_+oy*8)*128+x_+ox*8].mask) - for(int is = 0;isdata[(y_+oy*8)*128+x_+ox*8].mask) - SLK_draw_pal_paxel(x+sx+x_,y+sy+y_,paxel); - } + { + for(int o = 0;ochanged = changed; } +//Loads a new font sprite. +//Replaces the default font sprite. +void SLK_draw_rgb_load_font(const char *path) +{ + SLK_rgb_sprite_destroy(text_sprite_rgb_default); + text_sprite_rgb_default = SLK_rgb_sprite_load(path); + text_sprite_rgb= text_sprite_rgb_default; +} + +//Sets the current font sprite from a +//sprite you have loaded in your code. +//Pass NULL to reset to default. +void SLK_draw_rgb_set_font_sprite(SLK_RGB_sprite *font) +{ + if(font==NULL) + { + text_sprite_rgb = text_sprite_rgb_default; + + return; + } + + text_sprite_rgb = font; +} + //Clears the draw target to the color specified //by SKL_draw_rgb_set_clear_color. void SLK_draw_rgb_clear() @@ -109,25 +136,26 @@ void SLK_draw_rgb_string(int x, int y, int scale, const char *text, SLK_Color co } else { - int ox = (text[i]-32) % 16; - int oy = (text[i]-32) / 16; + int ox = (text[i]-32)&15; + int oy = (text[i]-32)/16; + + for(int x_ = 0;x_<8;x_++) + { + for(int y_ = 0;y_<8;y_++) + { + if(text_sprite_rgb->data[(y_+oy*8)*128+x_+ox*8].a) + { + for(int o = 0;o1) - { - for(int x_ = 0;x_<8;x_++) - for(int y_ = 0;y_<8;y_++) - if(text_sprite_rgb->data[(y_+oy*8)*128+x_+ox*8].a) - for(int is = 0;isdata[(y_+oy*8)*128+x_+ox*8].a) - SLK_draw_rgb_color(x+sx+x_,y+sy+y_,color); - } sx += 8*scale; } } diff --git a/src/SLK_draw_rgb_i.h b/src/SLK_draw_rgb_i.h index 288cc10..af463a6 100644 --- a/src/SLK_draw_rgb_i.h +++ b/src/SLK_draw_rgb_i.h @@ -21,7 +21,5 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND SLK_RGB_sprite *target_rgb; SLK_RGB_sprite *target_rgb_default; -SLK_Color target_rgb_clear; -SLK_RGB_sprite *text_sprite_rgb; #endif diff --git a/src/SLK_sprite_pal.c b/src/SLK_sprite_pal.c index a19b264..43a8fc9 100644 --- a/src/SLK_sprite_pal.c +++ b/src/SLK_sprite_pal.c @@ -60,6 +60,9 @@ SLK_Pal_sprite *SLK_pal_sprite_create(int width, int height) //needs to be freed. void SLK_pal_sprite_destroy(SLK_Pal_sprite *s) { + if(s==NULL) + return; + free(s->data); free(s); } diff --git a/src/SLK_sprite_rgb.c b/src/SLK_sprite_rgb.c index 9e9afdf..8e6bf45 100644 --- a/src/SLK_sprite_rgb.c +++ b/src/SLK_sprite_rgb.c @@ -65,6 +65,9 @@ SLK_RGB_sprite *SLK_rgb_sprite_create(int width, int height) //to be freed. void SLK_rgb_sprite_destroy(SLK_RGB_sprite *s) { + if(s==NULL) + return; + free(s->data); free(s); }