[GRASS-SVN] r42276 - grass/trunk/gui/wxpython/gui_modules
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon May 17 18:19:44 EDT 2010
Author: glynn
Date: 2010-05-17 18:19:43 -0400 (Mon, 17 May 2010)
New Revision: 42276
Added:
grass/trunk/gui/wxpython/gui_modules/wxnviz.py
Log:
Add wxnviz.py (omitted from r42275)
Added: grass/trunk/gui/wxpython/gui_modules/wxnviz.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/wxnviz.py (rev 0)
+++ grass/trunk/gui/wxpython/gui_modules/wxnviz.py 2010-05-17 22:19:43 UTC (rev 42276)
@@ -0,0 +1,1132 @@
+
+from ctypes import *
+from grass.lib.grass import *
+from grass.lib.ogsf import *
+from grass.lib.nviz import *
+
+def G_debug(level, str, *args):
+ print str, args
+
+class Nviz(object):
+#!
+# \brief Initialize Nviz class instance
+
+ def __init__(self, log):
+ G_gisinit("") # GRASS functions
+
+ # logStream = log
+ # G_set_error_routine(&print_error)
+ # G_set_percent_routine(&print_percent)
+
+ GS_libinit()
+ GVL_libinit()
+
+ # GS_set_swap_func(swap_gl)
+
+ self.data_obj = nv_data()
+ self.data = pointer(self.data_obj)
+
+ G_debug(1, "Nviz::Nviz()")
+
+#!
+# \brief Destroy Nviz class instance
+
+ def __del__(self):
+ # G_unset_error_routine()
+ # G_unset_percent_routine()
+ del self.data
+ del self.data_obj
+ # logStream = None
+
+#!
+# \brief GL canvas resized
+#
+# \param width window width
+# \param height window height
+#
+# \return 1 on success
+# \return 0 on failure (window resized by default to 20x20 px)
+
+ def ResizeWindow(self, width, height):
+ G_debug(1, "Nviz::ResizeWindow(): width=%d height=%d",
+ width, height)
+ return Nviz_resize_window(width, height)
+
+#!
+# \brief Set default view (based on loaded data)
+#
+# \return z-exag value, default, min and max height
+
+ def SetViewDefault(self):
+ # determine z-exag
+ z_exag = Nviz_get_exag()
+ Nviz_change_exag(self.data, z_exag)
+
+ # determine height
+ hdef = c_float()
+ hmin = c_float()
+ hmax = c_float()
+ Nviz_get_exag_height(byref(hdef), byref(hmin), byref(hmax))
+
+ G_debug(1, "Nviz::SetViewDefault(): hdef=%f, hmin=%f, hmax=%f",
+ hdef, hmin, hmax)
+
+ return (z_exag, hdef.value, hmin.value, hmax.value)
+
+#!
+# \brief Change view settings
+#
+# \param x,y position
+# \param height
+# \param persp perpective
+# \param twist
+#
+# \return 1 on success
+
+ def SetView(self, x, y, height, persp, twist):
+ Nviz_set_viewpoint_height(self.data, height)
+ Nviz_set_viewpoint_position(self.data, x, y)
+ Nviz_set_viewpoint_twist(self.data, twist)
+ Nviz_set_viewpoint_persp(self.data, persp)
+
+ G_debug(1, "Nviz::SetView(): x=%f, y=%f, height=%f, persp=%f, twist=%f",
+ x, y, height, persp, twist)
+
+ return 1
+
+#!
+# \brief Set z-exag value
+#
+# \param z_exag value
+#
+# \return 1
+
+ def SetZExag(self, z_exag):
+ G_debug(1, "Nviz::SetZExag(): z_exag=%f", z_exag)
+ return Nviz_change_exag(self.data, z_exag)
+
+#!
+# \brief Draw map
+#
+# Draw quick mode:
+# - DRAW_QUICK_SURFACE
+# - DRAW_QUICK_VLINES
+# - DRAW_QUICK_VPOINTS
+# - DRAW_QUICK_VOLUME
+#
+# \param quick if true draw in wiremode
+# \param quick_mode quick mode
+
+ def Draw(self, quick, quick_mode):
+ Nviz_draw_cplane(self.data, -1, -1) # ?
+
+ if quick:
+ Nviz_draw_quick(self.data, quick_mode)
+ else:
+ Nviz_draw_all(self.data)
+
+ G_debug(1, "Nviz::Draw(): quick=%d", quick)
+
+#!
+# \brief Erase map display (with background color)
+
+ def EraseMap(self):
+ GS_clear(self.data.bgcolor)
+ G_debug(1, "Nviz::EraseMap()")
+
+ def InitView(self):
+ # initialize nviz data
+ Nviz_init_data(self.data)
+
+ # define default attributes for map objects
+ Nviz_set_surface_attr_default()
+ # set background color
+ Nviz_set_bgcolor(self.data, Nviz_color_from_str("white")) # TODO
+
+ # initialize view
+ Nviz_init_view()
+
+ # set default lighting model
+ self.SetLightsDefault()
+
+ # clear window
+ GS_clear(self.data.bgcolor)
+
+ G_debug(1, "Nviz::InitView()")
+
+#!
+# \brief Set background color
+#
+# \param color_str color string
+
+ def SetBgColor(self, color_str):
+ self.data.bgcolor = Nviz_color_from_str(color_str)
+
+#!
+# \brief Set default lighting model
+
+ def SetLightsDefault(self):
+ # first
+ Nviz_set_light_position(self.data, 0, 0.68, -0.68, 0.80, 0.0)
+ Nviz_set_light_bright(self.data, 0, 0.8)
+ Nviz_set_light_color(self.data, 0, 1.0, 1.0, 1.0)
+ Nviz_set_light_ambient(self.data, 0, 0.2, 0.2, 0.2)
+
+ # second
+ Nviz_set_light_position(self.data, 1, 0.0, 0.0, 1.0, 0.0)
+ Nviz_set_light_bright(self.data, 1, 0.5)
+ Nviz_set_light_color(self.data, 1, 1.0, 1.0, 1.0)
+ Nviz_set_light_ambient(self.data, 1, 0.3, 0.3, 0.3)
+
+ G_debug(1, "Nviz::SetLightsDefault()")
+
+#!
+# \brief Load raster map (surface)
+#
+# \param name raster map name
+# \param color_name raster map for color (NULL for color_value)
+# \param color_value color string (named color or RGB triptet)
+#
+# \return object id
+# \return -1 on failure
+
+ def LoadSurface(self, name, color_name, color_value):
+ mapset = G_find_raster2(name, "")
+ if mapset is None:
+ G_warning(_("Raster map <%s> not found"), name)
+ return -1
+
+ # topography
+ id = Nviz_new_map_obj(MAP_OBJ_SURF,
+ G_fully_qualified_name(name, mapset), 0.0,
+ self.data)
+
+ if color_name: # check for color map
+ mapset = G_find_raster2(color_name, "")
+ if mapset is None:
+ G_warning(_("Raster map <%s> not found"), color_name)
+ GS_delete_surface(id)
+ return -1
+
+
+ Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, MAP_ATT,
+ G_fully_qualified_name(color_name, mapset), -1.0,
+ self.data)
+
+ elif color_value: # check for color value
+ Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, CONST_ATT,
+ None, Nviz_color_from_str(color_value),
+ self.data)
+
+ else: # use by default elevation map for coloring
+ Nviz_set_attr(id, MAP_OBJ_SURF, ATT_COLOR, MAP_ATT,
+ G_fully_qualified_name(name, mapset), -1.0,
+ self.data)
+
+ # if (i > 1)
+ # set_default_wirecolors(self.data, i)
+
+
+ # focus on loaded self.data
+ Nviz_set_focus_map(MAP_OBJ_UNDEFINED, -1)
+
+ G_debug(1, "Nviz::LoadRaster(): name=%s -> id=%d", name, id)
+
+ return id
+
+
+#!
+# \brief Unload surface
+#
+# \param id surface id
+#
+# \return 1 on success
+# \return 0 on failure
+
+ def UnloadSurface(self, id):
+ if not GS_surf_exists(id):
+ return 0
+
+ G_debug(1, "Nviz::UnloadSurface(): id=%d", id)
+
+ if GS_delete_surface(id) < 0:
+ return 0
+
+ return 1
+
+#!
+# \brief Load vector map overlay
+#
+# \param name vector map name
+# \param points if true load 2d points rather then 2d lines
+#
+# \return object id
+# \return -1 on failure
+
+ def LoadVector(self, name, points):
+ if GS_num_surfs() == 0: # load base surface if no loaded
+ Nviz_new_map_obj(MAP_OBJ_SURF, NULL, 0.0, self.data)
+
+ nsurf = c_int()
+ surf_list = GS_get_surf_list(byref(nsurf))
+ GS_set_att_const(surf_list[0], ATT_TRANSP, 255)
+
+ mapset = G_find_vector2 (name, "")
+ if mapset is None:
+ G_warning(_("Vector map <%s> not found"),
+ name)
+
+ if points:
+ id = Nviz_new_map_obj(MAP_OBJ_SITE,
+ G_fully_qualified_name(name, mapset), 0.0,
+ self.data)
+ else:
+ id = Nviz_new_map_obj(MAP_OBJ_VECT,
+ G_fully_qualified_name(name, mapset), 0.0,
+ self.data)
+
+ G_debug(1, "Nviz::LoadVector(): name=%s -> id=%d", name, id)
+
+ return id
+
+#!
+# \brief Unload vector set
+#
+# \param id vector set id
+# \param points vector points or lines set
+#
+# \return 1 on success
+# \return 0 on failure
+
+ def UnloadVector(self, id, points):
+ G_debug(1, "Nviz::UnloadVector(): id=%d", id)
+
+ if points:
+ if not GP_site_exists(id):
+ return 0
+ if GP_delete_site(id) < 0:
+ return 0
+ else:
+ if not GV_vect_exists(id):
+ return 0
+ if GV_delete_vector(id) < 0:
+ return 0
+
+ return 1
+
+#!
+# \brief Load 3d raster map (volume)
+#
+# \param name 3d raster map name
+# \param color_name 3d raster map for color (NULL for color_value)
+# \param color_value color string (named color or RGB triptet)
+#
+# \return object id
+# \return -1 on failure
+
+ def LoadVolume(self, name, color_name, color_value):
+ mapset = G_find_grid3(name, "")
+ if mapset is None:
+ G_warning(_("3d raster map <%s> not found"),
+ name)
+ return -1
+
+ # topography
+ id = Nviz_new_map_obj(MAP_OBJ_VOL,
+ G_fully_qualified_name(name, mapset), 0.0,
+ self.data)
+
+ if color_name: # check for color map
+ mapset = G_find_grid3(color_name, "")
+ if mapset is None:
+ G_warning(_("3d raster map <%s> not found"),
+ color_name)
+ GVL_delete_vol(id)
+ return -1
+
+ Nviz_set_attr(id, MAP_OBJ_VOL, ATT_COLOR, MAP_ATT,
+ G_fully_qualified_name(color_name, mapset), -1.0,
+ self.data)
+ elif color_value: # check for color value
+ Nviz_set_attr(id, MAP_OBJ_VOL, ATT_COLOR, CONST_ATT,
+ NULL, Nviz_color_from_str(color_value),
+ self.data)
+ else: # use by default elevation map for coloring
+ Nviz_set_attr(id, MAP_OBJ_VOL, ATT_COLOR, MAP_ATT,
+ G_fully_qualified_name(name, mapset), -1.0,
+ self.data)
+
+ G_debug(1, "Nviz::LoadVolume(): name=%s -> id=%d", name, id)
+
+ return id
+
+#!
+# \brief Unload volume
+#
+# \param id volume id
+#
+# \return 1 on success
+# \return 0 on failure
+
+ def UnloadVolume(self, id):
+ if not GVL_vol_exists(id):
+ return 0
+
+ G_debug(1, "Nviz::UnloadVolume(): id=%d", id)
+
+ if GVL_delete_vol(id) < 0:
+ return 0
+
+ return 1
+
+#!
+# \brief Set surface topography
+#
+# \param id surface id
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceTopo(self, id, map, value):
+ return self.SetSurfaceAttr(id, ATT_TOPO, map, value)
+
+#!
+# \brief Set surface color
+#
+# \param id surface id
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceColor(self, id, map, value):
+ return self.SetSurfaceAttr(id, ATT_COLOR, map, value)
+
+#!
+# \brief Set surface mask
+#
+# @todo invert
+#
+# \param id surface id
+# \param invert if true invert mask
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceMask(self, id, invert, value):
+ return self.SetSurfaceAttr(id, ATT_MASK, true, value)
+
+#!
+# \brief Set surface mask
+#
+# @todo invert
+#
+# \param id surface id
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceTransp(self, id, map, value):
+ return self.SetSurfaceAttr(id, ATT_TRANSP, map, value)
+
+#!
+# \brief Set surface shininess
+#
+# \param id surface id
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceShine(self, id, map, value):
+ return self.SetSurfaceAttr(id, ATT_SHINE, map, value)
+
+#!
+# \brief Set surface emission
+#
+# \param id surface id
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceEmit(self, id, map, value):
+ return self.SetSurfaceAttr(id, ATT_EMIT, map, value)
+
+#!
+# \brief Set surface attribute
+#
+# \param id surface id
+# \param attr attribute desc
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceAttr(self, id, attr, map, value):
+ if not GS_surf_exists(id):
+ return -1
+
+ if map:
+ ret = Nviz_set_attr(id, MAP_OBJ_SURF, attr, MAP_ATT,
+ value, -1.0, self.data)
+ else:
+ if attr == ATT_COLOR:
+ val = Nviz_color_from_str(value)
+ else:
+ val = atof(value)
+
+ ret = Nviz_set_attr(id, MAP_OBJ_SURF, attr, CONST_ATT,
+ NULL, val, self.data)
+
+ G_debug(1, "Nviz::SetSurfaceAttr(): id=%d, attr=%d, map=%d, value=%s",
+ id, attr, map, value)
+
+ return 1 if ret else -2
+
+#!
+# \brief Unset surface mask
+#
+# \param id surface id
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+# \return -1 on failure
+
+ def UnsetSurfaceMask(self, id):
+ return self.UnsetSurfaceAttr(id, ATT_MASK)
+
+#!
+# \brief Unset surface transparency
+#
+# \param id surface id
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def UnsetSurfaceTransp(self, id):
+ return self.UnsetSurfaceAttr(id, ATT_TRANSP)
+
+#!
+# \brief Unset surface emission
+#
+# \param id surface id
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def UnsetSurfaceEmit(self, id):
+ return self.UnsetSurfaceAttr(id, ATT_EMIT)
+
+#!
+# \brief Unset surface attribute
+#
+# \param id surface id
+# \param attr attribute descriptor
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def UnsetSurfaceAttr(self, id, attr):
+ if not GS_surf_exists(id):
+ return -1
+
+ G_debug(1, "Nviz::UnsetSurfaceAttr(): id=%d, attr=%d",
+ id, attr)
+
+ ret = Nviz_unset_attr(id, MAP_OBJ_SURF, attr)
+
+ return 1 if ret else -2
+
+#!
+# \brief Set surface resolution
+#
+# \param id surface id
+# \param fine x/y fine resolution
+# \param coarse x/y coarse resolution
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceRes(self, id, fine, coarse):
+ G_debug(1, "Nviz::SetSurfaceRes(): id=%d, fine=%d, coarse=%d",
+ id, fine, coarse)
+
+ if id > 0:
+ if not GS_surf_exists(id):
+ return -1
+
+ if GS_set_drawres(id, fine, fine, coarse, coarse) < 0:
+ return -2
+ else:
+ GS_setall_drawres(fine, fine, coarse, coarse)
+
+ return 1
+
+#!
+# \brief Set draw style
+#
+# Draw styles:
+# - DM_GOURAUD
+# - DM_FLAT
+# - DM_FRINGE
+# - DM_WIRE
+# - DM_COL_WIRE
+# - DM_POLY
+# - DM_WIRE_POLY
+# - DM_GRID_WIRE
+# - DM_GRID_SURF
+#
+# \param id surface id (<= 0 for all)
+# \param style draw style
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+
+ def SetSurfaceStyle(self, id, style):
+ G_debug(1, "Nviz::SetSurfaceStyle(): id=%d, style=%d",
+ id, style)
+
+ if id > 0:
+ if not GS_surf_exists(id):
+ return -1
+
+ if GS_set_drawmode(id, style) < 0:
+ return -2
+
+ return 1
+
+ if GS_setall_drawmode(style) < 0:
+ return -2
+
+ return 1
+
+#!
+# \brief Set color of wire
+#
+# \todo all
+#
+# \param surface id (< 0 for all)
+# \param color color string (R:G:B)
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting attributes failed
+# \return 1 on success
+# \return 0 on failure
+
+ def SetWireColor(self, id, color_str):
+ G_debug(1, "Nviz::SetWireColor(): id=%d, color=%s",
+ id, color_str)
+
+ color = Nviz_color_from_str(color_str)
+
+ if id > 0:
+ if not GS_surf_exists(id):
+ return -1
+
+ GS_set_wire_color(id, color)
+ else:
+ nsurfs = c_int()
+ surf_list = GS_get_surf_list(byref(nsurfs))
+ for i in xrange(nsurfs.value):
+ id = surf_list[i]
+ GS_set_wire_color(id, color)
+
+ G_free(surf_list)
+ surf_list = None
+
+ return 1
+
+#!
+# \brief Get surface position
+#
+# \param id surface id
+#
+# \return x,y,z
+# \return zero-length vector on error
+
+ def GetSurfacePosition(self, id):
+ if not GS_surf_exists(id):
+ return []
+
+ x, y, z = c_float(), c_float(), c_float()
+ GS_get_trans(id, byref(x), byref(y), byref(z))
+
+ G_debug(1, "Nviz::GetSurfacePosition(): id=%d, x=%f, y=%f, z=%f",
+ id, x, y, z)
+
+ return [x.value, y.value, z.value]
+
+#!
+# \brief Set surface position
+#
+# \param id surface id
+# \param x,y,z translation values
+#
+# \return 1 on success
+# \return -1 surface not found
+# \return -2 setting position failed
+
+ def SetSurfacePosition(self, id, x, y, z):
+ if not GS_surf_exists(id):
+ return -1
+
+ G_debug(1, "Nviz::SetSurfacePosition(): id=%d, x=%f, y=%f, z=%f",
+ id, x, y, z)
+
+ GS_set_trans(id, x, y, z)
+
+ return 1
+
+#!
+# \brief Set mode of vector line overlay
+#
+# \param id vector id
+# \param color_str color string
+# \param width line width
+# \param flat display flat or on surface
+#
+# \return -1 vector set not found
+# \return -2 on failure
+# \return 1 on success
+
+ def SetVectorLineMode(self, id, color_str, width, flat):
+ if not GV_vect_exists(id):
+ return -1
+
+ G_debug(1, "Nviz::SetVectorMode(): id=%d, color=%s, width=%d, flat=%d",
+ id, color_str, width, flat)
+
+
+ color = Nviz_color_from_str(color_str)
+
+ # use memory by default
+ if GV_set_vectmode(id, 1, color, width, flat) < 0:
+ return -2
+
+ return 1
+
+#!
+# \brief Set vector height above surface (lines)
+#
+# \param id vector set id
+# \param height
+#
+# \return -1 vector set not found
+# \return 1 on success
+
+ def SetVectorLineHeight(self, id, height):
+ if not GV_vect_exists(id):
+ return -1
+
+ G_debug(1, "Nviz::SetVectorLineHeight(): id=%d, height=%f",
+ id, height)
+
+ GV_set_trans(id, 0.0, 0.0, height)
+
+ return 1
+
+#!
+# \brief Set reference surface of vector set (lines)
+#
+# \param id vector set id
+# \param surf_id surface id
+#
+# \return 1 on success
+# \return -1 vector set not found
+# \return -2 surface not found
+# \return -3 on failure
+
+ def SetVectorLineSurface(self, id, surf_id):
+ if not GV_vect_exists(id):
+ return -1
+
+ if not GS_surf_exists(surf_id):
+ return -2
+
+ if GV_select_surf(id, surf_id) < 0:
+ return -3
+
+ return 1
+
+#!
+# \brief Set mode of vector point overlay
+#
+# \param id vector id
+# \param color_str color string
+# \param width line width
+# \param flat
+#
+# \return -1 vector set not found
+
+ def SetVectorPointMode(self, id, color_str, width, size, marker):
+ if not GP_site_exists(id):
+ return -1
+
+ G_debug(1, "Nviz::SetVectorPointMode(): id=%d, color=%s, "
+ "width=%d, size=%f, marker=%d",
+ id, color_str, width, size, marker)
+
+ color = Nviz_color_from_str(color_str)
+
+ if GP_set_style(id, color, width, size, marker) < 0:
+ return -2
+
+ return 1
+
+#!
+# \brief Set vector height above surface (points)
+#
+# \param id vector set id
+# \param height
+#
+# \return -1 vector set not found
+# \return 1 on success
+
+ def SetVectorPointHeight(self, id, height):
+ if not GP_site_exists(id):
+ return -1
+
+ G_debug(1, "Nviz::SetVectorPointHeight(): id=%d, height=%f",
+ id, height)
+
+ GP_set_trans(id, 0.0, 0.0, height)
+
+ return 1
+
+#!
+# \brief Set reference surface of vector set (points)
+#
+# \param id vector set id
+# \param surf_id surface id
+#
+# \return 1 on success
+# \return -1 vector set not found
+# \return -2 surface not found
+# \return -3 on failure
+
+ def SetVectorPointSurface(self, id, surf_id):
+ if not GP_site_exists(id):
+ return -1
+
+ if not GS_surf_exists(surf_id):
+ return -2
+
+ if GP_select_surf(id, surf_id) < 0:
+ return -3
+
+ return 1
+
+#!
+# \brief Add new isosurface
+#
+# \param id volume id
+# \param level isosurface level (topography)
+#
+# \return -1 on failure
+# \return 1 on success
+
+ def AddIsosurface(self, id, level):
+ if not GVL_vol_exists(id):
+ return -1
+
+ if GVL_isosurf_add(id) < 0:
+ return -1
+
+ # set topography level
+ nisosurfs = GVL_isosurf_num_isosurfs(id)
+
+ return GVL_isosurf_set_att_const(id, nisosurfs - 1, ATT_TOPO, level)
+
+#!
+# \brief Delete isosurface
+#
+# \param id volume id
+# \param isosurf_id isosurface id
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+
+ def DeleteIsosurface(self, id, isosurf_id):
+ if not GVL_vol_exists(id):
+ return -1
+
+ if isosurf_id > GVL_isosurf_num_isosurfs(id):
+ return -2
+
+ ret = GVL_isosurf_del(id, isosurf_id)
+
+ return -3 if ret < 0 else 1
+
+#!
+# \brief Move isosurface up/down in the list
+#
+# \param id volume id
+# \param isosurf_id isosurface id
+# \param up if true move up otherwise down
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+ def MoveIsosurface(self, id, isosurf_id, up):
+ if not GVL_vol_exists(id):
+ return -1
+
+ if isosurf_id > GVL_isosurf_num_isosurfs(id):
+ return -2
+
+ if up:
+ ret = GVL_isosurf_move_up(id, isosurf_id)
+ else:
+ ret = GVL_isosurf_move_down(id, isosurf_id)
+
+ return -3 if ret < 0 else 1
+
+#!
+# \brief Set isosurface color
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+ def SetIsosurfaceColor(self, id, isosurf_id, map, value):
+ return self.SetIsosurfaceAttr(id, isosurf_id, ATT_COLOR, map, value)
+
+#!
+# \brief Set isosurface mask
+#
+# @todo invert
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param invert true for invert mask
+# \param value map name to be used for mask
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+ def SetIsosurfaceMask(self, id, isosurf_id, invert, value):
+ return self.SetIsosurfaceAttr(id, isosurf_id, ATT_MASK, true, value)
+
+#!
+# \brief Set isosurface transparency
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+ def SetIsosurfaceTransp(self, id, isosurf_id, map, value):
+ return self.SetIsosurfaceAttr(id, isosurf_id, ATT_TRANSP, map, value)
+
+#!
+# \brief Set isosurface shininess
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+ def SetIsosurfaceShine(self, id, isosurf_id, map, value):
+ return self.SetIsosurfaceAttr(id, isosurf_id, ATT_SHINE, map, value)
+
+#!
+# \brief Set isosurface emission
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 on failure
+
+ def SetIsosurfaceEmit(self, id, isosurf_id, map, value):
+ return self.SetIsosurfaceAttr(id, isosurf_id, ATT_EMIT, map, value)
+
+#!
+# \brief Set isosurface attribute
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param attr attribute desc
+# \param map if true use map otherwise constant
+# \param value map name of value
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 setting attributes failed
+
+ def SetIsosurfaceAttr(self, id, isosurf_id, attr, map, value):
+ if not GVL_vol_exists(id):
+ return -1
+
+ if isosurf_id > GVL_isosurf_num_isosurfs(id) - 1:
+ return -2
+
+ if map:
+ ret = GVL_isosurf_set_att_map(id, isosurf_id, attr, value)
+ else:
+ if attr == ATT_COLOR:
+ val = Nviz_color_from_str(value)
+ else:
+ val = float(value)
+
+ ret = GVL_isosurf_set_att_const(id, isosurf_id, attr, val)
+
+ G_debug(1, "Nviz::SetIsosurfaceAttr(): id=%d, isosurf=%d, "
+ "attr=%d, map=%d, value=%s",
+ id, isosurf_id, attr, map, value)
+
+ return 1 if ret > 0 else -2
+
+#!
+# \brief Unset isosurface mask
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 setting attributes failed
+
+ def UnsetIsosurfaceMask(self, id, isosurf_id):
+ return self.UnsetIsosurfaceAttr(id, isosurf_id, ATT_MASK)
+
+#!
+# \brief Unset isosurface transparency
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 setting attributes failed
+
+ def UnsetIsosurfaceTransp(self, id, isosurf_id):
+ return self.UnsetIsosurfaceAttr(id, isosurf_id, ATT_TRANSP)
+
+#!
+# \brief Unset isosurface emission
+#
+# \param id volume id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -3 setting attributes failed
+
+ def UnsetIsosurfaceEmit(self, id, isosurf_id):
+ return self.UnsetIsosurfaceAttr(id, isosurf_id, ATT_EMIT)
+
+#!
+# \brief Unset surface attribute
+#
+# \param id surface id
+# \param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+# \param attr attribute descriptor
+#
+# \return 1 on success
+# \return -1 volume not found
+# \return -2 isosurface not found
+# \return -2 on failure
+
+ def UnsetIsosurfaceAttr(self, id, isosurf_id, attr):
+ if not GVL_vol_exists(id):
+ return -1
+
+ if isosurf_id > GVL_isosurf_num_isosurfs(id) - 1:
+ return -2
+
+ G_debug(1, "Nviz::UnsetSurfaceAttr(): id=%d, isosurf_id=%d, attr=%d",
+ id, isosurf_id, attr)
+
+ ret = GVL_isosurf_unset_att(id, isosurf_id, attr)
+
+ return 1 if ret > 0 else -2
+
+#!
+# \brief Set draw mode for isosurfaces
+#
+# \param mode
+#
+# \return 1 on success
+# \return -1 volume set not found
+# \return -2 on failure
+
+ def SetIsosurfaceMode(self, id, mode):
+ if not GVL_vol_exists(id):
+ return -1
+
+ ret = GVL_isosurf_set_drawmode(id, mode)
+
+ return -2 if ret < 0 else 1
+
+#!
+# \brief Set draw resolution for isosurfaces
+#
+# \param res resolution value
+#
+# \return 1 on success
+# \return -1 volume set not found
+# \return -2 on failure
+
+ def SetIsosurfaceRes(self, id, res):
+ if not GVL_vol_exists(id):
+ return -1
+
+ ret = GVL_isosurf_set_drawres(id, res, res, res)
+
+ return -2 if ret < 0 else 1
More information about the grass-commit
mailing list