Пример #1
0
    def preparePipelineForStereo(self, pipeline, module_id, dimensions, deviceDimensions):
        result = []

        serializedPipeline = serialize(pipeline)
        p1 = ((dimensions[0], dimensions[1]), serializedPipeline)
        serializedPipeline = serialize(pipeline)
        p2 = ((dimensions[0] + 1, dimensions[1]), serializedPipeline)

        result.append(p1)
        result.append(p2)
        return result
Пример #2
0
    def preparePipelineForLocation( self, pipeline, module_id, dimensions ):
        """
        preparePipelineForLocation(pipeline: Pipeline, module_id: Int, position: (Int, Int)) -> [((Int, Int), Pipeline)]
        Returns a list with tuples that contain the location of a pipeline, along with the pipeline itself
        """
        print " preparePipelineForLocation: module=%s, dims=%s " % ( str(module_id), str(dimensions) )
        result = []
        for row in range(dimensions[3]):
            for column in range(dimensions[2]):
                localPipeline = copy.copy(pipeline)                    
                currentModule = localPipeline.get_module_by_id(module_id)
                for module in localPipeline.module_list:
#                    for function in module.functions:
#                        if function.name == 'file' or function.name == 'url':                       
#                            function.parameters[0].strValue = getHomeRelativePath( function.parameters[0].strValue )
                    if ( module.name in self.cellModuleNames ):
                        if ( module.id <> module_id ):
                            delete_module( module, localPipeline )
                      
                serializedPipeline = serialize(localPipeline)
                serializedPipeline = serializedPipeline.replace( os.path.expanduser('~'), '~' )
                print " HW-DeviceServer: Serialized pipeline:\n %s " % str( serializedPipeline )
                result.append( ((dimensions[0]+column, dimensions[1]+row), serializedPipeline) )
        
        return result
Пример #3
0
    def setTuvok(self, pipeline, module, dimensions, position):
        functionList = module._get_functions()
        
        frustumFunction = None
        for function in functionList:
            if function.name == "frustum":
                frustumFunction = function

        fullFrustum = (frustumFunction.params[0].value(),
                       frustumFunction.params[1].value(),
                       frustumFunction.params[2].value(),
                       frustumFunction.params[3].value(),
                       frustumFunction.params[4].value(),
                       frustumFunction.params[5].value())

        incX = screenX / (screenX + mullionX)
        incY = screenY / (screenY + mullionY)

        localFrustum = (fullFrustum[0] + ((fullFrustum[1] - fullFrustum[0]) / float(dimensions[2])) * position[0],
                        fullFrustum[0] + ((fullFrustum[1] - fullFrustum[0]) / float(dimensions[2])) * (position[0]+incX),
                        fullFrustum[2] + ((fullFrustum[3] - fullFrustum[2]) / float(dimensions[3])) * position[1],
                        fullFrustum[2] + ((fullFrustum[3] - fullFrustum[2]) / float(dimensions[3])) * (position[1]+incY),
                        fullFrustum[4],
                        fullFrustum[5])

        print position, localFrustum


        action_list = []

        paramList = []
        paramList.append((str(localFrustum[0]), frustumFunction.params[0].type, frustumFunction.params[0].namespace, frustumFunction.params[0].identifier, None))
        paramList.append((str(localFrustum[1]), frustumFunction.params[1].type, frustumFunction.params[1].namespace, frustumFunction.params[1].identifier, None))
        paramList.append((str(localFrustum[2]), frustumFunction.params[2].type, frustumFunction.params[2].namespace, frustumFunction.params[2].identifier, None))
        paramList.append((str(localFrustum[3]), frustumFunction.params[3].type, frustumFunction.params[3].namespace, frustumFunction.params[3].identifier, None))
        paramList.append((str(localFrustum[4]), frustumFunction.params[4].type, frustumFunction.params[4].namespace, frustumFunction.params[4].identifier, None))
        paramList.append((str(localFrustum[5]), frustumFunction.params[5].type, frustumFunction.params[5].namespace, frustumFunction.params[5].identifier, None))

        for i in range(len(paramList)):
            (p_val, p_type, p_namespace, p_identifier, p_alias) = paramList[i]
            function = frustumFunction
            old_param = function.params[i]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(id=param_id, pos=i, name='<no description>', alias=p_alias, val=p_val, type=p_type, identifier=p_identifier, namespace=p_namespace,)
            action_list.append(('change', old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0]+position[0], dimensions[1]+position[1]), serializedPipeline)
        return result
        pass
