home *** CD-ROM | disk | FTP | other *** search
/ vsiftp.vmssoftware.com / VSIPUBLIC@vsiftp.vmssoftware.com.tar / FREEWARE / FREEWARE40.ZIP / xtron-1_1a / wintype.c < prev    next >
C/C++ Source or Header  |  1995-04-16  |  3KB  |  117 lines

  1. /* wintype.c - xtron v1.1 X windows handler
  2.  *
  3.  *   Copyright (C) 1995 Rhett D. Jacobs <rhett@hotel.canberra.edu.au>
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 1, or (at your option)
  8.  *  any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  *
  19.  *  Last Modified: 16/4/95
  20.  */
  21.  
  22. #include"wintype.h"
  23.  
  24. void win_setup(void)
  25. {
  26.   /* set the display name from  the environment variable DISPLAY */    
  27.   display = XOpenDisplay (NULL);    
  28.   if (display == NULL) {
  29.     fprintf (stderr,"Unable to open display %s\n",    
  30.          XDisplayName (NULL));    
  31.     exit (1);    
  32.   } 
  33.   screen = DefaultScreen (display);
  34.   foreground = ColourSet("black");
  35.   background = ColourSet("grey75");
  36. }
  37.  
  38.  
  39. unsigned long ColourSet(char *name)
  40. {
  41.   int DefaultDepth;
  42.   Colormap DefaultCMap;
  43.   XColor ExactDef;
  44.   Visual *DefaultVisual;
  45.  
  46.   DefaultDepth = DefaultDepth(display, screen);
  47.   DefaultVisual = DefaultVisual(display, screen);
  48.   DefaultCMap = DefaultColormap(display, screen);
  49.  
  50.   if (!XParseColor(display, DefaultCMap, name, &ExactDef)) {
  51.     fprintf(stderr,"error: colour not in colour database..\n");
  52.     exit(0);
  53.   }
  54.   if (!XAllocColor(display, DefaultCMap, &ExactDef)) {
  55.     fprintf(stderr,"error: can't allocate colour..\n");
  56.     exit(0);
  57.   }
  58.   return(ExactDef.pixel);
  59. }
  60.  
  61.  
  62. void win_shutdown(void)
  63. {
  64.   XFreeGC(display, gc);
  65.   XCloseDisplay (display);    
  66.   exit (0);    
  67. }
  68.  
  69.  
  70. Window win_open(int x, int y, int width, int height, int border_width,
  71.         Window parent, int istoplevel, int argc, char *argv[],
  72.         char *win_name)
  73. {
  74.   Window new_window;
  75.   XSizeHints size_hints;
  76.  
  77.   /* create window */
  78.   new_window = XCreateSimpleWindow(display, parent, x, y, width, height,
  79.                    border_width, foreground, background);
  80.  
  81.   /* set size hints for window manager */
  82.    if (istoplevel) {
  83.      size_hints.flags = PMinSize | PMaxSize | PSize | PResizeInc;
  84.      size_hints.min_width = width;
  85.      size_hints.max_width = width;
  86.      size_hints.min_height = height;
  87.      size_hints.max_height = height;
  88.      size_hints.width_inc=1;
  89.      size_hints.height_inc=1;
  90.     
  91.      XSelectInput(display, new_window,
  92.           ButtonPressMask | KeyPressMask | ExposureMask |
  93.           VisibilityChangeMask | FocusChangeMask);
  94.      
  95.      /* state which hints are included */
  96.      XSetStandardProperties (display, new_window, win_name, 
  97.                  "xtron", ReadXPM("Xtron_icon.xpm"),
  98.                  argv, argc, &size_hints);
  99.    }
  100.   /* return the window ID */
  101.   return (new_window);
  102. }
  103.  
  104.  
  105. GC win_getGC(void)
  106. {
  107.   XGCValues gcValues;
  108.  
  109.   gc = XCreateGC (display, main_window,
  110.           (unsigned long) 0, &gcValues);
  111.   
  112.   XSetBackground (display, gc, background);
  113.   XSetForeground (display, gc, foreground);
  114.  
  115.   return (gc);
  116. }
  117.