Exemplo n.º 1
0
        public Graphics(String [] args, int width, int height)
            : base(args)
        {
            Window.Attributes win_attr = new Window.Attributes();
            win_attr.set_background(display.default_white);
            win_attr.set_border(display.default_black);
            win_attr.set_event_mask(Event.BUTTON_PRESS_MASK
                                    | Event.EXPOSURE_MASK | Event.KEY_PRESS_MASK);
            window = new Window(display.default_root, 10, 10,
                                width, height, 5, win_attr);

            window.set_wm(this, "main");
            window.set_wm_delete_window();
        }
Exemplo n.º 2
0
        protected void init_window(int width, int height)
        {
            visual_config = glx.visual_config(visual_config);
            int vid = visual_config.visual_id();

            gl = glx.create_context(vid, display.default_screen_no, GL.NONE0);

            // FIXME share colormap
            Colormap colormap = new Colormap(display.default_root, vid, false);

            Window.Attributes attr = new Window.Attributes();
            attr.set_colormap(colormap);

            // TODO use depth of x visual config instead of
            // `visual_config.buffer_size'?
            int depth = visual_config.buffer_size();

            int more = Event.EXPOSURE_MASK | Event.KEY_PRESS_MASK; // compulsory

            /* Bugs? Whenever button motion events are selected, it is required to
             * select button press event as well.
             */
            if ((event_mask & ANY_BUTTON_MOTION_BITS) != 0)
            {
                more |= Event.BUTTON_PRESS_MASK;
            }
            attr.set_event_mask(event_mask | more);

            window = new Window(display.default_root, 10, 10, width, height);
            window.create(5, depth, Window.INPUT_OUTPUT, vid, attr);

            window.set_wm(this, "main");
            window.set_wm_delete_window();

            gl.make_current(window);
            glu  = new GLU(gl);
            glut = new GLUT(glu);
        }
Exemplo n.º 3
0
        public DisplayHack(String [] args, bool clear, bool erase,
                           bool rainbow_color, int default_color_count, int default_delay)
            : base(args)
        {
            this.thread = new Thread(new ThreadStart(this.run));
            this.clear  = clear;
            this.erase_ = erase;

            int color_count = option.intt("color-count",
                                          "total number of random colors", default_color_count);

            delay = option.longg("delay",
                                 "delay between screens in ms", default_delay);

            if (erase)
            {
                eraser_delay = option.longg("eraser-delay",
                                            "delay between iterations of eraser in ms", 10);
                eraser_delta = option.intt("eraser-delta",
                                           "granularity of eraser", 5, 1, 10);
                eraser_mode = option.Enum("eraser-mode",
                                          "which eraser", Eraser.ALL_STRINGS,
                                          Eraser.RANDOM_ERASER_INDEX);
            }

            Rectangle geometry = option.rectangle("geometry",
                                                  "initial geometry of main window",
                                                  new Rectangle(10, 10, 600, 480));

            if (help_option)
            {
                return;
            }

            gc = gnu.x11.GC.build(display);
            if (erase_)
            {
                eraser_gc = gnu.x11.GC.build(display);
            }


            colors = new Color [color_count];

            if (rainbow_color)
            {
                for (int i = 0; i < color_count; i++)
                {
                    colors [i] = display.default_colormap.
                                 alloc_random_rainbow_color(random);
                }
            }

            else
            {
                for (int i = 0; i < color_count; i++)
                {
                    colors [i] = display.default_colormap.alloc_random_color(random);
                }
            }


            Window.Attributes win_attr = new Window.Attributes();
            win_attr.set_background(display.default_black);
            win_attr.set_event_mask(Event.BUTTON_PRESS_MASK
                                    | Event.STRUCTURE_NOTIFY_MASK
                                    | Event.EXPOSURE_MASK | Event.KEY_PRESS_MASK);
            window = new Window(display.default_root, geometry, 0, win_attr);

            window.set_wm(this, "main");
            window.set_wm_delete_window();
        }
Exemplo n.º 4
0
        public Hello(String [] args)
            : base(args)
        {
            about("0.1", "hello world",
                  "Stephen Tse <*****@*****.**>",
                  "http://escher.sourceforge.net/",
                  "\nTo quit, press 'q', 'Q', ESCAPE, or any button.");

            if (help_option)
            {
                return;
            }

            Window.Attributes win_attr = new Window.Attributes();
            win_attr.set_background(display.default_white);
            win_attr.set_border(display.default_black);
            win_attr.set_event_mask(Event.BUTTON_PRESS_MASK
                                    | Event.EXPOSURE_MASK | Event.KEY_PRESS_MASK);
            Window window = new Window(display.default_root, 10, 10,
                                       100, 50, 5, win_attr);

            window.set_wm(this, "main");
            window.set_wm_delete_window();
            window.map();


            while (!exit_now)
            {
                Event evt = display.next_event();

                switch (evt.code())
                {
                case gnu.x11.xevent.ButtonPress.CODE:
                    exit();
                    break;

                case ClientMessage.CODE:
                    if (((ClientMessage)evt).delete_window())
                    {
                        exit();
                    }
                    break;

                case Expose.CODE:
                    if (((Expose)evt).count() == 0)
                    {
                        window.text(display.default_gc, 20, 30, "Hello World!");
                    }
                    break;

                case KeyPress.CODE: {
                    KeyPress e = (KeyPress)evt;

                    int keycode  = e.detail();
                    int keystate = e.state();
                    int keysym   = display.input.keycode_to_keysym(keycode, keystate);

                    if (keysym == 'q' || keysym == 'Q' ||
                        keysym == gnu.x11.keysym.Misc.ESCAPE)
                    {
                        exit();
                    }
                    break;
                }
                }
            }

            display.close();
        }