Exemple #1
0
    def __init__(self, parent):
        self.args = parent.args
        self.par = parent
        self.pattern = None

        gtk.DrawingArea.__init__(self)
        Interface.__init__(self, matrix_width, matrix_height,
                           self.args.pixelSize)
        self.connect("expose-event", self.expose)

        self.matrixscreen = MatrixScreen(matrix_width, matrix_height,
                                         self.args.pixelSize, self)
        gtk.DrawingArea.set_size_request(self, self.width, self.height)
        # contains data from patterns in the form of a list of tuples of
        # format (r, g, b) colors.
        self.data = None
        # debug printing only once.
        self.hasprinted = False
Exemple #2
0
class MatrixSimWidget(gtk.DrawingArea, Interface):
    def __init__(self, parent):
        self.args = parent.args
        self.par = parent
        self.pattern = None

        gtk.DrawingArea.__init__(self)
        Interface.__init__(self, matrix_width, matrix_height,
                           self.args.pixelSize)
        self.connect("expose-event", self.expose)

        self.matrixscreen = MatrixScreen(matrix_width, matrix_height,
                                         self.args.pixelSize, self)
        gtk.DrawingArea.set_size_request(self, self.width, self.height)
        # contains data from patterns in the form of a list of tuples of
        # format (r, g, b) colors.
        self.data = None
        # debug printing only once.
        self.hasprinted = False

    def get_pattern(self):
        return self.pattern

    def set_pattern(self, pattern):
        self.pattern = pattern

    def color_convert_f(self, color, depth=8):
        temp = []
        for c in color:
            temp.append(c / 255.)
        return tuple(temp)

    def get_target(self):
        return self.target

    def set_target(self, target):
        return self.target

    def get_data(self):
        return self.data

    def process(self):
        try:
            self.data = self.pattern.generate()
            self.matrixscreen.process_pixels(self.data)
            self.queue_draw()
        except Exception as e:
            if not self.hasprinted:
                l = get_trace()
                print >>self.par, ("%s:Wrong data Generated>> %s" % (l, e))
            self.hasprinted = True
        return True

    def expose(self, widget, event):
        try:
            cr = widget.window.cairo_create()
            if len(self.matrixscreen.pixels):
                for pixel in self.matrixscreen.pixels:
                    x, y, width, height = pixel.getRect()
                    pixelcolor = pixel.getColor()
                    r, g, b = self.color_convert_f(pixelcolor)
                    cr.set_source_rgb(0.0, 0.0, 0.0)
                    cr.rectangle(x, y, width, height)
                    cr.stroke()
                    cr.set_source_rgb(r, g, b)
                    cr.rectangle(x + 1, y + 1, width - 2, height - 2)
                    cr.fill()
        except Exception as e:
            if not self.hasprinted:
                print >>self.par, "%s:%s" % (get_trace(), e)
            self.hasprinted = True
            return