All pastes #261742 Raw Edit

mq

public php v1 · immutable
#261742 ·published 2006-11-29 20:49 UTC
rendered paste body
<?php/***   Scribble demo - simple painting with your mouse*/class Scribble extends GtkWindow{    protected $size_group = null;    protected $pixmap = null;    function __construct($parent = null)    {        parent::__construct();        if (@$GLOBALS['framework']) {            return;        }        if ($parent)            $this->set_screen($parent->get_screen());        else            $this->connect_simple('destroy', array('gtk', 'main_quit'));        $this->set_title(__CLASS__);        $this->set_position(Gtk::WIN_POS_CENTER);        $this->set_default_size(-1, -1);        $this->set_border_width(8);        $this->add($this->__create_box());        $this->show_all();    }//function __construct($parent = null)    function __create_box()    {        $vbox = new GtkVBox();        $vbox->show();        $drawing_area = new GtkDrawingArea();        $drawing_area->set_size_request(300, 300);        $vbox->pack_start($drawing_area);//        $drawing_area->realize();        $drawing_area->connect('expose_event'       , array($this, 'expose_event'));        $drawing_area->connect('configure_event'    , array($this, 'configure_event'));        $drawing_area->connect('motion_notify_event', array($this, 'motion_notify_event'));        $drawing_area->connect('button_press_event' , array($this, 'button_press_event'));        $drawing_area->set_events(Gdk::EXPOSURE_MASK                                | Gdk::LEAVE_NOTIFY_MASK                                | Gdk::BUTTON_PRESS_MASK                                | Gdk::POINTER_MOTION_MASK                                | Gdk::POINTER_MOTION_HINT_MASK);        return $vbox;    }//function __create_box()    function configure_event($widget, $event)    {        $this->pixmap = new GdkPixmap($widget->window,                                $widget->allocation->width,                                $widget->allocation->height,                                -1);        $this->pixmap->draw_rectangle($widget->style->white_gc,                            true, 0, 0,                            $widget->allocation->width,                            $widget->allocation->height);        return true;    }    function expose_event($widget, $event)    {        $widget->window->draw_drawable($widget->style->fg_gc[$widget->state],                        $this->pixmap,                        $event->area->x, $event->area->y,                        $event->area->x, $event->area->y,                        $event->area->width, $event->area->height);        return false;    }    function button_press_event($widget, $event)    {        if ($event->button == 1 && $this->pixmap) {            $this->draw_brush($widget, (int)$event->x, (int)$event->y);        }        return true;    }    function motion_notify_event($widget, $event)    {        $window  = $event->window;        $pointer = $window->get_pointer();        $x = $pointer[0];        $y = $pointer[1];        $state = $pointer[2];        if (($state & Gdk::BUTTON1_MASK) && $this->pixmap) {            $this->draw_brush($widget, $x, $y);        }        return true;    }    function draw_brush($widget, $x, $y)    {        $this->pixmap->draw_arc($widget->style->black_gc, true, $x - 4, $y - 4, 8, 8, 0, 64 * 360);        $widget->queue_draw_area($x - 4, $y - 4, 8, 8);    }}//class Scribble extends GtkWindow$GLOBALS['class']       = 'Scribble';$GLOBALS['description'] = "Scribble lets you draw paintings with your mouse";if (!@$GLOBALS['framework']) {    new Scribble();    Gtk::main();}?>