Mercurial > hg > octave-nkf
diff src/graphics.cc @ 6807:0089a504fdd6
[project @ 2007-08-10 17:34:59 by jwe]
author | jwe |
---|---|
date | Fri, 10 Aug 2007 17:34:59 +0000 |
parents | f1157da78825 |
children | 5e61f0bc0c27 |
line wrap: on
line diff
--- a/src/graphics.cc +++ b/src/graphics.cc @@ -245,7 +245,7 @@ { pfx = name.substr (0, 5); - if (pfx.compare ("image")) + if (pfx.compare ("image") || pfx.compare ("patch")) offset = 5; else if (len > 6) { @@ -318,7 +318,7 @@ { pfx = name.substr (0, 5); - if (pfx.compare ("image")) + if (pfx.compare ("image") || pfx.compare ("patch")) offset = 5; else if (len > 6) { @@ -945,9 +945,11 @@ xlim (), ylim (), zlim (), + clim (), xlimmode ("auto"), ylimmode ("auto"), zlimmode ("auto"), + climmode ("auto"), xlabel (octave_NaN), ylabel (octave_NaN), zlabel (octave_NaN), @@ -985,6 +987,9 @@ xlim = tlim; ylim = tlim; zlim = tlim; + Matrix cl (1, 2, 0); + cl(1) = 1; + clim = cl; Matrix tview (1, 2, 0.0); tview(1) = 90; @@ -1054,12 +1059,19 @@ zlim = val; zlimmode = "manual"; } + else if (name.compare ("clim")) + { + clim = val; + climmode = "manual"; + } else if (name.compare ("xlimmode")) xlimmode = val; else if (name.compare ("ylimmode")) ylimmode = val; else if (name.compare ("zlimmode")) zlimmode = val; + else if (name.compare ("climmode")) + climmode = val; else if (name.compare ("xlabel")) { graphics_handle h = ::reparent (val, "set", "xlabel", @@ -1198,10 +1210,15 @@ xlim = tlim; ylim = tlim; zlim = tlim; - + + Matrix cl (1, 2, 0); + cl(1) = 1; + clim = cl; + xlimmode = "auto"; ylimmode = "auto"; zlimmode = "auto"; + climmode = "auto"; xlabel = octave_NaN; ylabel = octave_NaN; zlabel = octave_NaN; @@ -1287,9 +1304,11 @@ m.assign ("xlim", xlim); m.assign ("ylim", ylim); m.assign ("zlim", zlim); + m.assign ("clim", clim); m.assign ("xlimmode", xlimmode); m.assign ("ylimmode", ylimmode); m.assign ("zlimmode", zlimmode); + m.assign ("climmode", climmode); m.assign ("xlabel", xlabel); m.assign ("ylabel", ylabel); m.assign ("zlabel", zlabel); @@ -1365,12 +1384,16 @@ retval = ylim; else if (name.compare ("zlim")) retval = zlim; + else if (name.compare ("clim")) + retval = clim; else if (name.compare ("xlimmode")) retval = xlimmode; else if (name.compare ("ylimmode")) retval = ylimmode; else if (name.compare ("zlimmode")) retval = zlimmode; + else if (name.compare ("climmode")) + retval = climmode; else if (name.compare ("xlabel")) { if (xisnan (xlabel)) @@ -1506,10 +1529,16 @@ m["xlim"] = tlim; m["ylim"] = tlim; m["zlim"] = tlim; + + Matrix cl(1, 2, 0); + cl(1) = 1; + + m["clim"] = cl; m["xlimmode"] = "auto"; m["ylimmode"] = "auto"; m["zlimmode"] = "auto"; + m["climmode"] = "auto"; m["xlabel"] = octave_NaN; m["ylabel"] = octave_NaN; m["zlabel"] = octave_NaN; @@ -1952,6 +1981,173 @@ // --------------------------------------------------------------------- +patch::patch_properties::patch_properties (const graphics_handle& mh, + const graphics_handle& p) + : base_properties (go_name, mh, p), + cdata (Matrix ()), + xdata (Matrix ()), + ydata (Matrix ()), + zdata (Matrix ()), + facecolor (radio_values("{flat}|none|interp")), + facealpha (1.0), + edgecolor (color_values(0, 0, 0), radio_values("flat|none|interp")), + linestyle ("-"), + linewidth (0.5), + marker ("none"), + markeredgecolor ("auto"), + markerfacecolor ("none"), + markersize (1) +{ } + +void +patch::patch_properties::set (const property_name& name, + const octave_value& val) +{ + bool modified = true; + + if (name.compare ("parent")) + set_parent (val); + else if (name.compare ("children")) + children = maybe_set_children (children, val); + else if (name.compare ("__modified__")) + { + __modified__ = val.bool_value (); + modified = false; + } + else if (name.compare ("cdata")) + cdata = val; + else if (name.compare ("xdata")) + xdata = val; + else if (name.compare ("ydata")) + ydata = val; + else if (name.compare ("zdata")) + zdata = val; + else if (name.compare ("facecolor")) + facecolor = val; + else if (name.compare ("facealpha")) + facealpha = val; + else if (name.compare ("edgecolor")) + edgecolor = val; + else if (name.compare ("linestyle")) + linestyle = val; + else if (name.compare ("linewidth")) + linewidth = val; + else if (name.compare ("marker")) + marker = val; + else if (name.compare ("markeredgecolor")) + markeredgecolor = val; + else if (name.compare ("markerfacecolor")) + markerfacecolor = val; + else if (name.compare ("markersize")) + markersize = val; + + else + { + modified = false; + warning ("set: invalid property `%s'", name.c_str ()); + } + + if (modified) + mark_modified (); +} + +octave_value +patch::patch_properties::get (void) const +{ + Octave_map m; + + m.assign ("type", type); + m.assign ("parent", parent); + m.assign ("children", children); + m.assign ("__modified__", __modified__); + m.assign ("cdata", cdata); + m.assign ("xdata", xdata); + m.assign ("ydata", ydata); + m.assign ("zdata", zdata); + m.assign ("facecolor", facecolor); + m.assign ("facealpha", facealpha); + m.assign ("edgecolor", edgecolor); + m.assign ("linestyle", linestyle); + m.assign ("linewidth", linewidth); + m.assign ("marker", marker); + m.assign ("markeredgecolor", markeredgecolor); + m.assign ("markerface", markerfacecolor); + m.assign ("markersize", markersize); + + return m; +} + +octave_value +patch::patch_properties::get (const property_name& name) const +{ + octave_value retval; + + if (name.compare ("type")) + retval = type; + else if (name.compare ("parent")) + retval = parent; + else if (name.compare ("children")) + retval = children; + else if (name.compare ("__modified__")) + retval = __modified__; + else if (name.compare ("cdata")) + retval = cdata; + else if (name.compare ("xdata")) + retval = xdata; + else if (name.compare ("ydata")) + retval = ydata; + else if (name.compare ("zdata")) + retval = zdata; + else if (name.compare ("facecolor")) + retval = facecolor; + else if (name.compare ("facealpha")) + retval = facecolor; + else if (name.compare ("egdecolor")) + retval = edgecolor; + else if (name.compare ("linestyle")) + retval = linestyle; + else if (name.compare ("linewidth")) + retval = linewidth; + else if (name.compare ("marker")) + retval = marker; + else if (name.compare ("markeredgecolor")) + retval = markeredgecolor; + else if (name.compare ("markerfacecolor")) + retval = markerfacecolor; + else if (name.compare ("markersize")) + retval = markersize; + else + warning ("get: invalid property `%s'", name.c_str ()); + + return retval; +} + +property_list::pval_map_type patch::patch_properties::factory_defaults (void) +{ + property_list::pval_map_type m; + + m["cdata"] = Matrix (); + m["xdata"] = Matrix (); + m["ydata"] = Matrix (); + m["zdata"] = Matrix (); + m["facecolor"] = color_property(); + m["facealpha"] = 1.0; + m["edgecolor"] = color_property("black"); + m["linestyle"] = "-"; + m["linewidth"] = 0.5; + m["marker"] = "none"; + m["markeredgecolor"] = "auto"; + m["markerfacecolor"] = "none"; + m["markersize"] = 1; + + + return m; +} + +std::string patch::patch_properties::go_name ("patch"); + +// --------------------------------------------------------------------- + surface::surface_properties::surface_properties (const graphics_handle& mh, const graphics_handle& p) : base_properties (go_name, mh, p), @@ -2096,9 +2292,10 @@ go = new text (h, p); else if (go_name == "image") go = new image (h, p); + else if (go_name == "patch") + go = new patch (h, p); else if (go_name == "surface") go = new surface (h, p); - if (go) handle_map[h] = graphics_object (go); else @@ -2151,6 +2348,7 @@ plist_map["line"] = line::line_properties::factory_defaults (); plist_map["text"] = text::text_properties::factory_defaults (); plist_map["image"] = image::image_properties::factory_defaults (); + plist_map["patch"] = patch::patch_properties::factory_defaults (); plist_map["surface"] = surface::surface_properties::factory_defaults (); return plist_map; @@ -2440,6 +2638,15 @@ GO_BODY (surface); } +DEFUN (__go_patch__, args, , + "-*- texinfo -*-\n\ +@deftypefn {Built-in Function} {} __go_patch__ (@var{parent})\n\ +Create a patch graphics object.\n\ +@end deftypefn") +{ + GO_BODY (patch); +} + DEFUN (__go_delete__, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} __go_delete__ (@var{h})\n\