Пример #4
0
    def getClearPipelines(self, dimensions, clientDimensions):
        result = []
        for row in range(dimensions[3]):
            for column in range(dimensions[2]):
                localPipeline = Pipeline()
                vtkversion = self.getPackageVersion("edu.utah.sci.vistrails.vtk")
                vtkCell = Module(
                    id=localPipeline.fresh_module_id(),
                    name="VTKCell",
                    package="edu.utah.sci.vistrails.vtk",
                    version=vtkversion,
                )
                action = create_action([("add", vtkCell)])
                localPipeline.perform_action(action)

                vtkRenderer = Module(
                    id=localPipeline.fresh_module_id(),
                    name="vtkRenderer",
                    package="edu.utah.sci.vistrails.vtk",
                    version=vtkversion,
                )
                action = create_action([("add", vtkRenderer)])
                localPipeline.perform_action(action)

                src = registry.get_port_spec("edu.utah.sci.vistrails.vtk", "vtkRenderer", None, "self", "output")
                dst = registry.get_port_spec("edu.utah.sci.vistrails.vtk", "VTKCell", None, "AddRenderer", "input")
                inputPort = Port(
                    id=localPipeline.get_tmp_id(Port.vtType), spec=dst, moduleId=vtkCell.id, moduleName=vtkCell.name
                )
                outputPort = Port(
                    id=localPipeline.get_tmp_id(Port.vtType),
                    spec=src,
                    moduleId=vtkRenderer.id,
                    moduleName=vtkRenderer.name,
                )
                connection = Connection(id=localPipeline.fresh_connection_id(), ports=[inputPort, outputPort])
                action = create_action([("add", connection)])
                localPipeline.perform_action(action)

                cellLocation = self.getCellLocationModule(vtkCell, localPipeline)
                if not cellLocation is None:
                    self.deleteModule(cellLocation, localPipeline)
                dim = clientDimensions[(column + dimensions[0], row + dimensions[1])]
                self.addCellLocation(vtkCell, localPipeline, (column, row), dimensions, dim)

                result.append(((dimensions[0] + column, dimensions[1] + row), serialize(localPipeline)))
        return result
