draw-example man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

DRAW-EXAMPLE(2)						       DRAW-EXAMPLE(2)

NAME
       draw: example - simple program illustrating image primitives

DESCRIPTION
       This  manual  page presents a self-contained simple program that illusā€
       trates most of the feature of the basic draw library.  It must  be  run
       at  the	top-level Inferno shell prompt, not within a window system, as
       it establishes its own connection to the display and writes directly on
       the display, not in a private window.

       The program exercises the drawing primitives, taking particular care to
       maintain a consistent coordinate system for the combinations of	images
       on the display.	Comments in the code introduce each step.

       implement Test;

       include "sys.m";

       include "draw.m";

       Test: module
       {
	    init:     fn(ctxt: ref Draw->Context, argv: list of string);
       };

       init(nil: ref Draw->Context, nil: list of string)
       {
	    sys := load Sys Sys->PATH;
	    draw := load Draw Draw->PATH;
	    Display, Font, Rect, Point, Image, Screen: import draw;

	    #
	    # Set up connection to display and initialize colours.
	    #
	    display := draw->Display.allocate(nil);
	    disp := display.image;
	    red := display.color(Draw->Red);
	    blue := display.color(Draw->Blue);
	    white := display.color(Draw->White);
	    yellow := display.color(Draw->Yellow);

	    #
	    # Paint the screen red.
	    #
	    disp.draw(disp.r, red, nil, disp.r.min);
	    sys->sleep(5000);

	    #
	    # Texture a region with rectangular tiles.
	    #
	    texture := display.newimage(((0,0),(2,3)),
		 disp.chans, 1, Draw->Black);
	    texture.clipr = ((-10000,-10000),(10000,10000));
	    # put something in the texture
	    texture.draw(((0,0),(1,3)), white, nil, (0,0));
	    texture.draw(((0,0),(2, 1)), white, nil, (0,0));
	    # use texture as both source and mask to let
	    # destination colour show through
	    disp.draw(((100,100),(200,300)), texture,
		 texture, (0,0));
	    sys->sleep(5000);

	    #
	    # White-out a quarter of the pixels in a region,
	    # to make the region appear shaded.
	    #
	    stipple := display.newimage(((0,0),(2,2)),
			   disp.chans, 1, Draw->Transparent);
	    stipple.draw(((0,0),(1,1)), display.opaque,
			   nil, (0,0));
	    disp.draw(((100,100),(300,250)), white,
			   stipple, (0,0));
	    sys->sleep(5000);

	    #
	    # Draw textured characters.
	    #
	    font := Font.open(display, "*default*");
	    disp.text((100,310), texture, (0,0), font,
		      "Hello world");
	    sys->sleep(5000);

	    #
	    # Draw picture in elliptical frame.
	    #
	    delight := display.open("/icons/delight.bit");
	    piccenter := delight.r.min.add(delight.r.max).div(2);
	    disp.fillellipse((250,250), 150, 50,
		 delight, piccenter);
	    disp.ellipse((250,250), 150, 50, 3, yellow, (0,0));
	    sys->sleep(5000);

	    #
	    # Draw a parabolic brush stroke using an elliptical brush
	    # to reveal more of the picture, consistent with what's
	    # already visible.
	    #
	    dx : con 15;
	    dy : con 3;
	    brush := display.newimage(((0,0),(2*dx+1,2*dy+1)), disp.chans,
				      0, Draw->Black);
	    brush.fillellipse((dx,dy), dx, dy, display.white,
			   (0,0));
	    for(x:=delight.r.min.x; x<delight.r.max.x; x++){
		 y := (x-piccenter.x)*(x-piccenter.x)/80;
		 y += 2*dy+1;	# so whole brush is visible at top
		 xx := x+(250-piccenter.x)-dx;
		 yy := y+(250-piccenter.y)-dy;
		 disp.gendraw(((xx,yy),(xx+2*dx+1,yy+2*dy+1)),
			      delight, (x-dx, y-dy), brush,
		      (0,0));
	    }
       }

							       DRAW-EXAMPLE(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net