From d86638ae103fbe1c8b4f8ee4e8e9e479cfeb30c9 Mon Sep 17 00:00:00 2001 From: JupiterRider <60042618+JupiterRider@users.noreply.github.com> Date: Wed, 22 May 2024 18:51:38 +0200 Subject: [PATCH] [raygui] LoadIcons-, DrawIcon-function and example added --- examples/gui/icons/README.md | 3 +++ examples/gui/icons/default_icons_with_255.rgi | Bin 0 -> 16396 bytes examples/gui/icons/main.go | 20 ++++++++++++++++++ examples/gui/icons/screenshot.png | Bin 0 -> 8240 bytes raygui/raygui.go | 13 ++++++++++++ 5 files changed, 36 insertions(+) create mode 100644 examples/gui/icons/README.md create mode 100644 examples/gui/icons/default_icons_with_255.rgi create mode 100644 examples/gui/icons/main.go create mode 100644 examples/gui/icons/screenshot.png diff --git a/examples/gui/icons/README.md b/examples/gui/icons/README.md new file mode 100644 index 0000000..8c114f4 --- /dev/null +++ b/examples/gui/icons/README.md @@ -0,0 +1,3 @@ +This example loads a custom .rgi-file and draws the 255th icon. You can use the [rGuiIcons](https://raylibtech.itch.io/rguiicons) tool to view or create icon files. + +![Screenshot](./screenshot.png) diff --git a/examples/gui/icons/default_icons_with_255.rgi b/examples/gui/icons/default_icons_with_255.rgi new file mode 100644 index 0000000000000000000000000000000000000000..82716175787ae31b6027dbc0b62101b6fe0036a5 GIT binary patch literal 16396 zcmeHNO^h2yb}lws!#2ewdq!iKfT&>)HJ0e{!b6XuV6Yw!n?F6nwm8!?eB55{5-2J9Gwp#VBLhEF*-03qx_SmZz` zIuHs$<-Mx@CA;Yya>zmT!0zh$URAxS_v+QFn)%x;ReFO!3W#J!+fgvQK>dJ z)w0smD$33{9|dZ;OG>j)&edvaVT{43?^Ts@8aTEvR+D}Dc5HB4{d?9XgyPDTidL1EP8@aNb#alR_gxp)nBS8&AM{Ms|T!4@m!;*YLmTKxVoL&^60|CE9Klvlhvtw zwEatJQJLEQ&ZY;<##hiPUTtG{bo_;e*U+dm6tCoJKGQ=AjcQG+HcPo3?)zW$mJY}-7HqMio0F& ztDu!(_!YHq(Q9;sR2%ucH^N$A_45s=@2LYcyQU|?>Qg*tN;CPc6>?<{v$GhhN=` zRX_74Cf+P*RrO_Ur=D{glZ9VWs&y46%P}_0mX)2_Sdr@!aewP0M0pAP>V#Ldo1pmS zrd=?WGv>GMXMYSItK|5s=c-#u-CutOUfa%<$A?Z^F>v4YW#HSIkAFAT_jlpGW@^-@ zc(bZ*mB!YB3ok31V=!s#6usP{HA7Y9yYT58+l@MS2&=h?OjY|1T&XCzaiJZp)Jl!b zO;5{bOv-kp{!(7M;;7=vGX1!UTpv#TV-zrM1h)RYP(mE~_hfMBe;Us8>(ReUzf}M3 zW?VSx-wjj!j}^JbkJ_D%Pv>Cz_iusee+o|Z?~fb$_hm5k-}G6*Q%r--1K{9XeKt4X zFmSJ>XVv#umew3&{k&GMYunyU*tk{2m9g=r$LePCc>+c&ru=?9h!+&^*aVxPxLPeh zc)XpfU3AHY9~EuN;su;;ZO!dQxvo~q9=jC7p?QzJ6WcGU^^#ImcYMMdvaMFOa~1zB z3gzFbs@}mFv_B2Q{^|I&>W)&ad779L_u3>jwMG>T;ELiSBKGfV+(!R&_I$#Wmo=~~ zAKORyDZZ@~)y6h{P9%zZ32tyw+-Gk@7K%?XAe^6~R`;GfsBhsuGO+pG!5*p;hcBZ( zokO4c+QlY>HIsIWvSWhytLCE`is!0T?XvgMbKw3SfYmQ*mwjR&hBtg2klnwxl`!06 zW1!N(`lIq=|I_L>D&8p6_deDct;6}rcjsj+m;DaDMhl2HYwAwJM+pq4L9o@QGedDO zjoi*wqwL{BsD7s`5IlBbd|y>AshWonCJt=Pd~VW^9Jo^~D{tbtM$I!yGVq$;9%SG< z-luQyzfAtBQqZbiP7Y4pJKiTNCSqADT!iDH<}Dq>|A_nEZov9M25YpFnYyNxeN;=C zxBMKx(G=p-&KG&rXJHxj@nFuPfA3Q$TNZ~3$9*Z@>Jg=&a?hYo3_XF z=h?IaZ@$pj_I42$6^~8T(Ogm4_LU9U==r&#Rs6)H^RM_X@

PQ8@aiI8%V98Pp(v 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 literal 0 HcmV?d00001 diff --git a/raygui/raygui.go b/raygui/raygui.go index 5c643f7..b72e28b 100644 --- a/raygui/raygui.go +++ b/raygui/raygui.go @@ -8,6 +8,7 @@ package raygui import "C" import ( + "image/color" "strings" "unsafe" @@ -1381,3 +1382,15 @@ func GetFont() rl.Font { ptr := unsafe.Pointer(&ret) return *(*rl.Font)(ptr) } + +// LoadIcons - load raygui icons file (.rgi) into internal icons data +func LoadIcons(fileName string, loadIconsName bool) { + cfileName := C.CString(fileName) + defer C.free(unsafe.Pointer(cfileName)) + C.GuiLoadIcons(cfileName, C.bool(loadIconsName)) +} + +// DrawIcon - draw icon using pixel size at specified position +func DrawIcon(iconId, posX, posY, pixelSize int32, col color.RGBA) { + C.GuiDrawIcon(C.int(iconId), C.int(posX), C.int(posY), C.int(pixelSize), *(*C.Color)(unsafe.Pointer(&col))) +}