Esempio n. 1
0
    def __init__(self, title='', getValue=None, parent=None, **kwargs):
        super(Graph, self).__init__(**kwargs)
        self.registerInstance(self, parent)

        self._getValue = getValue
        self._xSkip = 2
        self._curUsage = 0
        self.sensitive = False

        avg.RectNode(parent=self,
                     strokewidth=0,
                     fillopacity=0.6,
                     fillcolor="FFFFFF",
                     size=self.size)
        self._textNode0 = avg.WordsNode(parent=self,
                                        x=10,
                                        y=self.size.y - 22,
                                        color="000080")
        self._textNode1 = avg.WordsNode(parent=self,
                                        x=10,
                                        y=self.size.y - 39,
                                        color="000080")
        self._maxLineNode = avg.PolyLineNode(parent=self, color="880000")
        self._lineNode = avg.PolyLineNode(parent=self, color="008000")
        self.__graphText = avg.WordsNode(parent=self,
                                         x=10,
                                         y=0,
                                         color="000080")
        self.__graphText.text = title
        self._setup()
Esempio n. 2
0
 def addPolyLine():
     polyline = avg.PolyLineNode(strokewidth=2,
                                 color="FF00FF",
                                 pos=[(10, 10), (50, 10), (90, 50),
                                      (90, 90)])
     canvas.appendChild(polyline)
     return polyline
Esempio n. 3
0
    def _create_data_objects(self, x_axis_data, y_axis_data):
        """
        Creates data lines for all data objects in this chart.

        :type x_axis_data: DataDescription
        :type y_axis_data: DataDescription
        """
        for data_object in self._data_objects.itervalues():
            point_list = []
            # Get all the values.
            x_values = data_object.attributes[x_axis_data.key_name].values
            y_values = data_object.attributes[y_axis_data.key_name].values
            for i in range(len(x_values)):
                # Convert the value in coordinates.
                pos_x = self.horizontal_axis_views[
                    x_axis_data.key_name].get_pos_from_data_value(x_values[i])
                pos_y = self.vertical_axis_views[
                    y_axis_data.key_name].get_pos_from_data_value(y_values[i])
                point_list.append((pos_x, pos_y))

            # Create the new data line.
            new_line = avg.PolyLineNode(parent=self._data_div,
                                        strokewidth=self.__data_line_width,
                                        pos=point_list,
                                        color=defaults.ITEM_COLOR,
                                        opacity=defaults.ITEM_OPACITY)
            self._data_object_nodes[data_object.obj_id] = new_line

        super(LineChart, self)._create_data_objects_for_base()
Esempio n. 4
0
 def _onDown(self, event):
     self._drawLine = avg.PolyLineNode(
         parent=self._maskCanvas.getRootNode(),
         pos=[event.pos],
         color='FFFFFF',
         strokewidth=42.0,
         opacity=0.25)
Esempio n. 5
0
    def __init__(self, event, **kwargs):
        BaseTouchVisualization.__init__(self, event, **kwargs)
        self.positions = [event.pos]

        if event.source == avg.Event.TOUCH:
            color = 'e5d8d8'
        elif event.source == avg.Event.TANGIBLE:
            color = 'ffe0e0'
        else:
            color = 'd8e5e5'
            self.opacity = 0.5

        self.__transparentCircle = avg.CircleNode(r=self._radius + 20,
                                                  fillcolor=color,
                                                  fillopacity=0.2,
                                                  opacity=0.0,
                                                  strokewidth=1,
                                                  sensitive=False,
                                                  parent=self)
        self.__pulsecircle = avg.CircleNode(r=self._radius,
                                            fillcolor=color,
                                            color=color,
                                            fillopacity=0.5,
                                            opacity=0.5,
                                            strokewidth=1,
                                            sensitive=False,
                                            parent=self)
        if event.source in [avg.Event.TOUCH, avg.Event.TRACK]:
            self.__majorAxis = avg.LineNode(pos1=(0, 0),
                                            pos2=event.majoraxis,
                                            color='FFFFFF',
                                            sensitive=False,
                                            parent=self)
            self.__minorAxis = avg.LineNode(pos1=(0, 0),
                                            pos2=event.minoraxis,
                                            color='FFFFFF',
                                            sensitive=False,
                                            parent=self)
        if event.source == avg.Event.TOUCH:
            self.__handAxis = avg.LineNode(pos1=(0, 0),
                                           pos2=self.__getHandVector(event),
                                           opacity=0.5,
                                           color='A0FFA0',
                                           sensitive=False,
                                           parent=self)
        fontPos = avg.Point2D(self.__pulsecircle.r, 0)

        self.__textNode = avg.WordsNode(pos=fontPos, fontsize=9, parent=self)
        self.motionPath = avg.PolyLineNode(pos=self.positions,
                                           opacity=0.7,
                                           color=color,
                                           parent=kwargs['parent'])
        self.motionVector = avg.LineNode(pos1=(0, 0),
                                         pos2=-event.contact.motionvec,
                                         opacity=0.4,
                                         parent=self)
        pulseCircleAnim = avg.LinearAnim(self.__pulsecircle, 'r', 200, 50,
                                         self._radius)
        pulseCircleAnim.start()
