Graphical libraries that would allow some shape and connectors graphics to be made quickly - animation

I am looking to create an application that allows me to make system design models, something similar to visual paradigm or draw.io. And I was wondering whether they are some graphics libraries out there that have some features that would be useful for a project like this?
thanks in advance.

Related

Best framework for creating desktop applications with dynamic GUI

Sorry for the unusual question, but I don't know where else to ask this.
Basically I would like to know what a good framework is for creating applications(mostly Windows, but wouldn't hurt if it would be cross platform) that would allow to do fancy GUI animations, transitions and is easily modifiable.
I worked with the swing library for java so far. Its a solid GUI library but its completely static.
Here an examples for showing off what I mean: Atom.io
QT is an excellent choice for app and UI development. The API is C++ (though many other bindings are available) and it has a solid IDE and UI building. It is free to use for non-commercial work. https://www.qt.io/

Controlling an embedded user interface

I am busy with a small project that allows for the controlling of an embedded hardware user interface to be moved from state charts and simple constructs as if .. else to a more visual representation.
I would now like to begin testing on a real project. I am looking for an open source hardware project. I've searched around but I have not been able to find anything that meets my requirements.
1/ hardware and software publicly available (i'm don't mind having to buy something)
2/ written in C/C++
3/ has graphical user interface
Any ideas?
Thank you
You might take a look at the open source QP state machine frameworks, which are also supported by the free graphical modeling tool called QM (state-machine.com). QP run on many embedded MCUs, including Arduino and mbed rapid prototyping platforms. The webstie contains a lot of information, including using statecharts for embedded GUIs.
This is not C++ but free with sources and might give you an idea:
If made to work on Linux, it may be combined with fpGUI on ARM.

How are GUI frameworks actually developed

I worked mainly in web development but occasionally do some C/C++ or Java programming. I am very curious how these frameworks actually produce the graphics used in their GUI. Were the GUI elements (title bar, window frame, status bar, buttons, etc...) designed by a designer in Photoshop then a developer adds that graphic to the framework? Or do the developers actually build the elements programatically with the direction of a designer?
If someone could give me an overview that would be awesome!
Great question, Lark ! Since we're in Qt Framework branch, I'll tell you how its done in Qt, but I'm sure you can apply to similar frameworks or libraries like GTK, etc.
So Qt started a framework that would provide one API for a variety of platforms making it very easy to port your applications from one platform to another while providing native look and feel on those platform. So for example on MacOSX a push button would have this blue Aqua style while on Windows XP it would look like a button on Windows platform. Trolltech put a lot of effort and did a great job on making the GUI look native. So how it works ? Well, all Qt widgets use QStyle and its derivatives to render themselves. Depending on the style, a widget would look differently. All the standard widgets follow the guides of those platforms they are designed for. There are probably some small graphics designer work behind that, but I believe its not that significant. The main source of the look and feel is the platform guides that describe how UI elements on those platforms should look like and their behavior.
But Qt has been developing very fast and the trolls came with a very promising technology called Qt Quick. Its an amazing technology which allows designers and developers tightly work together providing the best UI. Its highly oriented on using artwork made in Photoshop, GIMP or similar tools in the code. And its much easier to use mock ups from designers with Qt Quick than with C++/Qt cause Qt Quick is initially designed for that.
Hope that helps
The basic low level functionality of most GUI frameworks is quite old, the result of a great deal of very hard work by earlier developers working with primitives - literally drawing things on terminal screens, etc, at very low levels, using C or Assembler. Slowly, libraries for abstraction of these processes, and frameworks and class hierarchies for refining them and organizing come into being. All Linux GUI's (in fact, nearly all contemporary GUI frameworks) are based on XWindows, for example:
X originated at the Massachusetts Institute of Technology (MIT) in
1984. The protocol version has been X11 since September 1987....X primarily defines protocol and graphics primitives - it deliberately
contains no specification for application user-interface design, such
as button, menu, or window title-bar styles. Instead, application
software – such as window managers, GUI widget toolkits and desktop
environments, or application-specific graphical user interfaces –
define and provide such details. As a result, there is no typical X
interface and several different desktop environments have become
popular among users.
See more there, for some good information about this topic.

What are the GUI libraries used by Unity3d and other software that doesn't look like traditional applications?

I have been dealing with GTK & QT on linux, Windows forms on windows and some others like Tk, Wx. But I can see a lot of GUIs that don't look like traditional applications like unity 3d, some Adobe applications, 3ds max etc..
Are they using special libraries ? or there is a way for advanced theming of the above libraries ? Or are they just creating their own libraries ? How do they create them ?
Well usually they make their own libraries
Some applications ( exp : Blender ( that has a really good GUI )) use there own libraries .
Blender implements its whole GUI using OpenGL so Unity , 3DsMax should be similar
*By ( that has a really good GUI ) I mean it looks good
*3 years but I Just saw the question ;)
A lot of the libraries that are independent will do a lot from scratch. Eg. use Cairo directly in building their engine so that they can do display and capture input from the users as well. A lot of the widgets they have for the GUI are done from basic bottom up principles. The new non-server standalone apps can use frameworks like Electron (which desktop apps like Skype now use) rely on HTML/CSS/Javascript so that the primitive widgets are the standard browser elements of a webpage navigation in an application form.
I believe Unity uses Dear ImGui for the their UI, especially with the new UI documents system, it's quite impressive how much stuff you can do with it, you can look for some tutorials about it and if you have heard of Hazel engine (from The Cherno channel in You Tube) it uses ImGui to render all the UI, so try going it a look, it might suit you.
Dear ImGui: https://github.com/ocornut/imgui
enter image description here

How does Qt only use C++ to make custom GUIs for some many platforms?

I don't see how Qt does the low level graphics work, in order to create its own custom GUI look/feel for each platform. Does it utilize each of the platforms APIs or something? I ask because I am really wondering how I could go about creating my own framework in order to make a custom GUI application with a unique graphical look.
"How does QT only use C++ to make custom GUIs for some many platforms?"
"Does it utilize each of the platforms APIs ... ?"
You answered your own question. It makes a common library for developers to write their applications with. The application developers write their application only once, not caring about platform specifics. Then, the library author puts out different versions of the library for each platform, which handles all the specific UI calls. This is called encapsulation:
http://en.wikipedia.org/wiki/Information_hiding#Encapsulation
If you were to write your own such library, you would need to figure out what is common between all of the platforms you target, or figure out what high-level concepts your application would need, and create that abstraction. Then, implement that abstraction for each of the platforms you wanted to support.
Edit:
Also see Juliano's comment. This seems like it might be closer to what you want to do, rather than the question you asked. I'd not re-do the work that Trolltech or the WxWidgets team or the Gtk guys or the Mono people did, if I could possibly avoid it.
The good people at Trolltech (now Nokia) write all the platform specific code for you. Only the interfaces to their library remains the same across platforms. You do have to make sure that you only use their classes and don't make any OS-specific calls.
If you want, you can modify the graphics and the handlers to extend the Qt library and create your own look and feel.
Your Qt application doesn't have to have the plain standard platform graphical look, but there are ways to design unique apps with Qt.
For instance, you can style your application with style sheets: http://doc.qt.io/qt-5/stylesheet.html, or even with a custom QStyle (which is not very easy): http://doc.qt.io/qt-5/qstyle.html
Qt Quick is a new technology we're introducing in the upcoming Qt 4.7 (check out the beta if you're interested). It allows you to easily define custom UI components from simple primitives, with custom animations, state transitions and other effects. See for example http://www.youtube.com/watch?v=8G4U7QWRajg.

Resources