treeform / fidget

Figma based UI library for nim, with HTML and OpenGL backends.
MIT License
766 stars 31 forks source link

putting video stream in a control #184

Open shoaib-mi opened 1 year ago

shoaib-mi commented 1 year ago

Hi Thank you for all great jobs you did specifically fidget and pixie. fidget made programming GUIs lot easier, specially the node structure got my attention. I was trying to make a GUI library that uses Gtk for Linux clients and win32 for Windows users. It's already done, and it is called NiGui. The thing about NiGui is that it runs really fast and light, but it needs further development. So I tried to rewrite it all over again and it looks really good on Linux. NiGui and my own code are both good in one thing that they are dependent on libraries that are native to the operating system, so there is no need to look for any library or module over the internet in order for the code to work. The problem is, it is just a wrapper around some C code, and not entirely written in Nim, and I am really stuck in Windows part of my own library. I was looking for a library that could communicate with devices specifically cameras to put the output of the camera inside some widget. I then come across fidget, when I tried it, I really liked it. I have some suggestion that can make working with it more efficient. I was hoping that you could consider them and somehow help with the below questions.

  1. It uses opengl, which is a problem with old PCs that their VGA card are not based on opengl, or they can only operate with lower version of opengl, so running programs in those PCs would be a problem. I am not sure if using browser would solve this problem or not.

  2. There is a delay in running compiled program. I mean when you double click on exe file it waits for almost a second and then open the GUI. But with NiGui opening exe GUI is instantaneous.

  3. I am not sure if it wrapper around figma or it is just inspired by it? in each case, can you please explain why?

  4. When loading fonts and images, I think they must be prepared in another folder with the name data, which resides beside the code and the compiled program. If after compilation I remove or rename that folder the compiled program stops working. Is there any way to embed that folder into the compiled file? And I could not find anywhere in demo code that specifically points to folder data. Why is that so? If someone wanted to use another name for the resources, is there a way to do so?

  5. As I said above, I tried to find a way for handling devices with Nim, and so far no success. for the camera, I finally decided to run ffmpeg through terminal and send the output through pipe:1 to the code. So far no success for this one too. Are you familiar with any library that could handle USB devices easily in Nim? or can you kindly make one?

  6. I use programming as a hobby and I really like Nim, But I think it needs to be comprehensive and cover all other areas of works on its own, and not using wrappers. But I don't think that would be possible for any other languages.

treeform commented 1 year ago

Thanks! Fidget is currently not being worked on as we are doing low level things like pixie/windy/boxy and others.

  1. PC's that can't run openGL will be pretty old. Maybe 20 years old? I doubt even Nim will run on them. Very few customers will run such old systems.
  2. Yes, I don't like this delay too, it comes from setting up the openGL window. I don't know why its so slow. Its comes from inside the OS.
  3. Fidget is just the most popular UI tool among designers. Fidget has a Figma export plugin. I could see export plugins being made for Sketch, Illustrator, PenPot etc...
  4. I think you can name your folder what you want? I the examples just choose data because that is what I use. I don't know a good way for packing the data folder into your exe. There is staticRead from nim but its really slow for large files. I have experimented reading resources from a data zip instead. So its just fidget.exe and data.zip next to it.
  5. I don't know anything about camera API, sorry.
  6. Not sure what you mean here? Nim can work as a wrapper and have stuff written in it. Other languages struggle with UI too.