Qt-based graphics backend - idea.

Driss Ghaddab driss.ghaddab at free.fr
Thu Jul 3 12:35:08 CDT 2008


Hello,

Maciek Gajewski wrote:
> Hello again.
> 
> Few days ago I've announced my plans for creating Qt-based plotter.
> I've been told about new graphics code in latest octave sources. So I changed 
> my approach and decided to follow this path, instead of creating standalone 
> plotter.
> 
> My current plan is to create Qt-based graphics backend.
> 
> Design:
> 1. create new backend (inherit base_graphics_backend), registered in 
> some 'init' function.
> 2. during initialization - create new thread for GUI operation, intitialize Qt 
> facilities in this thread.
> 3. In response for backend calls (close_figure, redraw_figure, print), send 
> appropriate message to GUI thread, also copy object properties (syncing 
> threads), so they can be safely accessed by GUI code from GUI thread.
> 4. Draw everything in GUI thread, using data from copied property tree.
> 5. All callback calls triggered by GUI (i.e. ButtonDownFcn) in GUI thread 
> should be queued, and called from main thread in function registered 
> with 'input_event_hook'.

You may check a module I wrote in the past.  It handles the problem of 
the thread, passing it data, using callbacks.

Check http://driss.ghaddab.free.fr/cmo

The CMO module is beta, but IIRC, I did not plan new features, or did 
not see other problems to solve.

CMO was designed to fulfill the requirements of a GUI module, which I 
did not finish, because of time (I was unemployed, then). It also had a 
new data type which mimics the object of MATLAB (including default 
properties, factory properties etc).

A demonstration module implemented the "timer" object of Matlab.

You may read the web site (see Documentation, tutorial, doxygen doc).

At that time, I thought about a GUI module which was split in two: one 
is the high level part, independent from any graphic toolkit, and one 
back-end which used QT, GTK, or even COCOA.



Cheers,

Driss


More information about the Octave-maintainers mailing list