Пример #5
0
    def setMistViewport(self, pipeline, module, dimensions, position):
        functionList = module._get_functions()

        viewportFunction = None

        for function in functionList:
            if function.name == "Viewport":
                viewportFunction = function

        fullRange = (viewportFunction.params[0].value(),
                    viewportFunction.params[1].value(),
                    viewportFunction.params[2].value(),
                    viewportFunction.params[3].value())
        print 'in range', fullRange
        print 'dimension:', dimensions

        rw = fullRange[2]-fullRange[0]
        rh = fullRange[3]-fullRange[1]

        centerFunction = None
        for function in functionList:
            if function.name == "GlobalCenter":
                centerFunction = function
	centerX = rw*0.5 + fullRange[0]
	centerY = rh*0.5 + fullRange[1] 

        aspectRatio = float(rw) / rh
        nw = int(rh*aspectRatio)
        
        fullRange = (fullRange[0]-(nw-rw)/2,
                     fullRange[1],
                     fullRange[2]+(nw-rw)/2,
                     fullRange[3])
        print 'out range', fullRange
        print 'position:', position
        
        incX = screenX / (screenX + mullionX)
        incY = screenY / (screenY + mullionY)

        localRange = ( (rw)*position[0],
                       (rh)*position[1],
                       (rw)*(position[0]+1),
                       (rh)*(position[1]+1))

        print position, localRange

        action_list = []
        paramList = []
        paramList.append((viewportFunction, str(localRange[0]), viewportFunction.params[0].type, viewportFunction.params[0].namespace, viewportFunction.params[0].identifier, None, 0))
        paramList.append((viewportFunction, str(localRange[1]), viewportFunction.params[1].type, viewportFunction.params[1].namespace, viewportFunction.params[1].identifier, None, 1))
        paramList.append((viewportFunction, str(localRange[2]), viewportFunction.params[2].type, viewportFunction.params[2].namespace, viewportFunction.params[2].identifier, None, 2))
        paramList.append((viewportFunction, str(localRange[3]), viewportFunction.params[3].type, viewportFunction.params[3].namespace, viewportFunction.params[3].identifier, None, 3))

        paramList.append((centerFunction, str(centerX), centerFunction.params[0].type, centerFunction.params[0].namespace, 
centerFunction.params[0].identifier, None, 0))
        paramList.append((centerFunction, str(centerY), centerFunction.params[1].type, centerFunction.params[1].namespace, 
centerFunction.params[1].identifier, None, 1))
        print "Params: ", paramList


        for i in range(len(paramList)):
            (function, p_val, p_type, p_namespace, p_identifier, p_alias, pos) = paramList[i]
#            function = viewportFunction#rangeFunction
            print i, function, p_val, p_type, p_namespace, p_identifier, p_alias, pos
            old_param = function.params[pos]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(id=param_id, pos=i, name='<no description>', alias=p_alias, val=p_val, type=p_type, identifier=p_identifier, namespace=p_namespace,)
            action_list.append(('change', old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0]+position[0], dimensions[1]+position[1]), serializedPipeline)
        return result
Пример #6
0
    def setViSUSRange(self, pipeline, module, dimensions, position):
        functionList = module._get_functions()

        rangeFunction = None

        for function in functionList:
            if function.name == "Range":
                rangeFunction = function

        fullRange = (rangeFunction.params[0].value(),
                     rangeFunction.params[1].value(),
                     rangeFunction.params[2].value(),
                     rangeFunction.params[3].value())
        print 'in range', fullRange

        rw = fullRange[1]-fullRange[0]
        rh = fullRange[3]-fullRange[2]
        aspectRatio = float(rw) / rh #
        aspectRatio = (dimensions[2]-dimensions[0])*2560.0/((dimensions[3]-dimensions[1])*1600)
        nw = int(rh*aspectRatio)
        
        fullRange = (fullRange[0]-(nw-rw)/2,
                     fullRange[1]+(nw-rw)/2,
                     fullRange[2], fullRange[3])
        print 'out range', fullRange
        
        incX = screenX / (screenX + mullionX)
        incY = screenY / (screenY + mullionY)

        localRange = (fullRange[0] + ((fullRange[1] - fullRange[0]) / (dimensions[2]-dimensions[0])) * position[0],
                      int(fullRange[0] + ((fullRange[1] - fullRange[0]) / (dimensions[2]-dimensions[0])) * (position[0] + incX)),
                      fullRange[2] + ((fullRange[3] - fullRange[2]) / (dimensions[3]-dimensions[1])) * position[1],
                      int(fullRange[2] + ((fullRange[3] - fullRange[2]) / (dimensions[3]-dimensions[1])) * (position[1] + incY)))
