XWorkstation.st
changeset 815 1e659479b292
parent 811 bf8721a1e3ec
child 818 ba6b21959afe
equal deleted inserted replaced
814:af7d16f05815 815:1e659479b292
  5868 
  5868 
  5869     "Modified: 1.12.1995 / 23:44:40 / stefan"
  5869     "Modified: 1.12.1995 / 23:44:40 / stefan"
  5870 !
  5870 !
  5871 
  5871 
  5872 initializeScreenProperties
  5872 initializeScreenProperties
       
  5873     super initializeScreenProperties.
       
  5874 
  5873 %{  /* NOCONTEXT */
  5875 %{  /* NOCONTEXT */
  5874 
  5876 
  5875     Display *dpy = myDpy;
  5877     Display *dpy = myDpy;
  5876     int scr;
  5878     int scr;
  5877     Visual *visual;
  5879     Visual *visual;
  5887     char *type, *nm;
  5889     char *type, *nm;
  5888     int dummy;
  5890     int dummy;
  5889     int mask, shift, nBits;
  5891     int mask, shift, nBits;
  5890 
  5892 
  5891     if (ISCONNECTED) {
  5893     if (ISCONNECTED) {
  5892 	__INST(altModifierMask) = __MKSMALLINT(Mod2Mask);
  5894         __INST(altModifierMask) = __MKSMALLINT(Mod2Mask);
  5893 	__INST(metaModifierMask) = __MKSMALLINT(Mod1Mask);
  5895         __INST(metaModifierMask) = __MKSMALLINT(Mod1Mask);
  5894 
  5896 
  5895 	BEGIN_INTERRUPTSBLOCKED
  5897         BEGIN_INTERRUPTSBLOCKED
  5896 
  5898 
  5897 	__INST(screen) = __MKSMALLINT(scr = DefaultScreen(dpy));
  5899         __INST(screen) = __MKSMALLINT(scr = DefaultScreen(dpy));
  5898 	__INST(depth) = __MKSMALLINT(DisplayPlanes(dpy, scr));
  5900         __INST(depth) = __MKSMALLINT(DisplayPlanes(dpy, scr));
  5899 	__INST(ncells) = __MKSMALLINT(DisplayCells(dpy, scr));
  5901         __INST(ncells) = __MKSMALLINT(DisplayCells(dpy, scr));
  5900 	__INST(width) = __MKSMALLINT(DisplayWidth(dpy, scr));
  5902         __INST(width) = __MKSMALLINT(DisplayWidth(dpy, scr));
  5901 	__INST(height) = __MKSMALLINT(DisplayHeight(dpy, scr));
  5903         __INST(height) = __MKSMALLINT(DisplayHeight(dpy, scr));
  5902 	__INST(widthMM) = __MKSMALLINT(DisplayWidthMM(dpy, scr));
  5904         __INST(widthMM) = __MKSMALLINT(DisplayWidthMM(dpy, scr));
  5903 	__INST(heightMM) = __MKSMALLINT(DisplayHeightMM(dpy, scr));
  5905         __INST(heightMM) = __MKSMALLINT(DisplayHeightMM(dpy, scr));
  5904 	__INST(blackpixel) = __MKSMALLINT(BlackPixel(dpy, scr));
  5906         __INST(blackpixel) = __MKSMALLINT(BlackPixel(dpy, scr));
  5905 	__INST(whitepixel) = __MKSMALLINT(WhitePixel(dpy, scr));
  5907         __INST(whitepixel) = __MKSMALLINT(WhitePixel(dpy, scr));
  5906 
  5908 
  5907 #ifdef SHAPE
  5909 #ifdef SHAPE
  5908 	if (XShapeQueryExtension(dpy, &shapeEventBase, &shapeErrorBase))
  5910         if (XShapeQueryExtension(dpy, &shapeEventBase, &shapeErrorBase))
  5909 	    __INST(hasShapeExtension) = true;
  5911             __INST(hasShapeExtension) = true;
  5910 	else
  5912         else
  5911 #endif
  5913 #endif
  5912 	  __INST(hasShapeExtension) = false;
  5914           __INST(hasShapeExtension) = false;
  5913 
  5915 
  5914 #ifdef SHM
  5916 #ifdef SHM
  5915 	if (XShmQueryExtension(dpy, &shmEventBase, &shmErrorBase))
  5917         if (XShmQueryExtension(dpy, &shmEventBase, &shmErrorBase))
  5916 	    __INST(hasShmExtension) = true;
  5918             __INST(hasShmExtension) = true;
  5917 	else
  5919         else
  5918 #endif
  5920 #endif
  5919 	  __INST(hasShmExtension) = false;
  5921           __INST(hasShmExtension) = false;
  5920 
  5922 
  5921 #ifdef FAX
  5923 #ifdef FAX
  5922 	if (XFAXImageQueryExtension(dpy, &faxEventBase, &faxErrorBase))
  5924         if (XFAXImageQueryExtension(dpy, &faxEventBase, &faxErrorBase))
  5923 	    __INST(hasFaxExtension) = true;
  5925             __INST(hasFaxExtension) = true;
  5924 	else
  5926         else
  5925 #endif
  5927 #endif
  5926 	  __INST(hasFaxExtension) = false;
  5928           __INST(hasFaxExtension) = false;
  5927 
  5929 
  5928 #ifdef DPS
  5930 #ifdef DPS
  5929 	if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy))
  5931         if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy))
  5930 	    __INST(hasDPSExtension) = true;
  5932             __INST(hasDPSExtension) = true;
  5931 	else
  5933         else
  5932 #endif
  5934 #endif
  5933 	  __INST(hasDPSExtension) = false;
  5935           __INST(hasDPSExtension) = false;
  5934 
  5936 
  5935 #ifdef XVIDEO
  5937 #ifdef XVIDEO
  5936 	if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy))
  5938         if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy))
  5937 	    __INST(hasXVideoExtension) = true;
  5939             __INST(hasXVideoExtension) = true;
  5938 	else
  5940         else
  5939 #endif
  5941 #endif
  5940 	  __INST(hasXVideoExtension) = false;
  5942           __INST(hasXVideoExtension) = false;
  5941 
  5943 
  5942 #ifdef MBUF
  5944 #ifdef MBUF
  5943 	if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy))
  5945         if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy))
  5944 	    __INST(hasMbufExtension) = true;
  5946             __INST(hasMbufExtension) = true;
  5945 	else
  5947         else
  5946 #endif
  5948 #endif
  5947 	  __INST(hasMbufExtension) = false;
  5949           __INST(hasMbufExtension) = false;
  5948 
  5950 
  5949 #ifdef PEX5
  5951 #ifdef PEX5
  5950 	if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy))
  5952         if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy))
  5951 	    __INST(hasPEXExtension) = true;
  5953             __INST(hasPEXExtension) = true;
  5952 	else
  5954         else
  5953 #endif
  5955 #endif
  5954 	  __INST(hasPEXExtension) = false;
  5956           __INST(hasPEXExtension) = false;
  5955 
  5957 
  5956 #ifdef XIE
  5958 #ifdef XIE
  5957 	if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy))
  5959         if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy))
  5958 	    __INST(hasImageExtension) = true;
  5960             __INST(hasImageExtension) = true;
  5959 	else
  5961         else
  5960 #endif
  5962 #endif
  5961 	  __INST(hasImageExtension) = false;
  5963           __INST(hasImageExtension) = false;
  5962 
  5964 
  5963 #ifdef XI
  5965 #ifdef XI
  5964 	if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy))
  5966         if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy))
  5965 	    __INST(hasInputExtension) = true;
  5967             __INST(hasInputExtension) = true;
  5966 	else
  5968         else
  5967 #endif
  5969 #endif
  5968 	  __INST(hasInputExtension) = false;
  5970           __INST(hasInputExtension) = false;
  5969 
  5971 
  5970 	/*
  5972         /*
  5971 	 * look for RGB visual
  5973          * look for RGB visual
  5972 	 */
  5974          */
  5973 	nvi = 0;
  5975         nvi = 0;
  5974 	viproto.screen = scr;
  5976         viproto.screen = scr;
  5975 	vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
  5977         vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
  5976 	maxRGBDepth = 0;
  5978         maxRGBDepth = 0;
  5977 	for (i = 0; i < nvi; i++) {
  5979         for (i = 0; i < nvi; i++) {
  5978 	    switch (vip[i].class) {
  5980             switch (vip[i].class) {
  5979 		case TrueColor:
  5981                 case TrueColor:
  5980 		    if (vip[i].depth > maxRGBDepth) {
  5982                     if (vip[i].depth > maxRGBDepth) {
  5981 			maxRGBDepth = vip[i].depth;
  5983                         maxRGBDepth = vip[i].depth;
  5982 			rgbRedMask = vip[i].red_mask;
  5984                         rgbRedMask = vip[i].red_mask;
  5983 			rgbGreenMask = vip[i].green_mask;
  5985                         rgbGreenMask = vip[i].green_mask;
  5984 			rgbBlueMask = vip[i].blue_mask;
  5986                         rgbBlueMask = vip[i].blue_mask;
  5985 			rgbVisualID = vip[i].visualid;
  5987                         rgbVisualID = vip[i].visualid;
  5986 		    }
  5988                     }
  5987 		    break;
  5989                     break;
  5988 	    }
  5990             }
  5989 	}
  5991         }
  5990 	if (vip) XFree ((char *) vip);
  5992         if (vip) XFree ((char *) vip);
  5991 
  5993 
  5992 	if (maxRGBDepth) {
  5994         if (maxRGBDepth) {
  5993 	    __INST(rgbVisual) = __MKOBJ(rgbVisualID); __STORESELF(rgbVisual);
  5995             __INST(rgbVisual) = __MKOBJ(rgbVisualID); __STORESELF(rgbVisual);
  5994 	}
  5996         }
  5995 
  5997 
  5996 	visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
  5998         visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
  5997 	__INST(monitorType) = @symbol(unknown);
  5999         __INST(monitorType) = @symbol(unknown);
  5998 	__INST(hasColors) = true;
  6000         __INST(hasColors) = true;
  5999 	__INST(hasGreyscales) = true;
  6001         __INST(hasGreyscales) = true;
  6000 	switch (visual->class) {
  6002         switch (visual->class) {
  6001 	    case StaticGray:
  6003             case StaticGray:
  6002 		__INST(visualType) = @symbol(StaticGray);
  6004                 __INST(visualType) = @symbol(StaticGray);
  6003 		__INST(hasColors) = false;
  6005                 __INST(hasColors) = false;
  6004 		__INST(monitorType) = @symbol(monochrome);
  6006                 __INST(monitorType) = @symbol(monochrome);
  6005 		break;
  6007                 break;
  6006 	    case GrayScale:
  6008             case GrayScale:
  6007 		__INST(visualType) = @symbol(GrayScale);
  6009                 __INST(visualType) = @symbol(GrayScale);
  6008 		__INST(hasColors) = false;
  6010                 __INST(hasColors) = false;
  6009 		__INST(monitorType) = @symbol(monochrome);
  6011                 __INST(monitorType) = @symbol(monochrome);
  6010 		break;
  6012                 break;
  6011 	    case StaticColor:
  6013             case StaticColor:
  6012 		__INST(visualType) = @symbol(StaticColor);
  6014                 __INST(visualType) = @symbol(StaticColor);
  6013 		break;
  6015                 break;
  6014 	    case PseudoColor:
  6016             case PseudoColor:
  6015 		__INST(visualType) = @symbol(PseudoColor);
  6017                 __INST(visualType) = @symbol(PseudoColor);
  6016 		break;
  6018                 break;
  6017 	    case TrueColor:
  6019             case TrueColor:
  6018 		__INST(visualType) = @symbol(TrueColor);
  6020                 __INST(visualType) = @symbol(TrueColor);
  6019 		break;
  6021                 break;
  6020 	    case DirectColor:
  6022             case DirectColor:
  6021 		__INST(visualType) = @symbol(DirectColor);
  6023                 __INST(visualType) = @symbol(DirectColor);
  6022 		break;
  6024                 break;
  6023 	}
  6025         }
  6024 	if (DisplayCells(dpy, scr) == 2) {
  6026         if (DisplayCells(dpy, scr) == 2) {
  6025 	    __INST(hasColors) = false;
  6027             __INST(hasColors) = false;
  6026 	    __INST(hasGreyscales) = false;
  6028             __INST(hasGreyscales) = false;
  6027 	    __INST(monitorType) = @symbol(monochrome);
  6029             __INST(monitorType) = @symbol(monochrome);
  6028 	}
  6030         }
  6029 	__INST(bitsPerRGB) = __MKSMALLINT(visual->bits_per_rgb);
  6031         __INST(bitsPerRGB) = __MKSMALLINT(visual->bits_per_rgb);
  6030 	__INST(redMask)   = __MKSMALLINT(visual->red_mask);
  6032         __INST(redMask)   = __MKSMALLINT(visual->red_mask);
  6031 	__INST(greenMask) = __MKSMALLINT(visual->green_mask);
  6033         __INST(greenMask) = __MKSMALLINT(visual->green_mask);
  6032 	__INST(blueMask)  = __MKSMALLINT(visual->blue_mask);
  6034         __INST(blueMask)  = __MKSMALLINT(visual->blue_mask);
  6033 	switch (visual->class) {
  6035         switch (visual->class) {
  6034 	    case TrueColor:
  6036             case TrueColor:
  6035 		/* extract number of bits and shift counts */
  6037                 /* extract number of bits and shift counts */
  6036 		mask = visual->red_mask;
  6038                 mask = visual->red_mask;
  6037 		shift = 0;
  6039                 shift = 0;
  6038 		while (mask && ((mask & 1) == 0)) {
  6040                 while (mask && ((mask & 1) == 0)) {
  6039 		    mask >>= 1;
  6041                     mask >>= 1;
  6040 		    shift++;
  6042                     shift++;
  6041 		}
  6043                 }
  6042 		__INST(redShift) = __MKSMALLINT(shift);
  6044                 __INST(redShift) = __MKSMALLINT(shift);
  6043 		nBits = 0;
  6045                 nBits = 0;
  6044 		while (mask) {
  6046                 while (mask) {
  6045 		    mask >>= 1;
  6047                     mask >>= 1;
  6046 		    nBits++;
  6048                     nBits++;
  6047 		}
  6049                 }
  6048 		__INST(bitsRed) = __MKSMALLINT(nBits);
  6050                 __INST(bitsRed) = __MKSMALLINT(nBits);
  6049 
  6051 
  6050 		mask = visual->green_mask;
  6052                 mask = visual->green_mask;
  6051 		shift = 0;
  6053                 shift = 0;
  6052 		while (mask && ((mask & 1) == 0)) {
  6054                 while (mask && ((mask & 1) == 0)) {
  6053 		    mask >>= 1;
  6055                     mask >>= 1;
  6054 		    shift++;
  6056                     shift++;
  6055 		}
  6057                 }
  6056 		__INST(greenShift) = __MKSMALLINT(shift);
  6058                 __INST(greenShift) = __MKSMALLINT(shift);
  6057 		nBits = 0;
  6059                 nBits = 0;
  6058 		while (mask) {
  6060                 while (mask) {
  6059 		    mask >>= 1;
  6061                     mask >>= 1;
  6060 		    nBits++;
  6062                     nBits++;
  6061 		}
  6063                 }
  6062 		__INST(bitsGreen) = __MKSMALLINT(nBits);
  6064                 __INST(bitsGreen) = __MKSMALLINT(nBits);
  6063 
  6065 
  6064 		mask = visual->blue_mask;
  6066                 mask = visual->blue_mask;
  6065 		shift = 0;
  6067                 shift = 0;
  6066 		while (mask && ((mask & 1) == 0)) {
  6068                 while (mask && ((mask & 1) == 0)) {
  6067 		    mask >>= 1;
  6069                     mask >>= 1;
  6068 		    shift++;
  6070                     shift++;
  6069 		}
  6071                 }
  6070 		__INST(blueShift) = __MKSMALLINT(shift);
  6072                 __INST(blueShift) = __MKSMALLINT(shift);
  6071 		nBits = 0;
  6073                 nBits = 0;
  6072 		while (mask) {
  6074                 while (mask) {
  6073 		    mask >>= 1;
  6075                     mask >>= 1;
  6074 		    nBits++;
  6076                     nBits++;
  6075 		}
  6077                 }
  6076 		__INST(bitsBlue) = __MKSMALLINT(nBits);
  6078                 __INST(bitsBlue) = __MKSMALLINT(nBits);
  6077 		break;
  6079                 break;
  6078 	}
  6080         }
  6079 
  6081 
  6080 #ifndef XA_PRIMARY
  6082 #ifndef XA_PRIMARY
  6081 	__INST(primaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "PRIMARY", True) );
  6083         __INST(primaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "PRIMARY", True) );
  6082 #else
  6084 #else
  6083 	__INST(primaryAtom) = __MKATOMOBJ( XA_PRIMARY );
  6085         __INST(primaryAtom) = __MKATOMOBJ( XA_PRIMARY );
  6084 #endif
  6086 #endif
  6085 #ifndef XA_SECONDARY
  6087 #ifndef XA_SECONDARY
  6086 	__INST(secondaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "SECONDARY", True) );
  6088         __INST(secondaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "SECONDARY", True) );
  6087 #else
  6089 #else
  6088 	__INST(secondaryAtom) = __MKATOMOBJ( XA_SECONDARY );
  6090         __INST(secondaryAtom) = __MKATOMOBJ( XA_SECONDARY );
  6089 #endif
  6091 #endif
  6090 #ifndef XA_CUT_BUFFER0
  6092 #ifndef XA_CUT_BUFFER0
  6091 	__INST(cutBuffer0Atom) = __MKATOMOBJ( XInternAtom(dpy, "CUT_BUFFER0", True) );
  6093         __INST(cutBuffer0Atom) = __MKATOMOBJ( XInternAtom(dpy, "CUT_BUFFER0", True) );
  6092 #else
  6094 #else
  6093 	__INST(cutBuffer0Atom) = __MKATOMOBJ( XA_CUT_BUFFER0 );
  6095         __INST(cutBuffer0Atom) = __MKATOMOBJ( XA_CUT_BUFFER0 );
  6094 #endif
  6096 #endif
  6095 #ifndef XA_STRING
  6097 #ifndef XA_STRING
  6096 	__INST(stringAtom) = __MKATOMOBJ( XInternAtom(dpy, "STRING", True) );
  6098         __INST(stringAtom) = __MKATOMOBJ( XInternAtom(dpy, "STRING", True) );
  6097 #else
  6099 #else
  6098 	__INST(stringAtom) = __MKATOMOBJ( XA_STRING );
  6100         __INST(stringAtom) = __MKATOMOBJ( XA_STRING );
  6099 #endif
  6101 #endif
  6100 #ifndef XA_LENGTH
  6102 #ifndef XA_LENGTH
  6101 	__INST(lengthAtom) = __MKATOMOBJ( XInternAtom(dpy, "LENGTH", True) );
  6103         __INST(lengthAtom) = __MKATOMOBJ( XInternAtom(dpy, "LENGTH", True) );
  6102 #else
  6104 #else
  6103 	__INST(lengthAtom) = __MKATOMOBJ( XA_LENGTH );
  6105         __INST(lengthAtom) = __MKATOMOBJ( XA_LENGTH );
  6104 #endif
  6106 #endif
  6105 
  6107 
  6106 	END_INTERRUPTSBLOCKED
  6108         END_INTERRUPTSBLOCKED
  6107     }
  6109     }
  6108 %}
  6110 %}.
  6109 !
  6111 !
  6110 
  6112 
  6111 initializeSpecialFlags
  6113 initializeSpecialFlags
  6112     "perform additional special server implementation flags"
  6114     "perform additional special server implementation flags"
  6113 
  6115 
  7969 ! !
  7971 ! !
  7970 
  7972 
  7971 !XWorkstation class methodsFor:'documentation'!
  7973 !XWorkstation class methodsFor:'documentation'!
  7972 
  7974 
  7973 version
  7975 version
  7974     ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.136 1996-06-10 14:55:56 cg Exp $'
  7976     ^ '$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.137 1996-06-10 17:33:14 cg Exp $'
  7975 ! !
  7977 ! !
  7976 XWorkstation initialize!
  7978 XWorkstation initialize!