Are there any high level general purpose graphics libraries for julia? - graphics

Julia libraries like 'GLAbstraction' are too low level for me. I need something like the 'Canvas API' for JavaScript in browsers. Are there any?

This is not an exhaustive list. I put the first several links I was aware of. I would start with QML.jl if you can.
Related discussions:
https://discourse.julialang.org/t/julia-for-gui-app/416
https://discourse.julialang.org/c/domain/viz/17
Desktop Graphics Engines aka Desktop GUIs
If you search through the JuliaCon Videos from past years, you can find talks and walkthroughs for these packages.
I have a background in Qt and the Qt Libraries, and it is very general purpose. QML is very friendly if you have a javascript background. The KDE desktop in Linux is built around Qt. Many desktop apps in general include Qt dlls, and use it as its backbone.
https://github.com/barche/QML.jl
And here is a youtube link or two about it:
https://www.youtube.com/watch?v=AddbHe05yRg
https://github.com/barche/juliacon2020-qml - example code for the most recent talk on it
https://www.youtube.com/watch?v=4Bmp0I731Ak
Gtk has been around a long time and you can see it in use in GIMP and Gnome desktop in Linux.
https://github.com/JuliaGraphics/Gtk.jl
The examples for Redux are mentioned in the PackageCompiler.jl video done recently. These are more or less the React Native style apps, shipping a chromium browser and rendering a react environment as a desktop app.
https://github.com/Gnimuc/Redux.jl
Interactive Plotting Libraries
There is a list of them here in the Plots.jl interface. Plotting in Julia is a pretty big rabbit hole, and there are tons of options to look into. Jupyter notebooks and the like with interactivity layered on them blurs the line between what is a GUI and what is just a plot.
http://docs.juliaplots.org/latest/ecosystem/
https://juliaobserver.com/categories/Graphical%20Plotting
https://github.com/JuliaPlots/Makie.jl
https://github.com/JuliaGL/GLVisualize.jl
https://github.com/JuliaGizmos/Interact.jl
https://github.com/plotly/Dash.jl
Web Frameworks
https://genieframework.com/
https://github.com/JuliaGizmos/Interact.jl
https://github.com/plotly/Dash.jl

Related

When using EFL for an embedded UI, should we use Elementary or Edje?

We are starting with an embedded development using the Enlightenment Foundation Libraries. We are developing a "full" screen application, so a window manager is not required and our Linux system will eventually run Tizen OS.
The question is, EFL provides Elementary and Edje.
Should we use Elementary widgets or Edje scripts?
Can you use Elementary widgets in Edje scripts? I have heard mention of this but have not seen any documentation or examples.
EFL provides a no. of libraries for different GUI tasks. Generally based on requirements you need to opt for a particular lib. elementary provides set of widgets already created for user. So go for it if you can reuse. But do implement it with edje as edje is helpful for defining layouts and will help you when you need to scale up or down your graphics app. you can refer following link for detail api documentation:
http://web.enlightenment.org/p.php?p=docs&l=en
Use elementary first. You can do most of things and it supports a lot of features such as theme, focus, container, access, auto deletion, scale, mirror, translate, orientation set and etc.
If you really want to use edje(edc script) then use elm_layout and set edj file.
Thanks.

How to build an shipable, "local", branded mini-browser

Since I don't really have a good idea for word to search with myself I’d like to ask you:
Is there some project, technology, w/e that enables you to build a 'browser' with a very slim ui. Just some CI and a customised "starting page".
I'm thinking of something like the Webkit engine (and interface) Valve/Steam uses for it's clients store page.
In what direction should I search for something like that ? How would one start implement something like that ?
Answers to questions:
We need this to provide something like a "Kiosk" application (for touchscreens) and shippable to our Customers. Running a browser in "full screen" is a temporary solution.
As of Platforms: Windows is absolutely sufficient for now, but Mac/Linux wouldn't hurt.
Prism looks nice so far but lacks the "shippable" part, e.g. I see no way of packaging it.
Take a look at Mozilla Prism. It's a "UI-Less" version of the Mozilla/Gecko rendering engine aimed at deploying web apps on the Desktop. It's also multi-platform. It might be fairly close to what you need, with comparably little work.
WebKit has bindings for many languages, is cross-platform, and is full-featured as a HTML engine. A bit of work capturing signals and calling functions will make it into any kind of web browser you like.
You could use Adobe Air, follow this tutorial and include your website within an iframe. That would allow you to build an executable you can ship to your customer.
Various graphics toolkit libraries contain some components which can display a limited amount of HTML. I've seen this in qt (a C++ GUI library) and in Java Swing, and have indeed built a tiny "browser" in Java within a couple of hours. Java Swing lets you attach a link listener so links can be made clickable and thereby jump to different URLs. Thus, my application could be made to work as a very limited browser.
This approach lets you display text, images and links; in the case of Java, there's even fairly good support for CSS styling. However, there's no simple way to make buttons and form fields work, and of course no support for manipulating the DOM or anything else done in JavaScript.