#         localRange = (fullRange[0] + ((fullRange[1] - fullRange[0]) / dimensions[2]) * position[0],
#                       int(fullRange[0] + ((fullRange[1] - fullRange[0]) / dimensions[2]) * (position[0] + incX)),
#                       fullRange[0] + ((fullRange[3] - fullRange[2]) / dimensions[3]) * position[1],
#                       int(fullRange[0] + ((fullRange[3] - fullRange[2]) / dimensions[3]) * (position[1] + incY)))

        print position, localRange

        action_list = []

        paramList = []
        paramList.append((str(localRange[0]), rangeFunction.params[0].type, rangeFunction.params[0].namespace, rangeFunction.params[0].identifier, None))
        paramList.append((str(localRange[1]), rangeFunction.params[1].type, rangeFunction.params[1].namespace, rangeFunction.params[1].identifier, None))
        paramList.append((str(localRange[2]), rangeFunction.params[2].type, rangeFunction.params[2].namespace, rangeFunction.params[2].identifier, None))
        paramList.append((str(localRange[3]), rangeFunction.params[3].type, rangeFunction.params[3].namespace, rangeFunction.params[3].identifier, None))

        for i in range(len(paramList)):
            (p_val, p_type, p_namespace, p_identifier, p_alias) = paramList[i]
            function = rangeFunction
            old_param = function.params[i]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(id=param_id, pos=i, name='<no description>', alias=p_alias, val=p_val, type=p_type, identifier=p_identifier, namespace=p_namespace,)
            action_list.append(('change', old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0]+position[0], dimensions[1]+position[1]), serializedPipeline)
        return result
Пример #7
0
    def setCamera(self, vtkCell, camera, pipeline, position, dimensions, doZoom):
        """
        setCamera(vtkCell: Module, camera: Module, pipeline: Pipeline, position: (Int, Int), dimensions: (Int, Int), doZoom: Bool) -> Pipeline
        This method modifies the received camera in the received pipeline to have it match the requirements for the display wall
        """

        functionList = camera._get_functions()
        windowCenterFunction = None
        zoomFunction = None

        for function in functionList:
            if function.name == "SetWindowCenter":
                windowCenterFunction = function
            if function.name == "Zoom":
                zoomFunction = function            

        action_list = []
                    
        if windowCenterFunction is None:
            spec = registry.get_port_spec('edu.utah.sci.vistrails.vtk','vtkCamera', None, 'SetWindowCenter','input')
            windowCenterFunction = spec.create_module_function()    
            windowCenterFunction.real_id = pipeline.get_tmp_id(ModuleFunction.vtType)
            windowCenterFunction.db_parameters[0].db_id = pipeline.get_tmp_id(ModuleParam.vtType)
            windowCenterFunction.db_parameters[1].db_id = pipeline.get_tmp_id(ModuleParam.vtType)
            windowCenterFunction.db_parameters_id_index[windowCenterFunction.db_parameters[0].db_id] = windowCenterFunction.db_parameters[0]
            windowCenterFunction.db_parameters_id_index[windowCenterFunction.db_parameters[1].db_id] = windowCenterFunction.db_parameters[1]
            action_list.append(('add', windowCenterFunction, camera.vtType, camera.id))
            
        if zoomFunction is None:
            spec = registry.get_port_spec('edu.utah.sci.vistrails.vtk','vtkCamera', None, 'Zoom','input')
            zoomFunction = spec.create_module_function()
            zoomFunction.real_id = pipeline.get_tmp_id(ModuleFunction.vtType)
            zoomFunction.db_parameters[0].db_id = pipeline.get_tmp_id(ModuleParam.vtType)
            zoomFunction.db_parameters_id_index[zoomFunction.db_parameters[0].db_id] = zoomFunction.db_parameters[0]            
            action_list.append(('add', zoomFunction, camera.vtType, camera.id))
            
        action = create_action(action_list)
        pipeline.perform_action(action)

        camera = pipeline.get_module_by_id(camera.id)
        functionList = camera._get_functions()
        windowCenterFunction = [x for x in camera._get_functions() if x.name == "SetWindowCenter"][0]

        if doZoom:
            zoomFunction = [x for x in camera._get_functions() if x.name == "Zoom"][0]

        columnCenter = - dimensions[2] + (position[0]*2+1);
        rowCenter = dimensions[3] - (position[1]*2+1);


        zoom = min(dimensions[2], dimensions[3])
