Editing Projects

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 272: Line 272:


*Use nanosleep instead of usleep if it is available? Apparently nanosleep is to be preferred over usleep on Solaris systems.
*Use nanosleep instead of usleep if it is available? Apparently nanosleep is to be preferred over usleep on Solaris systems.
*<strike>Per the following discussion, allow bsxfun style singleton dimension expansion as the default behavior for the builtin element-wise operators: http://octave.1599824.n4.nabble.com/Vector-approach-to-row-margin-frequencies-tp1636361p1636367.html</strike> This is done. <strike>Now [[User:JordiGH|I]] just have to document it.</strike> This is done too!


== Improve JIT compiling ==
== Improve JIT compiling ==
Line 304: Line 306:
* Implement one-to-many (Broadcast, Scatter), many-to-one (Reduce, Gather), and many-to-many (All Reduce, Allgather) communication routines
* Implement one-to-many (Broadcast, Scatter), many-to-one (Reduce, Gather), and many-to-many (All Reduce, Allgather) communication routines


= Graphics =
=Graphics=
 
*Correctly handle case where DISPLAY is unset. Provide --no-window-system or --nodisplay (?) option. Provide --display=DISPLAY option? How will this work with gnuplot (i.e., how do we know whether gnuplot requires an X display to display graphics)?


* Correctly handle case where DISPLAY is unset. Provide --no-window-system or --nodisplay (?) option. Provide --display=DISPLAY option? How will this work with gnuplot (i.e., how do we know whether gnuplot requires an X display to display graphics)?
* <strike>Implement transparency and lighting in OpenGL backend(s). A basic implementation was available in [http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/jhandles/ JHandles]. This needs to be ported/re-implement/re-engineered/optimized in the C++ OpenGL renderer of octave</strike>.


* Implement a Cairo-based renderer for 2D-only graphics, with support for PS/PDF/SVG output (for printing).
* Implement a Cairo-based renderer for 2D-only graphics, with support for PS/PDF/SVG output (for printing).
Line 312: Line 316:
* On 'imagesc' plots, report the matrix values also based on the mouse position, updating on mouse moving.
* On 'imagesc' plots, report the matrix values also based on the mouse position, updating on mouse moving.


