Changes

Jump to navigation Jump to search
2,643 bytes added ,  08:41, 19 August 2014
update of debuggin tips
Line 5: Line 5:  
== Basics ==
 
== Basics ==
   −
* '''Octave version:''' Execute 'ver' in Octave and copy the first 5 lines verbatim. If you are on Windows please mention which build (MinGW, Cygwin, MXE, Visual Studio see http://wiki.octave.org/Octave_for_Microsoft_Windows) and where you got it (download from http://sourceforge.net/, http://mxeoctave.osuv.de/ or have you build it yourself?).
+
* '''Octave version:''' Execute 'ver' in Octave and copy "GNU Octave Version" and "Operating System" verbatim. If you are on Windows please mention which build (MinGW, Cygwin, MXE, Visual Studio see http://wiki.octave.org/Octave_for_Microsoft_Windows) and where you got it (download from http://sourceforge.net/, http://mxeoctave.osuv.de/) or have you build it yourself?. This is important because some packages includes whole build environment while other just provide binaries even for octave-forge packages.
    
* '''Operating system:'''
 
* '''Operating system:'''
Line 13: Line 13:  
* If you get a warning on startup, for example "warning: function xyz.m shadows a built-in function" please copy it verbatim
 
* If you get a warning on startup, for example "warning: function xyz.m shadows a built-in function" please copy it verbatim
   −
* '''If you get an error message, please copy the message verbatim'''
+
* '''If you get an error message, please, please, please copy the message verbatim'''
    
== I can't plot or print or the output doesn't look as expected ==
 
== I can't plot or print or the output doesn't look as expected ==
Line 22: Line 22:  
* Sometimes the figure on the screen visually differs from the file generated with "print". If this is the case please mention this and consider adding a screenshot of the figure window together with the generated print.
 
* Sometimes the figure on the screen visually differs from the file generated with "print". If this is the case please mention this and consider adding a screenshot of the figure window together with the generated print.
   −
* Which toolkit are you using? Execute 'graphics_toolkit' in octave to query it. Common toolkits are 'fltk' or 'gnuplot'. Consider switching to another available toolkit (see available_graphics_toolkits) and try it there. You have to execute (for example switch to gnuplot) 'graphics_toolkit gnuplot' before any plotting command.
+
* Which toolkit are you using? Common toolkits are 'fltk' (which is default now) or 'gnuplot'. Consider switching to another available toolkit (see available_graphics_toolkits) and try it there. You have to execute (for example switch to gnuplot) 'graphics_toolkit gnuplot' before any plotting command.
   −
* Which Ghostscript version? Is it a 32 or 64bit build? Please add URL to download. If 64bit under Windows see http://wiki.octave.org/Octave_for_Microsoft_Windows#Printing_.28installing_Ghostscript.29
+
* Which Ghostscript version do you use? Is it a 32 or 64bit build? Please add URL to download. If 64bit under Windows see http://wiki.octave.org/Octave_for_Microsoft_Windows#Printing_.28installing_Ghostscript.29
 
    
 
    
=== printing with gnuplot ===
+
=== Debug printing with gnuplot ===
    
Try
 
Try
Line 32: Line 32:  
and attach the generated octave-print-commands.log, debug message and testplot.eps.
 
and attach the generated octave-print-commands.log, debug message and testplot.eps.
   −
=== printing with fltk ===
+
=== Debug printing with fltk ===
   −
A common problem is that printing with fltk only works if the figure is visible, see [http://savannah.gnu.org/bugs/?33180]
+
The output of commands described here were created with a GNU/Linux system.
 +
Windows or MacOS builds may differ. Please update the article if you find
 +
any differences.
 +
 
 +
The class opengl_renderer is used to render a graphics_object
 +
to an OpenGL context. If you use the "print" command with graphics_toolkit fltk,
 +
gl2ps is used to capture these OpenGL drawing commands and translates them
 +
to Encapsulated PostScript (EPS). If you have requested a different output
 +
format than EPS, the EPS output of gl2ps is then piped to ghostscript (gs) which
 +
does the conversion to PDF, PNG, JPG ...
 +
 
 +
You can see the pipleline to ghostscript by adding "-debug" to the "print" command:
 +
 
 +
{{Code|print with "-debug"|<syntaxhighlight lang="octave" style="font-size:13px">
 +
octave:1> sombrero
 +
octave:2> print("-dpng", "out.png", "-debug")
 +
Ghostscript command: '/usr/bin/gs -dQUIET -dNOPAUSE -dBATCH -dSAFER -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r150x150 -dEPSCrop -sOutputFile="out.png" -'
 +
fltk-pipeline: '/usr/bin/gs -dQUIET -dNOPAUSE -dBATCH -dSAFER -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r150x150 -dEPSCrop -sOutputFile="out.png" -'
 +
</syntaxhighlight>}}
 +
 
 +
For debugging purposes it may be desired to have the direct output of gl2ps
 +
without piping them through ghostscript.
 +
 
 +
This can simply be done with
 +
  print -depsc out.eps
 +
or if you prefer a black/white output:
 +
  print -deps out.eps
 +
 
 +
If you want to wiretap the output of gl2ps, which is meant to go
 +
to ghostscript if printing a PNG, JPG etc. it's a little bit more complicated
 +
because the existence of the ghostscript binary is checked first.
 +
Therefore simply replacing the ghostscript binary
 +
  print -dpng "-Gcat > debug.eps" out.eps
 +
 
 +
won't work. A hack is to create a shell script
 +
(myredirect.sh in my case ) which does the redirection:
 +
 
 +
  #!/bin/bash
 +
  rm debug.eps
 +
  while read x ; do echo $x >> debug.eps ; done
 +
 
 +
Which can then be used with
 +
  print -dpng "-G./myredirect.sh" out.eps
 +
 
 +
Another way is to directly use the opengl_renderer to draw to gl2ps.
 +
paperposition, papersize and so on are ignored in this case.
 +
 
 +
This uses [http://geuz.org/gl2ps/| GL2PS_BSP_SORT], [http://en.wikipedia.org/wiki/Binary_space_partitioning| BSP on wikipedia]
 +
  drawnow ("eps", "cat > out.eps")
 +
 
 +
For 2D plots a simpler algorithm(GL2PS_SIMPLE_SORT) is choosen but you can force this also for 3D plots:
 +
  drawnow ("epsis2d", "cat > out.eps")
    
== some Windows issues ==
 
== some Windows issues ==
Line 40: Line 91:  
* A user had problems printing with fltk in windows. After he updated the graphic drivers the problem was gone. http://octave.1599824.n4.nabble.com/Problem-with-Print-under-Octave-3-8-1-under-windows-tp4664755.html
 
* A user had problems printing with fltk in windows. After he updated the graphic drivers the problem was gone. http://octave.1599824.n4.nabble.com/Problem-with-Print-under-Octave-3-8-1-under-windows-tp4664755.html
   −
== Test script ==
+
== known bugs ==
 +
 
 +
Please see also the [[FAQ]]
 +
 
 +
* A common problem is that printing with fltk only works if the figure is visible, see [http://savannah.gnu.org/bugs/?33180]
 +
 
 +
== Test scripts ==
    
{{Code|FLTK printing test script|<syntaxhighlight lang="octave" style="font-size:13px">
 
{{Code|FLTK printing test script|<syntaxhighlight lang="octave" style="font-size:13px">
Line 61: Line 118:  
title ('Please describe what we should see')
 
title ('Please describe what we should see')
 
print -depsc junk2.eps
 
print -depsc junk2.eps
 
+
</syntaxhighlight>}}
}}
 
219

edits

Navigation menu