#        zoom = min(dimensions[2] - dimensions[0]+1, dimensions[3] - dimensions[1]+1)

        paramList = []

        ### changes the setWindowCenter function
        paramList.append((str(columnCenter), windowCenterFunction.params[0].type, windowCenterFunction.params[0].namespace, windowCenterFunction.params[0].identifier, None))
        paramList.append((str(rowCenter), windowCenterFunction.params[1].type, windowCenterFunction.params[1].namespace, windowCenterFunction.params[1].identifier, None))
        
        if doZoom:
        ### changes the zoom function
            paramList.append((str(zoom), zoomFunction.params[0].type, zoomFunction.params[0].namespace, zoomFunction.params[0].identifier, None))

        action_list = []                    
        for i in xrange(len(paramList)):
            (p_val, p_type, p_namespace, p_identifier, p_alias) = paramList[i]
            function = windowCenterFunction if i == 0 or i == 1 else zoomFunction
            old_param = function.params[i] if i == 0 or i == 1 else function.params[0]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(id=param_id, pos=i, name='<no description>', alias=p_alias, val=p_val, type=p_type, identifier=p_identifier, namespace=p_namespace,)
            action_list.append(('change', old_param, new_param, function.vtType, function.real_id))
            
        action = create_action(action_list)
        pipeline.perform_action(action)
 
        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0]+position[0], dimensions[1]+position[1]), serializedPipeline)
        return result
Пример #8
0
    def setTuvok(self, pipeline, module, dimensions, position):
        functionList = module._get_functions()

        frustumFunction = None
        for function in functionList:
            if function.name == "frustum":
                frustumFunction = function

        fullFrustum = (
            frustumFunction.params[0].value(),
            frustumFunction.params[1].value(),
            frustumFunction.params[2].value(),
            frustumFunction.params[3].value(),
            frustumFunction.params[4].value(),
            frustumFunction.params[5].value(),
        )

        incX = screenX / (screenX + mullionX)
        incY = screenY / (screenY + mullionY)

        localFrustum = (
            fullFrustum[0] + ((fullFrustum[1] - fullFrustum[0]) / float(dimensions[2])) * position[0],
            fullFrustum[0] + ((fullFrustum[1] - fullFrustum[0]) / float(dimensions[2])) * (position[0] + incX),
            fullFrustum[2] + ((fullFrustum[3] - fullFrustum[2]) / float(dimensions[3])) * position[1],
            fullFrustum[2] + ((fullFrustum[3] - fullFrustum[2]) / float(dimensions[3])) * (position[1] + incY),
            fullFrustum[4],
            fullFrustum[5],
        )

        print position, localFrustum

        action_list = []

        paramList = []
        paramList.append(
            (
                str(localFrustum[0]),
                frustumFunction.params[0].type,
                frustumFunction.params[0].namespace,
                frustumFunction.params[0].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localFrustum[1]),
                frustumFunction.params[1].type,
                frustumFunction.params[1].namespace,
                frustumFunction.params[1].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localFrustum[2]),
                frustumFunction.params[2].type,
                frustumFunction.params[2].namespace,
                frustumFunction.params[2].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localFrustum[3]),
                frustumFunction.params[3].type,
                frustumFunction.params[3].namespace,
                frustumFunction.params[3].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localFrustum[4]),
                frustumFunction.params[4].type,
                frustumFunction.params[4].namespace,
                frustumFunction.params[4].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localFrustum[5]),
                frustumFunction.params[5].type,
                frustumFunction.params[5].namespace,
                frustumFunction.params[5].identifier,
                None,
            )
        )

        for i in range(len(paramList)):
            (p_val, p_type, p_namespace, p_identifier, p_alias) = paramList[i]
            function = frustumFunction
            old_param = function.params[i]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(
                id=param_id,
                pos=i,
                name="<no description>",
                alias=p_alias,
                val=p_val,
                type=p_type,
                identifier=p_identifier,
                namespace=p_namespace,
            )
            action_list.append(("change", old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0] + position[0], dimensions[1] + position[1]), serializedPipeline)
        return result
        pass
