Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Oct 1996 19:34:25 -0700
From:      Josh MacDonald <jmacd@CS.Berkeley.EDU>
To:        freebsd-hackers@freebsd.org
Subject:   XDrawString
Message-ID:  <199610020234.TAA01872@paris.CS.Berkeley.EDU>

next in thread | raw e-mail | index | archive | help

I forgot to insert the source:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>

#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif

#define STRING "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR"


int
main (int argc, char *argv[])
{
  Display *display;
  Window window;
  GC gc;
  XGCValues xgcv;
  XSetWindowAttributes attributes;
  XEvent event;
  long attributes_mask;
  char *display_name;
  int done;
  int i;
  int len = 650;

  display_name = NULL;

  if (argc == 3)
    if (strcmp (argv[1], "-display") == 0)
      display_name = argv[2];

  display_name = XDisplayName (display_name);
  display = XOpenDisplay (display_name);
  if (!display)
    {
      fprintf (stderr, "could not open display: \"%s\"\n", display_name);
      exit (1);
    }

  fprintf (stdout, "successfully opened display: \"%s\"\n", display_name);

  XSynchronize (display, 1);

  fprintf (stdout, "turning on X synchronization\n");

  attributes.event_mask = (KeyPressMask |
			   KeyReleaseMask |
			   ButtonPressMask |
			   ButtonReleaseMask |
			   PointerMotionMask |
			   EnterWindowMask |
			   LeaveWindowMask |
			   KeymapStateMask |
			   ExposureMask |
			   VisibilityChangeMask |
			   StructureNotifyMask |
			   FocusChangeMask |
			   PropertyChangeMask |
			   ColormapChangeMask |
			   OwnerGrabButtonMask);
  attributes.background_pixel = BlackPixel (display, DefaultScreen (display));
  attributes.border_pixel = BlackPixel (display, DefaultScreen (display));

  attributes_mask = CWBackPixel | CWBorderPixel | CWEventMask;

  window = XCreateWindow (display, DefaultRootWindow (display),
			  0, 0, 300, 300, 0, DefaultDepth (display, DefaultScreen (display)),
			  InputOutput, DefaultVisual (display, DefaultScreen (display)),
			  attributes_mask, &attributes);

  fprintf (stdout, "successfully created window\n");

  XMapWindow (display, window);

  fprintf (stdout, "successfully mapped windows\n");

  fprintf (stdout, "attempting graphics context creation\n");

  xgcv.foreground = 0x00FFFFFF;
  xgcv.background = 0x00000000;

  gc = XCreateGC (display, window, (GCForeground | GCBackground), &xgcv);

  fprintf (stdout, "successfully created graphics context\n");

  done = 0;
  while (!done)
    {
      XNextEvent (display, &event);

      switch (event.type)
	{
	case KeyPress:
	case KeyRelease:
	  done = 1;
	  break;
	case ButtonRelease:
	  break;
	case ButtonPress:
	  XClearWindow (display, window);
	  printf ("drawing string of length %d\n", len);
	  XDrawString (display, window, gc,
		       10, 100, STRING, MIN (strlen(STRING), len));
	  len += 10;
	  len = MIN (strlen (STRING), len);
	  break;
	}
    }

  XCloseDisplay (display);

  return 0;
}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610020234.TAA01872>