3D visualization in browser

I am looking for solutions for 3D visualizations in web browsers.
For now I just need to do research about this topic, i.e. I need to know how many solutions exist and which of these are good and why?
Thanks
Brief overview of 3D on the web:
VRML. An HTML-style markup language for 3D models that was supposed to be the amazing cyberspace future of the web, back when we still thought what the web needed to be popular was just to totally change everything about it. We were idiots. VRML is all but dead.
Java. JVMs from 1.3 can run the Java3D engine in applets. With the decline in prevalence of desktop Java I have yet to see this in the wild.
Flash. 3D-primitive support in Flash 10; libraries that hack it in earlier Flash versions, and provide higher-level engine features. (Papervision, Sandy et al.) This is how the majority of in-browser 3D is done today.
CSS. WebKit provides a perspective transform feature to CSS, which has been proposed for standardisation. Won't offer anything like full 3D engine features of course, but the capability to integrate with HTML content in the page is interesting.
O3D. Google's experimental 3D engine browser plugin.
WebGL. Proposed binding of standard OpenGL to JavaScript and HTML5 canvas. Of interest in that you can use it in plain JavaScript with no plugins, but it's pretty low-level. Currently only available in in-development browser snapshots.
Others. There are gaming 3D engines that have been packaged into a plugin, eg. Unity, and a few sundry proprietary-format model viewer plugins.
Open standard webgl,
if you are prepared to download a plugin - lots and lots
Nothing immediately leaps out for maps, a good place to start is opensourcegis,
Unity3D is a game engine that is (relatively) easy to use and builds to multiple platforms including the web (provided you install a plugin).
http://unity3d.com/
X3DOM is plug-in free, supports a lot of X3D (not prototypes) and is written in web browser javascript (where you can do all the prototype stuff you like). Cobweb is an ES6 JavaScript library which supports VRML2 (except collisions last I checked). Cobweb is plug-in free and runs in firefox. Both of these tools are written in WebGL. You may have to convert your event code to X3D. In x3dom, you may have to call x3dom.reload() if you load elements (X3D and Scene) programmatically.

Developing a fullscreen "media player" on linux

I'm a Windows developer and I need to develop a Linux application.
The goal is to have a fullscreen application being able to display different media types (images, videos, flash). There might be multiple media files being displayed at the same time on the screen (if the screen is split in multiple zones).
Can someone point me in the right direction as to what is the most appropriate technology/tools/frameworks to use?
I have experience with C#, C++ and Objective C.
Thanks,
Pyt
You could look into MPlayer's libraries, that are extensively used by several Linux applications as a backend.
Best of all, its cross OS and of high quality.
Qt for the gui
Probably C++ for the code
You could look at FFMPEG libraries (http://ffmpeg.org/index.html)
QtMediaHub (http://qt-project.org/wiki/QtMediaHub) has some useful (and pretty stable) classes and sample implementations.

Embed xna game in a webpage

Is there a way to run an xna game from a web page without installing anything? Something similiar to java, silverlight or very close to a wpf browser applications (XBAP).
Scenario:
Go on webpage, Get asked to install
the game. Game installs, game screen
shows up in webpage. Can full screen,
etc.
The game is a full blown xna framework game, using 3d, has access to the system calls such as directx and other low level networking api. This is probably more of having javascript working with windows system if anything.
SilverSprite seems to do what you want. I have never used it but see XNA 2D games come to the browser via Silverlight.
Essentially it allows XNA game
developers to run their games in
Silverlight 2, though there is a
limitation: the games that can be
converted may only have
SpriteBatch-based graphics, meaning no
3D games.
If your game needs access at the level you describe then it can't really run from within the browser. It will need to be properly installed on the users machine.
You can use a ClickOnce installer to launch your came FROM a web page, but not run it IN a webpage.
The Unity game engine (and designer) is pretty darned fabulous for doing exactly what you describe. You can do all the logic in C# if desired.

Resources