Пример #9
0
    def setMistViewport(self, pipeline, module, dimensions, position):
        functionList = module._get_functions()

        viewportFunction = None

        for function in functionList:
            if function.name == "Viewport":
                viewportFunction = function

        fullRange = (
            viewportFunction.params[0].value(),
            viewportFunction.params[1].value(),
            viewportFunction.params[2].value(),
            viewportFunction.params[3].value(),
        )
        print "in range", fullRange
        print "dimension:", dimensions

        rw = fullRange[2] - fullRange[0]
        rh = fullRange[3] - fullRange[1]

        centerFunction = None
        for function in functionList:
            if function.name == "GlobalCenter":
                centerFunction = function
        centerX = rw * 0.5 + fullRange[0]
        centerY = rh * 0.5 + fullRange[1]

        aspectRatio = float(rw) / rh
        nw = int(rh * aspectRatio)

        fullRange = (fullRange[0] - (nw - rw) / 2, fullRange[1], fullRange[2] + (nw - rw) / 2, fullRange[3])
        print "out range", fullRange
        print "position:", position

        incX = screenX / (screenX + mullionX)
        incY = screenY / (screenY + mullionY)

        localRange = ((rw) * position[0], (rh) * position[1], (rw) * (position[0] + 1), (rh) * (position[1] + 1))

        print position, localRange

        action_list = []
        paramList = []
        paramList.append(
            (
                viewportFunction,
                str(localRange[0]),
                viewportFunction.params[0].type,
                viewportFunction.params[0].namespace,
                viewportFunction.params[0].identifier,
                None,
                0,
            )
        )
        paramList.append(
            (
                viewportFunction,
                str(localRange[1]),
                viewportFunction.params[1].type,
                viewportFunction.params[1].namespace,
                viewportFunction.params[1].identifier,
                None,
                1,
            )
        )
        paramList.append(
            (
                viewportFunction,
                str(localRange[2]),
                viewportFunction.params[2].type,
                viewportFunction.params[2].namespace,
                viewportFunction.params[2].identifier,
                None,
                2,
            )
        )
        paramList.append(
            (
                viewportFunction,
                str(localRange[3]),
                viewportFunction.params[3].type,
                viewportFunction.params[3].namespace,
                viewportFunction.params[3].identifier,
                None,
                3,
            )
        )

        paramList.append(
            (
                centerFunction,
                str(centerX),
                centerFunction.params[0].type,
                centerFunction.params[0].namespace,
                centerFunction.params[0].identifier,
                None,
                0,
            )
        )
        paramList.append(
            (
                centerFunction,
                str(centerY),
                centerFunction.params[1].type,
                centerFunction.params[1].namespace,
                centerFunction.params[1].identifier,
                None,
                1,
            )
        )
        print "Params: ", paramList

        for i in range(len(paramList)):
            (function, p_val, p_type, p_namespace, p_identifier, p_alias, pos) = paramList[i]
            #            function = viewportFunction#rangeFunction
            print i, function, p_val, p_type, p_namespace, p_identifier, p_alias, pos
            old_param = function.params[pos]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(
                id=param_id,
                pos=i,
                name="<no description>",
                alias=p_alias,
                val=p_val,
                type=p_type,
                identifier=p_identifier,
                namespace=p_namespace,
            )
            action_list.append(("change", old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0] + position[0], dimensions[1] + position[1]), serializedPipeline)
        return result