Esempio n. 6
0
 def texturePolyLine():
     polyline = avg.PolyLineNode(strokewidth=20,
                                 color="FF00FF",
                                 texhref="rgb24-64x64.png",
                                 pos=((10, 10), (50, 10), (90, 50),
                                      (90, 90)),
                                 texcoords=(0, 0.3, 0.7, 1))
     canvas.appendChild(polyline)
     return polyline
    def _create_data_objects(self):
        """
        Creates data objects visualisations for all data objects in this chart.
        """
        for data_object in self._data_objects.itervalues():
            point_list = []
            # Get all the values.
            for key, axis_view in self._axis_views.iteritems():
                # Convert the value in coordinates.
                pos_y = axis_view.get_pos_from_data_value(data_object.attributes[key].values[0])
                point_list.append((axis_view.pos[0], pos_y))

            # Create the new data line.
            new_line = avg.PolyLineNode(
                parent=self._data_div,
                strokewidth=self.__data_line_width,
                pos=point_list,
                color=data_object.color
            )
            self._data_object_nodes[data_object.obj_id] = new_line

        super(ParallelCoordinatesPlot, self)._create_data_objects_for_base()
Esempio n. 8
0
    def __init__(self, session, vis_params, parent, mode="user", use_heatmap=True, label=None,
                 **kwargs):
        """
        :param session: The session this panel is based on.
        :type session: Session
        :param vis_params:
        :type vis_params:
        :param mode: The mode that will be used for this panel. Either "user" for user data or "device" for device data.
        :type mode: str
        :param label: This can be set if a custom label for this view should be given.
        :type label: str
        :param parent: The parent of this Panel.
        :type parent: avg.DivNode
        :param kwargs: Other parameters for a VisPanel object.
        """
        pos_range = pat_model.pos_range
        view_extent = avg.Point2D(pos_range[1][0] - pos_range[0][0], 3.0)
        aspect = view_extent.y/view_extent.x

        label = label or "Floor {}".format(mode)
        super(FloorPanel, self).__init__(label, vis_params, (60, 25), True, aspect, parent=parent, **kwargs)

        self.__session_start_time = session.start_time
        self.__session_time_offset = session.time_offset
        self.__users = session.users
        self.__mode = mode
        self.__use_heatmap = use_heatmap

        self._create_x_axis(
            data_range=(pos_range[0][0], pos_range[1][0]),
            unit="m",
            top_axis=True
        )
        self._create_y_axis(
            data_range=self.__VERTICAL_POS_RANGE,
            tick_positions=[0,1,2,3],
            unit="m",
            hide_rims=True
        )
        self.__create_wall_rect()

        self._create_data_div()
        self.__user_nodes = []

        self.__user_visibility = [True for _ in range(len(self.__users))]
        self.__heatmap_nodes = []
        self.__line_movement_nodes = []
        for user in self.__users:
            color = str(vis_params.get_user_color(user.getUserID()))
            node = heatmap.HeatMapNode(
                size=self._data_div.size,
                viewportrangemin=(pos_range[0][0], self.__VERTICAL_POS_RANGE[0]),
                viewportrangemax=(pos_range[1][0], self.__VERTICAL_POS_RANGE[1]),
                mapsize=(50,25),
                valuerangemin=0,
                valuerangemax=6,
                colormap=(color, color),
                opacitymap=(0,1),
                blendmode=global_values.BLEND_MODE,
                parent=self._data_div
            )
            node.setEffect(avg.BlurFXNode(radius=1.2))
            self.__heatmap_nodes.append(node)
            # Create an empty poly line node.
            line_node = avg.PolyLineNode(
                parent=self._data_div,
                color=color,
                strokewidth=2,
                opacity=0.45
            )
            self.__line_movement_nodes.append(line_node)

        self.__time_interval = [None, None]
        self.__timestamp_words_node = avg.WordsNode(
            parent=self._data_div,
            color=global_values.COLOR_FOREGROUND,
            rawtextmode=True,
            alignment="right",
            fontsize=global_values.FONT_SIZE / 2,
            pos=(self._data_div.width - 3, 3)
        )
Esempio n. 9
0
 def createSamePts():
     avg.PolyLineNode(pos=((10, 20), (10, 20), (10, 20)), parent=canvas)
     avg.PolyLineNode(pos=((10, 20), (10, 20), (20, 30)), parent=canvas)
     avg.PolyLineNode(pos=((20, 30), (10, 20), (10, 20)), parent=canvas)
     avg.PolyLineNode(pos=((10, 20), (20, 30), (10, 20)), parent=canvas)
Esempio n. 10
0
 def __create_line(self, points):
     line = plots.VWLineNode(color="FFFFFF", parent=self)
     line.setValues(points, self.widths, self.opacities)
     avg.PolyLineNode(pos=points, color="FF0000", parent=self)