octave-maintainers
[Top][All Lists]
Advanced

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

base_graphics_backend


From: Ryan Rusaw
Subject: base_graphics_backend
Date: Mon, 8 Sep 2008 22:45:54 -0600

Michael,

I've implemented a implement a subclass of base_graphics_backend that
implements a simple wire protocol with JSON-based data serialization.
I've just encountered a few issues

1. A property_changed event is never fired for
base_properties::children. Is this the expected behavior? I've
resorted to keeping track of children
myself on the plotting end of the ipc socket, as I never know when the
children have been updated.

2. I seem to get spurious object deletions and incomplete handle reassignments.

octave:1> autoload("__init_octave_eclipse__",
file_in_loadpath("octave_eclipse_backend.oct"))
octave:2> backend ("octave_eclipse")
octave:3> figure
octave:4> plot(0:.1:10,cos(0:.1:10))
octave:5> exit
error: graphics_handle::free: invalid object -6.19755
error: graphics_handle::free: invalid object -7.33522
error: graphics_handle::free: invalid object -8.76823
error: graphics_handle::free: invalid object -9.27777

Printing out the serialized objects I get the following:

{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":1}},{"key":"type","value":{"string_value":"figure"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-1.840187716837885}},{"key":"type","value":{"string_value":"axes"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-2.394382926917457}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-3.783099223494949}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-4.798440033198129}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-5.911647357553408}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-6.197551369575061}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-7.33522275586835}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-8.768229594562095}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-9.277774711010151}},{"key":"type","value":{"string_value":"text"}}]}}}}
{"payload":{"objectDeleted":{"object_id":-6.197551369575061}}}
{"payload":{"objectDeleted":{"object_id":-7.33522275586835}}}
{"payload":{"objectDeleted":{"object_id":-8.768229594562095}}}
{"payload":{"objectDeleted":{"object_id":-9.277774711010151}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-9.277774711010151}},{"key":"type","value":{"string_value":"hggroup"}}]}}}}
{"payload":{"objectCreated":{"object":{"properties":[{"key":"__myhandle__","value":{"double_value":-8.768229594562095}},{"key":"type","value":{"string_value":"line"}}]}}}}

It seems to create the figure and axes correctly, but then creates
extra text objects ([xyz]label + title) just to delete them again.
Could this be a byproduct of iterating through all the properties of
an object during the object_created function call?

void octave_eclipse_backend::object_created(const graphics_object& go) {        
        ... Serialize object ...
        Octave_map all_props = go.get_properties().get(true).map_value();
        for (Octave_map::iterator it = all_props.begin(); it !=
all_props.end(); ++it) {
                ... Serialize property ...
        }
}

Any feedback would be much appreciated.

Thanks.

Ryan


reply via email to

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