Пример #10
0
    def setViSUSRange(self, pipeline, module, dimensions, position):
        functionList = module._get_functions()

        rangeFunction = None

        for function in functionList:
            if function.name == "Range":
                rangeFunction = function

        fullRange = (
            rangeFunction.params[0].value(),
            rangeFunction.params[1].value(),
            rangeFunction.params[2].value(),
            rangeFunction.params[3].value(),
        )
        print "in range", fullRange

        rw = fullRange[1] - fullRange[0]
        rh = fullRange[3] - fullRange[2]
        aspectRatio = float(rw) / rh  #
        aspectRatio = (dimensions[2] - dimensions[0]) * 2560.0 / ((dimensions[3] - dimensions[1]) * 1600)
        nw = int(rh * aspectRatio)

        fullRange = (fullRange[0] - (nw - rw) / 2, fullRange[1] + (nw - rw) / 2, fullRange[2], fullRange[3])
        print "out range", fullRange

        incX = screenX / (screenX + mullionX)
        incY = screenY / (screenY + mullionY)

        localRange = (
            fullRange[0] + ((fullRange[1] - fullRange[0]) / (dimensions[2] - dimensions[0])) * position[0],
            int(
                fullRange[0] + ((fullRange[1] - fullRange[0]) / (dimensions[2] - dimensions[0])) * (position[0] + incX)
            ),
            fullRange[2] + ((fullRange[3] - fullRange[2]) / (dimensions[3] - dimensions[1])) * position[1],
            int(
                fullRange[2] + ((fullRange[3] - fullRange[2]) / (dimensions[3] - dimensions[1])) * (position[1] + incY)
            ),
        )
        #         localRange = (fullRange[0] + ((fullRange[1] - fullRange[0]) / dimensions[2]) * position[0],
        #                       int(fullRange[0] + ((fullRange[1] - fullRange[0]) / dimensions[2]) * (position[0] + incX)),
        #                       fullRange[0] + ((fullRange[3] - fullRange[2]) / dimensions[3]) * position[1],
        #                       int(fullRange[0] + ((fullRange[3] - fullRange[2]) / dimensions[3]) * (position[1] + incY)))

        print position, localRange

        action_list = []

        paramList = []
        paramList.append(
            (
                str(localRange[0]),
                rangeFunction.params[0].type,
                rangeFunction.params[0].namespace,
                rangeFunction.params[0].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localRange[1]),
                rangeFunction.params[1].type,
                rangeFunction.params[1].namespace,
                rangeFunction.params[1].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localRange[2]),
                rangeFunction.params[2].type,
                rangeFunction.params[2].namespace,
                rangeFunction.params[2].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(localRange[3]),
                rangeFunction.params[3].type,
                rangeFunction.params[3].namespace,
                rangeFunction.params[3].identifier,
                None,
            )
        )

        for i in range(len(paramList)):
            (p_val, p_type, p_namespace, p_identifier, p_alias) = paramList[i]
            function = rangeFunction
            old_param = function.params[i]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(
                id=param_id,
                pos=i,
                name="<no description>",
                alias=p_alias,
                val=p_val,
                type=p_type,
                identifier=p_identifier,
                namespace=p_namespace,
            )
            action_list.append(("change", old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0] + position[0], dimensions[1] + position[1]), serializedPipeline)
        return result
