home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / windows / x / 14560 < prev    next >
Encoding:
Text File  |  1992-07-29  |  4.4 KB  |  157 lines

  1. Path: sparky!uunet!elroy.jpl.nasa.gov!usc!sol.ctr.columbia.edu!ira.uka.de!uka!i61s4!mul
  2. From: mul@i61s4.ira.uka.de (Peter Mul)
  3. Newsgroups: comp.windows.x
  4. Subject: Question: How to get the right X-Visual for Sunphigs2.0 program.
  5. Date: 29 Jul 1992 13:09:03 GMT
  6. Organization: University of Karlsruhe, FRG
  7. Lines: 144
  8. Distribution: world
  9. Message-ID: <15659fINNc8a@iraul1.ira.uka.de>
  10. NNTP-Posting-Host: i61s4.ira.uka.de
  11. Keywords: PEX/Phigs, X-Visual selection, Colormaps
  12.  
  13. Hey!
  14.  
  15. I have a problem getting the right visual and colors for my application.
  16. I wrote a Graphiktool to display Robotcells on an Evans & Sutherland
  17. ESV 30 system, using PEX/PHIGS. Everything OK. I get as default a 24bit
  18. visual with the right colors.
  19.  
  20. Then I tried to get it running on a SUN workstation. At that moment the
  21. problem arised.
  22. I used Sunphigs2.0 and Motif.
  23. The problem is that my application gets a Pseudocolor visual as my default
  24. visual, with unpredictable Colormaps.
  25. I my application I use sets of three sliders (RGB) to create my colors. On
  26. the ESV30 I could use the 24bit color mode to identify the color directly.
  27. The Phigs part uses the Drawwindow (Drawwindow=XtWindow(drawarea); 
  28. see code below) as the window to display the graphics. 
  29. On a Sun I get different colors in my color mixer and graphikwindow.
  30.  
  31. The Application should be able to run on 8bit and 24bit color SUNS.
  32. How can I manage that?
  33.  
  34. The approach to select the right visual and give it as argument to a 
  35. XtCreateWindow() call does not solve my problem as I use Motifwidgets.
  36.  
  37. Please help me, as I cannot get the right information from the Motif and
  38. Xlib books.
  39.  
  40.  
  41. Peter Mul
  42. University of Karlsruhe
  43. mul@ira.uka.de
  44. ++31-721-608-4261
  45.  
  46.  
  47. Just a small part of the application code I used to test my approaches,
  48. that failed till now.
  49.  
  50.  
  51. #ifdef ESV
  52. # include <X11/phigs/phigs.h> /* PEX extensions PHIGS+ */
  53. # include <X11/extensions/XPick.h>
  54. #else
  55. # include <phigs/phigs.h>
  56. #endif
  57.  
  58. #include <stdio.h>
  59. #include <math.h>
  60. #include <ctype.h>
  61. #include "xsig.h"
  62.  
  63. #include <X11/Xos.h>
  64. #include <X11/Xlib.h>
  65. #include <X11/Xutil.h>
  66. #include <X11/cursorfont.h>
  67. #include <X11/keysym.h>
  68. #include <X11/Intrinsic.h>
  69. #include <X11/Xatom.h>
  70. #include <X11/Xmd.h>
  71. #include <X11/Intrinsic.h>
  72. #include <X11/Shell.h>
  73.  
  74. #include <Xm/Xm.h>
  75. #include <Xm/DrawingA.h>
  76. #include <Xm/Form.h>
  77. #include <Xm/Frame.h>
  78. #include <Xm/Label.h>
  79. #include <Xm/MainW.h>
  80. #include <Xm/PushBG.h>
  81. #include <Xm/RowColumn.h>
  82. #include <Xm/Text.h>
  83. #include <Xm/ToggleBG.h>
  84.  
  85. Widget      drawarea;
  86. Widget      rowColumn;
  87. Widget      mainTopLevel;
  88. Widget      frame;
  89. Widget      button[6];
  90. Widget      mainwindow;
  91. Widget      rowColumn;
  92. Widget      rowcolumnbuttons;
  93. Widget      statusdisplay;
  94. Widget      systemtimedisplay;
  95. Widget      statusform;
  96. Widget      statuslabel;
  97. Widget      tbutton1;
  98. Widget      virtualTopLevel;
  99. Window      drawwindow;
  100. Widget      drawareaparent;
  101.  
  102. /*******************************************/
  103. int main(argc, argv)
  104. int   argc;
  105. char *argv[];
  106. /*******************************************/
  107. {
  108.   Arg          args[20];
  109.   int j;
  110.   register int n;
  111.  
  112.   /*****************************************************/
  113.   /*** X Setup                                       ***/
  114.   /*****************************************************/
  115.  
  116.   /* Init X Toolkit  */
  117.   virtualTopLevel =
  118.    XtInitialize( argv[0], "vist", NULL, NULL, &argc, argv);
  119.  
  120.   n = 0;
  121.   XtSetArg( args[n], XtNallowShellResize, FALSE); n++;
  122.   mainTopLevel =
  123.    XtAppCreateShell( PROGRAM_NAME, APPLICATION_CLASS, 
  124.      applicationShellWidgetClass, XtDisplay( virtualTopLevel), args, n);
  125.  
  126.   /* Create main window */
  127.   mainwindow = XmCreateMainWindow( mainTopLevel, "main1", args, n);
  128.   XtManageChild( mainwindow);
  129.  
  130.    /* Create row-column widget for screen structuring */
  131.   n = 0;
  132.   rowColumn =
  133.    XtCreateManagedWidget( "rowColumn", 
  134.                           xmRowColumnWidgetClass, mainwindow, args, n);
  135.  
  136.   n = 0;
  137.   drawareaparent = 
  138.    XtCreateManagedWidget( "drawareaparent",
  139.                  xmFormWidgetClass, rowColumn, args, n);
  140.   
  141.   /* Create draw area */
  142.   n = 0;
  143.   XtSetArg( args[n], XmNheight, DRAW_AREA_HEIGHT); n++;
  144.   XtSetArg( args[n], XmNwidth,  DRAW_AREA_WIDTH ); n++;
  145.   XtSetArg( args[n], XmNresizePolicy, XmRESIZE_ANY); n++;
  146.   drawarea = 
  147.    XtCreateManagedWidget( "drawarea",
  148.                            xmDrawingAreaWidgetClass, drawareaparent, args,n);
  149.   /* Window for Dials to be sensitive */
  150.   drawwindow  = XtWindow( drawarea);
  151.  
  152.   XtRealizeWidget(mainTopLevel);
  153.   XtMainLoop();
  154. }
  155.  
  156.  
  157.