Changeset 1813

Show
Ignore:
Timestamp:
08/01/07 12:45:34 (1 year ago)
Author:
wrobe..@pld-linux.org
Message:

- 'in' operator Quad-tree support added

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphas/trunk/gaphas/quadtree.py

    r1789 r1813  
    212212 
    213213    def __len__(self): 
     214        """ 
     215        Return number of items in tree. 
     216        """ 
    214217        return len(self._ids) 
     218 
     219 
     220    def __contains__(self, item): 
     221        """ 
     222        Check if an item is in tree. 
     223        """ 
     224        return item in self._ids 
    215225 
    216226 
  • gaphas/trunk/gaphas/view.py

    r1812 r1813  
    572572 
    573573            for i in dirty_matrix_items: 
    574                 try: 
    575                     bounds = self._qtree.get_data(i) 
    576                 except KeyError: 
     574                if i not in self._qtree: 
    577575                    dirty_items.add(i) 
    578                 else: 
    579                     self.queue_draw_item(i) 
    580  
    581                     self.update_matrix(i) 
    582                     i2v = self.get_matrix_i2v(i).transform_point 
    583                     x0, y0 = i2v(bounds.x, bounds.y) 
    584                     x1, y1 = i2v(bounds.x1, bounds.y1) 
    585                     vbounds = Rectangle(x0, y0, x1=x1, y1=y1) 
    586                     self._qtree.add(i, vbounds, bounds) 
    587  
    588                     # TODO: find an elegant way to update parent bb's. 
    589                     #parent = self.canvas.get_parent(i) 
    590                     #if parent: 
    591                     #    try: 
    592                     #        parent_bounds = self._qtree.get_bounds(parent) 
    593                     #    except KeyError: 
    594                     #        pass # No bounds, do nothing 
    595                     #    else: 
    596                     #        if not vbounds in parent_bounds: 
    597                     #            self.set_item_bounding_box(parent, vbounds + parent_bounds) 
    598                     self.queue_draw_item(i) 
     576                    continue 
     577 
     578                bounds = self._qtree.get_data(i) 
     579                self.queue_draw_item(i) 
     580 
     581                self.update_matrix(i) 
     582                i2v = self.get_matrix_i2v(i).transform_point 
     583                x0, y0 = i2v(bounds.x, bounds.y) 
     584                x1, y1 = i2v(bounds.x1, bounds.y1) 
     585                vbounds = Rectangle(x0, y0, x1=x1, y1=y1) 
     586                self._qtree.add(i, vbounds, bounds) 
     587 
     588                # TODO: find an elegant way to update parent bb's. 
     589                #parent = self.canvas.get_parent(i) 
     590                #if parent: 
     591                #    try: 
     592                #        parent_bounds = self._qtree.get_bounds(parent) 
     593                #    except KeyError: 
     594                #        pass # No bounds, do nothing 
     595                #    else: 
     596                #        if not vbounds in parent_bounds: 
     597                #            self.set_item_bounding_box(parent, vbounds + parent_bounds) 
     598                self.queue_draw_item(i) 
    599599 
    600600            self._update_bounding_box.update(dirty_items)