Red() Green() Blue() ... bind libx stuff in Linux

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
infratec
Always Here
Always Here
Posts: 7616
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Red() Green() Blue() ... bind libx stuff in Linux

Post by infratec »

I wrote a linux console program for a server.

I saw missing lbx libraries :!:

I checked all code lines for MessageRequester() or similar things: nothing.

At the end I commented out large blocks to find the location of the code which requires the grafic gui libs.

At least I found it:

I used Red() Green() Blue() to build a hex string of a color.

I always thought these are only macros with & and >>, but ... shit, they link graphic libs to the code.

To test:

Code: Select all

; r = Red($123456)
OpenConsole()
PrintN("Hello World")
CloseConsole()
Compile it as console programm and use ldd to see the required libs.

Without the r line:
linux-vdso.so.1 (0x00007ffe9c7b8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc40a89e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc40a71b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc40a716000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc40aa7a000)
With the r line:
linux-vdso.so.1 (0x00007ffeb01e8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe2a4f64000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007fe2a4e44000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe2a4e23000)
libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007fe2a4732000)
libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007fe2a4636000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007fe2a4626000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007fe2a45d9000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007fe2a45b0000)
libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007fe2a45a4000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007fe2a457e000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fe2a43be000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fe2a4368000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe2a4246000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe2a4105000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe2a3f45000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe2a3f40000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe2a5103000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007fe2a3e99000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fe2a3e53000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fe2a3d95000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fe2a3d5c000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007fe2a3d57000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe2a3d2d000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007fe2a3d1e000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fe2a3b14000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fe2a3900000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe2a38e2000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe2a38d8000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fe2a38d2000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fe2a36c2000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007fe2a34bf000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007fe2a34b8000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fe2a32b2000)
libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007fe2a327d000)
libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007fe2a323b000)
libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007fe2a3231000)
libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007fe2a322c000)
libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007fe2a3219000)
libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007fe2a30e7000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fe2a2fec000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007fe2a2fd3000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007fe2a2fce000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007fe2a2dc1000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007fe2a2db4000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007fe2a2da9000)
libfribidi.so.0 => /usr/lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007fe2a2d8c000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fe2a2d2d000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fe2a2b05000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fe2a2ae9000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fe2a2adf000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe2a2a6b000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe2a2a2e000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe2a2a25000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe2a281f000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe2a2619000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fe2a25c6000)
libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007fe2a2592000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fe2a2565000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007fe2a2559000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fe2a2504000)
libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fe2a24ea000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fe2a2449000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe2a2421000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fe2a2400000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fe2a22e2000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fe2a22bf000)
I think this should be fixed.
I use now bit stuff to get the colors and all is fine.

Fred, if you agree, shift it to Feature Requests - Wishlist
Fred
Administrator
Administrator
Posts: 18207
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: Red() Green() Blue() ... bind libx stuff in Linux

Post by Fred »

Red() is in the 2DDrawing lib which use gtk surface etc., that's why it's needed. To avoid that, the commands needs to be moved into another lib, or we need to split the lib in half. I will take a look what's best.
infratec
Always Here
Always Here
Posts: 7616
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: Red() Green() Blue() ... bind libx stuff in Linux

Post by infratec »

Aren't there 'global' Macros ?

I would implement this 'helpers' as macros.

Code: Select all

Macro Red(color)
  (color & $000000FF)
EndMacro

Macro Green(color)
  ((color & $0000FF00) >> 8)
EndMacro

Macro Blue(color)
  ((color & $00FF0000) >> 16)
EndMacro

Macro Alpha(color)
  (color >> 24)
EndMacro

Post Reply