octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave-3.3.55 and Octave-3.3.90 on OSX


From: Ben Abbott
Subject: Re: Octave-3.3.55 and Octave-3.3.90 on OSX
Date: Sun, 30 Jan 2011 14:48:31 -0500

On Jan 30, 2011, at 1:10 PM, Richard Campbell wrote:

> On Jan 30, 2011, at 1:04 PM, John W. Eaton wrote:
> 
>> On 30-Jan-2011, Richard Campbell wrote:
>> 
>> | It's just a line plot. I pasted it in an earlier message in this thread. I 
>> get
>> | the same error when trying to print if I had typed surf(peaks) as well. It
>> | plots fine on the screen, I just can't print it to a file.
>> | 
>> | octave:1> plot(randn(10,1))
>> | octave:2> print('-dpng','test.png')
>> | warning: print.m: fig2dev binary is not available
>> | error: invalid assignment to cs-list outside multiple assignment
>> | error: matrix cannot be indexed with {
>> | error: evaluating argument list element number 3
>> | error: called from:
>> | error:   /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
>> line
>> | 390, column 11
>> | octave:2> print('-depsc','test.eps')
>> | error: invalid assignment to cs-list outside multiple assignment
>> | error: matrix cannot be indexed with {
>> | error: evaluating argument list element number 3
>> | error: called from:
>> | error:   /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
>> line
>> | 390, column 11
>> | octave:2> print('-dtiff','test.tiff')
>> | error: invalid assignment to cs-list outside multiple assignment
>> | error: matrix cannot be indexed with {
>> | error: evaluating argument list element number 3
>> | error: called from:
>> | error:   /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
>> line
>> | 390, column 11
>> | 
>> 
>> In 3.3.90, line 390 of print.m is
>> 
>>   ## restore modified properties
>>   if (isstruct (props))
>>     for n = 1:numel(props)
>>       if (ishandle (props(n).h))
>>         set (props(n).h, props(n).name, props(n).value{1});  <<< line 390
>>       endif
>>     endfor
>>   endif
>> 
>> Try this in Octave:
>> 
>> dbstop print 390
>> peaks
>> print ('-depsc', 'test.eps')
>> 
>> then when you get the "debug>" prompt, try looking at the following
>> items:
>> 
>> numel (props)
>> props
>> props(1)
>> props(2)
>> 
>> Here is what I see:
>> 
>> debug> numel (props)
>> ans =  2
>> debug> props
>> props =
>> 
>>   1x2 struct array containing the fields:
>> 
>>     h
>>     name
>>     value
>> 
>> debug> props(1)
>> ans =
>> 
>>   scalar structure containing the fields:
>> 
>>     h =  1
>>     name = position
>>     value = 
>>     {
>>       [1,1] =
>> 
>>          300   200   560   420
>> 
>>     }
>> 
>> debug> props(2)
>> ans =
>> 
>>   scalar structure containing the fields:
>> 
>>     h =  1
>>     name = color
>>     value = 
>>     {
>>       [1,1] =
>> 
>>          1   1   1
>> 
>>     }
>> 
>> I guess you don't have the same props(?).value.  If not, then why is
>> it not set correctly?  You can do
>> 
>> dbstop print
>> peaks
>> print ('-depsc', 'test.eps')
>> 
>> and then step through print.m with dbstep to see where  props(?).value
>> is set.  Note that after you type a command at the debug prompt,
>> pressing the Enter by itself will repeat the previous command, so
>> stepping is easy.
>> 
>> jwe
> 
> 
> octave:1> dbstop print 390
> ans =  390
> octave:2> peaks
> octave:3> print('-depsc', 'test.eps');
> warning: print.m: fig2dev binary is not available
> error: invalid assignment to cs-list outside multiple assignment
> stopped in /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
> line 390
> 390:           set (props(n).h, props(n).name, props(n).value{1});
> debug> numel(props)
> ans =  2
> debug> props
> props =
> 
>  1x2 struct array containing the fields:
> 
>    h
>    name
>    value
> 
> debug> props(1)
> ans =
> 
>  scalar structure containing the fields:
> 
>    h =  1
>    name = position
>    value = 
>    {
>      [1,1] =
> 
>         300   200   560   420
> 
>    }
> 
> debug> props(2)
> ans =
> 
>  scalar structure containing the fields:
> 
>    h =  1
>    name = [](0x0)
>    value = [](0x0)
> 
> 
> and then while dbstepping through print.m:
> 
> debug> dbstep
> stopped in /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
> line 297
> 297:     props(2).h = opts.figure;
> debug> dbstep
> stopped in /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
> line 298
> 298:     props(2).name = "color";
> debug> dbstep
> error: invalid assignment to cs-list outside multiple assignment
> stopped in /Users/campbell/Downloads/octave-3.3.90/scripts/plot/print.m at 
> line 387
> 387:     if (isstruct (props))

props(2) is the problem.  Lines 297-300 set the name and value.

297     props(2).h = opts.figure;
298     props(2).name = "color";
299     props(2).value{1} = get (props(2).h, props(2).name);
300     set (props(2).h, props(2).name, "none");

I don't see how these fields end up empty. 

Please add another breakpoint at line 300, and check that the fields of 
props(2). Also check the fields of "opt". You can see the result I get below.

dbstop print 300
ans =  300
peaks
print ('-depsc', 'test.eps');
stopped in /Users/bpabbott/Development/Octave_Toolbox/print/print.m at line 300
300: set (props(2).h, props(2).name, "none"); 
debug> props(2)
ans =

  scalar structure containing the fields:

    h =  1
    name = color
    value = 
    {
      [1,1] =

         1   1   1

    }

 debug> opts
 opts =

  scalar structure containing the fields:

    append_to_file = 0
    canvas_size =

       576   432

    debug = 0
    debug_file = octave-print-commands.log
    devopt = epsc
    epstool_binary = /sw/bin/epstool
    figure =  1
    fig2dev_binary = /sw/bin/fig2dev
    fontsize = 
    font = 
    force_solid = 0
    formatted_for_printing = 0
    ghostscript =

      scalar structure containing the fields:

        binary = /sw/bin/gs
        debug = 0
        device = 
        epscrop =  1
        level = [](0x0)
        output = 
        papersize = 
        pageoffset =

           0   0

        resolution =  150
        antialiasing = 0

    loose = 0
    lpr_binary = /usr/bin/lpr
    name = test.eps
    orientation = portrait
    pstoedit_binary = /sw/bin/pstoedit
    preview = 
    printer = 
    send_to_printer = 0
    special_flag = textnormal
    tight_flag = 0
    use_color =  1
    lpr_options = -l
    unlink = {}(0x0)
    pstoedit_cmd = @pstoedit
    fig2dev_cmd = @fig2dev
    latex_standalone = @latex_standalone
    lpr_cmd = @lpr
    epstool_cmd = @epstool

Ben






reply via email to

[Prev in Thread] Current Thread [Next in Thread]