Пример #11
0
    def setCamera(self, vtkCell, camera, pipeline, position, dimensions, doZoom):
        """
        setCamera(vtkCell: Module, camera: Module, pipeline: Pipeline, position: (Int, Int), dimensions: (Int, Int), doZoom: Bool) -> Pipeline
        This method modifies the received camera in the received pipeline to have it match the requirements for the display wall
        """

        functionList = camera._get_functions()
        windowCenterFunction = None
        zoomFunction = None

        for function in functionList:
            if function.name == "SetWindowCenter":
                windowCenterFunction = function
            if function.name == "Zoom":
                zoomFunction = function

        action_list = []

        if windowCenterFunction is None:
            spec = registry.get_port_spec("edu.utah.sci.vistrails.vtk", "vtkCamera", None, "SetWindowCenter", "input")
            windowCenterFunction = spec.create_module_function()
            windowCenterFunction.real_id = pipeline.get_tmp_id(ModuleFunction.vtType)
            windowCenterFunction.db_parameters[0].db_id = pipeline.get_tmp_id(ModuleParam.vtType)
            windowCenterFunction.db_parameters[1].db_id = pipeline.get_tmp_id(ModuleParam.vtType)
            windowCenterFunction.db_parameters_id_index[
                windowCenterFunction.db_parameters[0].db_id
            ] = windowCenterFunction.db_parameters[0]
            windowCenterFunction.db_parameters_id_index[
                windowCenterFunction.db_parameters[1].db_id
            ] = windowCenterFunction.db_parameters[1]
            action_list.append(("add", windowCenterFunction, camera.vtType, camera.id))

        if zoomFunction is None:
            spec = registry.get_port_spec("edu.utah.sci.vistrails.vtk", "vtkCamera", None, "Zoom", "input")
            zoomFunction = spec.create_module_function()
            zoomFunction.real_id = pipeline.get_tmp_id(ModuleFunction.vtType)
            zoomFunction.db_parameters[0].db_id = pipeline.get_tmp_id(ModuleParam.vtType)
            zoomFunction.db_parameters_id_index[zoomFunction.db_parameters[0].db_id] = zoomFunction.db_parameters[0]
            action_list.append(("add", zoomFunction, camera.vtType, camera.id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        camera = pipeline.get_module_by_id(camera.id)
        functionList = camera._get_functions()
        windowCenterFunction = [x for x in camera._get_functions() if x.name == "SetWindowCenter"][0]

        if doZoom:
            zoomFunction = [x for x in camera._get_functions() if x.name == "Zoom"][0]

        columnCenter = -dimensions[2] + (position[0] * 2 + 1)
        rowCenter = dimensions[3] - (position[1] * 2 + 1)

        zoom = min(dimensions[2], dimensions[3])
        #        zoom = min(dimensions[2] - dimensions[0]+1, dimensions[3] - dimensions[1]+1)

        paramList = []

        ### changes the setWindowCenter function
        paramList.append(
            (
                str(columnCenter),
                windowCenterFunction.params[0].type,
                windowCenterFunction.params[0].namespace,
                windowCenterFunction.params[0].identifier,
                None,
            )
        )
        paramList.append(
            (
                str(rowCenter),
                windowCenterFunction.params[1].type,
                windowCenterFunction.params[1].namespace,
                windowCenterFunction.params[1].identifier,
                None,
            )
        )

        if doZoom:
            ### changes the zoom function
            paramList.append(
                (
                    str(zoom),
                    zoomFunction.params[0].type,
                    zoomFunction.params[0].namespace,
                    zoomFunction.params[0].identifier,
                    None,
                )
            )

        action_list = []
        for i in xrange(len(paramList)):
            (p_val, p_type, p_namespace, p_identifier, p_alias) = paramList[i]
            function = windowCenterFunction if i == 0 or i == 1 else zoomFunction
            old_param = function.params[i] if i == 0 or i == 1 else function.params[0]
            param_id = pipeline.get_tmp_id(ModuleParam.vtType)
            new_param = ModuleParam(
                id=param_id,
                pos=i,
                name="<no description>",
                alias=p_alias,
                val=p_val,
                type=p_type,
                identifier=p_identifier,
                namespace=p_namespace,
            )
            action_list.append(("change", old_param, new_param, function.vtType, function.real_id))

        action = create_action(action_list)
        pipeline.perform_action(action)

        serializedPipeline = serialize(pipeline)
        result = ((dimensions[0] + position[0], dimensions[1] + position[1]), serializedPipeline)
        return result