* Add map-creating capabilities similar to the Matlab [https://www.mathworks.com/help/map/functionlist.html Mapping toolbox] for inclusion in the Octave Forge [https://sourceforge.net/p/octave/mapping mapping package].
* Add map-creating capabilities similar to the Matlab [http://www.mathworks.com/help/map/functionlist.html Mapping toolbox] for inclusion in the Octave Forge [https://sourceforge.net/p/octave/mapping mapping package].


* Add data cursor to trace data values in figure.
* Add data cursor to trace data values in figure.
== Lighting ==
<strike>Implement transparency and lighting in OpenGL backend(s). A basic implementation is available in [http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/jhandles/ JHandles]. This needs to be ported/re-implement/re-engineered/optimized in the C++ OpenGL renderer of Octave.</strike>
== Object selection in OpenGL renderer ==
<strike>This project is about the implementation of a selection method of graphics elements within the OpenGL renderer [http://glprogramming.com/red/chapter13.html]</strike>


== Non-OpenGL renderer ==
== Non-OpenGL renderer ==


Besides the original gnuplot backend, Octave also contains an OpenGL-based renderer for advanced and more powerful 3D plots. However, OpenGL is not perfectly suited for 2D-only plots where other methods could result in better graphics. The purpose of this project is to implement an alternate graphics renderer for 2D only plots (although 3D is definitely not the focus, extending the new graphics renderer to support basic 3D features should also be taken into account). There is no particular toolkit/library that must be used, but natural candidates are:
Besides the original gnuplot backend, Octave also contains an OpenGL-based renderer for advanced and more powerful 3D plots. However, OpenGL is not perfectly suited for 2D-only plots where other methods could result in better graphics. The purpose of this project is to implement an alternate graphics renderer for 2D only plots (although 3D is definitely not the focus, extending the new graphics renderer to support basic 3D features should also be taken into account). There is no particular toolkit/library that must be used, but natural candidates are:
* [http://qt.nokia.com Qt]: the GUI is currently written in Qt
* [http://qt.nokia.com Qt]: the GUI is currently written in Qt <strike>and work is also in progress to provide a Qt/OpenGL based backend [https://github.com/goffioul/QtHandles]</strike>
* [http://en.wikipedia.org/wiki/Cairo_%28software%29 Cairo]: this library is widely used and known to provides high-quality graphics with support for PS/PDF/SVG output.
* [http://en.wikipedia.org/wiki/Cairo_%28software%29 Cairo]: this library is widely used and known to provides high-quality graphics with support for PS/PDF/SVG output.


Line 326: Line 338:
Text objects in plots (like titles, labels, texts...) in the OpenGL renderer only support plain text and TeX. The latter consists of a very limited subset of the TeX language. On the other hand, the LaTeX formatting support is expected to provide full LaTeX capabilities. There are various approaches that can be used:
Text objects in plots (like titles, labels, texts...) in the OpenGL renderer only support plain text and TeX. The latter consists of a very limited subset of the TeX language. On the other hand, the LaTeX formatting support is expected to provide full LaTeX capabilities. There are various approaches that can be used:
* Use an external LaTeX engine: this is the most straightforward, but it requires users to install a LaTeX distribution and setup Octave to use it.
* Use an external LaTeX engine: this is the most straightforward, but it requires users to install a LaTeX distribution and setup Octave to use it.
* Use an external library that supports LaTeX syntax, e.g. [https://github.com/opencollab/jlatexmath JLaTeXMath] a Java API to display LaTeX code, [https://github.com/nathancarter/qtmathjax qtmathjax] a Qt based library that executes MathJax in a background web page.
* Use an external library that supports LaTeX syntax, e.g. [http://forge.scilab.org/index.php/p/jlatexmath/ JLaTeXMath] a Java API to display LaTeX code, [https://github.com/nathancarter/qtmathjax qtmathjax] a Qt based library that executes MathJax in a background web page.
* Implement our own LaTeX parser and renderer. The matplotlib project [http://matplotlib.sourceforge.net/users/usetex.html has already done this in Python] and might be used as an example of how to do this in Octave. There is also [https://github.com/jkriege2/JKQtPlotter JKQtPlotter], a Qt based plotting application which implements its own LaTeX parser/renderer in C++.
* Implement our own LaTeX parser and renderer. The matplotlib project [http://matplotlib.sourceforge.net/users/usetex.html has already done this in Python] and might be used as an example of how to do this in Octave. There is also [https://github.com/jkriege2/JKQtPlotter JKQtPlotter], a Qt based plotting application which implements its own LaTeX parser/renderer in C++.


Line 341: Line 353:
*Fix history problems — core dump if multiple processes are writing to the same history file?
*Fix history problems — core dump if multiple processes are writing to the same history file?


= Configuration and Installation =
=Configuration and Installation=
 
*Makefile changes:
**eliminate for loops
**define shell commands or eliminate them
**consolidate targets


* Makefile changes:
*Create a docs-only distribution?
** eliminate for loops
** define shell commands or eliminate them
** consolidate targets


* Create a docs-only distribution?
*<strike> Convert build system to a non-recursive Automake setup. See how Makefile.am files currently include module.mk files in subdirectories, extend this concept to the entire project so there is only one top-level Makefile.am. </strike> Done, except for special dir libgnu which is the only SUBDIRS listed in configure.ac.


=Documentation=
=Documentation=
Line 446: Line 460:


* Help prepare and deliver presentations and [[Publications about Octave]] at colleges and universities.
* Help prepare and deliver presentations and [[Publications about Octave]] at colleges and universities.
* Create a [[Forum for GNU Octave]].


== Improve Windows binary packaging ==
== Improve Windows binary packaging ==
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)